Skip to content

Request: Add setting to disable Claude hook auto-import in Droid CLI #484

@gramanoid

Description

@gramanoid

Repro (Factory CLI 0.30.0 on macOS):

  1. Ensure Claude hooks exist in ~/.claude/settings.json (standard quibbler
    hooks).
  2. In ~/.factory/settings.json, delete hook entries and set
    claudeHooksImported to false.
  3. 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.

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions