Claude Platform Docs
  • メッセージ
  • マネージドエージェント
  • 管理

Search...
⌘K
はじめに
Claudeの紹介クイックスタート
Claudeで構築する
機能の概要Messages APIの使用停止理由とフォールバック拒否とフォールバックフォールバッククレジット
モデルの機能
拡張思考適応型思考エフォートタスク予算(ベータ版)高速モード(リサーチプレビュー)構造化出力引用メッセージのストリーミングバッチ処理検索結果拒否のストリーミング多言語サポート埋め込み
ツール
概要ツール使用の仕組みチュートリアル:ツールを使うエージェントの構築ツールの定義ツール呼び出しの処理並列ツール使用Tool Runner(SDK)厳密なツール使用プロンプトキャッシングを使ったツール使用サーバーツールトラブルシューティングWeb検索ツールWeb取得ツールコード実行ツールアドバイザーツールメモリツールBashツールコンピュータ使用ツールテキストエディタツール
ツールインフラストラクチャ
ツールリファレンスツールコンテキストの管理ツールの組み合わせツール検索プログラムによるツール呼び出しきめ細かいツールストリーミング
コンテキスト管理
コンテキストウィンドウコンパクションコンテキスト編集プロンプトキャッシング会話途中のシステムメッセージオーケストレーションモードの構築キャッシュ診断(ベータ版)トークンカウント
ファイルの操作
Files APIPDFサポート画像とビジョン
スキル
概要クイックスタートベストプラクティスエンタープライズ向けスキルAPIでのスキル
MCP
リモートMCPサーバーMCPコネクタ
クラウドプラットフォーム上のClaude
Amazon BedrockAmazon Bedrock(レガシー)AWS上のClaude PlatformMicrosoft FoundryVertex AI

Log in
Bashツール
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
メッセージ/ツール

Bashツール



この機能はZero Data Retention(ZDR)の対象です。組織がZDR契約を締結している場合、この機能を通じて送信されたデータは、APIレスポンスが返された後に保存されることはありません。

bashツールを使用すると、Claudeは永続的なbashセッションでシェルコマンドを実行でき、システム操作、スクリプト実行、コマンドライン自動化が可能になります。シェルアクセスはエージェントの基盤となる機能です。シェルのみの検証を使用して実際のターミナルタスクを評価するベンチマークであるTerminal-Bench 2.0において、Claudeは永続的なbashセッションへのアクセスにより大幅なパフォーマンス向上を示しています。

概要

bashツールはClaudeに以下を提供します。

  • 状態を維持する永続的なbashセッション
  • 任意のシェルコマンドを実行する機能
  • 環境変数と作業ディレクトリへのアクセス
  • コマンドチェーンとスクリプト機能

モデルのサポートについては、ツールリファレンスを参照してください。

ユースケース

  • 開発ワークフロー: ビルドコマンド、テスト、開発ツールの実行
  • システム自動化: スクリプトの実行、ファイル管理、タスクの自動化
  • データ処理: ファイルの処理、分析スクリプトの実行、データセットの管理
  • 環境セットアップ: パッケージのインストール、環境の設定

クイックスタート

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    tools=[{"type": "bash_20250124", "name": "bash"}],
    messages=[
        {"role": "user", "content": "List all Python files in the current directory."}
    ],
)

print(response)

仕組み

bashツールは永続的なセッションを維持します。

  1. Claudeが実行するコマンドを決定します
  2. ユーザーがbashシェルでコマンドを実行します
  3. 出力(stdoutとstderr)をClaudeに返します
  4. セッション状態はコマンド間で保持されます(環境変数、作業ディレクトリ)

パラメータ

パラメータ必須説明
commandはい*実行するbashコマンド
restartいいえbashセッションを再起動するにはtrueに設定します

*restartを使用しない場合は必須

例:複数ステップの自動化

Claudeはコマンドをチェーンして複雑なタスクを完了できます。

User request:
"Install the requests library and create a simple Python script that
fetches a joke from an API, then run it."

Claude's tool uses:
1. Install package
   {"command": "pip install requests"}

2. Create script
   {"command": "cat > fetch_joke.py << 'EOF'\nimport requests\nresponse = requests.get('https://official-joke-api.appspot.com/random_joke')\njoke = response.json()\nprint(f\"Setup: {joke['setup']}\")\nprint(f\"Punchline: {joke['punchline']}\")\nEOF"}

3. Run script
   {"command": "python fetch_joke.py"}

セッションはコマンド間で状態を維持するため、ステップ2で作成されたファイルはステップ3で利用できます。

bashツールの実装

