One job here: a Claude Code that can edit your own project, and knowing exactly where its permission boundary and config file are. Page 8 repoints it at a different endpoint using these same locations.
In this pageinstall, auth, config layers, the usual failures. Not in this pagemy own config or what it connects to.
| CLI | VS Code extension | |
|---|---|---|
| Install | Standalone CLI; run claude in any terminal | Extensions view, search Claude Code (anthropic.claude-code), or Open VSX |
| Requires | — | VS Code 1.94.0 or newer |
| Sign-in | A paid Claude subscription or a Console account. No API key needed | |
| Config | Both read ~/.claude/settings.json — this matters, see §4 | |
The extension bundles its own CLI for the chat panel. To type claude in the integrated terminal
you still need the standalone install — two separate things. The same extension installs into
VS Code forks, which gives Cursor users a second route (page 4).
| Layer | Location | Purpose |
|---|---|---|
| 1 Managed | System location (managed-settings.json, plist, registry) | Org policy. Nothing below overrides it |
| 2 CLI args | At launch | Beats the files |
| 3 Local | .claude/settings.local.json | Your per-project overrides. Gitignore it |
| 4 Project | .claude/settings.json | Shared with the team, committed |
| 5 User | ~/.claude/settings.json | Your default everywhere |
Three keys matter: model, env, permissions.
A deny added at the project layer applies even if the user layer says nothing.
But a model at the project layer silences the one in your user file.
Two different behaviours. /status shows what is actually live.
Write deny first, and only two kinds of rule:
| Deny | Why |
|---|---|
Reading secret files (.env, key directories) | Once in context it can end up elsewhere. This is the common leak path |
| Commands that can send data out | Reading in is survivable. Reading in and sending out is not. Block them separately |
Do not front-load allow. Use it for a week, then promote the handful you approve daily.
A long allow list on day one is the gate removed.
You export a variable in ~/.zshrc, echo confirms it in the terminal,
and the editor acts as if you set nothing — still prompting to sign in, still on the default endpoint.
The cause is not your config: GUI-launched processes do not inherit a login shell.
The documented fix is to start the editor from a terminal with code ..
The sturdier answer is to stop relying on environment variables. Put what you need in the
env block of settings.json — a file reads the same regardless of how the app started.
Page 8 leans on this.
Most settings reload on save. model and output style need a restart.
"I changed it and nothing happened" is usually this.
Not the main repo. Pick something in git, that runs, and that nobody else depends on. The first condition is the one that matters — version control is your undo, and without it "let it edit freely" is working without a net.
Then give it a task with an objective outcome: a reproducible bug, a missing test, an error to make disappear. An objective test is what lets it close its own loop — the point of page 1.
~/.claude/settings.json, .claude/settings.json,
.claude/settings.local.json, managed layer; keys model / env /
permissions (with allow / ask / deny).
Precedence: managed > CLI > local > project > user; permissions merge, other settings override.
Official settings docs, checked 2026-08-21.anthropic.claude-code, requires VS Code 1.94.0+, also on Open VSX;
extension and CLI share ~/.claude/settings.json.code . case explicitly./status before trusting anything here.