Tool bash memungkinkan Claude untuk menjalankan perintah shell dalam sesi bash yang persisten, memungkinkan operasi sistem, eksekusi skrip, dan otomatisasi command-line.

Ikhtisar

Tool bash menyediakan Claude dengan:

  • Sesi bash persisten yang mempertahankan state
  • Kemampuan untuk menjalankan perintah shell apa pun
  • Akses ke variabel lingkungan dan direktori kerja
  • Kemampuan chaining perintah dan scripting

Versi tool

ModelVersi Tool
Claude 4 & Sonnet 3.7bash_20250124
Claude Sonnet 3.5bash_20241022

Claude Sonnet 3.5 memerlukan header beta computer-use-2024-10-22 saat menggunakan tool bash.

Tool bash tersedia secara umum di Claude 4 dan Sonnet 3.7.

Kasus penggunaan

  • Alur kerja pengembangan: Menjalankan perintah build, tes, dan alat pengembangan
  • Otomatisasi sistem: Menjalankan skrip, mengelola file, mengotomatisasi tugas
  • Pemrosesan data: Memproses file, menjalankan skrip analisis, mengelola dataset
  • Pengaturan lingkungan: Menginstal paket, mengkonfigurasi lingkungan

Mulai cepat

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    tools=[
        {
            "type": "bash_20250124",
            "name": "bash"
        }
    ],
    messages=[
        {"role": "user", "content": "Daftar semua file Python di direktori saat ini."}
    ]
)

Cara kerjanya

Tool bash mempertahankan sesi yang persisten:

  1. Claude menentukan perintah apa yang akan dijalankan
  2. Anda menjalankan perintah dalam shell bash
  3. Mengembalikan output (stdout dan stderr) ke Claude
  4. State sesi bertahan antar perintah (variabel lingkungan, direktori kerja)

Parameter

ParameterWajibDeskripsi
commandYa*Perintah bash yang akan dijalankan
restartTidakAtur ke true untuk memulai ulang sesi bash

*Wajib kecuali menggunakan restart

Contoh: Otomatisasi multi-langkah

Claude dapat merangkai perintah untuk menyelesaikan tugas kompleks:

# Permintaan pengguna
"Instal library requests dan buat skrip Python sederhana yang mengambil joke dari API, lalu jalankan."

# Penggunaan tool Claude:
# 1. Instal paket
{"command": "pip install requests"}

# 2. Buat skrip
{"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. Jalankan skrip
{"command": "python fetch_joke.py"}

Sesi mempertahankan state antar perintah, jadi file yang dibuat di langkah 2 tersedia di langkah 3.


Implementasi tool bash

Tool bash diimplementasikan sebagai tool tanpa skema. Saat menggunakan tool ini, Anda tidak perlu menyediakan skema input seperti tool lainnya; skema sudah terpasang dalam model Claude dan tidak dapat dimodifikasi.

1

Siapkan lingkungan bash

Buat sesi bash persisten yang dapat berinteraksi dengan Claude:

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

Tangani eksekusi perintah

Buat fungsi untuk menjalankan perintah dan menangkap output:

def execute_command(self, command):
    # Kirim perintah ke bash
    self.process.stdin.write(command + '\n')
    self.process.stdin.flush()
    
    # Tangkap output dengan timeout
    output = self._read_output(timeout=10)
    return output
3

Proses panggilan tool Claude

Ekstrak dan jalankan perintah dari respons Claude:

for content in response.content:
    if content.type == "tool_use" and content.name == "bash":
        if content.input.get("restart"):
            bash_session.restart()
            result = "Sesi bash dimulai ulang"
        else:
            command = content.input.get("command")
            result = bash_session.execute_command(command)
        
        # Kembalikan hasil ke Claude
        tool_result = {
            "type": "tool_result",
            "tool_use_id": content.id,
            "content": result
        }
4

Implementasi langkah keamanan

Tambahkan validasi dan pembatasan:

def validate_command(command):
    # Blokir perintah berbahaya
    dangerous_patterns = ['rm -rf /', 'format', ':(){:|:&};:']
    for pattern in dangerous_patterns:
        if pattern in command:
            return False, f"Perintah mengandung pola berbahaya: {pattern}"
    
    # Tambahkan validasi lebih lanjut sesuai kebutuhan
    return True, None

Tangani error

Saat mengimplementasikan tool bash, tangani berbagai skenario error:

Ikuti praktik terbaik implementasi

Keamanan

Tool bash menyediakan akses sistem langsung. Implementasikan langkah keamanan penting ini:

  • Berjalan dalam lingkungan terisolasi (Docker/VM)
  • Mengimplementasikan penyaringan perintah dan allowlist
  • Menetapkan batas sumber daya (CPU, memori, disk)
  • Mencatat semua perintah yang dijalankan

Rekomendasi utama

  • Gunakan ulimit untuk menetapkan batasan sumber daya
  • Filter perintah berbahaya (sudo, rm -rf, dll.)
  • Jalankan dengan izin pengguna minimal
  • Monitor dan log semua eksekusi perintah

Harga

The bash tool adds 245 input tokens to your API calls.

Additional tokens are consumed by:

  • Command outputs (stdout/stderr)
  • Error messages
  • Large file contents

Lihat harga penggunaan tool untuk detail harga lengkap.

Pola umum

Alur kerja pengembangan

  • Menjalankan tes: pytest && coverage report
  • Membangun proyek: npm install && npm run build
  • Operasi Git: git status && git add . && git commit -m "message"

Operasi file

  • Memproses data: wc -l *.csv && ls -lh *.csv
  • Mencari file: find . -name "*.py" | xargs grep "pattern"
  • Membuat backup: tar -czf backup.tar.gz ./data

Tugas sistem

  • Memeriksa sumber daya: df -h && free -m
  • Manajemen proses: ps aux | grep python
  • Pengaturan lingkungan: export PATH=$PATH:/new/path && echo $PATH

Keterbatasan

  • Tidak ada perintah interaktif: Tidak dapat menangani vim, less, atau prompt password
  • Tidak ada aplikasi GUI: Hanya command-line
  • Cakupan sesi: Bertahan dalam percakapan, hilang antar panggilan API
  • Batas output: Output besar mungkin dipotong
  • Tidak ada streaming: Hasil dikembalikan setelah selesai

Menggabungkan dengan tool lain

Tool bash paling kuat saat digabungkan dengan text editor dan tool lainnya.

Langkah selanjutnya