DEV Community

Cover image for Ultra Config switches your whole Claude Code setup between five profiles mid-session
Daniel (San) Ávila
Daniel (San) Ávila

Posted on Originally published at Medium

Ultra Config switches your whole Claude Code setup between five profiles mid-session

I keep changing the same handful of things in Claude Code depending on what I am doing. Cheap and quiet when I am grinding through a long refactor. The most capable model and maximum effort when the problem is actually hard. Everything asking first when I am working in someone else’s repo. Those are different values in different places, and I was editing them by hand every time.

Ultra Config is a Mod I built so that it is one press instead.

Five profiles, one press each

Each profile is a list of settings with a reason attached to every one of them. This is what they set:

  • Token saver: model sonnet, effort low, subagents on haiku, Concise output, no prompt suggestions or recap, auto-compact on, small workflow fan-outs, the ultracode keyword off, and MCP output capped at 10,000 tokens (the default is 25,000).
  • Fast flow: model sonnet, effort medium, edits auto-accepted, Concise output, prompt suggestions on, turn duration and the progress bar on, medium workflows.
  • Max quality: the most capable model available to you, effort xhigh, subagents keep whatever model they ask for, default output style, workflows on with large fan-outs and the ultracode keyword, checkpoints and auto-compact on.
  • Guarded: every edit and command asks first, plan mode never acts on its own, bypassPermissions disabled, Read deny rules for .env, secrets/, ~/.ssh and ~/.aws, checkpoints on, verbose output, ultracode off.
  • Autopilot: auto permission mode including during plan, effort high, workflows on, recap on, push notifications when Claude decides something or needs you, auto-compact on.

The pane shows how much of a profile is already in force as a fraction, 3/11, and marks it active when all of it is. Open a profile and every line is either a change (old value struck through, new value, and why), something already set, or something skipped.

Token saver is the one I reach for most, and it is worth noticing what it is: the same model split I posted about last week, without installing a separate setting for it.

Install it and open the pane

npx claude-code-templates@latest --mod productivity/ultra-config
Enter fullscreen mode Exit fullscreen mode

It needs Claude Code 2.1.287 or later, which is the version where Mods are on by default, and a trusted project folder.

Ultra Config

Then:

  • /ultra-config opens the pane
  • /ultra-config <profile> opens it on one profile (saver, flow, quality, guarded, autopilot)
  • /ultra-config apply <profile> activates one and prints what it changed and what it skipped
  • /ultra-config undo reverts the last profile you activated, newest first
  • /ultra-config close closes the pane

Everything in the pane is a press, not a menu. There are no tabs and no arrow-key navigation, which matters because Claude Code already uses the left arrow for its own agents view.

In the fullscreen layout the pane docks next to the transcript, which needs /tui fullscreen and at least 110 columns. On the classic layout it sits above the prompt. In Claude Desktop it draws in the session's side panel.

Where the changes actually land

This is the part worth understanding before you let something rewrite your configuration.

Rows that exist in Claude Code’s own settings menu, like the model, the permission mode, the output style or auto-compact, are set through the same path the menu uses. Claude Code decides which file they go in, exactly as if you had changed them yourself.

Effort is saved per model, the way /effort saves it, under modelSettings in ~/.claude/settings.json. That keying matters: since Claude Code 2.1.251, a top-level effortLevel is ignored by Opus 5.5 and later models, so the Mod never writes one. A model id containing a dot, which is what you get on Bedrock and Vertex, cannot be saved this way, and the effort then applies to that one request only.

Four keys have no menu row, so they are written straight into ~/.claude/settings.json:

{
  "env": {
    "CLAUDE_CODE_SUBAGENT_MODEL": "haiku",
    "MAX_MCP_OUTPUT_TOKENS": "10000"
  },
  "permissions": {
    "disableBypassPermissionsMode": "disable",
    "deny": ["Read(./.env)", "Read(./secrets/**)", "Read(~/.ssh/**)"]
  }
}
Enter fullscreen mode Exit fullscreen mode

Before each of those writes the file is copied to settings.json.ultra-config.bak, and a settings.json that is not valid JSON is never overwritten: those steps are skipped and the pane says why. The last 20 activations are kept in the plugin's store, so undo still works after a restart and puts back the values it changed, leaving alone any deny rule you already had.

What to check before you trust a profile

  1. Guarded does not stop a shell read. The rules it adds are Read() rules, and a Read deny rule blocks Claude's file tools, not a shell command that reads the same file. The Mod's own README says this plainly, which is more than most components do, but it is the thing people get wrong about deny rules.
  2. The subagent model does not reach Explore and Plan. CLAUDE_CODE_SUBAGENT_MODEL on its own does not change the model the built-in Explore and Plan subagents run on. If you want Token saver's haiku to apply to every subagent, you also need CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1, which requires 2.1.257 or later.
  3. Two of those keys only take effect next session. CLAUDE_CODE_SUBAGENT_MODEL and MAX_MCP_OUTPUT_TOKENS are read when Claude Code starts. The menu rows apply right away and the effort applies from your next message, but those two do not.
  4. disableBypassPermissionsMode locks you out too. It is the string "disable", it works from any settings file, and while it is set Claude Code rejects --dangerously-skip-permissions and ignores an agent definition asking for bypassPermissions. Guarded writes it to your user settings, so undo is how you get it back, not a flag.

Where the Mods live

Ultra Config

You can follow me on my social media:

Top comments (0)