bashツールはスキーマレスツールとして実装されています。このツールを使用する場合、他のツールのように入力スキーマを提供する必要はありません。スキーマはClaudeのモデルに組み込まれており、変更できません。

  1. 1

    bash環境のセットアップ

    Claudeが対話できる永続的なbashセッションを作成します。

    import subprocess
    import threading
    import queue
    
    
    class BashSession:
        def __init__(self):
            self.process = subprocess.Popen(
                ["/bin/bash"],
                stdin=subprocess.PIPE,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
                text=True,
                bufsize=0,
            )
            self.output_queue = queue.Queue()
            self.error_queue = queue.Queue()
            self._start_readers()
  2. 2

    コマンド実行の処理

    コマンドを実行して出力をキャプチャする関数を作成します。

    def execute_command(self, command):
        # bashにコマンドを送信
        self.process.stdin.write(command + "\n")
        self.process.stdin.flush()
    
        # タイムアウト付きで出力をキャプチャ
        output = self._read_output(timeout=10)
        return output
    
  3. 3

    Claudeのツール呼び出しの処理

    Claudeのレスポンスからコマンドを抽出して実行します。

    for content in response.content:
        if content.type == "tool_use" and content.name == "bash":
            if content.input.get("restart"):
                bash_session.restart()
                result = "Bash session restarted"
            else:
                command = content.input.get("command")
                result = bash_session.execute_command(command)
    
            # 結果をClaudeに返す
            tool_result = {
                "type": "tool_result",
                "tool_use_id": content.id,
                "content": result,
            }
  4. 4

    安全対策の実装

    検証と制限を追加します。ブロックリストは簡単に回避されるため、ブロックリストではなく許可リストを使用してください。チェーンされたコマンドが許可リストをすり抜けないように、シェル演算子を拒否します。

    import shlex
    
    ALLOWED_COMMANDS = {"ls", "cat", "echo", "pwd", "grep", "find", "wc", "head", "tail"}
    SHELL_OPERATORS = {"&&", "||", "|", ";", "&", ">", "<", ">>"}
    
    
    def validate_command(command):
        # 明示的な許可リストにあるコマンドのみを許可
        try:
            tokens = shlex.split(command)
        except ValueError:
            return False, "Could not parse command"
    
        if not tokens:
            return False, "Empty command"
    
        executable = tokens[0]
        if executable not in ALLOWED_COMMANDS:
            return False, f"Command '{executable}' is not in the allowlist"
    
        # 追加コマンドを連結するシェル演算子を拒否
        for token in tokens[1:]:
            if token in SHELL_OPERATORS or token.startswith(("$", "`")):
                return False, f"Shell operator '{token}' is not allowed"
    
        return True, None

    このチェックは第一の防御線です。より強力な分離のためには、検証済みのコマンドをshell=Falseで実行し、引数リストとしてshlex.split(command)を渡すことで、シェルが文字列を解釈しないようにします。

エラー処理

bashツールを実装する際は、さまざまなエラーシナリオを処理してください。

実装のベストプラクティスに従う

セキュリティ



bashツールはシステムへの直接アクセスを提供します。以下の必須の安全対策を実装してください。

  • 隔離された環境(Docker/VM)での実行
  • コマンドフィルタリングと許可リストの実装
  • リソース制限(CPU、メモリ、ディスク)の設定
  • 実行されたすべてのコマンドのログ記録

主な推奨事項

  • ulimitを使用してリソース制約を設定する
  • 危険なコマンド(sudo、rm -rfなど)をフィルタリングする
  • 最小限のユーザー権限で実行する
  • すべてのコマンド実行を監視してログに記録する

料金

bashツールは、API呼び出しに245入力トークンを追加します。

以下によって追加のトークンが消費されます:

  • コマンド出力(stdout/stderr)
  • エラーメッセージ
  • 大きなファイルの内容

料金の詳細については、ツール使用の料金を参照してください。

一般的なパターン

開発ワークフロー

  • テストの実行:pytest && coverage report
  • プロジェクトのビルド:npm install && npm run build
  • Git操作:git status && git add . && git commit -m "message"

Gitベースのチェックポイント

Gitは、長時間実行されるエージェントワークフローにおいて、単に変更を保存する手段ではなく、構造化された復旧メカニズムとして機能します。

  • ベースラインのキャプチャ: エージェントの作業が始まる前に、現在の状態をコミットします。これが既知の正常な開始点となります。
  • 機能ごとのコミット: 完了した各機能は独自のコミットを持ちます。これらは、後で問題が発生した場合のロールバックポイントとして機能します。
  • セッション開始時の状態の再構築: 進捗ファイルとともにgit logを読み取り、すでに完了した作業と次に行うべき作業を把握します。
  • 失敗時のリバート: 作業がうまくいかなくなった場合、壊れた状態をデバッグしようとするのではなく、git checkoutで最後の正常なコミットに戻します。

ファイル操作

  • データ処理:wc -l *.csv && ls -lh *.csv
  • ファイル検索:find . -name "*.py" | xargs grep "pattern"
  • バックアップの作成:tar -czf backup.tar.gz ./data

システムタスク

  • リソースの確認:df -h && free -m
  • プロセス管理:ps aux | grep python
  • 環境セットアップ:export PATH=$PATH:/new/path && echo $PATH

制限事項

  • 対話型コマンド非対応: vim、less、パスワードプロンプトは処理できません
  • GUIアプリケーション非対応: コマンドラインのみ
  • セッションスコープ: bashセッションの状態はクライアント側にあります。APIはステートレスです。ターン間でシェルセッションを維持する責任はアプリケーション側にあります。
  • 出力制限: 大きな出力は切り詰められる場合があります
  • ストリーミング非対応: 結果は完了後に返されます

他のツールとの組み合わせ

bashツールは、テキストエディタやその他のツールと組み合わせることで最も強力になります。



コード実行ツールも使用している場合、Claudeは2つの別々の実行環境(ローカルのbashセッションとAnthropicのサンドボックス化されたコンテナ)にアクセスできます。これらの間で状態は共有されません。Claudeに環境を区別させるためのプロンプトのガイダンスについては、他の実行ツールとのコード実行の使用を参照してください。

次のステップ


ツール使用の概要

Claudeでのツール使用について学ぶ


テキストエディタツール

Claudeでテキストファイルを表示・編集する

Was this page helpful?

  • 概要
  • ユースケース
  • クイックスタート
  • 仕組み
  • パラメータ
  • 例:複数ステップの自動化
  • bashツールの実装
  • エラー処理
  • 実装のベストプラクティスに従う
  • セキュリティ
  • 主な推奨事項
  • 料金
  • 一般的なパターン
  • 開発ワークフロー
  • ファイル操作
  • システムタスク
  • 制限事項
  • 他のツールとの組み合わせ
  • 次のステップ