Configuration

Settings reference

Every setting, its default, and the quickest way to change it. Most people never need more than optiflume configure.

Where settings live

FileHolds
~/.optiflume/config/routing-config.jsonRouting, notifications, updates, working memory and telemetry, for this Mac. Created by the installer.
~/.optiflume/config/advanced-config.jsonThe Guardian, in a safety section. Optional; create it to change a safety default.
<project>/.optiflume/config.jsonRouting 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_qualityDefault falseValues: true, false
false: 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_notificationDefault falseValues: 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_secondsDefault 5Values: 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_notification is on. Replaces the older switch_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_savingsDefault falseValues: true, false
Reserved. optiflume configure asks about it and stores it; current versions do not act on it.
Change it: optiflume configure

Updates

In routing-config.json only.

auto_updateDefault trueValues: true, false
Installs verified updates by itself. With false, an Update note appears instead and you install with optiflume update.
Change it: Edit the file
update_checkDefault trueValues: true, false
Checks for new versions. With false, OptiFlume never checks or installs on its own; optiflume update still works.
Change it: Edit the file

Working memory

In routing-config.json only.

share_context_across_toolsDefault trueValues: true, false
Offers a new conversation the latest working memory from another conversation in the same project folder, from Cursor, Claude Code or Codex, if it was active in the last 24 hours. Pro and the trial; it stays on your Mac. See Context shared across tools.
Change it: Edit the file

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"]
  }
}
enabledDefault trueValues: true, false
Turns the Guardian on or off.
Change it: optiflume guardian on or optiflume guardian off, optiflume configure
redact_env_filesDefault trueValues: true, false
Keeps sensitive files such as .env, and files with secrets, away from the model. With false, file reads are not checked.
Change it: Edit advanced-config.json
detect_personal_dataDefault trueValues: 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_commandsDefault trueValues: 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_commandsDefault falseValues: 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: ask pauses and asks you (Claude Code shows its dialog; in Cursor and Codex the agent asks in chat, reply allow); strict keeps it out with no question; allow lets it through with a warning. The older stop and warn still work as ask and allow, and the older key when_cannot_ask is 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 edit advanced-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.

telemetryDefault trueValues: true, false
Sends the daily usage rollup (counts only) behind your console. optiflume analytics works 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 --project

It 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_notification and switch_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.json instead. It is still read when .optiflume/config.json does not exist, and optiflume configure --project carries 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 .gitignore to 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

Last updated 8 October 2026

Questions? support@optiflume.ai