Configuration

Every knob Claudin exposes — settings files, permissions, sandboxing, model setup, and interface behavior — in one place.

Settings and permissions

Settings

Config is layered across JSON files, later sources winning on conflicting keys:

SourcePathGit
User~/.claudin/settings.json
Project.claudin/settings.jsonCommit
Project-local.claudin/settings.local.jsonGitignore
Flagpath passed via --settings
Managedmanaged-settings.json + managed-settings.d/*.json drop-ins (or remote/MDM-sourced)Enterprise

Precedence: user < project < local < the --settings flag < managed.

The schema is Zod-defined (SettingsSchema). /config opens an interactive settings UI (theme, outputStyle, and more). Separately, an agent-facing ConfigTool — backed by a SUPPORTED_SETTINGS allowlist — lets the model itself read or change a curated subset of keys (model, permissions.defaultMode, editorMode, and more) mid-session. A few settings, like statusLine, aren't exposed by either UI and can only be set by hand-editing the settings file. The config directory root itself can be relocated with the CLAUDIN_CONFIG_DIR env var.

Permissions

settings.permissions holds allow[], deny[], ask[] rule lists plus a defaultMode. Modes:

ModeBehavior
defaultPrompts for anything not explicitly allowed
planRead-only exploration, no edits or side effects
acceptEditsAuto-approves file edits, still prompts elsewhere
bypassPermissionsNo prompts at all
dontAskDenies instead of prompting when a rule doesn't match

/permissions opens an interactive browser/editor for the current rule set.

Sandbox environments

/sandbox toggles OS-level isolation for tool calls on macOS, Linux, and WSL2 (not supported on WSL1). On Linux/WSL, commands run wrapped via bwrap (bubblewrap); macOS uses a separate built-in mechanism ("seatbelt", based on sandbox-exec). Both back configurable filesystem read/write restriction, network restriction, and allowed Unix sockets/local bindings. An enabledPlatforms setting can restrict which platforms use it.

Bash sandbox

The same sandbox subsystem applies specifically to the Bash tool, decided per invocation. An excludedCommands list lets specific commands bypass the wrapper — this is a convenience, not a security boundary; the permission prompt is the actual control. A dangerouslyDisableSandbox flag can also opt a single call out.

Model and responses

Model configuration

Because Claudin's generic custom preset can point at 200+ OpenAI-compatible endpoints, on top of first-class presets for the major hosted providers, model setup goes through /provider rather than a single API key or env var. It manages a list of providerProfiles plus an activeProviderProfileId in ~/.claudin/settings.json, with presets for Anthropic (OAuth or API key), Codex/ChatGPT OAuth, GitHub Copilot device flow, Bedrock/Vertex/Foundry (native cloud credentials), Ollama/local servers, and the generic custom preset (baseUrl/apiKey/model alias).

/provider doctor runs a non-destructive health check on the active profile; /provider migrate copies over legacy ~/.claude/ settings and credentials. /model (or the --model flag at launch) picks the model within the active profile.

Speed up responses with fast mode

/fast toggles fast mode, which only works on Opus 4.7 or Opus 4.6 — enabling it auto-switches the session to one of those models if the current model doesn't qualify.

Escalate hard decisions with the advisor tool

/advisor <model> sets an advisor model that the main model can call out to mid-task for a second opinion, via a server-side tool. Restricted to Opus 4.8/4.7/4.6 or Sonnet 5/4.6 — both as the calling model and as the advisor model itself — unavailable on Bedrock/Vertex, and can be disabled entirely with the CLAUDE_CODE_DISABLE_ADVISOR_TOOL env var.

Output styles

The /output-style command is deprecated in favor of /config or editing the settings file directly. The underlying feature still works: set outputStyle, and define custom styles as markdown files with frontmatter (name, description, keep-coding-instructions) under .claudin/output-styles/*.md (project) or ~/.claudin/output-styles/*.md (user).

Interface

Terminal configuration

terminal-setup installs a Shift+Enter (Option+Enter on Apple Terminal) keybinding for inserting newlines. It's skipped automatically on terminals with native CSI-u/Kitty keyboard-protocol support (Ghostty, Kitty, iTerm2, WezTerm, Warp), since they don't need it.

Fullscreen rendering

Claudin automatically detects whether it can safely use the terminal's alt-screen/fullscreen mode, based on tmux control-mode detection and other terminal heuristics. It can be overridden with the flickerFreeMode setting or the CLAUDE_CODE_NO_FLICKER env var (0 forces it off, 1 forces it on) if the auto-detection guesses wrong.

Voice dictation

/voice toggles voice input. It requires a Claude.ai account (/login); a language setting controls the speech-to-text language.

Customize status line

Set statusLine: { type: "command", command: "...", padding?: number } in settings to run your own command and render its output as a persistent status line.

Customize keyboard shortcuts

/keybindings writes an editable template to ~/.claudin/keybindings.json and opens it in your editor. This is currently a preview feature — gated behind a flag, and replies with a "not enabled yet" message if it's off.

Accessibility mode

Set the CLAUDE_CODE_ACCESSIBILITY env var to keep the native terminal cursor visible (instead of hidden) for screen readers and magnifiers. It's env-var-only today — there's no /config-exposed setting or slash command for it, unlike Claude Code's dedicated "Screen reader mode".