chore(agent-tools): bump the codex pin 0.133.0 → 0.146.0 — Tier-2 compat re-verification first (13 stable releases of drift) [schedule: Daily agent update check] #249
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab#249
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?
Goal
Move the agent-tools codex pin from
0.133.0to0.146.0(13 stable releases, ~2 months of drift), re-verifying the Tier-2 compat record first, exactly ascontainers/agent-tools/versions.envanddocs/ops.md § "Agent-tools images"mandate:The re-verification is the work. The two-line
versions.envedit is the trivial part. If re-verification finds drift the record cannot absorb, the correct outcome is to report the drift on this issue and land only the compat-record updates — not to force the bump through.Evidence — current state
containers/agent-tools/versions.env:25-26:internal/compat/codex/compat.md:3-5:(The one exception already recorded there: the §1 model-catalog probe schema is additionally live-verified against 0.144.1, 2026-07-13, issue #156 / ADR-0043. Everything else is 0.133.0.)
Upstream stable releases published since (GitHub
openai/codex,rust-v*non-prerelease tags):0.147.0-alpha.*exists but is a prerelease — 0.146.0 is the target, not an alpha.New pin values (verified against the GitHub release's own per-asset digest for
rust-v0.146.0, the exact URLcontainers/agent-tools/build.sh:75-78fetches):(asset
codex-x86_64-unknown-linux-musl.tar.gz, 114169492 bytes, fromhttps://github.com/openai/codex/releases/download/rust-v0.146.0/codex-x86_64-unknown-linux-musl.tar.gz— re-derive the digest yourself from the downloaded file; do not trust this issue as the sole source.)Security advisories closed by this window — these DO reach us
The codex binary is a statically linked Rust artifact we ship into every container instance (
agent-tools:codex-<ver>, ADR-0051), so its bundled dependencies are ours./difffrom running repository-provided Git helpers/hooks, avoids PowerShell parser execution on non-Windows hosts, and rejects browser-origin exec-server websocket handshakes. (#24954, #24946, #24947)" — the/diffone reaches us directly:/diffis a chat-safe row in our static catalog (internal/provider/codex/commands.go:40), so lab exposes it in the composer, and on 0.133.0 invoking it can execute repo-provided git helpers/hooks from the instance's worktree.rmdetection, consistent full-access confirmation, and preserved rejection reasons across tools. (#32989, #33464, #34400)" — see the risk list below; "consistent full-access confirmation" is the one item that could break us rather than help us.What actually changed that touches how this repo uses codex
Every item below maps to a numbered section of
internal/compat/codex/compat.md. Each is a hypothesis to verify, not a confirmed break — none of this was observed on a live 0.146.0 binary during this investigation.§1 Spawn argv —
{codex} --ask-for-approval never --sandbox danger-full-access -c project_doc_fallback_filenames=["AGENTS.local.md"] [--model M] -c model_reasoning_effort=E [prompt]--sandbox danger-full-accessnow prompts for confirmation, every unattended spawn hangs at start. Verify first; if it reproduces, this bump is blocked and the issue should be reported rather than worked around.--profilethe primary profile selector across CLI, TUI permissions, and sandbox flows, with legacy profile configs rejected through migration guidance." We set no profile, but the sandbox/permission plumbing was reworked underneath our flags.writesapp-approval mode — a new enum member alongsidenever; confirmneverstill parses and still means never.codex debug modelscatalog probe and the per-model effort seam (ADR-0043). Our probe already asserts ordering-independent invariants, but re-run it.§4 Context-file discovery (
AGENTS.local.mdviaproject_doc_fallback_filenames)AGENTS.mdfiles are picked up consistently."AGENTS.mddiscovery...".gitis a file pointing at the reference repo's bare clone), which is exactly the symlinked/indirect workspace shape these fixes touch. Re-verify thatAGENTS.local.mdis still discovered from a worktree cwd.§5 Transcript location + rollout JSONL grammar — lab reads the rollout JSONL as the chat transcript.
turn_aborted/interruptedpair we pin.ParseRollout/ReadChatmust degrade gracefully on unknown event kinds (Claude Code's parser already does; confirm codex's does too rather than erroring).§6 Reply + interrupt recipes (bracketed paste → paced Enter; single Escape) — the most fragile coupling.
@now opens the unified mentions menu for files, plugins, and skills by default." A reply body containing@(an email address, a@userhandle, a Go module path) pasted into the composer could now open a mentions overlay that lab can neither see nor dismiss, stranding the session. OurvalidateReplyrejects control characters but not@. Test explicitly with an@in the reply text.Ctrl-Chandling from unsupported keyboard enhancement setup" — lab drives codex over tmux; §6's "Ctrl-C is forbidden EVERYWHERE" pin should be re-confirmed (it is still forbidden by lab's recipes either way, but the pinned rationale may have shifted).§7 Builtin slash-command catalog (
internal/provider/codex/commands.go, a static table scraped verbatim from the live 0.133.0 TUI popup)/newor/clear." Both rows areChatSafe: truein our table (commands.go:32-35), and/newcarriesprovider.CommandRoleClear— i.e. it backs lab's New conversation action. If either now opens a naming input overlay, the clear path strands the TUI. Verify before leaving those rows chat-safe./archive+codex archive/unarchive(0.136.0),/usage(0.140.0),/delete+codex delete(0.140.0),/import(0.140.0, extended 0.145.0)./realtime(0.140.0 — not in our table anyway).ChatSafecuration and per-row reasons.§9 Attribution ground truth — 0.134.0 #23963 adds "subagent identity in hook inputs"; §8 records hooks as the LiveSignals follow-up substrate. Worth a note, not a gate.
Build/CI (
containers/agent-tools/build.sh,.forgejo/workflows/agent-tools.yml)build.sh's URL keeps working and no build.sh change is needed now. Record it indocs/ops.md § Agent-tools imagesas a watch item: thegithub.comegress requirement listed there may eventually need to becomereleases.openai.com.Scope — files an implementing agent will touch
containers/agent-tools/versions.envCODEX_VERSION+CODEX_SHA256_X64_MUSL_TGZ, moved atomically with the compat-record updateinternal/compat/codex/compat.mdinternal/provider/codex/commands.go/new+/clearre-curation)internal/provider/codex/*.go+testdata/docs/ops.mdnix/module.nixneeds no edit —container.toolsImagesderives its default tag fromversions.envat eval time (nix/module.nix:197-213).Done means
LAB_COMPAT_LIVE=1 go test ./internal/compat/codex/ -run Live -v(
TestCompat_Live_loginStatusParses,TestCompat_Live_locateTranscript,TestCompat_Live_debugModelsProbe).@, mid-turn queue-with-steer, single-Esc abort marker, idle double-Esc +qrecovery. Ctrl-C stays forbidden and untested outside a disposable session.--ask-for-approval never --sandbox danger-full-accessstill starts a turn with no confirmation prompt.AGENTS.local.mdis still discovered from a linked-worktree cwd./newand/clearre-curated against the naming-prompt change.go test ./...green (hermetic; fixtures updated only if the rollout grammar genuinely moved).golangci-lint runclean.containers/**) builds the codex image and passes the injection smoke test on the PR — locally reproducible withcontainers/agent-tools/build.sh codex && containers/agent-tools/smoke-test.sh codex.Closes #<this issue>.Out of scope
CLAUDE_CODE_VERSION=2.1.220is the newest published release (npm@anthropic-ai/claude-codedist-taglatest=2.1.220, published 2026-07-24;stable=2.1.212). Nothing to bump. Its outstanding live re-verification is tracked on #235.versions.env:28-30) — still deferred to #126./usage, hooks-as-LiveSignals). Record what you observe in the compat doc; file follow-ups; do not build.Filed by the Daily agent update check schedule, 2026-07-31. Release notes quoted from the GitHub releases API for
openai/codex(rust-v0.134.0…rust-v0.146.0); the project'sCHANGELOG.mdis a stub pointing at that releases page.Re-verified 2026-08-01 (Daily agent update check): the target is unchanged —
0.146.0is still the newest stable. One new thing to ignore.The
0.147.0alpha line has moved fast since this was filed (four more alphas in two days) and0.147.0-alpha.4will be what the GitHub releases page shows at the top. It is still a prerelease — do not take it.rust-v0.146.0remains the target, exactly as the body says, and the pin values quoted there are unchanged.Everything else in this issue — the Tier-2 re-verification checklist, the security window, the per-section drift hypotheses, and the scope table — stands as written. Nothing new to fold in.