A Free Claude Code Hooks and Settings Builder
Claude Code reads its settings from settings.json files: which commands it may run without asking, which files it must never touch, the hooks it runs at set moments, the status line and more. The JSON is strict, and many mistakes fail without a word: a hook under a misspelled event never runs, and a permission rule for the wrong tool never matches. This free builder writes a correct settings.json and the hook scripts from a few clicks, and its checker finds those silent mistakes in a file you already have.
How to Build Your Settings
- Pick a quick start, or start from nothing.
- Choose where the file goes: the team file for a project, your own file for one project, or your file for every project.
- Tick permission presets, or type allow, ask and deny rules, one per line.
- Tick ready hooks, such as blocking dangerous commands or formatting files after each edit, and add your own hooks for any event.
- Open More settings for the model, the status line, attribution and environment variables.
- Fix anything the settings check flags, then copy or download the files.
How to Check a Settings File
Switch to Check settings, choose which file it is and paste it. The report lists errors, warnings and tips with line numbers.
What the Checker Looks For
- Invalid JSON, such as comments or trailing commas, which Claude Code reports as a Settings Error.
- Unknown settings keys, and keys that only work in another file, such as managed-only keys or ~/.claude.json keys.
- Hook events that do not exist, matchers on events that ignore them, and handlers placed outside the hooks list.
- MCP matchers without .*, “if” on events where it never runs, and hook types an event does not support.
- Permission rules that never match, such as Write(path) or Grep(path), and rules a deny rule cancels.
- Risky setups: allowing every shell command, or bypassPermissions outside a container.
Where Settings Files Go
.claude/settings.json: the team file for one project. Commit it to git..claude/settings.local.json: your own settings for one project. Keep it out of git.~/.claude/settings.json: your settings for every project on this computer.
When the same key is set in more than one file, the local file wins over the team file, and the team file wins over your personal file. Lists such as permissions.allow are combined instead. Claude Code reloads settings files when they change, so most edits apply without a restart. Type /hooks to see your hooks and /status to see which settings files loaded.
Built With Claude Code
We built this tool with Claude Code and took every rule from Anthropic’s Claude Code documentation on settings, permissions and hooks. No AI runs on this page. The builder fills in tested templates, and the checker runs plain rules in your browser. Its score is our own checklist, not an official grade. The hook scripts are bash scripts for macOS and Linux and need jq.
Claude Code Settings Builder FAQ
Is it free?
Yes. It is free, needs no sign-up and has no limits.
Does it send my settings anywhere?
No. Everything stays in your browser. Your choices are saved in this browser only.
Should I block commands with a hook or a deny rule?
Use a deny rule for a hard block. Claude Code enforces deny rules itself. A hook is a good second line, because a script can look at the whole command and explain the block to Claude.
Why does my hook not run?
The usual causes are a misspelled event name, a matcher that names the wrong tool, a script that is not executable, or a missing jq. Paste the file into Check settings, and run chmod +x on your scripts.
Can a Stop hook make Claude loop forever?
No. The test hook here lets Claude stop when it is already going again because of the hook, and Claude Code ends the turn after 8 blocks in a row anyway.