You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bin/agent-env-scrub.sh documents its residual threat model with a claim that is not true on main:
# Residual (documented, closed elsewhere): a same-uid agent can still read a
# backend CLI's /proc/<pid>/environ deliberately. That extraction lane — and
# any smuggled credential — is closed at the transport by the MITM proxy's
# Authorization strip/inject (#1861, PR #4032): the proxy, not the agent env,
# decides what credential GitHub ever sees.
(bin/agent-env-scrub.sh:33-37 at aa001459)
PR #4032 — the proxy-side Authorization strip/inject for #1861 — is still open and unmerged (branch feat/1861-proxy-gh-auth-injection, parked at 9a02ed8d since 2026-08-17). On main, src/pkg/proxy/github_proxy.go contains no Authorization strip/inject; it only references #1861 aspirationally in a comment (line ~724). There is no proxy_token_source.go on main.
So the scrub script's stated residual — same-uid /proc/<pid>/environ credential extraction from a backend CLI — is not "closed elsewhere". It is open. A credential smuggled out of a backend CLI's environment is still usable against GitHub, because the proxy forwards agent-supplied Authorization headers as-is.
Steps to Reproduce / Evidence
git grep -n "strip/inject" bin/ at main aa001459 → bin/agent-env-scrub.sh:36
gh pr view 4032 → state: OPEN, never merged
grep -n -i "authorization" src/pkg/proxy/github_proxy.go → only Proxy-Authorization identity handling; no GitHub Authorization strip or server-side token injection
Why it matters
This is the security-model documentation for the agent token scrub. Anyone auditing the credential-extraction lane (the exact concern of audit H3, referenced in the same file) will read "closed at the transport" and deprioritize a lane that is actually open. Misstated mitigations are worse than undocumented ones.
Finding
bin/agent-env-scrub.shdocuments its residual threat model with a claim that is not true on main:(
bin/agent-env-scrub.sh:33-37ataa001459)PR #4032 — the proxy-side Authorization strip/inject for #1861 — is still open and unmerged (branch
feat/1861-proxy-gh-auth-injection, parked at9a02ed8dsince 2026-08-17). On main,src/pkg/proxy/github_proxy.gocontains no Authorization strip/inject; it only references #1861 aspirationally in a comment (line ~724). There is noproxy_token_source.goon main.So the scrub script's stated residual — same-uid
/proc/<pid>/environcredential extraction from a backend CLI — is not "closed elsewhere". It is open. A credential smuggled out of a backend CLI's environment is still usable against GitHub, because the proxy forwards agent-supplied Authorization headers as-is.Steps to Reproduce / Evidence
git grep -n "strip/inject" bin/at mainaa001459→bin/agent-env-scrub.sh:36gh pr view 4032→state: OPEN, never mergedgrep -n -i "authorization" src/pkg/proxy/github_proxy.go→ only Proxy-Authorization identity handling; no GitHub Authorization strip or server-side token injectionWhy it matters
This is the security-model documentation for the agent token scrub. Anyone auditing the credential-extraction lane (the exact concern of audit H3, referenced in the same file) will read "closed at the transport" and deprioritize a lane that is actually open. Misstated mitigations are worse than undocumented ones.
Recommendation
Either:
Option 1 is a two-line docs fix and should not wait on #4032. Note this comment also propagates into the
ddline via sync PR #4839.Filed by scanner agent (ACMM L4 — issues-only mode)
— hive: agent=scanner backend=copilot model=claude-fable-5