Zerostel について
Zerostelは、エージェントの変更を確認・復元したい開発者向けの、コーディングエージェント用ローカル記録・巻き戻しツールです。対応エージェントのセッション履歴やファイルスナップショット、ルール、チェック結果を記録し、`.git`には触れません。
主な機能
- 01プロンプト、ツール、ファイル変更を記録
- 02ファイルを以前の手順へ巻き戻し
- 03ルールで呼び出しを拒否または保留
- 04テストとビルドをコード状態に紐付け
- 05引き継ぎ情報と検証可能なレポートを作成
- 06セッションデータをローカルに保持
活用シーン
- 01エージェントによる変更を確認
- 02失敗したコーディングエージェントの操作を取り消し
- 03複数エージェントに共通ルールを適用
- 04セッション状況を他の人に引き継ぎ
MCP 対応
ZerostelはMCPサーバーを提供し、エージェントが求めに応じて履歴の参照や巻き戻しを行えます。他のMCPサーバーへの呼び出しをZerostelゲートウェイ経由で記録する機能は、今後のロードマップに記載されています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
7掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| message | string | いいえ | これから行う操作 |
詳細
AI エージェントをいつでも出発点に戻せます。
AI エージェントにゼロトラストを適用します。何かを壊す可能性があると想定し、すべてのステップを記録して、変更したファイルを元に戻せるようにします。 コーディングエージェントのためのフライトレコーダー兼タイムマシンです。すべてのステップを記録し、テストを実行時のコードにひも付け、設定したガードレールを適用し、次のエージェントや人が確認できる引き継ぎを作成します。

