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
| Outcome | Where it comes from |
|---|---|
| Keep your allow, ask and deny rules | permissions — see Permission rules |
| Start in the mode you set | permissions.defaultMode, disableBypassPermissionsMode — see Permission modes |
| Run your hooks | hooks, disableAllHooks, allowManagedHooksOnly — see Hooks and commands |
| Connect your MCP servers | ~/.claude.json, .mcp.json, managed MCP — see MCP |
| Stop skills from running shell commands | disableSkillShellExecution — see Keys that lock things down |
| Load skills, agents, hooks, MCP from plugins only | strictPluginOnlyCustomization (managed) — see Keys that lock things down |
Give shell commands, hooks and servers your env | env |
| See your status line under the message box | statusLine, subagentStatusLine |
| Use your output styles | outputStyle, .claude/output-styles/ |
| Load the plugins you installed in Claude Code | enabledPlugins, 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:
| Scope | File |
|---|---|
| User | ~/.claude/settings.json, or $CLAUDE_CONFIG_DIR/settings.json when that is set |
| Project | the folder's .claude/settings.json |
| Local | .claude/settings.local.json at the repository root (a worktree's main checkout), and the folder's own |
| Managed | managed-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 grants | Folder trusted itself | Only a folder above it trusted |
|---|---|---|
Hooks of its settings files, env, skill hooks | Applies | Applies |
allow rules, additionalDirectories | Applies | Waits |
Approval of its own .mcp.json servers, an MCP server's headersHelper | Applies | Waits |
A project subagent's frontmatter hooks and inline mcpServers | Applies | Waits |
extraKnownMarketplaces | Applies | Waits |
Keys that lock things down
Two keys limit what loads or runs, and are meant for managed settings.
disableSkillShellExecution(any file; a managedtruecannot 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).truelocks 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:
| Kind | Closed | Still loads |
|---|---|---|
skills | skills and commands of ~/.claude/skills, .claude/skills, ~/.claude/commands, .claude/commands, and the portable .agents/skills | plugin 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 |
hooks | hooks 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 |
mcp | servers of ~/.claude.json and .mcp.json | managed-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:
| Field | Value |
|---|---|
session_id, session_name, prompt_id, transcript_path, version | The conversation, its title, the prompt being answered, its transcript file, the Claude Code release |
cwd, workspace.current_dir, project_dir, added_dirs | The conversation's folder and the folders your settings add |
workspace.repo, workspace.git_worktree | Read from git: the origin remote, and the linked worktree's name; absent outside a repository |
model.id, model.display_name | The route's model and its catalog name (the id when the catalog does not know it) |
cost.total_cost_usd, cost.total_duration_ms | Spend of the active branch, and the time since the conversation was created |
context_window.*, exceeds_200k_tokens | From 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_tokens | warm 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.name | The 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 setting | Why |
|---|---|
acceptEdits, auto and dontAsk in defaultMode | Localix has no mode of the same meaning; such a conversation starts in Default. |
model, availableModels, fallbackModel, effortLevel, ANTHROPIC_MODEL and the model variables | Localix routes models through its own provider connections and the model picker. |
apiKeyHelper, forceLoginMethod, awsAuthRefresh and other sign-in keys | Localix 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 keys | They describe Claude Code's own interface and history. |
BASH_DEFAULT_TIMEOUT_MS, BASH_MAX_TIMEOUT_MS, BASH_MAX_OUTPUT_LENGTH | Localix's shell tool has its own limits. |
| Server-managed settings from claude.ai, and the Windows registry policy | They need Claude Code's sign-in or the registry; managed files and the macOS profile are read. |
A .mcp.json server no setting approves | Localix does not show Claude Code's approval prompt: approve it in Claude Code or in enabledMcpjsonServers. |
| Sensitive plugin options | Claude Code keeps them in the system keychain; Localix asks for them in the plugin's settings. |
--settings, --setting-sources and other command-line flags | Localix 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.