Ask: let users set the fallback Claude model once, instead of the hardcoded opus, and apply it to the stop-review gate too.
What happens today
- A skill invoked without
--model runs on Opus: scripts/lib/claude-cli.mjs:647 has export const DEFAULT_MODEL = "opus";, applied by resolveDefaultModel.
- The turn-end review gate never passes a model (
hooks/stop-review-gate-hook.mjs:193, runClaudeReview(cwd, prompt, {...})), so it always runs on Opus and cannot be steered at all.
- No supported override exists:
config.json only knows stopReviewGate (scripts/lib/state.mjs:55), and no environment variable is consulted.
Why it matters
Some users need one Claude model for every call — for example Fable only, because of plan quota policy or a review standard. Today the only lever is an AGENTS.md instruction telling Codex to always add --model fable. On Codex CLI 0.151.0 (codex exec) that works — the root added --model fable --effort max on its own — but it is a prompt-level guarantee, and it cannot reach the gate, which takes no arguments.
Proposal
config.json gains defaultModel (and optionally defaultEffort), settable through setup, e.g. $cc:setup --default-model fable --default-effort max, and shown in $cc:setup output next to review gate.
- A machine-wide override, e.g.
CC_PLUGIN_CODEX_DEFAULT_MODEL / CC_PLUGIN_CODEX_DEFAULT_EFFORT, matching the existing CC_PLUGIN_CODEX_* naming.
- Precedence: explicit
--model / --effort → env → config.json → built-in opus, so nothing changes for users who do not opt in.
- The stop-review gate reads the same resolved default, so the gate and the skills use one model.
Values pass through the existing alias handling (fable, opus, sonnet, haiku, or a full model id); Claude Code keeps owning model resolution and supported effort levels, as in 1.4.0.
Environment
- cc-plugin-codex 1.5.0, installed via
codex plugin marketplace add sendbird/codex-marketplace
- Codex CLI 0.151.0; ChatGPT desktop app 26.831 (bundled codex 0.152.0)
- Claude Code 2.1.258; macOS 26.6
I can test a pre-release build.
Ask: let users set the fallback Claude model once, instead of the hardcoded
opus, and apply it to the stop-review gate too.What happens today
--modelruns on Opus:scripts/lib/claude-cli.mjs:647hasexport const DEFAULT_MODEL = "opus";, applied byresolveDefaultModel.hooks/stop-review-gate-hook.mjs:193,runClaudeReview(cwd, prompt, {...})), so it always runs on Opus and cannot be steered at all.config.jsononly knowsstopReviewGate(scripts/lib/state.mjs:55), and no environment variable is consulted.Why it matters
Some users need one Claude model for every call — for example Fable only, because of plan quota policy or a review standard. Today the only lever is an
AGENTS.mdinstruction telling Codex to always add--model fable. On Codex CLI 0.151.0 (codex exec) that works — the root added--model fable --effort maxon its own — but it is a prompt-level guarantee, and it cannot reach the gate, which takes no arguments.Proposal
config.jsongainsdefaultModel(and optionallydefaultEffort), settable through setup, e.g.$cc:setup --default-model fable --default-effort max, and shown in$cc:setupoutput next toreview gate.CC_PLUGIN_CODEX_DEFAULT_MODEL/CC_PLUGIN_CODEX_DEFAULT_EFFORT, matching the existingCC_PLUGIN_CODEX_*naming.--model/--effort→ env →config.json→ built-inopus, so nothing changes for users who do not opt in.Values pass through the existing alias handling (
fable,opus,sonnet,haiku, or a full model id); Claude Code keeps owning model resolution and supported effort levels, as in 1.4.0.Environment
codex plugin marketplace add sendbird/codex-marketplaceI can test a pre-release build.