Skip to content

Use your Claude Code settings

Localix reads the configuration you already wrote for Claude Code, so your rules, hooks, servers and status line work in Localix conversations without copying them. Use this page to see which files and keys Localix reads, how it combines them, and which ones it leaves to Claude Code. Localix never writes these files.

What you can do

OutcomeWhere it comes from
Keep your allow, ask and deny rulespermissions — see Permission rules
Start in the mode you setpermissions.defaultMode, disableBypassPermissionsMode — see Permission modes
Run your hookshooks, disableAllHooks, allowManagedHooksOnly — see Hooks and commands
Connect your MCP servers~/.claude.json, .mcp.json, managed MCP — see MCP
Stop skills from running shell commandsdisableSkillShellExecution — see Keys that lock things down
Load skills, agents, hooks, MCP from plugins onlystrictPluginOnlyCustomization (managed) — see Keys that lock things down
Give shell commands, hooks and servers your envenv
See your status line under the message boxstatusLine, subagentStatusLine
Use your output stylesoutputStyle, .claude/output-styles/
Load the plugins you installed in Claude CodeenabledPlugins, pluginConfigs — see Claude Code plugins

How it works

Which files are read

Each run reads the files Claude Code would read for the conversation's folder:

ScopeFile
User~/.claude/settings.json, or $CLAUDE_CONFIG_DIR/settings.json when that is set
Projectthe folder's .claude/settings.json
Local.claude/settings.local.json at the repository root (a worktree's main checkout), and the folder's own
Managedmanaged-settings.json and managed-settings.d/*.json in the system directory, or the macOS configuration profile com.anthropic.claudecode

The system directory is /Library/Application Support/ClaudeCode on macOS, /etc/claude-code on Linux and C:\Program Files\ClaudeCode on Windows. CLAUDE_CONFIG_DIR also moves where plugins, output styles and Claude Code's state file (.claude.json) are read from.

How they combine

A higher file wins a single value: managed over local over project over user. Lists such as permissions.allow combine across files without repeats, and blocks such as env merge key by key. fallbackModel and modelPicker are taken whole, and a managed availableModels applies as is. Permission rules combine as Claude Code combines them: a deny in any file beats an ask in any file, which beats an allow.

What waits for workspace trust

What a repository grants applies once you trusted the folder in Claude Code (hasTrustDialogAccepted for the folder in ~/.claude.json). Rules that only restrict, deny and ask, apply at once. The statusLine and subagentStatusLine commands, from any file and from a plugin's defaults, also wait for the folder's trust, as in Claude Code.

Outside a git repository, trusting a folder above it also counts, but only for part of what the repository grants, as in Claude Code. Inside a repository, the trust is the repository root's.

What the repository grantsFolder trusted itselfOnly a folder above it trusted
Hooks of its settings files, env, skill hooksAppliesApplies
allow rules, additionalDirectoriesAppliesWaits
Approval of its own .mcp.json servers, an MCP server's headersHelperAppliesWaits
A project subagent's frontmatter hooks and inline mcpServersAppliesWaits
extraKnownMarketplacesAppliesWaits

Keys that lock things down

Two keys limit what loads or runs, and are meant for managed settings.

  • disableSkillShellExecution (any file; a managed true cannot be turned off). Every inline ! command and fenced ! block of a skill or command from your folders, a project or a plugin is replaced by [shell command execution disabled by policy] and is not run. See Skill authoring.
  • strictPluginOnlyCustomization (managed settings only; a user, project or local file with the key is ignored). true locks all four kinds, or list the kinds to lock: "skills", "agents", "hooks", "mcp". A name Localix does not know is ignored, as in Claude Code. A locked kind loads only from plugins and managed settings:
KindClosedStill loads
skillsskills and commands of ~/.claude/skills, .claude/skills, ~/.claude/commands, .claude/commands, and the portable .agents/skillsplugin skills and commands, built-in plugins
agents~/.claude/agents/ and a project's .claude/agents/built-in types, the managed folder's agents, plugin agents
hookshooks of user, project and local settings; the hooks of a skill still read from your folders (that skill also loses its allowed-tools pre-approval unless it runs forked)the organization's settings hooks and every plugin's hooks
mcpservers of ~/.claude.json and .mcp.jsonmanaged-mcp.json, managedMcpServers, plugin servers, servers you added in Localix

Localix has no skills-directory plugins, --add-dir folders, claude.ai-synced skills or managed skills folder, so nothing of those kinds loads to lock. A skill you save from a conversation lands in .claude/skills, which a skills lock closes. The hooks lock reads managed settings files; a macOS profile applies to skills and agents, but the hooks of a run read the files only.

Environment variables

The env of the settings reaches shell commands, hooks and stdio MCP servers of a run in that folder, and the ${VAR} expansion of MCP servers. A project's env cannot set the variables Claude Code keeps out of a repository's reach, such as CLAUDE_CONFIG_DIR, HOME or the OpenTelemetry exporters. MCP limits (MCP_TIMEOUT, MCP_TOOL_TIMEOUT, CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT, MAX_MCP_OUTPUT_TOKENS) are read from it too.

Status line

The statusLine command runs in the conversation's folder with the session on stdin as Claude Code's JSON, and what it prints is drawn as a quiet area right under the message box, one row for each line it printed, followed by the rows of any mod's status line. Colors (the 16 terminal colors, 256-color and truecolor) are drawn in Localix's own palette, so a script's red reads as the app's error color; bold, italic, underline and OSC 8 links work, and a link opens in your browser. A row that is too wide ends in an ellipsis and shows in full when you point at it. The area hides while Localix asks you a question.

What the command receives:

FieldValue
session_id, session_name, prompt_id, transcript_path, versionThe conversation, its title, the prompt being answered, its transcript file, the Claude Code release
cwd, workspace.current_dir, project_dir, added_dirsThe conversation's folder and the folders your settings add
workspace.repo, workspace.git_worktreeRead from git: the origin remote, and the linked worktree's name; absent outside a repository
model.id, model.display_nameThe route's model and its catalog name (the id when the catalog does not know it)
cost.total_cost_usd, cost.total_duration_msSpend of the active branch, and the time since the conversation was created
context_window.*, exceeds_200k_tokensFrom the last model request; current_usage and the percentages are null before the first request and after a compaction
prompt_cache.warm, ttl, expires_at, recache_tokens_if_cold, caching_observed, hit_ratio, cache_write_tokenswarm is true while the last response read or wrote cache and is inside its lifetime (ttl 5m, or 1h after a long write); expires_at is when it goes cold (epoch seconds, null when that response used no cache), recache_tokens_if_cold the size of the last request. The rest is session-wide, from the counts the responses reported. Absent before the first response
effort.level, thinking.enabled, fast_mode, output_style.name, agent.nameThe route's reasoning level, whether it reasons, false (no fast mode), your output style, a non-default agent

Fields Localix cannot know are left out rather than filled with a placeholder: pr, rate_limits, vim, worktree, cost.total_lines_added, cost.total_lines_removed and cost.total_api_duration_ms. Read them with a fallback, as Claude Code's own examples do.

It runs when the conversation opens, after a new message, a mode change or a compaction (300 ms after the last change, so a burst is one run), at once when you change command in your settings, and every refreshInterval seconds (at least 1) while you look at the conversation. A newer run cancels one still going. padding indents every row. A command that fails or prints nothing clears the line. COLUMNS is 120 and LINES is 1; the area is not a terminal of its own, so a script cannot measure it. A subagentStatusLine in your own settings rewrites the subagent rows, over a plugin's; those rows are drawn as plain text, without colors or links.

Limits

These keys and sources do not change Localix:

Claude Code settingWhy
acceptEdits, auto and dontAsk in defaultModeLocalix has no mode of the same meaning; such a conversation starts in Default.
model, availableModels, fallbackModel, effortLevel, ANTHROPIC_MODEL and the model variablesLocalix routes models through its own provider connections and the model picker.
apiKeyHelper, forceLoginMethod, awsAuthRefresh and other sign-in keysLocalix signs in to providers itself.
sandbox.*Localix runs commands without an operating-system sandbox; permission rules are application policy.
attribution, includeCoAuthoredBy, cleanupPeriodDays, theme, spinnerTips*, language and other interface keysThey describe Claude Code's own interface and history.
BASH_DEFAULT_TIMEOUT_MS, BASH_MAX_TIMEOUT_MS, BASH_MAX_OUTPUT_LENGTHLocalix's shell tool has its own limits.
Server-managed settings from claude.ai, and the Windows registry policyThey need Claude Code's sign-in or the registry; managed files and the macOS profile are read.
A .mcp.json server no setting approvesLocalix does not show Claude Code's approval prompt: approve it in Claude Code or in enabledMcpjsonServers.
Sensitive plugin optionsClaude Code keeps them in the system keychain; Localix asks for them in the plugin's settings.
--settings, --setting-sources and other command-line flagsLocalix does not start Claude Code's command line.

Bash allow rules are matched by Localix's own command patterns, which do not strip timeout or nice before the command the way Claude Code does; deny and ask rules do.

Source of truth