An OAuth app save keeps its client secret unless a new one is typed; owners' credentials stay out of org JSON

FixSecurityService
Shipped
September 17, 2026 at 3:33 AM UTC
Author
Kamo
Commit
3de80ea

PUT /api/oauth-config/{id} stored whatever arrived under clientSecret. Responses mask the secret, and the edit form sends a blank back while promising "Leave blank to keep existing secret", so saving ANY edit to a Google or Microsoft integration's app registration (a display name, a note) replaced the real secret with a blank and broke its token exchange. Now only a non-blank value that is not the mask replaces it. **************** This build also picks up the library's credential guards (kamo-shared-library, same change set), which close two live exposures here: GET /api/security/org serialized the caller's own User as the owner of each org they own, with its password hash, recovery seed words, security answer and answer hashes; and the EHR exchange partner list returned each partner's inbound token hash. **************** now also proves an owned org written by the real HTTP wire mapper carries none of the owner's credentials.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing