Skip to content

Only first commit per session gets Entire-Checkpoint trailer; subsequent commits silently skipped #784

@SvenMeyer

Description

@SvenMeyer

Summary

When using entire configure --agent claude-code with the manual-commit strategy, only the first commit per turn gets the Entire-Checkpoint trailer. Subsequent commits within the same turn, and all commits in later turns, are silently skipped — no trailer is added, no checkpoint is created, and no error is logged.

This breaks the documented "Multiple checkpoints, single session" workflow described at https://docs.entire.io/web/sessions:

"A developer might have a single session running in a terminal while creating multiple commits throughout that session and thereby creating multiple checkpoints. Entire will match up these checkpoints to the single session."

Environment

  • Entire CLI: 0.5.1 (d46fdc2)
  • OS: Linux (Manjaro)
  • Agent: claude-code
  • Strategy: manual-commit
  • Git hooks path: .husky/_ (via core.hooksPath)

Observed behavior

Prompt-by-prompt breakdown

  1. Prompt 1 — generated a single commit 7917a85. ✅ Linked to session with checkpoint 1754c2af9609.

  2. Prompt 2 — generated 3 commits while Claude Code was working:

    • 0dd88fa ✅ Linked to session with checkpoint 07386117e61f (first commit of this turn)
    • abb3213 ❌ No Entire-Checkpoint trailer
    • e1f6802 ❌ No Entire-Checkpoint trailer
  3. Prompt 3 (same session, new turn) — generated 1 commit:

    • 482a585 ❌ No Entire-Checkpoint trailer

Pattern: Only the first commit ever made in a turn gets linked. After the post-commit hook runs for that first commit, all subsequent commits in the session are orphaned.

Dashboard view

Only 2 out of 5 commits show the "Claude Code" badge and checkpoint:

Image
# Commit Message Linked?
5 482a585 chore: clean up dependencies... ❌ No trailer
4 e1f6802 feat: integrate Openfort + Viem... ❌ No trailer
3 abb3213 refactor: remove Particle Network... ❌ No trailer
2 0dd88fa style: format entire codebase... ✅ checkpoint 07386117e61f
1 7917a85 docs: add v0.1.0 status report... ✅ checkpoint 1754c2af9609

Root cause (from .entire/logs/entire.log)

The post-commit hook deletes the shadow branch after condensing the session. When the next commit happens, prepare-commit-msg cannot find the shadow branch, and silently produces no trailer.

Sequence from the log:

# Prompt 1, commit 1 (7917a85) — works
prepare-commit-msg: agent commit trailer added   (checkpoint: 1754c2af9609)
session condensed
shadow branch deleted                            ← shadow branch gone

# Prompt 2, commit 1 (0dd88fa) — works (shadow branch recreated between turns)
prepare-commit-msg: agent commit trailer added   (checkpoint: 07386117e61f)
session condensed
sessionHasNewContent: no shadow branch, checking live transcript
shadow branch deleted                            ← shadow branch gone again

# Prompt 2, commits 2-3 (abb3213, e1f6802) — NO prepare-commit-msg log entries at all
# The hook runs but entire silently exits without adding a trailer
# At turn-end, entire notices HEAD moved:
updated session base commit (HEAD changed during session), new_base: e1f6802

# Prompt 3, commit 1 (482a585) — also not linked
# No prepare-commit-msg log entry, shadow branch not available

The key gap: between 23:39:00 (shadow branch entire/7917a85-e3b0c4 deleted after commit 0dd88fa) and 23:47:42 (turn-end), two more commits were made with zero prepare-commit-msg activity in the log. The hook script pipes stderr to /dev/null (2>/dev/null || true), so any errors from entire hooks git prepare-commit-msg are silently swallowed.

No workaround available

We checked the available CLI commands (entire clean, entire reset, entire doctor) — none of them address this issue:

  • entire clean — only removes orphaned data, doesn't recreate shadow branches
  • entire reset — deletes shadow branch + session state, would make it worse
  • entire doctor — fixes stuck sessions, not the shadow branch lifecycle

Even a "one commit per prompt" workflow doesn't reliably work — Prompt 3's single commit (482a585) also failed to get linked.

Expected behavior

Every commit made during an active session should receive the Entire-Checkpoint trailer, as documented. The shadow branch should either:

  1. Not be deleted until the session ends (not after each commit), or
  2. Be recreated before returning from the post-commit hook, so it's available for the next commit's prepare-commit-msg, or
  3. prepare-commit-msg should not depend on the shadow branch existing to decide whether to add the trailer — it should be sufficient that an active session exists for the worktree.

Steps to reproduce

  1. entire configure --agent claude-code in any repo
  2. Start a Claude Code session
  3. Make 3+ commits in the same session (either in one turn or across turns)
  4. Only the first commit gets the Entire-Checkpoint trailer
  5. Dashboard shows subsequent commits without the Claude Code badge

entire.log

entire.tar.gz

Metadata

Metadata

Assignees

No one assigned

    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