はじめに
Claude Code にコミットまで任せていると、「このコミットはどんな指示から生まれたのか」を後から追いたくなります。コミットメッセージには結果しか残らず、やり取りはローカルのセッションログに埋もれます。
この記事では、エージェントの作業履歴を Git のコミットに紐づけて保存する Entire CLI を、Claude Code と組み合わせて実際に動かした結果をまとめます。インストールから記録の読み方、秘密情報がどこまで伏せられるか、外したあとに何が残るかまでを順に確認しました。
対象読者は、Claude Code を日常的に使っていて、エージェントの作業履歴をコードレビューや引き継ぎに残したい開発者です。
前提条件(検証環境)
筆者が 2026-10-28 JST に検証した環境は次のとおりです。
| 項目 | バージョン |
|---|---|
| OS | Linux x86_64(クラウドのコンテナ) |
| Entire CLI | 0.12.2(Go 1.27.3 ビルド) |
| Claude Code | 2.1.312 |
| Git | 2.43.0 |
検証用のリポジトリには remote を設定していません。そのため、push 時のアップロードやログインが必要な機能は動かしていません(境界は後半の表にまとめます)。
TL;DR
-
entire enable --agent claude-codeで、Claude Code の hooks 10 件と Git hooks 5 本が入ります - Claude Code がコミットすると
Entire-Checkpoint:トレーラーが付き、refs/entire/checkpoints/に transcript 入りの checkpoint が保存されます - 文脈のない値やメールアドレスは伏せ字をすり抜け、ローカルの作業用ファイルは伏せ字前の全文を持っています
- push すると checkpoint も一緒に上がる、と
enable時に CLI 自身が警告します -
disable --uninstallのあとも checkpoint の ref とコミットのトレーラーは残ります
Entire の概要
ZDNet Japan の記事によると、Entire は GitHub の元 CEO である Thomas Dohmke 氏が構築した開発者向けプラットフォームで、米国時間の 10月26日に正式公開されました。CLI は MIT ライセンスで GitHub に公開されています。
同記事によると、エージェントの作業を記録する CLI のほかに、コードがプッシュされるたびにエージェントが評価項目にスコアを付ける「Trails」や、セッションログをコードの隣に保持してエージェントが参照できるようにする「Continuous Memory」といった機能があります。後者は Entire の説明として、トークン使用量を最大 71% 削減できるとされています(数値は同社の主張で、筆者は検証していません)。この記事で扱うのは、ログインなしで動くローカルの記録部分だけで、Trails や Continuous Memory は筆者は試していません。
なお、Entire は Anthropic とは関係のない独立したサービスです。
対応エージェントは enable --help によると Claude Code のほか codex、cursor、opencode など複数ありますが、この記事では Claude Code だけを扱います。
手順
1. インストール
公式のインストールスクリプト(install.sh・569 行)は、パイプで sh に流す前に保存して中身を読みました。install.entire.com(失敗時は GitHub Releases)から取得し、checksums.txt の SHA-256 で検証してから ~/.local/bin に置く作りで、シェルの設定ファイルは書き換えず PATH の追加を案内するだけです。
実行ログの主要部分です。
==> Installing Entire CLI...
==> Detected platform: linux/amd64
==> Fetching latest stable version...
==> Installing version: 0.12.2
==> Downloading entire_linux_amd64.tar.gz from https://install.entire.com...
==> Verifying checksum...
==> Checksum verified (https://install.entire.com)
==> Extracting...
==> Installing to /root/.local/bin...
==> Entire CLI installed to /root/.local/bin/entire
==> Running post-install actions...
real 0m3.335s
所要時間は 3.3 秒で、entire(約 51MiB)と git-remote-entire の 2 本が配置されました。
2. リポジトリで enable する
対象のリポジトリで entire enable を実行します。非対話で通すには --agent と -y が必要です。
entire enable --agent claude-code --telemetry=false -y
--telemetry は enable --help に「Enable anonymous usage analytics (default true)」とあり、何も指定しないと匿名の利用分析が有効 になります。筆者は明示的に false にしました。送信される内容そのものは確認していません。
実行結果です。
Agent: Claude Code
Installed 10 hooks for Claude Code - Anthropic's CLI coding assistant
✓ Configured project
.entire/settings.json
Ready.
Make sure to commit these files to your Git repo so Entire works across worktrees and clones:
.entire/settings.json
.entire/.gitignore
.claude/settings.json
No Git remotes configured. Once you add one, checkpoints will be uploaded when you push to it.
They contain your agent transcripts. If that repo is public, anyone can read them.
Secret redaction is best effort, not bulletproof. Review with `entire checkpoint explain`.
To stop uploads: `entire configure --local --skip-push-sessions`
To use a separate private repo: `entire configure --local --checkpoint-remote github:<owner>/<repo>`
後半の警告は重要なので、運用上の注意の節で改めて取り上げます。
3. enable で増えるもの
enable の前後で差分を取ったところ、増えたものは次のとおりでした。
| 場所 | 中身 | コミット対象 |
|---|---|---|
.entire/settings.json |
enabled: true、telemetry、checkpoint の保存方式 git-refs
|
推奨 |
.entire/.gitignore |
tmp/、settings.local.json、metadata/、logs/、redactors/local/ を除外 |
推奨 |
.claude/settings.json |
Claude Code の hooks 10 件 | 推奨 |
.git/hooks/ |
prepare-commit-msg、commit-msg、post-commit、post-rewrite、pre-push の 5 本 |
対象外(Git 管理外) |
Claude Code 側の hooks は、PreToolUse(Agent)、PostToolUse(Agent と Skill)、SessionStart、UserPromptSubmit、Stop、StopFailure、SessionEnd、SubagentStart、SubagentStop の 10 件です。どれも次のように、entire が見つからなければ何もせず終了します。
{
"type": "command",
"command": "sh -c 'if ! command -v entire >/dev/null 2>&1; then exit 0; fi; exec entire hooks claude-code stop'",
"timeout": 120
}
Git hooks も同じく entire が無ければ素通りします(commit-msg だけは、未インストールの旨を stderr に出して処理を続けます)。チームの一部だけが Entire を入れている状態でも、入れていない人のコミットや Claude Code の起動は止まりません。
enable の時点では git for-each-ref の結果は変わらず、ref は増えていませんでした。entire status は Enabled、entire doctor は全項目 OK でした。
4. Claude Code のセッションが checkpoint になるまで
hooks が入った状態で、作業ブランチ上から Claude Code にコミットまで頼みました。
claude -p "README.md に Hello を書いてコミットして" --permission-mode acceptEdits
約 13 秒で終わり、できたコミットのメッセージ末尾には次のトレーラーが追加されていました。
Entire-Checkpoint: 01M5ZZSBEJZZNNCEN0JFZS2AP4
26 文字の ID です。同時に、ref が 1 本増えていました。
$ git for-each-ref refs/entire
cc77bca... commit refs/entire/checkpoints/P4/01M5ZZSBEJZZNNCEN0JFZS2AP4
保存先は refs/entire/checkpoints/<ID の末尾 2 文字>/<ID> で、refs/heads にブランチが増えるわけではありません。git branch の一覧が汚れないのは助かります。この ref のコミット履歴は「Checkpoint」と「Finalize transcript」の 2 コミットで、トレーラーには Entire-Session、Entire-Strategy: manual-commit、Entire-Agent: Claude Code が入っていました。
ref が指すツリーの中身は次のとおりです。
0/content_hash.txt 71
0/full.jsonl 428937
0/metadata.json 940
0/prompt.txt 107
0/transcript.jsonl 7029
metadata.json 902
transcript.jsonl は表示用に圧縮した版で、full.jsonl は Claude Code のネイティブな JSONL をほぼそのまま保存したものでした。full.jsonl の大半は、Claude Code がモデルに渡す system-reminder 系の添付情報です(プロンプトのスナップショットが約 269KB、スキル一覧が約 72KB)。今回のような短い作業でも 1 つの checkpoint に約 420KB が入っていたので、エージェントのコミットが多いリポジトリでは ref のサイズが積み上がる点は意識しておいた方がよさそうです。
ここまでの流れを図にすると次のようになります。
想定外だったのはセッションのまとまり方です。筆者は Claude Code の中から子プロセスとして claude -p を起動したため、親の CLAUDE_CODE_SESSION_ID が引き継がれ、別々の 2 回の実行が 1 つのセッションとして記録されました。
5. list / explain / tokens の読み方
checkpoint list
$ entire checkpoint list
branch work
checkpoints 1
● 01M5ZZSBEJZZNNCEN0JFZS2AP4 "README.md に Hello を書いてコミットして"
10-28 00:50 (0afbd69) Add Hello to README
現在のブランチにある checkpoint を一覧します。タイトルとしてプロンプトの先頭が表示され、その下に紐づくコミットが並びます。どの指示からどのコミットが生まれたかを一目で追えるのが、この一覧の価値だと感じました。時刻はコンテナの表示(UTC)のままです。
checkpoint explain
entire checkpoint explain <ID> は、checkpoint の中身を人が読める形で表示します(セッション ID は伏せています)。
● Checkpoint 01M5ZZSBEJZZNNCEN0JFZS2AP4
session <session-id>
created 2026-10-28 00:50:30
tokens 293.8k
redacted 0 replacements in this session so far
commits 0afbd69 Add Hello to README
────────────────────────────────────────────────────────────
## Intent
README.md に Hello を書いてコミットして
## Summary
*Not generated yet. Run ‘entire checkpoint explain --generate 01M5ZZSBEJZZNNCEN0JFZS2AP4‘ to create an AI summary.*
## Files (1)
- `README.md`
── Transcript (checkpoint scope) ───────────────────────────
[User] README.md に Hello を書いてコミットして
[Tool] Bash: git status --short && git branch --show-current && ls README.md 2>&1
[Tool] Bash: cat README.md; git branch -a
(以下略)
redacted 行には、そのセッションで伏せ字にした件数が出ます。push 前に transcript を見直すかどうかの目安になります。レビューで「何を頼んで、どこが変わったか」を確認するだけなら Intent と Files で足ります。Summary は既定では空で、--generate で AI 要約を作れますが、--help には要約プロバイダでトークンを消費すると明記されています(筆者は試していません)。
checkpoint tokens
Token usage
Total: 293.8k tokens
Input: 16 | Cache read: 273.5k | Cache write: 18.8k | Output: 1.4k | API calls: 8
Recommendations
- Cache/context replay is 93.1% of token volume; reduce unnecessary follow-up calls in this large-context session.
使われたモデル(今回は claude-sonnet-5-5)とトークンの内訳、API 呼び出し回数が出ます。README に 1 行足すだけの作業でも、トークンの 93.1% がキャッシュ済みコンテキストの読み直しでした。
6. 秘密情報の扱い
checkpoint は transcript を丸ごと Git に残すので、秘密情報がどう扱われるかが導入判断の分かれ目になります。2 段階で確かめました。
環境変数の実値は出なかった
検証環境には、名前に TOKEN / KEY / SECRET を含む環境変数が 17 個ありました。最初の checkpoint の full.jsonl をこれらの実値で検索したところ、ヒットは 0 件でした。ghp_、sk-、AKIA、Bearer、JWT 形式の文字列も 0 件です。ただし、今回のセッションでは Claude Code が環境変数を表示する操作をしていないので、「伏せ字が効いた」のではなく「そもそも transcript に載らなかった」可能性が高い点は区別しておきます。
一方で、Claude Code が system-reminder としてモデルに渡していた ユーザーのメールアドレスが full.jsonl に 4 回含まれていました。redaction の対象は認証情報で、メールアドレスのような個人情報は伏せられません。
ダミーの秘密で伏せ字の範囲を試す
次に、ダミー値を 3 種類用意し、Claude Code に「ファイルに書いてコミットして」と頼みました。ダミー値そのものは載せず、形式だけ示します。
-
ghp_で始まる GitHub トークン形式の文字列(プロンプトに直接記載) - AWS がドキュメントで例示に使っているアクセスキー ID のサンプル値(プロンプトに直接記載)
- 環境変数
FAKE_API_TOKENに入れた 48 桁の hex 文字列(Claude Code にechoさせて取得)
explain の表示はこうなりました。
tokens 147.3k
redacted 27 replacements in this session so far · matches: entropy 18, betterleaks 14, credential_value 27
複数の検出レイヤー(エントロピー判定、betterleaks、key=value 形式の値の検出など)が重ねて効いていて、件数はレイヤーごとに数えられています。結果を整理すると次のとおりです。
| 対象 | checkpoint(ref 側) |
|---|---|
プロンプト中の ghp_ 形式 |
伏せ字になった |
| プロンプト中の AWS サンプル値 | 伏せ字になった |
api_token=<値> の形で書かれた値 |
伏せ字になった |
| Write ツールで書き込んだファイル内容 | 伏せ字になった |
echo $FAKE_API_TOKEN の出力(文脈のない 48 桁 hex 単体) |
残った(full.jsonl と transcript.jsonl の両方) |
最後の行は、ツールの実行結果に値だけがむき出しで出たケースです。キー名などの手がかりが無い文字列は、エントロピー判定でも拾われませんでした。printenv や cat .env のような操作でも同じことが起きうると考えておくべきです(実際には試していません)。
ローカルの作業領域は伏せ字前
もう一つ見落としやすいのが、コミットされない作業用ファイルです。
| 場所 | パーミッション | 内容 |
|---|---|---|
.git/entire-sessions/<セッションID>.json |
0600 |
ghp_ 形式の値が全文で残っていた |
.entire/metadata/<セッションID>/full.jsonl |
0600 | 伏せ字前の transcript(約 640KB)。ghp_ 形式も 48 桁 hex も全文 |
どちらも Git には入らず、パーミッションは所有者のみに絞られています。ただ、redaction が掛かるのは checkpoint に確定させる段階で、手元には生の transcript が残ります。また entire session list の一覧表示には、プロンプトの先頭として ghp_ 形式の値の先頭部分がそのまま表示されました。画面共有中に一覧を開くときは気をつけたいところです。
7. 運用上の注意
ここまでの結果から、導入するときに決めておきたいことを並べます。
-
push の扱いを先に決める。remote を設定すると push 時に checkpoint(transcript を含む)もアップロードされる、と CLI 自身が案内しています。公開リポジトリなら誰でも読めます。止めるなら
entire configure --local --skip-push-sessions、別の非公開リポジトリに分けるなら--checkpoint-remoteを使うよう案内されています(筆者は remote を設定しておらず、アップロード自体は確認していません) -
telemetry を明示する。既定は有効なので、組織のポリシーに合わせて
--telemetry=falseを付けるかを決めます - 秘密を transcript に出さない運用にする。伏せ字は CLI 自身が「best effort」と書いているとおり万能ではありません。Claude Code の permissions で、環境変数やシークレットファイルを読むコマンドを制限しておく方が確実です
- 個人情報が残る前提で扱う。メールアドレスのような system-reminder 由来の情報は伏せられないため、transcript の公開範囲はメンバー内に留めるのが無難です
-
push 前に
explainを見る。redactedの件数と transcript を確認してから push します
外し方:uninstall 後も残るもの
Entire には段階的な止め方が 3 つあります。それぞれ実行して、何が消えて何が残るかを確認しました。
| コマンド | 消えるもの | 残るもの |
|---|---|---|
entire clean --all --force |
.git/entire-sessions/ のセッション状態(1 件・3 ファイル) |
hooks、.entire/、checkpoint の ref |
entire disable |
なし(.entire/settings.local.json に enabled: false を書くだけ) |
hooks、.entire/、checkpoint の ref |
entire disable --uninstall --force |
Claude Code の hooks、Git hooks 5 本、.entire/ ディレクトリ |
checkpoint の ref、コミットのトレーラー |
--uninstall の出力は次のとおりです。
✓ Removed Claude Code hooks
✓ Removed git hooks (5)
· No session states to remove
✓ Removed .entire directory
· No legacy shadow branches to remove
✓ Entire has been removed from this repository.
実行後の状態を確認すると、refs/entire/checkpoints/ 配下の 2 本はそのまま残り、git status には .claude/settings.json の変更と .entire/ の 2 ファイルの削除が出ました。今回の検証リポジトリでは .claude/settings.json に Entire の hooks しか書いていなかったため、122 行あったファイルが {} になりました。ファイル自体は削除されないので、この変更をコミットするかどうかは自分で判断します。
checkpoint を消したい場合は、別途 entire checkpoint delete <ID> を使うと --help には書かれています(--dry-run もあります)。筆者はこのコマンドは実行していません。また、コミットメッセージに入った Entire-Checkpoint: トレーラーは履歴の一部なので、ref を消しても残ります。「試しに入れて、合わなければ外す」場合でも、そのあいだに作ったコミットには痕跡が残ると考えておく必要があります。
ログインが要る機能の境界
entire auth status が Not logged in の状態で、主なコマンドを順に叩きました。
| 区分 | コマンド | 結果 |
|---|---|---|
| ログインなしで動いた |
enable / status / doctor / checkpoint list / checkpoint explain / checkpoint tokens / session list / session info / clean / disable
|
正常終了 |
| ログインを要求された |
activity / recap
|
Not logged in. Run 'entire login' to authenticate. |
| ログインを要求された | org list |
control plane に接続できず、entire login を案内 |
| 別の理由で失敗(ログイン要否は未切り分け) |
search / checkpoint search / trail list
|
remote origin が無い、--project の指定が必須、など |
記録して手元で読むところまではアカウント不要で完結します。チーム横断の検索や活動の振り返り、Trails はクラウド側の機能で、ログインと remote が前提になると見てよさそうです。
トラブルシューティング:トレーラーが付かないとき
entire status が Enabled になっているか、entire doctor で Git hooks と Claude Code の hook 設定が OK かを確認します。hooks は entire コマンドが PATH に無いと何もせずに終了するので、~/.local/bin が PATH に入っていない環境では、エラーにならないまま記録だけが抜けます(Claude Code の SessionStart hook は、この場合にメッセージを出す作りになっていました)。
おわりに
Entire CLI を Claude Code と組み合わせると、プロンプト、ツール呼び出し、変更ファイルがコミット単位でまとまり、checkpoint list と explain で「このコミットはどんな指示から来たのか」を後から追えます。hooks は Entire が無い環境では素通りし、ブランチ一覧も汚さないので、手元のリポジトリで試すハードルは低いと感じました。
一方で、一番重いと感じたのは transcript が Git の一部になる点です。伏せ字は複数のレイヤーで掛かっていましたが、文脈のない値やメールアドレスはすり抜け、手元には伏せ字前の全文が残ります。導入するなら、push の扱い、telemetry、Claude Code 側の permissions を先に決めてから enable するのがおすすめです。
関連記事
- Claude Code 2.1.299入門、@参照の展開停止とplugin evalのAgent除外を実測
- Claude Code 2.1.299入門、MCP許可ルールの一致範囲を実測した
- Claude Code Agent View入門 — 複数セッションを1画面で管理するCLIダッシュボード