Claude APIのbashツールの使い方

Claude Code エンジニアリング 6分で読めます

bash ツールは、Claude にシェルコマンドの実行を要求させ、その結果を返せるようにするツールです。Claude 自身がコマンドを実行するのではなく、あなたのアプリが持つ永続的な bash セッションで実行し、出力を返します。この記事は Anthropic 公式ドキュメントの非公式日本語訳・要約です。

bashツールとは

bash ツールは「クライアントツール」です。Claude はコマンドを自分で実行しません。リクエストにこのツールを含めると、Claude は実行すべきコマンドを名指しした tool_use ブロックを返します。あなたのアプリケーションがそのコマンドを自前の bash セッションで実行し、出力を tool_result ブロックで返します。主な用途は次のとおりです。

ツールの指定方法

bash ツールは Messages API のリクエストに tools として渡します。ツール名は bash、現行バージョンの typebash_20250124 です。

{
  "model": "claude-opus-5",
  "max_tokens": 1024,
  "tools": [
    {
      "type": "bash_20250124",
      "name": "bash"
    }
  ],
  "messages": [
    { "role": "user", "content": "カレントディレクトリの Python ファイルを一覧して" }
  ]
}

対応モデルやベータヘッダ、旧バージョンの識別子については、公式のツールバージョン一覧を確認してください。バージョンによって対応モデルが異なります。

実行の仕組み

bash ツールはクライアントツールなので、実行の主体はあなたのアプリケーションです。典型的な往復は次のようになります。

  1. ツールを渡してリクエストする: bash ツールを含めて Messages API を呼び出します。
  2. Claude がコマンドを返す: Claude は実行したいコマンドを command パラメータに入れた tool_use ブロックを返します。
  3. アプリがコマンドを実行する: あなたのアプリが自分の管理する bash セッションでそのコマンドを実行します。
  4. 結果を返す: 標準出力・標準エラーなどの出力を tool_result ブロックとして返します。Claude はそれを踏まえて次の応答や次のコマンドを返します。

セッションをやり直したい場合は、restart パラメータを使って bash セッションをリセットできます。

セッションの永続性

bash ツールの特徴は、あなたのアプリが1つの bash プロセスをツール呼び出しをまたいで生かし続ける点です。これにより、状態がコマンド間で保持されます。

この永続性のおかげで、Claude は「依存関係をインストールしてから、テストを実行する」といった複数段階の作業を、実際のシェルと同じ感覚で進められます。逆に、前のコマンドの副作用が残る点は意識しておく必要があります。

利用時の注意点

ファイルを行単位で精密に編集させたい場合はテキストエディタツールも併せて検討してください。正確な仕様・対応モデルは必ず公式ドキュメントで確認してください。