-
Notifications
You must be signed in to change notification settings - Fork 37
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Repro (Factory CLI 0.30.0 on macOS):
- Ensure Claude hooks exist in ~/.claude/settings.json (standard quibbler
hooks). - In ~/.factory/settings.json, delete hook entries and set
claudeHooksImported to false. - Start droid. Within seconds, ~/.factory/settings.json is rewritten with the
Claude hooks restored.
What I observed in the Droid binary (strings scan):
- dt0() is the auto-import trigger:
- Returns early if claudeHooksImported is true.
- Otherwise calls ut0() → kV6() to import and then sets
claudeHooksImported: true.
- ut0() reads hooks from:
- ~/.claude/settings.json
- ./.claude/settings.json
- ./.claude/settings.local.json
- kV6() merges those hooks into Factory settings, sets claudeHooksImported:
true, and populates importedClaudeHooks. - The importer ignores enableHooks; the only guard is claudeHooksImported.
Documentation evidence:
- Factory CLI changelog (Nov 18, v0.26.3) notes “Claude Code Hooks Auto-
Migration: automatically detects and imports hooks from Claude Code CLI with
smart translation…”. - No documented setting to disable this auto-import.
Impact:
- Droid users who want Claude to keep file-based hooks but Droid to use MCP-
only cannot prevent re-import; deleting hooks just triggers re-import unless
claudeHooksImported stays true.
Request:
- Add a supported setting/flag to disable Claude hook auto-import (e.g.,
disableClaudeHookImport: true) and/or respect enableHooks for imports. - Alternatively, expose a CLI flag or environment variable to skip dt0()
without deleting Claude’s hooks.
github-actions
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working