2.1 KiB
| summary | tags | scope | type | source | date | last_updated | ||
|---|---|---|---|---|---|---|---|---|
| Claude Code's --setting-sources flag silently disables ALL plugins and hooks if "user" is omitted, because plugin enablement and hook wiring live only in ~/.claude/settings.json. |
|
global | reference | cc-os docs/plans/c3-spike-findings.md (spike a, 2026-07-08) | 2026-07-08 | 2026-07-08 |
Claude Code --setting-sources silently drops all plugins without "user"
Verified 2026-07-08 via transcript-level inspection of headless runs (model self-report is
unreliable for this — check the session JSONL for hook_additional_context /
skill_listing entries instead).
--setting-sourcespicks which settings files load:user(~/.claude/settings.json),project(.claude/settings.json),local.- Plugin enablement (
enabledPlugins) and all hook wiring live in theuserfile. Any invocation whose source list omitsuser(e.g.--setting-sources ""orproject,local) starts a session with ZERO plugins and ZERO hooks — no error, no warning. Memory capture, vault sync, ADR reminders, orchestration injection: all silently absent for that session. - Symlinked local plugins and absolute-path hooks are NOT the issue — the only failure
axis is whether
useris in the list.
--settings <overlay.json> deep-merges enabledPlugins (verified 2026-07-08)
An overlay file passed via --settings merges enabledPlugins key-by-key into the user
settings — only plugins explicitly set false are disabled; unlisted plugins and all
hooks are untouched. Diff-only profile overlays (e.g. ~/.claude/profiles/*.json) are
therefore safe. Measured caveat: disabling plugins saves almost no context
(−32 to −632 tokens for 5–9 plugins, post-ToolSearch) — the win is focus, not tokens.
Rule
Any wrapper, profile, or script that passes --setting-sources MUST include user.
To slim a session, subtract via a --settings <overlay.json> file (e.g. an
enabledPlugins diff in ~/.claude/profiles/) — never by dropping the user source.
Related: cc-os-hub, memsearch-sessionstart-injection-hardcoded