v0.26.0 — context push default ON + trigger hints
v0.26.0 — UserPromptSubmit context push default ON + trigger hints
Changed
claude-plugin/scripts/user-prompt-context.js:computeQuietHooksdefault
flipped back to noisy (push ON). The v0.21 opt-in flip cited routing-bench
P@1=100% as evidence the agent already picks tools correctly without push,
but that bench measures triage accuracy once the agent has decided to query
a tool — not the prior question of whether the agent reaches for a tool at
all. The real counter-evidence is inpre-grep-guide.js's 15-day baseline:
429 rawgrepvs 191 functional CLI calls on the same indexed source tree
(~13× pre-training bias toward grep). Push is the corrective. Per-type
cooldowns (impact 30s / overview 5min / callgraph 60s / search 60s) cap
frequency; the 8-char message floor +shouldSkipfilter keep confirmation
chatter silent. Escape hatch:CODE_GRAPH_QUIET_HOOKS=1.claude-plugin/scripts/pre-edit-guide.js: caller threshold lowered from
directCallers < 2to< 1. Editing any function with one or more callers
now surfaces the one-line impact summary; the per-symbol 2-minute cooldown
is unchanged so the noise floor stays the same.- SessionStart
project_mapinjection (session-init.js) stays default
OFF — that hook is a static dump duplicated byMEMORY.md's decision
table; this hook is a reactive trigger reminder. The two defaults are
intentionally asymmetric.
Added
src/mcp/server/mod.rsMCPinstructionsfield gains one line of explicit
scenario triggers:"who calls X?" → get_call_graph; "impact of X?" or before editing a fn → get_ast_node include_impact=true; concept search without an exact symbol → semantic_code_search. Compile-time
assert!(NOISY.len() <= 1500)budget guard unchanged (now 772 / 1500 bytes).- Project
CLAUDE.md"Code Graph Integration" section replaced with a 5-row
trigger table (who calls / impact / module overview / concept search / HTTP
route) —CLAUDE.mdis loaded every session, higher priority than the
invited-memory path inMEMORY.md. claude-plugin/templates/plugin_code_graph_mcp.mdclarifies the asymmetric
hook defaults and listsCODE_GRAPH_QUIET_HOOKS=1as the context-push
escape hatch alongside the existingVERBOSE_HOOKS/QUIET_HOOKS=0flags.
Rationale anchor
- mem #8234 documents that hook content has bounded leverage when the
current bench corpus is saturated (Sonnet 4.5 hits P@1=100%); bench is the
right oracle for tool-description boundary disambiguation, not for
server-prelude / hook-content tuning. This release therefore lands without
a fresh routing-bench cycle — the changes are all hook-content surface.
Verification
cargo check: clean (compile-timeassert!(len <= 1500)on
NOISYinstructions string holds; final length ~772 bytes).node --test claude-plugin/scripts/user-prompt-context.test.js:
77/77 pass — sixcomputeQuietHookspriority-chain cases rewritten for
the default-noisy invariant; one e2e check kept on the=1escape hatch.- No change to
routing_bench.rscorpus; intentionally skipped per mem #8234.
Migration
- Existing users on default env will start seeing
[code-graph:impact| overview|callgraph|search]push lines on intent-matching prompts. Set
CODE_GRAPH_QUIET_HOOKS=1in~/.claude/settings.jsonenv to opt out. - Adopted projects: the
plugin_code_graph_mcp.mdtemplate auto-refreshes on
next SessionStart (unlessCODE_GRAPH_NO_TEMPLATE_REFRESH=1is set). - No data-migration, no schema change, no MCP tool API change.
Full Changelog: v0.25.1...v0.26.0