System Configuration
These are the two files that control Claude Code at the system level. They live in ~/.claude/ and apply to every project.
settings.json
Location: ~/.claude/settings.json
{
"permissions": {
"allow": ["*", "WebSearch", "WebFetch", "Fetch"]
},
"model": "opus",
"defaultMode": "bypassPermissions",
"permissionMode": "bypassPermissions",
"verbose": true,
"statusLine": {
"type": "command",
"command": "ccstatusline"
},
"enabledPlugins": {
"code-review@claude-plugins-official": true,
"frontend-design@claude-plugins-official": true
}
}
What Each Setting Does
model: "opus" - Sets Claude Opus 4.5 as the default model for every session. This is a system-level setting, not per-session. You can always check your current model with /model inside a session.
permissionMode: "bypassPermissions" - This is the "dangerously skip permissions" flag. Without it, Claude asks for approval on nearly every tool call - reading files, running commands, making edits. With it, Claude just does the work. If you're uncomfortable with this, you can use "defaultMode": "default" instead and approve individually.
permissions.allow: ["*", ...] - Allows all tools plus web search and fetch. The * wildcard covers file operations, bash commands, etc. WebSearch and WebFetch are listed separately because they're not covered by the wildcard.
verbose: true - Shows more detail about what Claude is doing. Useful for understanding the tool calls being made.
statusLine - Adds a persistent status bar pinned below your input that gives you constant awareness of your session at a glance. It runs a shell command on every prompt and renders the output as a single line. Here it's wired to the ccstatusline package, but you can point it at any script or command you like.
What you'll see:
Model: Opus 4.5 | Ctx: 31.7k | ⌐main | (+4,-0)
Each segment tells you something:
| Segment | What it means |
|---|---|
Model: Opus 4.5 | Which model is running the session |
Ctx: 31.7k | How much context (in tokens) you've used so far — watch this to know when it's time to /handoff or /clear |
⌐main | Current git branch |
(+4,-0) | Uncommitted changes — lines added and removed in your working tree |
The context counter is the most useful part. Once it climbs past ~60%, responses can start degrading in quality because the model has less room to reason. The status line makes that visible so you're never caught off guard.
To install:
npm install -g ccstatusline
If you'd rather use your own script, just swap the command:
"statusLine": {
"type": "command",
"command": "my-custom-statusline-script"
}
enabledPlugins - Plugins extend Claude Code with specialized capabilities. code-review adds PR review workflows. frontend-design improves UI code generation quality.
mcp.json
Location: ~/.claude/mcp.json
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}
Why Playwright at the System Level
MCP servers can be configured per-project (in your project's .claude/ directory) or globally. We put Playwright at the system level because:
- Every project benefits from browser testing - You can ask Claude to open your localhost, take screenshots, click through flows, fill forms
- No per-project setup - New project? Playwright is already there
@latestflag - Always pulls the latest version of the MCP server
What Playwright MCP Gives You
Once configured, Claude can:
- Navigate to any URL (including
localhost:3000) - Take screenshots of pages or specific elements
- Click buttons, fill forms, select dropdowns
- Read page accessibility snapshots (better than screenshots for understanding structure)
- Run Playwright code snippets directly
- Check console logs and network requests
Adding More MCP Servers
You can add additional servers to the same file. For example, adding Figma:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
},
"figma": {
"type": "http",
"url": "https://mcp.figma.com/mcp"
}
}
}
Figma MCP requires authentication. You'll be prompted to sign in on first use.
Where These Files Live
~/.claude/
settings.json # Global settings (model, permissions, plugins)
mcp.json # Global MCP server configuration
commands/ # Custom slash commands
commit.md
handoff.md
projects/ # Per-project overrides (auto-generated)
plugins/ # Installed plugins (managed by CLI)
The projects/ and plugins/ directories are managed automatically. You'll only ever hand-edit settings.json, mcp.json, and files in commands/.
Checking Your Config
Inside a Claude Code session:
| Command | What it shows |
|---|---|
/model | Current model |
/status | Session info including config |
/config | Opens configuration |
From your terminal:
cat ~/.claude/settings.json
cat ~/.claude/mcp.json
ls ~/.claude/commands/