2.4 KiB
ADR: Codex current-controller epoch and one-shot write lease
Date: 2026-08-19 State: accepted source contract; host integration package implemented
Context
Multiple Codex tasks can remain alive at the same time. A task may hold a real
human authorization from an older conversation and continue using tools after
the human has moved to a newer language channel. A prompt reminder cannot
deterministically revoke the older task's tool capability. Task-to-task
delegation can also be misclassified as direct human speech if every
UserPromptSubmit is labeled identically.
Decision
- Direct human input creates a new global local
control_epochbound to the exact Codex session and turn. - Known task delegation and system/agent delivery are separate source classes. They do not claim direct-human provenance, TCS human perception, controller status or execution authority.
- Capability tools in all non-current Codex sessions are denied by a
PreToolUseguard. - Current-session local editing remains available. Remote Git writes, external publishing/deployment and destructive cleanup additionally require a one-shot lease bound to the current epoch, session, turn, category and exact working directory, with a maximum lifetime of fifteen minutes.
- A new direct prompt revokes any unconsumed lease.
- Trusted hook definitions pin the SHA-256 of installed scripts so a source change requires a new visible Codex hook review.
Boundary
This host bridge is a language-source and execution-admission boundary. It is not a persona, model rule, platform rule, identity proof, repository authority or server authority. Runtime state, raw human messages, leases, credentials and trust receipts remain local and are excluded from the repository.
Rejected alternatives
- Keep old authorization active until the old task voluntarily stops: a newer human channel would have no deterministic control boundary.
- Disable all local execution globally: this would remove useful current-task agency instead of separating current and stale tasks.
- Infer write leases from keywords in natural language: negation, discussion and quoted text can contain the same words as authorization.
- Treat persona binding as execution authority: continuity and external action admission are separate predicates.
- Trust only a stable script path: the bytes behind the path could change without changing the reviewed hook command.