Claude Code Hook Templates for FileScopeMCP
May 10, 2026 · View on GitHub
Layering rule: FileScopeMCP never auto-writes to your
.claude/settings.json. The snippets below are templates you paste into your own settings if you want them. They are documented as building blocks, not shipped as auto-install.
Why
Without hooks, FileScopeMCP tools are registered but agents only invoke them when a user prompt's noun semantically matches a tool name. The hooks below convert "remember to call FileScope" into "the harness reminds you for me" — they fire before Read, Edit, and Write tool calls and inject the relevant FileScopeMCP context into the agent's transcript.
Prerequisites
- Claude Code installed and FileScopeMCP registered (
./build.shornpm run register-mcp). nodeandscripts/filescope-helper.mjsavailable — built by./build.sh. The helper runs the actual MCP tool calls; the hooks invoke the helper.
PreToolUse hook (Read / Edit / Write)
Add to .claude/settings.json in the project root:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Read|Edit|Write",
"hooks": [
{
"type": "command",
"command": "node /absolute/path/to/FileScopeMCP/scripts/filescope-helper.mjs pre-tool-use"
}
]
}
]
}
}
The helper reads tool_input.file_path from the hook payload, calls get_file_summary for that file, and emits the result as a system-reminder injection. If the file is not tracked by FileScopeMCP, the helper exits 0 silently — the hook does not block the underlying tool call.
SessionStart hook
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "node /absolute/path/to/FileScopeMCP/scripts/filescope-helper.mjs session-start"
}
]
}
]
}
}
The helper calls find_important_files(maxItems: 5) and list_changed_since(<24h-ago>) and emits a sub-1-KB orientation digest as a session-start system-reminder.
Combined example
If you want both hooks, merge them under a single hooks object:
{
"hooks": {
"PreToolUse": [ /* ... as above ... */ ],
"SessionStart": [ /* ... as above ... */ ]
}
}
Kill switch
The helper checks for the FILESCOPE_HOOKS environment variable. Set it to off to disable hook output without removing the hook config:
FILESCOPE_HOOKS=off claude
The helper still runs, but exits 0 immediately and produces no output.
Caveats
- Layering: these snippets must be added by the user. FileScopeMCP's
filescope-installcommand prints them and the URL to this doc but does not modify.claude/settings.json. - Latency: the helper targets sub-100 ms response time. If you observe perceptible delay, check that the FileScopeMCP server is running in
--daemonmode and the SQLite DB has been built (status()returnsinitialized: true). - Phase 1 measurement bound: per the roadmap, hook efficacy is testable only by maintainers running with-rig sessions, since most users will not paste these snippets in. This is intentional.