Video coming soon
Understand claude.json and settings.json, and how they fit alongside CLAUDE.md in Claude Code's configuration system.
You've been writing files that tell Claude what to do (CLAUDE.md, info.md, preferences.md, rules). But Claude Code also maintains its own files behind the scenes. In this lesson, we look at the full configuration picture: what you write, what Claude manages and how it all fits together.
Claude Code's configuration comes from three types of files, each with a different purpose:
| File | Purpose | Who writes it |
|---|---|---|
CLAUDE.md | Knowledge and instructions (what Claude should know) | You |
settings.json | Permissions and behaviour (what Claude can do) | You / your team |
claude.json | Machine state (authentication, preferences, caches) | Claude Code (automatic) |
You've been building this since Section 3. It holds project context, conventions and instructions. This is where your standards live.
This controls what Claude is allowed to do. Permission rules, environment variables, hooks and model selection. It lives at multiple scopes:
~/.claude/settings.json for your personal global settings.claude/settings.json for project-level settings (shared with team via git).claude/settings.local.json for your personal overrides on a specific project (gitignored)We'll configure permissions properly in the security section later in the course. For now, just know this is where they live.
This file lives at ~/.claude.json. Claude Code manages most of it automatically, but you can also edit it directly, for example to add MCP server configurations that apply across all your projects. It stores:
Authentication credentials themselves are stored securely in your system's keychain (macOS Keychain, etc.), not in this file. But if you've ever wondered where Claude remembers that you approved a specific tool in a specific project, claude.json is where.
Here's everything in one view:
~/.claude.json, Claude Code's auto-managed state
What you write: CLAUDE.md, AGENTS.md, info.md, preferences.md, settings.json, rules
What Claude manages: claude.json
CLAUDE.md is for instructions, settings.json is for permissions, claude.json is for statesettings.json exists at user, project and project-local scopes