Off Switches - xsyetopz/claudetto GitHub Wiki
This page tells maintainers and users which switches disable a part of claudetto or of Claude Code.
It lists each switch that disables a part of claudetto or of Claude Code that claudetto relies on.
For each switch, it gives the effect and the code that sets or reads it.
Paths start at src/plugins/claudetto/ unless they say otherwise.
There are four ways to disable a part:
- A
CLAUDETTO_variable. The code reads none, so there are none. - A key or an
enventry of the settings snippet. - An
enabledPluginsentry for a built-in plugin or a claudetto add-on. - A
skillOverridesentry.
The snippet is the merge of the settings objects of the slices.
The settings command of claudetto-setup merges it into a settings file with --apply.
Without --apply, the command prints the changes and writes nothing.
The Claude Code facts refer to version 2.1.296, which is TESTED_VERSION in slices/setup/domain/facts.ts.
The key names match schemas/claude-code-settings.json.
An effect that comes from the name of a key, and not from a test, is marked from the name.
An effect that comes from the research on 2.1.293 is marked not re-checked.
The code reads no CLAUDETTO_ variable.
CLAUDETTO_DIR in src/kernel/paths.ts is the name of the .claudetto folder, not an env var.
So no CLAUDETTO_ variable disables a part of claudetto.
Claude Code reads each entry in this table.
claudetto reads DISABLE_COMPACT in slices/prompt/adapters/mod.ts, but the snippet does not set it.
It also reads CLAUDE_CODE_EFFORT_LEVEL and CLAUDE_CODE_SUBAGENT_MODEL_FORCE, which the snippet never sets.
The drift check in slices/setup/domain/drift.ts compares every entry of the snippet with the settings file.
| Entry | Effect | Set in |
|---|---|---|
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE set to 80.3571
|
Starts automatic compaction at 225000 tokens of a 300000 window, the trigger of the auto handoff. | slices/handoff/slice.ts |
CLAUDE_CODE_AUTO_CONNECT_IDE set to false
|
No connection to an IDE at start. | slices/prompt/slice.ts |
CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY set to 1
|
No feedback survey. | slices/prompt/slice.ts |
CLAUDE_CODE_DISABLE_TERMINAL_TITLE set to 1
|
No change of the terminal title. | slices/prompt/slice.ts |
CLAUDE_CODE_FORK_SUBAGENT set to 0
|
No forked subagents (from the name). | slices/prompt/slice.ts |
CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL set to 1
|
No install of the IDE extension. | slices/prompt/slice.ts |
CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS set to 2
|
At most two subagents run in parallel (the Pro value, and setup picks 4 or 7 for a Max account). |
slices/prompt/slice.ts |
CLAUDE_CODE_SUBAGENT_MODEL set to claude-sonnet-5-5
|
A subagent with no model of its own runs on Sonnet 5.5. It is not an off switch. | slices/prompt/slice.ts |
DISABLE_ERROR_REPORTING set to 1
|
No error report. | slices/prompt/slice.ts |
DISABLE_FEEDBACK_COMMAND set to 1
|
No /feedback command. |
slices/prompt/slice.ts |
CLAUDE_CODE_DISABLE_CRON set to 1
|
Removes the cron tools and /loop. |
slices/trim/slice.ts |
CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS set to 1
|
Removes the Explore and Plan agents. | slices/trim/slice.ts |
CLAUDE_CODE_DISABLE_FAST_MODE set to 1
|
Removes fast mode. | slices/trim/slice.ts |
The reasons for the trim entries are in slices/trim/domain/removed.ts.
The snippet does not set CLAUDE_CODE_DISABLE_CFC_PROMPT.
Claude in Chrome is off until the user turns it on, and then the switch removes the guidance that its tools need.
See Trim.
Claude Code reads each key in this table. The drift check reads each key as described in Env entries of the snippet.
| Key | Effect | Set in |
|---|---|---|
enableArtifact set to false
|
No artifacts. | slices/prompt/slice.ts |
enableWorkflows set to false
|
No workflows. | slices/prompt/slice.ts |
promptSuggestionEnabled set to false
|
No prompt suggestions. | slices/prompt/slice.ts |
awaySummaryEnabled set to false
|
No summary after a break (from the name). | slices/prompt/slice.ts |
spinnerTipsEnabled set to false
|
No spinner tips. | slices/prompt/slice.ts |
feedbackSurveyRate set to 0
|
No feedback survey. | slices/prompt/slice.ts |
feedbackDrafts set to "off"
|
Removes the SendFeedback tool. |
slices/prompt/slice.ts |
disableRemoteControl set to true
|
No remote control. | slices/prompt/slice.ts |
disableBundledSkills set to true
|
No bundled skills. | slices/prompt/slice.ts |
autoCompactWindow set to 300000
|
Sets the auto-compact window. It is not an off switch. | slices/handoff/slice.ts |
modelSettings with claude-haiku-5-5 set to an autoCompactWindow of 144444
|
A shorter window for Haiku. It is not an off switch. | slices/handoff/slice.ts |
worktree with baseRef set to head
|
A worktree starts from HEAD. It is not an off switch. |
slices/setup/slice.ts |
sandbox with enabled set to true
|
Limits the files and the network of Bash. It is not an off switch. The list of domains is in slices/prompt/slice.ts, and filesystem.allowWrite is in slices/setup/slice.ts. |
slices/prompt/slice.ts |
autoMemoryEnabled set to false
|
No auto memory. | slices/trim/slice.ts |
includeGitInstructions set to false
|
No git instructions in the prompt. | slices/trim/slice.ts |
disableClaudeAiConnectors set to true
|
No claude.ai connectors. | slices/trim/slice.ts |
syncClaudeAiSkills set to false
|
No skills synced from claude.ai. | slices/trim/slice.ts |
syncClaudeAiPlugins set to false
|
No plugins synced from claude.ai. | slices/trim/slice.ts |
The reasons for the trim switches are in slices/trim/domain/removed.ts.
The slice.ts of the trim slice builds its settings from that list.
The snippet does not set disableAgentView or fastMode, and it has no switch for the mode note of WebSearch.
See Trim.
The permissions.deny list of slices/prompt/slice.ts removes these tools and agents from the model.
| Entry | Effect |
|---|---|
Agent(general-purpose) |
No general-purpose subagent. |
Agent(claude-code-guide) |
No claude-code-guide agent. |
Agent(statusline-setup) |
No statusline-setup agent. |
mcp__computer-use |
Denies the computer-use MCP server. It is a guard for the case that you enable the server. |
EnterPlanMode and ExitPlanMode
|
No plan mode tools. |
TaskCreate, TaskGet, TaskList, TaskStop, and TaskUpdate
|
No task tools. |
ScheduleWakeup and ReportFindings
|
No such tool. No claudetto code uses either tool, and the vanilla request sends both with their full schema (Tools and deferral). |
The other permissions.deny and permissions.ask entries are safety rules, not switches.
The snippet disables the built-in agents Explore and Plan with CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS.
It disables general-purpose, claude-code-guide, and statusline-setup with one permissions.deny entry each.
The six claudetto agents take the work of the built-in agents, see Agents.
The computer-use MCP server is opt-in in Claude Code.
The research on 2.1.293 found that Claude Code starts it only when the project key enabledMcpServers holds computer-use (not re-checked on 2.1.296).
The deny entry mcp__computer-use is a guard for the case that you enable the server.
The snippet sets these entries of enabledPlugins to false:
cc-plugin-agents-md@builtincc-plugin-claude-test@builtincc-plugin-diff@builtincc-plugin-mermaid@builtincc-plugin-mods-guide@builtincc-plugin-responsive-mode@builtincc-plugin-telemetry@builtincc-plugin-tips@builtincc-plugin-you-should-know@builtin
OFF_PLUGINS in slices/setup/domain/facts.ts holds this list.
pluginsOn in slices/setup/domain/drift.ts reports each plugin of the list that the settings still enable.
cc-plugin-plugin-authoring@builtin is not in the list, so the snippet leaves it enabled.
To disable a claudetto add-on, disable it with /plugin, or set enabledPlugins for <name>@claudetto to false in user settings.
The add-on step of setup reads that entry in installedAddons (slices/setup/domain/addons.ts).
It skips each add-on whose entry is false, so it plans no tools for that add-on.
Claude Code stops loading the parts of a disabled plugin (Claude Code behavior, not re-checked on 2.1.296).
The core plugin claudetto is not in that list, so the setup step reads no entry for it.
The snippet sets one entry of skillOverrides: plugin-authoring set to name-only.
It is in slices/prompt/slice.ts.
The value name-only shows the skill by name only (from the name).
The research on 2.1.293 found that Claude Code skips skillOverrides for a plugin skill, so this entry may have no effect.
This is not re-checked on 2.1.296.
See Decisions-Settings, decision D5.
To check the effect, run /context in just sandbox.
No code in src/plugins/claudetto/ writes a managed settings file.
Without managed settings, the guard cc-plugin-sec-default is not seated, and claudetto runs at tier user.
An installed mod with a tool.check hook can then change a content deny rule into an allow (research on 2.1.293).
A path deny and a whole-tool deny stay enforced.
See Decisions-Settings, decision D14.
The snippet sets none of the items that might cost quality, and no code reads them. The reasons and the eval are in Decisions-Settings and Evals. Set one by hand in your own settings at your own risk.
The snippet never sets these entries.
The lists are in tests/support/settings-pin.ts, as NEVER_SET_KEYS and NEVER_SET_ENV.
The tests tests/claudetto/settings-pin.test.ts and tests/claudetto/trim/settings.test.ts check the snippet against them.
| Entry | Value | Reason |
|---|---|---|
disableAllHooks |
any | Stops all hooks. |
allowManagedHooksOnly |
any | Stops the hooks of plugins. |
strictPluginOnlyCustomization |
any | Stops customization by the user. |
disableSideloadFlags |
any | Stops the flags that load a plugin folder. |
alwaysThinkingEnabled |
any | Forces thinking on every model. |
allowAllClaudeAiMcps |
any | Turns on every claude.ai connector. |
claudeMd |
any | Replaces the project instructions. |
CLAUDE_CODE_SIMPLE |
any | Turns off hooks, plugins, skills, and memory. |
CLAUDE_CODE_SAFE_MODE |
any | Turns off hooks, plugins, skills, and memory. |
CLAUDE_CODE_ENABLE_TASKS |
0 |
Removes the task tools that the model uses. |
CLAUDE_CODE_DISABLE_CLAUDE_MDS |
any | Removes the project instructions. |
CLAUDE_CODE_DISABLE_ATTACHMENTS |
any | Removes the attachments. |
CLAUDE_CODE_EFFORT_LEVEL |
any | Forces one effort on every model. |
CLAUDE_CODE_SUBAGENT_MODEL_FORCE |
any | Forces the model of a subagent. |
MAX_THINKING_TOKENS |
any | Forces a thinking budget. |
CLAUDE_CODE_DISABLE_WEB_FETCH |
any | Removes the web fetch tool. |
CLAUDE_CODE_BASH_EDIT_DIFF |
0 |
Removes the edit diff of Bash. |
CLAUDE_CODE_SKIP_PLUGIN_MCP_SERVERS |
any | Drops the MCP servers of plugins. |
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS |
any | Removes beta features. |
DISABLE_INTERLEAVED_THINKING |
any | Removes thinking between tool calls. |