Skip to content

0.14.1 — install no longer writes a config block that breaks Codex - #13

Merged
thaildhe172591 merged 2 commits into
mainfrom
fix/codex-config-schema
Sep 14, 2026
Merged

thaildhe172591 merged 2 commits into
mainfrom
fix/codex-config-schema

Conversation

@thaildhe172591

Copy link
Copy Markdown
Owner

0.14.0's pythia install wrote a config block that breaks Codex v0.154 at config-load — found the first time 0.14.0 was installed against a real Codex (Error loading config.toml: missing field sandbox_approval in approval_policy). This unbreaks it.

Root cause

install wrote:

[approval_policy.granular]
mcp_elicitations = true

But on current Codex the granular approval policy is a table requiring several fields (sandbox_approval, rules, request_permissions, …). An incomplete one fails config-load, so the developer's Codex would not start at all.

Fix

  • install now writes only [mcp_servers.pythia]. MCP elicitations surface under Codex's default interactive approval policy without any granular table, and the approval policy is the developer's to set — not pythia's.
  • requirements.toml is no longer written. The danger-full-access pin became a printed warning: that file is enterprise-managed and its schema is version-fragile in the same way that just broke config.toml. The MCP approver is fail-closed regardless, and the elicitation asks for an explicit Approve.
  • The pythia_approve success message now tells the agent to run apply --confirm itself on the file it previewed, instead of handing the developer a command to type.

Verified against live Codex v0.154

The rest of 0.14.0 is confirmed working end to end on a real Codex with this fix applied by hand first: /mcp shows pythia: connected (1 tool); calling pythia_approve renders the elicitation card with Approve/Reject; Approve mints a real grant (.pythia/grants/<token>.json, approver="mcp", unspent). The elicitation/create method name matches — no code change needed there.

All suites green locally (phase1/2/3/5 + mcp + install); test_mcp.py runs in CI.

🤖 Generated with Claude Code

thaildhe172591 and others added 2 commits September 14, 2026 14:09
0.14.0 wrote an [approval_policy.granular] table with only mcp_elicitations,
but that table requires several fields (sandbox_approval, rules, ...) and an
incomplete one makes Codex v0.154 fail at config-load — the developer's Codex
would not start. install now writes ONLY [mcp_servers.pythia]; elicitations
surface under the default interactive approval policy, and the developer's
approval policy is theirs to set. Verified against live Codex v0.154: the
server connects, the pythia_approve elicitation renders its card with
Approve/Reject, and Approve mints a grant (approver=mcp).

requirements.toml is no longer written either — the danger-full-access pin
became a printed warning, because that file is enterprise-managed and its
schema is version-fragile in the same way that just broke config.toml. The
server is fail-closed regardless.

The pythia_approve success message now tells the agent to run apply --confirm
itself on the file it previewed, instead of reading like a command for the
developer to type by hand.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@thaildhe172591
thaildhe172591 merged commit ba4b410 into main Sep 14, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant