http: add SSM-bearer HTTP proxy verb to close 'token on cmdline' leak path #99
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Today's
datastore-tokenrotation surfaced a real class of leak: any time an agent needs to make an authenticated HTTP request to a coilysiren backend with an SSM-stored bearer token, the only available shape isThat's the textbook anti-pattern. If the command substitution fails (auto-mode classifier denies the substitution but lets the literal through, agent retries with the resolved value inlined, transcript compaction stitches the value into chat, etc.) the token lands in the transcript. We hit exactly that today and had to rotate.
The audited wrappers (
coily channel <verb>,coily ops aws ssm, etc.) already resolve and inject the bearer internally - the value never crosses the agent boundary. The gap is the long tail: arbitrary endpoints not yet wrapped, ad-hoc verification curls, one-off probes against new modes on the backend.Proposal
A
coily http(orcoily ops http) verb that takes an SSM ref for the auth header and proxies the request, so the token only exists inside the coily process:--bearer-ssmresolves a SecureString param, setsAuthorization: Bearer <value>, never echoes it.--bearer-ssm /coilysiren/backend/datastore-tokenwhen<url>ishttp://api/*, so verification curls becomecoily http get http://api/agent-channel.--header-ssm KEY=pathfor non-bearer schemes (basic, custom).-ifor full headers. Status code in exit code on--fail.Why now
secrets.compare_digesttogether cannot prevent.Out of scope
curl with SSM-resolved headers.Related
coily channel list(this proposal would also serve as the fallback when a mode lacks a dedicated verb).Never echo decrypted valuesrule in agentic-os-kai/AGENTS.md - this verb is how that rule stays enforceable from the agent side.