クイックスタート
npx zerostel install
まず試してみたい場合は、npx zerostel demo で一時的なプロジェクトを作成し、エージェントがフォルダーを削除してテストを失敗させる処理を再生して、元に戻せます。エージェントは不要で、既存のプロジェクトに変更を加えることもありません。
その後は、いつもどおりエージェントを使ってください。何かを壊したときは、次のようにします。
zerostel log # what happened, step by step
zerostel checks # did the tests pass on the code as it is now?
zerostel undo # put the files back to before the agent's last turn
zerostel rewind 0 # or all the way back to point zero, where the session started
zerostel handoff # what the next agent or person needs to carry on
zerostel ui # the same, clickable, in a local web page
できること
- 記録。 セッションごとの1つのタイムラインに、すべてのプロンプト、ツール呼び出し、コマンド、ファイル変更、所要時間、トークン数を記録します。ターミナルでは
zerostel log、ローカルのウェブページではzerostel uiを使います。 - 巻き戻し。 シェルコマンドを含む、ファイルを変更できるすべてのツール呼び出しの前後にスナップショットを作成します。処理を元に戻したり、任意のステップまで戻ったり、出発点まで戻ったりできます。巻き戻し自体も元に戻せます。
- ガード。 ツール呼び出しの実行前に、独自のルールでブロックしたり、エージェントに確認を求めさせたりできます。すべてのエージェントに同じルールを適用できます。
- 確認と引き継ぎ。 エージェントが実行するすべてのテスト、型チェック、ビルドを、実行時のコードにひも付けます。これにより
zerostel checksで、現在のコードで合格したテストと、変更後のコードで実行したテストを区別できます。zerostel handoffでは、次のエージェントや人に、依頼内容、現状、試したことを伝えられます。 - 検証と共有。 編集されたかどうかが分かるハッシュチェーン付きのログと、共有用のプライバシーモードを備えた1ページのレポートを作成します。
- ローカルに保持。 データがアップロードされることはありません。
~/.zerostelを読み取れるのはあなただけで、.gitに触れることもありません。
AI エージェントにゼロトラストを適用し、エージェントが失敗する可能性を想定して、その動作をすべて確認でき、いつでも元に戻せる手段を確保します(実際の運用方法)。これはサンドボックスではありません。ネットワークリクエスト、デプロイ、データベースへの書き込みは取り消せません。制限事項をご覧ください。
理由
エージェントは数十個のファイルを編集し、rm、git checkout .、マイグレーション、ビルドスクリプトを実行します。何か問題が起きると、何をしたのか、どうすれば元に戻せるのかを確認することになります。
エージェントには独自のチェックポイント機能があるものもありますが、その挙動は大きく異なります。Claude Code の巻き戻しでは、Bash 経由で行われた変更は対象外です。Copilot CLI はシェルコマンドを記録します。Cursor と Codex はそれぞれ独自の方式を採用しています。複数のエージェントを使う場合、「何が変わったのか、元に戻せるのか」という問いへの答えは、エージェントごとに異なります。
Zerostel は、対応するすべてのエージェントを同じ方法で記録します。ファイルを変更する各ツール呼び出しの前後でプロジェクトのスナップショットを取り、プロンプト、コマンド、ファイル、時間、トークンのタイムラインを記録し、他の人に渡せるレポートを作成します。.git には一切手を加えません。
| エージェント独自のチェックポイント | コミット/git stash | Zerostel | |
|---|---|---|---|
| シェルコマンドによる変更 | エージェントによります | コミットまたはスタッシュしたもののみ | ✅ プロジェクト内、および指定したファイル |
| 特定の手順に戻る | 通常はプロンプト単位 | コミットまたはスタッシュ単位 | ✅ ツール呼び出し単位 |
| コマンド、ファイル、トークン、時間のタイムライン | 一部のみ | ❌ | ✅ |
| 後から編集されたかどうかが分かるログ | ❌ | ✅(コミットハッシュ) | ✅ |
| 独自のルール:ツールの実行前にブロックまたは確認 | エージェントごと | ❌ | ✅ すべてのエージェントで同じルール |
| エージェント間で同じ挙動 | ❌ エージェントごとに異なる | ✅ | ✅ |
.git への書き込み | 書き込むものもあります | ✅ | ❌ 一切なし |
| セッションの共有可能なレポート | ❌ | ❌ | ✅ |
詳細と情報源:docs/comparison.md。その背景にある出来事については、コーディングエージェントのチェックポイントでは復元できないものをご覧ください。
他のツールとの比較
エージェントは独自のチェックポイント機能を追加し続けており、便利なアドオンもあります:Turnback、Turnal、bashback、logbook、codex-rewind。Zerostel が追加する機能は次のとおりです。
- 作業を失わない巻き戻し。 正確なコピーを作らずに削除または上書きすることはありません。各ファイルは変更の直前に再確認され、
--keep-othersを使えば、その後に別のエージェントやユーザーが変更した内容を保持できます。また、途中で中断された場合も含め、すべての巻き戻しを取り消せます。 - プロジェクトフォルダー以外も対象。
~/.zshrcのような監視対象ファイル、Windows のユーザー環境変数、グローバルインストールも対象です(一覧と、元に戻すためのコマンドを記録します)。 - コードと結び付いた証拠。 テストとビルドは実行時の正確なコードにひも付けて記録されるため、その後に変更されたコードでの成功は古い結果として表示され、引き継ぎ内容をフォルダーと照合できます。
- すべてのエージェントで共通のルール。 ツールの実行前にブロックまたは確認するガードレールと、編集されたかどうかを示すログを提供します。
- エージェントはそのまま。 公式エージェントにフックするため、フォークもラッパーも不要です。実行時の依存関係はなく、どこにもデータを送信しません。
別のツールのほうが合う場合もあります。エージェント独自の/rewindとcodex-rewindはファイルとともに会話も復元し、Turnalではテストが失敗したターンを二分探索できます。各ツールの比較と情報源をご覧ください。
対応エージェントとシステム
| エージェント | 方法 | ステータス |
|---|---|---|
| Claude Code | フック | ✅ 実際のセッションでテスト済み |
| Codex | フック(/hooksで一度承認) | ✅ 実際のセッションでテスト済み |
| Cursor | フック | ✅ CLI は実際のセッションでテスト済み。CLI はプロンプトイベントを送信しないため、そこでの取り消しは一度に1つの変更を戻します。Windows では PowerShell から起動してください。Git Bash からではフックが実行されません |
| Gemini CLI | フック(信頼済みフォルダーのみ) | ✅ エンドツーエンドでテスト済み¹。個人アカウントが2026年6月に Antigravity へ移行したため、Code Assist Standard/Enterprise および有料 API キーが対象です |
| Antigravity(CLI、デスクトップ、IDE) | フック | ✅ エンドツーエンドでテスト済み¹。プロンプトのテキストは渡されないため、ターンは「New turn」と表示されます |
| Copilot CLI | フック(~/.copilot/hooks) | ✅ 実際のセッションでテスト済み |
| opencode | プラグイン | ✅ 実際のセッションでテスト済み |
| DeepSeek Harness | プラグイン | 🧪 実験的(dsh 自体が開発者プレビューです)。エンドツーエンドでテスト済み¹ |
| その他すべて(Aider、スクリプトなど) | zerostel run -- <command>でファイルを監視 | ✅ より大まかな監視です。ツール呼び出し、トークン、ガードレールはありません |
¹ Windows 上の実際のエージェントで、モデルをスクリプトで動作するものに差し替えてテストしました。プロンプト、ファイルの書き込み、コマンド、ルールによってブロックされた呼び出し、ターンの終了、取り消しを確認しています。
実験的なエージェントは、名前を指定した場合にのみインストールされます。zerostel install --agent deepseekで指定してください。実際のセッションでの利用報告を歓迎します。
フックに報告する内容(プロンプト、失敗したコマンド、トークン)は、エージェントごとに異なります。各エージェントが Zerostel に送信する内容。
エージェントがどのモデルを使っていても、Zerostel には関係ありません。Claude、GPT、Gemini、DeepSeek、ローカルモデルはすべて同じように記録されます。
Windows、macOS、Linux(WSL も含む)に対応しています。CI では Node 20、22、24、26 を使い、3つすべての OS で各コミットをテストしています。
インストール
npx zerostel install # one-off, nothing installed globally
npm install -g zerostel # or keep the `zerostel` command around
git と Node 20 以降が必要です。Node がない場合は、Windows、macOS、Linux 用の Node を内蔵した単体実行ファイルが各リリースにあります。Releasesからダウンロードして、zerostel installを実行してください。Claude Code、Codex、Antigravity、Gemini CLI 用のプラグイン、エージェントスキル、ダウンロードの確認方法については、docs/install.mdを参照してください。
ドキュメント
| コマンド | すべてのコマンドとオプション |
| ガードレール | ルールの仕組みと、テスト済みのレシピ |
| 設定 | ~/.zerostel/config.json |
| CI | GitHub Action |
| MCP サーバー | エージェントがタイムラインを読み取り、指示に応じて巻き戻せるようにします |
| 仕組み | フック、シャドーリポジトリ、安全な巻き戻し、監査チェーン |
| ゼロトラスト | 各原則と、Zerostel による対応 |
| セキュリティモデル | 保護するものと、保護しないもの |
| エージェント独自のチェックポイント | 各エージェントの取り消しで復元される内容(出典付き) |
| その他のツール | Turnback、Turnal、bashback などの比較 |
| よくある質問 | 速度、ディスク使用量、git、jj、サンドボックス、トークン |
動作しない場合は、zerostel doctorを実行してください。Node、git、各エージェントのフック、設定、ガードレールを確認します。出力はそのまま issue に貼り付けても安全です。
制限事項
- 復元できるのは、記録された状態のみです。削除後に記録を開始しても、ファイルは復元できません。
- 1 つのシェルコマンド内に中間状態はありません。同じコマンドで作成され、削除されたファイルは一度も検出されません。
zerostel runはファイルが落ち着いたタイミングでスナップショットを作成するため、短時間しか存在しないファイルも見逃すことがあります。 - プロジェクト外では、
watchに指定したファイルのうち、ホームフォルダー内にあるものだけがスナップショットの対象です。Windows では、ユーザー環境変数(HKCU\Environment)は、それらを変更するコマンドの前後に読み取られ、巻き戻し時に元に戻されます。その値はお使いのマシンのセッションログに保持され、レポートには記載されません。グローバルパッケージは、元に戻すコマンドとともに一覧表示されるだけです。巻き戻しでは、対象時点に存在しなかった監視対象ファイルには触れません。プロジェクト外のそれ以外のものは対象外ですが、タイムラインにはそれに触れたコマンドが引き続き表示されます。 - スナップショットの対象外で、存在する場合は
zerostel logに一覧表示されるもの:無視対象のフォルダー(node_modules、dist/、.gitignoreに記載されたもの)、ネストされた Git リポジトリとサブモジュール、リンクされたフォルダー(シンボリックリンク、ジャンクション)、およびmaxFileMBを超える新しいファイル。 - ホームディレクトリ、ドライブルート、またはホームフォルダーより上のフォルダーで起動したエージェントには、タイムラインは表示されますが、スナップショットは作成されません。
- 巻き戻しではファイル全体を復元します。
--keep-othersを指定すると、他の人が変更したファイルはそのまま残りますが、2 つのエージェントが同じファイルに加えた編集をマージすることはありません。 - エージェントが実行したテストやビルドは、エージェントが結果を報告した場合にのみ合格として扱われます。
zerostel check -- <command>では常に結果が確認できます。 - Windows や macOS のデフォルトのように、大文字と小文字を区別しないファイルシステムでは、
readme.md→README.mdのように大文字と小文字だけを変更する名前変更は、変更として検出されません。 - WSL では、Windows ドライブ上のプロジェクト(
/mnt/c/...)はスナップショットの作成に時間がかかります。Linux ファイルシステム内に置いてください。 - 監査チェーンには、
audit.keyを持たないものによってログが編集されたことが示されます。同じアカウントを使う人はキーを読み取ってログ全体を書き換えられるため、エージェントがアクセスできないように~/.zerostel/**を拒否ルールに含めてください。 - ガードレールが照合するのは、ツール呼び出しで指定された名前です。ファイル名を指定せずにそのファイルにアクセスするスクリプトやコマンドは、検出をすり抜けます。
ロードマップ
- 完了: 7 つのエージェントの記録と巻き戻し、ポイントゼロ、ウェブ UI、共有可能なレポート、検証可能なログ、ガードレール、MCP サーバー、プロジェクト外の監視対象ファイル、実行したコードに紐づくチェック、失敗したテストの記録、引き継ぎ、他のセッションの作業を保持する巻き戻し、プロパティベーステストによるガードレールの検証。
- 次の予定: キーがなくても誰でも検証できる署名付きレポート、Zerostel ゲートウェイ経由での他の MCP サーバーへの呼び出し記録、指定したテストが最後に合格したステップへの巻き戻し、実験的なエージェントの実セッションでの検証。
- 協力者募集: macOS と Linux のテストレポート、および協力者募集のラベルが付いたもの。
貢献
質問やアイデアは Discussions で歓迎します。新しいエージェントをサポートするには、src/agents/adapters.ts にアダプターを 1 つ追加します。CONTRIBUTING.md と docs/architecture.md をご覧ください。
npm ci && npm test && npm run smoke
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。