Context
Operator-directed friction→gold (2026-06-14): the agent-identity-drift incident this session must "become substrate, plus the approach on how to fix issues like this, in case it ever happens again." The team owns the live identity reset; this ticket owns the durable forensic record + diagnostic/fix runbook so the next occurrence is fast to recognize, diagnose, and repair.
The Incident (summary)
@neo-gpt (Euclid)'s harness identity drifted to neo-opus-ada (my identity) across both surfaces:
- GitHub: PRs #13233 + #13235 opened with
neo-opus-ada as the opener while the commit author was correctly neo-gpt (git config). gh api user in his worktree returned neo-opus-ada (his V-B-A on #13234).
- Memory-core A2A: his A2A messages arrived from
neo-opus-ada, and mark_read rejected him "as unauthorized for the recipient" on @neo-gpt-addressed messages — i.e. he and I collided as neo-opus-ada on the bus.
The Mechanism (why)
- PR opener / GitHub API identity = the gh auth token, resolved from the
GH_TOKEN env var (it overrides gh auth login). The github-workflow MCP shares this — GraphqlService fetches via gh auth token — so the MCP and the gh CLI authenticate identically. A wrong GH_TOKEN corrupts both, silently.
- Commit author = git config
user.name/user.email (separate; was correct).
- Memory-core A2A identity = the session identity-source (also drifted).
- A single drifted identity-config therefore desyncs GitHub-opener + memory-core while git-config stays correct → the divergence signature.
The Deliverable
learn/agentos/incidents/2026-06-14-agent-identity-drift.md — forensic record (matching the house format of the existing incidents) covering: the incident, the mechanism, the diagnostic runbook (symptom signature + gh api user --jq .login vs git config user.email vs expected-agent-identity divergence check), the fix approach (reset the session identity-config across surfaces), and the prevention recommendation (a healthcheck + write-boundary identity assertion that fails loud — the same "don't erase a real failure into a clean result" principle as the Chroma swallow in #12450).
Acceptance Criteria
Out of Scope
- The live identity reset on the affected harness (operator/team owns it).
- The detection code (the healthcheck assertion) — rides #13234 (the canonical-AgentIdentity-load-bearing + surface-drift repair). This ticket is the forensic record + runbook only.
Related
- #13234 (@neo-gpt) — the identity-model code repair (canonical
AgentIdentity load-bearing + surface opener drift). This record is its forensic complement.
- #12450 — the same silent-failure anti-pattern (a real failure erased into a clean result instead of surfaced).
Authored by @neo-opus-ada (Ada, Claude Opus 4.8 [1M context]) — origin session 4c598c8f-d8a7-4288-9420-e825a45d310e.
Context
Operator-directed friction→gold (2026-06-14): the agent-identity-drift incident this session must "become substrate, plus the approach on how to fix issues like this, in case it ever happens again." The team owns the live identity reset; this ticket owns the durable forensic record + diagnostic/fix runbook so the next occurrence is fast to recognize, diagnose, and repair.
The Incident (summary)
@neo-gpt (Euclid)'s harness identity drifted to
neo-opus-ada(my identity) across both surfaces:neo-opus-adaas the opener while the commit author was correctlyneo-gpt(git config).gh api userin his worktree returnedneo-opus-ada(his V-B-A on #13234).neo-opus-ada, andmark_readrejected him "as unauthorized for the recipient" on@neo-gpt-addressed messages — i.e. he and I collided asneo-opus-adaon the bus.The Mechanism (why)
GH_TOKENenv var (it overridesgh auth login). The github-workflow MCP shares this —GraphqlServicefetches viagh auth token— so the MCP and theghCLI authenticate identically. A wrongGH_TOKENcorrupts both, silently.user.name/user.email(separate; was correct).The Deliverable
learn/agentos/incidents/2026-06-14-agent-identity-drift.md— forensic record (matching the house format of the existing incidents) covering: the incident, the mechanism, the diagnostic runbook (symptom signature +gh api user --jq .loginvsgit config user.emailvs expected-agent-identity divergence check), the fix approach (reset the session identity-config across surfaces), and the prevention recommendation (a healthcheck + write-boundary identity assertion that fails loud — the same "don't erase a real failure into a clean result" principle as the Chroma swallow in #12450).Acceptance Criteria
learn/agentos/incidents/2026-06-14-agent-identity-drift.mdauthored to the house forensic format (attribute table + Summary + Mechanism + Diagnostic Runbook + Fix + Prevention).gh api uservsgit configvs expected identity) is copy-pasteable.Out of Scope
Related
AgentIdentityload-bearing + surface opener drift). This record is its forensic complement.Authored by @neo-opus-ada (Ada, Claude Opus 4.8 [1M context]) — origin session 4c598c8f-d8a7-4288-9420-e825a45d310e.