Switching models & defaults
The menu edits the defaults each tool already reads from its own config file. BlackFlare invents no settings and stores none of its own — it writes the same keys you would edit by hand, and the change applies to your next session.
Claude Code
Written to ~/.claude/settings.json.
| Menu | Key | Values |
|---|---|---|
| Model | model |
Aliases (opus, sonnet, haiku, opusplan), pinned claude-* IDs pulled live from models.dev, or your own custom IDs. Default removes the key. |
| Permission Mode | permissions.defaultMode |
default · auto · acceptEdits · plan · bypassPermissions |
| Effort | effortLevel |
low · medium · high · xhigh |
| Always Thinking | alwaysThinkingEnabled |
on / off |
Offline, the alias list is always available; pinned versions come from the last successful catalog fetch or a built-in fallback.
Codex
Written to ~/.codex/config.toml, top-level keys only — the editor never
descends into [tables], so your [sandbox_workspace_write] network and
writable-root settings are never touched.
| Menu | Key(s) | Values |
|---|---|---|
| Model | model |
Slugs from Codex’s own models_cache.json (models.dev’s OpenAI list as fallback), or custom slugs. Default removes the key. |
| Reasoning Effort | model_reasoning_effort |
Whatever the selected model advertises, in Codex’s order. Default removes the key. |
| Permission Mode | sandbox_mode + approval_policy + approvals_reviewer |
Read Only · Ask for approval · Approve for me · Full Access |
Effort follows the model
Codex publishes reasoning levels per model, so the menu offers exactly what your
configured model supports — GPT-5.6 Sol and Terra add max and ultra, Luna
adds max only, GPT-5.5 neither. A model with no metadata (a custom slug, the
models.dev fallback, or Default) gets the conservative common set
low · medium · high · xhigh.
If your config already names a level the model doesn’t advertise, the menu shows
it as Current: <value> (unsupported) rather than hiding it or quietly
rewriting it. Same principle for models: ones Codex marks visibility = "hide"
stay out of the list, but a hidden model already named in your config still
appears, checked.
Permission mode writes three keys at once
BlackFlare writes the same combinations Codex’s own /permissions menu does, in
a single atomic edit:
| Mode | sandbox_mode |
approval_policy |
approvals_reviewer |
|---|---|---|---|
| Read Only | read-only |
on-request |
user |
| Ask for approval | workspace-write |
on-request |
user |
| Approve for me | workspace-write |
on-request |
auto_review |
| Full Access | danger-full-access |
never |
user |
Picking a mode also removes the beta default_permissions key so the two
permission systems can’t coexist.
There is no Default here. Permissions are security state, so BlackFlare only
ever writes a mode you explicitly picked. Any other combination — a missing key,
a value Codex’s own menu never writes, a lingering default_permissions —
displays as Custom and is left exactly as it is.
Which apps pick up the change
Switching defaults works where the tool reads its shared config file fresh at session start:
- Claude Code — CLI and IDE extensions. Both read
~/.claude/settings.jsonon every new session. - Codex — CLI only. It loads
~/.codex/config.tomlat session start.
The Claude desktop app, the Codex IDE extension, and the ChatGPT desktop app are not supported: each stores and caches its configuration in its own app-specific location (the ChatGPT desktop app even sends model and effort per thread from its own picker), so defaults switched here never reach those sessions.
One more thing worth knowing: traffic is bidirectional. The GUI apps write
their own model and permission picks back into config.toml, so whoever wrote
last wins. A change made in Codex’s UI can replace one made here, and the
reverse is equally true.