Skip to content

v1.2.0 — Codex authentication fix

Choose a tag to compare

@cderinbogaz cderinbogaz released this 07 Aug 09:40
· 27 commits to main since this release
72bd703

Fixed: Codex models never authenticated

Every OpenAI model — GPT-5.6 Luna, Sol, and Terra — was failing on all four presets, including the default.

Juror builds a private CODEX_HOME for each run so user OAuth state, MCP servers, and global config cannot enter a review. That home starts empty, and Codex reads credentials only from $CODEX_HOME/auth.json — it ignores OPENAI_API_KEY in the environment. So Codex sent no Authorization header and every turn died on 401 Unauthorized before billing anything.

It surfaced as no usable report, not as an auth error, which is why it survived v1.0.0 and v1.1.0.

Juror now writes the same credential file codex login --with-api-key produces, at mode 0600, inside the home its permission profile already denies to model-run shell commands.

If you are on v1.0.x or v1.1.0 and supplied an OPENAI_API_KEY, your reviews were running without any OpenAI model. Upgrade.

Changed: fast jury reasoning settings

fast became the default preset in v1.1.0, so its settings decide out-of-the-box quality:

Model Before After
GPT-5.6 Luna (Codex/OpenAI) low max
DeepSeek V4 Flash (opencode/Fireworks) low high

DeepSeek stays at high rather than max: max is a valid variant, but in benchmarking it returned findings with no path and they were dropped.

Benchmark

Across 10 merged PRs spanning backend concurrency, a DB migration, CI, and web (2–33 files each), the fast jury published 43 findings for $4.25, against 13 from an incumbent reviewer on the same PRs. These counts are unadjudicated — per docs/benchmarking.md, mapping a report to a real defect is human work. Treat it as volume, not recall.

Known issue

Luna at max runs close to the 900s per_model_timeout_seconds. In the 10-PR benchmark one PR hit the wall and published nothing from Luna, and two more finished within 17% of it. If you review large diffs, raise it:

review:
  per_model_timeout_seconds: 1800

Full changelog: v1.1.0...v1.2.0