CodexAppServerBackend now joins conflict locks, like Claude/Grok.
Acquire: an item/fileChange/requestApproval arbitrates on the edited paths before the patch applies (deny on deferred/cancelled/re-ground, ahead of the always-rule cache so an 'always allow' can't slip a conflicting edit past). The approval carries only the item id, so paths are captured from the fileChange item lifecycle (CodexAppServerDecoder.fileChangeItemPaths).
Release/observe: the same shared per-container server + git/gh/command interceptor wiring as Grok. Codex's approvals stay native (no MCP), so only the report routes register.
Gated on the vsock control socket, so default behavior is unchanged. CodexExecBackend (unattended, no interactive approval seam) is left unchanged.
Co-Authored-By: Claude Opus 4.8 <[email protected]>