{"slug": "ultra-config-switches-your-whole-claude-code-setup-between-five-profiles-mid", "title": "Ultra Config switches your whole Claude Code setup between five profiles mid-session", "summary": "A developer built Ultra Config, a Claude Code Mod that switches the entire tool configuration between five presets (saver, flow, quality, guarded, autopilot) mid-session with a single keypress. Each profile bundles settings such as model, effort level, subagent model, output style, permission mode, workflow fan-out size and MCP output caps, and the pane shows how much of a profile is already in force as a fraction. The Mod requires Claude Code 2.1.287 or later and writes settings through the same paths Claude Code's own menu uses, including per-model effort under modelSettings in ~/.claude/settings.json.", "body_md": "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.\n\n[Ultra Config](https://www.aitmpl.com/component/mod/productivity/ultra-config) is a Mod I built so that it is one press instead.\n\n// Detect dark theme var iframe = document.getElementById('tweet-2111558707033018828-99'); if (document.body.className.includes('dark-theme')) { iframe.src = \"https://platform.twitter.com/embed/Tweet.html?id=2111558707033018828&theme=dark\" }\n\nEach profile is a list of settings with a reason attached to every one of them. This is what they set:\n\n`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).`medium`, edits auto-accepted, Concise output, prompt suggestions on, turn duration and the progress bar on, medium workflows.`xhigh`, subagents keep whatever model they ask for, default output style, workflows on with large fan-outs and the `bypassPermissions` disabled, Read deny rules for `.env`, `secrets/`, `~/.ssh` and `~/.aws`, checkpoints on, verbose output, `high`, workflows on, recap on, push notifications when Claude decides something or needs you, auto-compact on.\nThe 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.\n\nToken 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.\n\n// Detect dark theme var iframe = document.getElementById('tweet-2108687263043575923-831'); if (document.body.className.includes('dark-theme')) { iframe.src = \"https://platform.twitter.com/embed/Tweet.html?id=2108687263043575923&theme=dark\" }\n\n```\nnpx claude-code-templates@latest --mod productivity/ultra-config\n```\n\nIt needs Claude Code 2.1.287 or later, which is the version where Mods are on by default, and a trusted project folder.\n\nThen:\n\n`/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\nEverything 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.\n\nIn 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.\n\n// Detect dark theme var iframe = document.getElementById('tweet-2111624442413756446-753'); if (document.body.className.includes('dark-theme')) { iframe.src = \"https://platform.twitter.com/embed/Tweet.html?id=2111624442413756446&theme=dark\" }\n\nThis is the part worth understanding before you let something rewrite your configuration.\n\nRows 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.\n\nEffort 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.\n\nFour keys have no menu row, so they are written straight into `~/.claude/settings.json`:\n\n```\n{\n  \"env\": {\n    \"CLAUDE_CODE_SUBAGENT_MODEL\": \"haiku\",\n    \"MAX_MCP_OUTPUT_TOKENS\": \"10000\"\n  },\n  \"permissions\": {\n    \"disableBypassPermissionsMode\": \"disable\",\n    \"deny\": [\"Read(./.env)\", \"Read(./secrets/**)\", \"Read(~/.ssh/**)\"]\n  }\n}\n```\n\nBefore 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.\n\n`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.`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 `CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1`, which requires 2.1.257 or later.` 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.`\"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 `undo` is how you get it back, not a flag.", "url": "https://wpnews.pro/news/ultra-config-switches-your-whole-claude-code-setup-between-five-profiles-mid", "canonical_source": "https://dev.to/dani_avila7/ultra-config-switches-your-whole-claude-code-setup-between-five-profiles-mid-session-4199", "published_at": "2026-10-19 15:00:58+00:00", "updated_at": "2026-10-19 15:14:42.695961+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "developer-tools", "ai-products"], "entities": ["Claude Code", "Ultra Config", "Anthropic", "Claude Desktop", "aitmpl.com"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/ultra-config-switches-your-whole-claude-code-setup-between-five-profiles-mid", "markdown": "https://wpnews.pro/news/ultra-config-switches-your-whole-claude-code-setup-between-five-profiles-mid.md", "text": "https://wpnews.pro/news/ultra-config-switches-your-whole-claude-code-setup-between-five-profiles-mid.txt", "jsonld": "https://wpnews.pro/news/ultra-config-switches-your-whole-claude-code-setup-between-five-profiles-mid.jsonld"}}