Skip to content

Hooks don't short-circuit when enabled: false — prepare-commit-msg takes ~20s #524

@timothedelion

Description

@timothedelion

Summary

When enabled is set to false in both .entire/settings.json and .entire/settings.local.json, the git hooks (especially prepare-commit-msg) still run expensive operations instead of exiting immediately. This adds ~20s of overhead to every commit.

Steps to reproduce

  1. Disable Entire:

    // .entire/settings.json and .entire/settings.local.json
    {
      "enabled": false,
      "strategy": "manual-commit",
      "telemetry": false,
      "strategy_options": {
        "push_sessions": false,
        "summarize": { "enabled": false }
      }
    }
  2. Time the hook:

    time entire hooks git prepare-commit-msg /dev/null ""
    # => ~20-22s

Expected behavior

When enabled: false, all hooks should check the setting and return immediately (< 100ms).

Actual behavior

prepare-commit-msg still takes ~20 seconds, performing shadow branch reads, session lookups, and content detection even though Entire is disabled.

Impact

This makes every manual commit ~20s slower. Users end up having to manually delete the hook files from .git/hooks/ as a workaround.

Environment

  • macOS (Darwin 24.5.0)
  • Entire CLI installed via mise
  • Large monorepo
  • Strategy: manual-commit

Hook timing breakdown

Hook Time
prepare-commit-msg ~20s
post-commit ~1.2s
commit-msg ~0.7s
Total Entire overhead ~22s

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions