Repository navigation
chore(claude): drop quest's worktree hooks from project settings - #7889
Conversation
Quest's Claude Code worktree hooks are now a user-level opt-in (moq-dev/quest#466), so the repository's settings stop forcing them on every contributor. Drops the quest that kept the nix-wrapped entries alive across pin bumps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- Worktree hooks removed —
.claude/settings.jsondrops the fourWorktreeCreate/WorktreeRemove/SubagentStart/SubagentStopentries, leaving the direnvSessionStarthook andpermissions; the resulting file still validates against the Claude Code settings schema. - AGENTS.md note updated — the drop-and-restore procedure around
quest initbecomes "drop any it adds until the pinnedqueststops writing them", matching the pinned quest's current behavior. - Quest removed —
quest/m0/quest-worktree-hooks.md, itsm0/README.mdindex entry, and thecodex-env-snapshot.md## Relatedlink are gone; no other tracked references to the deleted page or the removed hook entries remain. - Ignore coverage intact —
/.claude/worktrees/and/.worktrees/are already ignored, so Claude Code's fallback worktree location is still excluded fromjust check's untracked-file scope.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head fc0061a against base 716ddc9.
No confirmed actionable finding. The settings remove the four Quest worktree hooks while retaining SessionStart and permissions, and the updated guidance accounts for the currently pinned quest init. This follows the recorded user-level opt-in decision.
Verification limits: GitHub-only static review of the settings and upstream decision; I did not run Claude Code, quest init, or a live worktree transition.
(Written by review (OpenAI))
|
No actionable comments were generated in the recent review. WalkthroughThe project settings no longer define the Merge Risk:
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The maintainer chose to keep AGENTS.md as on main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 5f5c7b2
No new actionable findings. Compared with the prior reviewed head fc0061a, accounting for the main merge: the only substantive PR-owned update restores main's AGENTS.md instruction at line 48. The four-hook removal, retained SessionStart/permissions, and quest/link deletions are unchanged.
Overall direction: this remains consistent with the recorded maintainer decisions. The restored guidance's known staleness and the current pinned init's ability to re-add hooks are explicitly acknowledged decisions, not newly discovered defects.
Verification limits: GitHub-only source, patch and base comparison. I did not run Claude Code, quest init, or a live worktree transition, and did not independently execute the reported checks.
(Written by review (OpenAI))

Problem
Quest's Claude Code worktree hooks are becoming a user-level opt-in: moq-dev/quest#466 makes
quest initwrite no hook entries, since a repository's settings force them on every contributor. moq still carries four hand-written entries in.claude/settings.jsonthat runnix run "${CLAUDE_PROJECT_DIR}#quest" -- worktree hook. Quest'sinitonly removes its own exactquest worktree hookand leaves wrappers like these with a warning, so moq removes them itself.Approach
.claude/settings.json: drops theWorktreeCreate,WorktreeRemove,SubagentStart, andSubagentStopentries. The direnvSessionStarthook and the permissions stay.quest/m0/quest-worktree-hooks.md(withquest rm, which also drops its links fromquest/m0/README.mdandquest/m1/codex-env-snapshot.md). Its goal was to keep these wrapped hooks alive across pin bumps, which no longer applies once they are gone.AGENTS.md: unchanged from main, per the maintainer's decision below.Users who want Quest to manage Claude Code's worktrees add the entries from Quest's README ("Claude Code checkouts") to their own
~/.claude/settings.json. Until then, Claude Code makes its own worktrees under.claude/worktrees/, which.gitignorealready ignores.Known staleness: main's
AGENTS.mdline "quest initrefuses Claude Code's worktree hooks: drop them from.claude/settings.jsonfor its run, then restore them." describes hooks this PR removes, so there is nothing left to restore. The pinnedquest(moq-dev/quest@4be35081) still adds barequest worktree hookentries on a pin bump'squest inituntil it includes moq-dev/quest#466, so a pin bump should drop whateverquest initadds rather than restore anything. The maintainer kept main's wording anyway.Decisions
Made by the maintainer in /quest-complete on 2026-11-04:
AGENTS.mdexactly as on main.quest initadds until the pinnedqueststops writing them").quest/m0/quest-worktree-hooks.md?Earlier, by the maintainer: an explicit PR instead of leaving the entries for
quest init's warning to surface, and no follow-up quest for it.Impact
None on public API or wire. Contributors' Claude Code sessions in moq no longer route worktrees through Quest unless they opt in at user level.
Alternatives
quest init's warning to surface: the maintainer chose an explicit PR instead.Neither this PR nor moq-dev/quest#466 blocks the other.
Follow-ups
None.
Validation
just ci origin/main(in the dev shell): passed on5f5c7b28(biome, markdown, gh, quest, shell, and the rest it selected; no Rust).Review
Codex
gpt-6.1-solat xhigh effort, session01a1a7c5, rounds 1-2 againstorigin/mainat735cc0ca. Reviewed head:5f5c7b28..claude/settings.json:13: bump the Quest pin so a laterquest initdoes not re-add the four hooks. Refuted: no Quest revision stops writing them yet. moq-dev/quest#466 is still open, and quest's main (b454ca3e) still callsinstallHooks(repo)atsrc/core/init.ts:140. The maintainer decided this PR and moq-dev/quest#466 don't block each other, and the pin bump that picks it up is its own quest.quest initruns only in a deliberate pin bump, whose diff to.claude/settings.jsongets reviewed there.Automated reviews on the previous head
fc0061a8: Pullfrog approved, CodeRabbit had no actionable comments, and the OpenAI review found nothing. The one failing check, the optionalCheckjob, was cancelled, not failed.🤖 Generated with Claude Code
(Written by Claude Opus 5.5)