シェル履歴ツール「Atuin」とClaude Codeの連携を解説する記事のサムネイル
← ブログ一覧
AI7分

Atuinとは?Claude CodeのBashコマンドを自動記録するフックとMCPサーバーを備えたシェル履歴ツールを実際に動かした

  • #Atuin
  • #Claude Code
  • #MCP

この記事でわかること

「Atuin」(https://github.com/atuinsh/atuin )は、シェルの`ctrl-r`や上矢印キーの挙動を置き換え、コマンド履歴をSQLiteデータベースで管理するOSSのツールです。もともとは複数端末間で履歴を暗号化同期するためのツールとして知られていましたが、2026年9月22日公開のv18.23.0で、AIコーディングエージェントと連携するための機能がまとまって追加されていました。今回はLinux向けの公式バイナリを実際にダウンロードして動かし、公式リポジトリのREADMEとリリースノートの記述を突き合わせて確認しました。

  • この記事でわかること:Atuin自体が何をするツールで、何が新しく加わったか。
  • `atuin hook install claude-code`を実際に実行し、Claude Code側の設定ファイルに何が書き込まれたか。
  • `atuin mcp`が、履歴検索をAIツールに渡すためのどんな仕組みとして動いているか。
  • v18.23.0のリリースノートに記載された出力キャプチャ・全文検索機能の内容と、今回の検証で確認できた範囲・できなかった範囲。

Atuinとは:シェル履歴をSQLiteに置き換え、暗号化して同期するOSS

公式READMEは「Atuinは既存のシェル履歴をSQLiteデータベースに置き換え、コマンドごとに追加のコンテキストを記録する」と説明しています。記録される情報には終了コード・実行時のディレクトリ・ホスト名・セッション・実行時間などが含まれ、`atuin search --exit 0 --after "yesterday 3pm" make`のように、終了コードや時刻で絞り込んだ検索ができます。

複数端末間の同期はオプション機能で、README曰く「完全に暗号化された」同期であり、運営者であっても「アクセスしようと思ってもできない」設計とされています。公式がホストする同期サーバーを使うか、自前のサーバーを立てるか、同期自体を使わないかを選べます。対応シェルはzsh・bash・fish・nushell・xonsh・PowerShellで、ライセンスはMIT(Copyright (c) 2021 Ellie Huxtable)です。

v18.23.0で何が増えたか:出力キャプチャ・全文検索・MCPサーバー・AIエージェント向けフック

GitHubのリリースページ(https://github.com/atuinsh/atuin/releases/tag/v18.23.0 )によると、2026年9月22日公開のv18.23.0のFeaturesには次のような項目が並んでいました。コマンドの出力をキャプチャして全文検索できるようにする機能(`atuin output search`、JSON/NDJSON出力対応)、AIツールに履歴検索を渡す`atuin_output_search`というMCPツールの追加、そして「Generic AI session-capture interface」と呼ばれるAIエージェントのセッションキャプチャ用インターフェースです。バグ修正の欄には「OpenAI Codexから渡される文字列型のtool_responseを受け付けるよう修正した」という項目もあり、Claude Code以外のエージェントとの連携も視野に入っていることがうかがえます。

同じリリースでは、以前からあった「dotfiles」(設定ファイル同期)機能が削除されたことも明記されていました。リリースノートは「期待していたほど完成度も実用性も高くならなかった」としてchezmojiのような専用ツールの利用を勧めています。確認時点(2026年10月13日)での最新安定版はこのv18.23.0で、プレリリースとしてv18.24.0-beta.1が同日付で公開されていました。

実際に動かしてみる:バイナリをダウンロードして`atuin hook install claude-code`を試した

この検証環境にはAtuinが入っていなかったため、GitHubのリリースから`atuin-x86_64-unknown-linux-musl.tar.gz`を直接ダウンロードして展開し、ビルド済みバイナリをそのまま実行しました。`atuin --version`は`atuin 18.23.0`、`atuin --help`では`hook`(Manage AI-agent shell hooks)・`ai`(Run the AI assistant)・`mcp`(Start an MCP server exposing history search to AI tools (stdio))・`output`(Work with captured command output)といったサブコマンドが実際に並んでいるのを確認できました。

続けて`HOME`を検証用の空ディレクトリに切り替えた上で`atuin hook install claude-code`を実行すると、`Atuin hooks installed for claude-code. Path: <HOME>/.claude/settings.json`と表示され、実際に`.claude/settings.json`が新規作成されました。中身を見ると、`PreToolUse`・`PostToolUse`・`PostToolUseFailure`の3つのフックが、マッチャー`^Bash$`(Bashツール呼び出し)に対して`atuin hook claude-code`というコマンドを実行するよう登録されていました。つまりClaude CodeがBashツールを呼び出すたびに、その前後と失敗時にAtuinへ通知が飛び、コマンドがAtuinの履歴データベースに記録される仕組みです。

`atuin mcp`:履歴検索をAIツールに渡すMCPサーバー

`atuin mcp --help`の説明は「Start an MCP server exposing history search to AI tools (stdio)」で、標準入出力を使ったMCPサーバーとして動作します。実際に`atuin mcp`を起動してすぐに標準入力を閉じてみたところ、`Error: connection closed: initialize request`というエラーとともに`crates/atuin-ai/src/mcp.rs:138`という内部のソース位置が表示されました。これはMCPクライアントからのinitializeハンドシェイクを待っている最中に接続が切れたことを示すエラーで、ハリボテのコマンドではなく実際にMCPのプロトコルでクライアントからの接続を待ち受けるサーバーが動いていることを確認できました。

一方で、リリースノートに記載された出力キャプチャ機能(コマンドの標準出力を記録し`atuin output search`で全文検索する一連の流れ)そのものを最初から最後まで動かして検証することはできませんでした。`atuin default-config`で出力される設定ファイルのテンプレート(402行)には出力キャプチャやAI関連の設定項目が見当たらず、READMEによれば出力キャプチャにはバックグラウンドのデーモンとPTYプロキシ(`atuin pty-proxy`)が関わるため、今回のような短時間の検証では機能の存在と対応コマンドの用意までしか確認できていません。この部分は公式ドキュメントとソースコードの記述に基づく説明であり、実際に出力を記録・検索できることまでは未確認である点を明記しておきます。

まとめと注意点

Atuinは元々、複数端末でシェル履歴を暗号化同期するためのツールでしたが、v18.23.0の時点で「AIコーディングエージェントが実行したコマンドを自動的に履歴へ取り込むフック」と「その履歴をAIツール自身に検索させるMCPサーバー」という、双方向の統合機能を備えるようになっていました。`atuin hook install claude-code`を実行するだけでClaude Code側の設定ファイルが書き換わる手軽さは確認できた一方、出力キャプチャまわりは比較的新しく、ドキュメントの更新も追いついていない印象です。導入する場合は、まず`atuin hook install <エージェント名>`で生成される設定ファイルの中身を必ず確認し、自分の環境でどのコマンドがどこまで記録されるのかを把握してから使うのがよさそうです。

参考リンク

まずは、やりたいことを聞かせてください

「何から手をつければいいか分からない」段階でも大丈夫です。 ご相談・お見積りは無料。碧南近郊なら直接伺います。