Settings reference
Every setting, its default, and the quickest way to change it. Most people never need more than optiflume configure.
Where settings live
| File | Holds |
|---|---|
~/.optiflume/config/routing-config.json | Routing, notifications, updates, working memory and telemetry, for this Mac. Created by the installer. |
~/.optiflume/config/advanced-config.json | The Guardian, in a safety section. Optional; create it to change a safety default. |
<project>/.optiflume/config.json | Routing and notification settings for one project, read by every tool. Optional; see per-project settings. |
All three are plain JSON. Edit them with any text editor; changes apply to the next prompt, with no restart. Keep the other keys in the file when you add one. If routing-config.json is not valid JSON, OptiFlume ignores it and suggests only, and optiflume doctor reports it. A freshly installed routing-config.json looks like this:
{
"routing_action": "auto_switch",
"prefer_quality": false,
"notify_disabled_model_savings": false,
"auto_resubmit": false,
"switch_notification": false,
"config_version": 3
}config_version, configured_at and telemetry_off_by are written by OptiFlume; leave them as they are. auto_resubmit is kept for older installs and has no effect.
The console
Console settings apply to every Mac signed in to your account. Usage reporting already syncs to every Mac at its next check-in. Setting the routing, notification, safety and update choices there for all your Macs is coming soon; for now, change them on each Mac as shown below. A project’s own settings file always wins for that project.
Routing
In routing-config.json, or a project file.
routing_actionDefault"auto_switch"Values: "auto_switch" (on: switch automatically), "block" (paused: suggest only), "disabled" (off: no switching and no suggestions)- Switch automatically, suggest only, or off; with off the Guardian and working memory stay on. See modes. If the key is missing, OptiFlume suggests only. All three apply in Cursor, Claude Code and Codex; in Claude Code and Codex, suggest only names the better model under your prompt and sends the prompt on yours.
- Change it:
optiflume auto-switch on|pause|off,optiflume configure prefer_qualityDefaultfalseValues: true, falsefalse: cost first, the lowest-priced model rated for the work.true: quality first, the strongest, newest model rated for it. Applies in Cursor, Claude Code and Codex.- Change it:
optiflume configure
Notifications
In routing-config.json, or a project file.
switch_notificationDefaultfalseValues: true, false- Shows the Stop/Keep notice with each automatic switch and waits before the prompt sends, in Cursor, Claude Code and Codex. See Stop/Keep.
- Change it:
optiflume notice on|off,optiflume configure, or edit the file switch_notification_secondsDefault5Values: Seconds, 3 to 60 (below 3 is raised to 3)- How long a switch waits for Stop or Keep before the prompt sends on the new model, in every tool. Used only when
switch_notificationis on. Replaces the olderswitch_stop_window_ms, which is still read when this key is absent. - Change it:
optiflume notice seconds N,optiflume configure, or edit the file notify_disabled_model_savingsDefaultfalseValues: true, false- Reserved.
optiflume configureasks about it and stores it; current versions do not act on it. - Change it:
optiflume configure
Updates
In routing-config.json only.
auto_updateDefaulttrueValues: true, false- Installs verified updates by itself. With
false, an Update note appears instead and you install withoptiflume update. - Change it: Edit the file
update_checkDefaulttrueValues: true, false- Checks for new versions. With
false, OptiFlume never checks or installs on its own;optiflume updatestill works. - Change it: Edit the file
Working memory
In routing-config.json only.
Guardian
In advanced-config.json, inside a safety section. What each check covers is on the Guardian page.
{
"safety": {
"block_destructive_commands": true,
"whitelisted_commands": ["rm -rf ./dist"]
}
}enabledDefaulttrueValues: true, false- Turns the Guardian on or off.
- Change it:
optiflume guardian onoroptiflume guardian off,optiflume configure redact_env_filesDefaulttrueValues: true, false- Keeps sensitive files such as
.env, and files with secrets, away from the model. Withfalse, file reads are not checked. - Change it: Edit
advanced-config.json detect_personal_dataDefaulttrueValues: true, false- Looks for card numbers, IBANs, phone numbers and US Social Security numbers in files the agent reads. With
false, that check is off. - Change it: Edit
advanced-config.json warn_destructive_commandsDefaulttrueValues: true, false- Asks before deletes of what existed before the session and destructive shell commands (in Cursor and Codex the agent stops and asks you in chat).
- Change it: Edit
advanced-config.json block_destructive_commandsDefaultfalseValues: true, false- Blocks those deletes and destructive commands in every tool instead of asking.
- Change it: Edit
advanced-config.json modeDefault"ask"Values: "ask", "strict", "allow"- What happens on a secret or sensitive find, in every tool:
askpauses and asks you (Claude Code shows its dialog; in Cursor and Codex the agent asks in chat, replyallow);strictkeeps it out with no question;allowlets it through with a warning. The olderstopandwarnstill work asaskandallow, and the older keywhen_cannot_askis moved here on update. See Three modes. - Change it:
optiflume guardian ask|strict|allow,optiflume configure whitelisted_filesDefault[]Values: List of strings- Files whose path contains any of these are read as is, with no check.
- Change it:
optiflume allow <file>adds a file’s full path; or editadvanced-config.json whitelisted_commandsDefault[]Values: List of strings- Commands containing any of these run without a question or block.
- Change it: Edit
advanced-config.json
Telemetry
In routing-config.json only.
telemetryDefaulttrueValues: true, false- Sends the daily usage rollup (counts only) behind your console.
optiflume analyticsworks either way. See Analytics and telemetry. - Change it:
optiflume telemetry on|off, or the console on any version
Turning usage reporting off in the console stops storing rollups at once, and each Mac turns its own switch off at its next check-in; turning it back on there turns them back on. A Mac you turned off with optiflume telemetry off stays off until you turn it on again on that Mac.
Per-project settings
To give one project its own mode or preference, run this from the project folder:
cd ~/code/my-project
optiflume configure --projectIt asks for the mode (on, pause for suggest only, off, or the same as global) and the preference (cost first, quality first, or the same as global), and saves your choices in .optiflume/config.json in the project:
{
"routing_action": "block",
"prefer_quality": true
}- A project file can hold
routing_action,prefer_quality,switch_notificationandswitch_notification_seconds. Each key it sets replaces the global value while you work in that project, in Cursor, Claude Code and Codex. - Projects set up with an older version have
.cursor/intent-router.jsoninstead. It is still read when.optiflume/config.jsondoes not exist, andoptiflume configure --projectcarries its settings over into the new file. - Update, working memory, telemetry and safety settings are per Mac and are not read from project files.
- In a workspace with several folders, the first folder that has a project file is used.
- Commit the file to share the setting with your team, or add it to
.gitignoreto keep it to yourself. - To go back to your global settings, delete the file.
Check what is in force
optiflume status # mode and preference for this Mac
optiflume auto-switch status # automatic switching and recent switches
optiflume telemetry status # usage reporting
cat ~/.optiflume/config/routing-config.json