Instalasi
Instal paket ke dalam lingkungan virtual. Pada instalasi Python Debian, Ubuntu, dan Homebrew terbaru, menjalankanpip install terhadap Python sistem gagal dengan error: externally-managed-environment.
Memilih antara query() dan ClaudeSDKClient
Python SDK menyediakan dua cara untuk berinteraksi dengan Claude Code:
Perbandingan cepat
Kapan menggunakan query() (tugas sekali jalan)
Terbaik untuk:
- Pertanyaan sekali jalan di mana Anda tidak memerlukan riwayat percakapan
- Tugas independen yang tidak memerlukan konteks dari pertukaran sebelumnya
- Skrip otomasi sederhana
- Ketika Anda menginginkan awal yang segar setiap kali
Kapan menggunakan ClaudeSDKClient (percakapan berkelanjutan)
Terbaik untuk:
- Melanjutkan percakapan - Ketika Anda memerlukan Claude untuk mengingat konteks
- Pertanyaan lanjutan - Membangun berdasarkan respons sebelumnya
- Aplikasi interaktif - Antarmuka obrolan, REPL
- Logika berbasis respons - Ketika tindakan berikutnya bergantung pada respons Claude
- Kontrol sesi - Mengelola siklus hidup percakapan secara eksplisit
Fungsi
query()
Membuat sesi baru untuk setiap interaksi dengan Claude Code secara default. Mengembalikan async iterator yang menghasilkan pesan saat tiba. Setiap panggilan ke query() dimulai segar tanpa memori interaksi sebelumnya kecuali Anda melewatkan continue_conversation=True atau resume dalam ClaudeAgentOptions. Lihat Sessions.
Parameter
Pengembalian
MengembalikanAsyncIterator[Message] yang menghasilkan pesan dari percakapan.
Contoh - Dengan opsi
tool()
Dekorator untuk mendefinisikan tools MCP dengan keamanan tipe.
Parameter
Opsi skema input
-
Pemetaan tipe sederhana (direkomendasikan):
-
Format JSON Schema (untuk validasi kompleks):
Pengembalian
Fungsi dekorator yang membungkus implementasi tool dan mengembalikan instanceSdkMcpTool.
Contoh
ToolAnnotations
Diimpor ulang dari mcp.types (juga tersedia sebagai from claude_agent_sdk import ToolAnnotations). Semua field adalah petunjuk opsional; klien tidak boleh mengandalkannya untuk keputusan keamanan.
create_sdk_mcp_server()
Buat server MCP dalam proses yang berjalan dalam aplikasi Python Anda.
Parameter
Pengembalian
Mengembalikan objekMcpSdkServerConfig yang dapat diteruskan ke ClaudeAgentOptions.mcp_servers.
Contoh
list_sessions()
Mencantumkan sesi masa lalu dengan metadata. Filter berdasarkan direktori proyek atau cantumkan sesi di semua proyek. Sinkron; mengembalikan segera.
Parameter
Tipe pengembalian: SDKSessionInfo
Contoh
Cetak 10 sesi terbaru untuk proyek. Hasil diurutkan berdasarkanlast_modified menurun, jadi item pertama adalah yang terbaru. Hilangkan directory untuk mencari di semua proyek.
get_session_messages()
Mengambil pesan dari sesi masa lalu. Sinkron; mengembalikan segera.
Parameter
Tipe pengembalian: SessionMessage
Contoh
get_session_info()
Membaca metadata untuk sesi tunggal berdasarkan ID tanpa memindai direktori proyek lengkap. Sinkron; mengembalikan segera.
Parameter
Mengembalikan
SDKSessionInfo, atau None jika sesi tidak ditemukan.
Contoh
Cari metadata sesi tunggal tanpa memindai direktori proyek. Berguna ketika Anda sudah memiliki ID sesi dari run sebelumnya.rename_session()
Mengganti nama sesi dengan menambahkan entri judul kustom. Panggilan berulang aman; judul terbaru menang. Sinkron.
Parameter
Menimbulkan
ValueError jika session_id bukan UUID yang valid atau title kosong; FileNotFoundError jika sesi tidak dapat ditemukan.
Contoh
Ganti nama sesi terbaru sehingga lebih mudah ditemukan nanti. Judul baru muncul diSDKSessionInfo.custom_title pada pembacaan berikutnya.
tag_session()
Menandai sesi. Teruskan None untuk menghapus tag. Panggilan berulang aman; tag terbaru menang. Sinkron.
Parameter
Menimbulkan
ValueError jika session_id bukan UUID yang valid atau tag kosong setelah sanitasi; FileNotFoundError jika sesi tidak dapat ditemukan.
Contoh
Tandai sesi, kemudian filter berdasarkan tag itu pada pembacaan nanti. TeruskanNone untuk menghapus tag yang ada.
Kelas
ClaudeSDKClient
Mempertahankan sesi percakapan di beberapa pertukaran. Ini adalah setara Python dari cara fungsi query() SDK TypeScript bekerja secara internal - ia membuat objek klien yang dapat melanjutkan percakapan.
Fitur Utama
- Kontinuitas sesi: Mempertahankan konteks percakapan di beberapa panggilan
query() - Percakapan yang sama: Sesi mempertahankan pesan sebelumnya
- Dukungan interrupt: Dapat menghentikan eksekusi di tengah-tengah tugas
- Siklus hidup eksplisit: Anda mengontrol kapan sesi dimulai dan berakhir
- Alur berbasis respons: Dapat bereaksi terhadap respons dan mengirim tindak lanjut
- Tools dan hooks kustom: Mendukung tools kustom (dibuat dengan dekorator
@tool) dan hooks
Metode
Dukungan Context Manager
Klien dapat digunakan sebagai async context manager untuk manajemen koneksi otomatis:
Penting: Saat mengulangi pesan, hindari menggunakan break untuk keluar lebih awal karena ini dapat menyebabkan masalah pembersihan asyncio. Sebaliknya, biarkan iterasi selesai secara alami atau gunakan flag untuk melacak kapan Anda menemukan apa yang Anda butuhkan.
Contoh - Melanjutkan percakapan
Contoh - Streaming input dengan ClaudeSDKClient
Contoh - Menggunakan interrupts
Perilaku buffer setelah interrupt:
interrupt() mengirim sinyal berhenti tetapi tidak menghapus buffer pesan. Pesan yang sudah diproduksi oleh tugas yang terputus, termasuk ResultMessage-nya (dengan subtype="error_during_execution"), tetap berada dalam aliran. Anda harus menguras mereka dengan receive_response() sebelum membaca respons ke query baru. Jika Anda mengirim query baru segera setelah interrupt() dan memanggil receive_response() hanya sekali, Anda akan menerima pesan tugas yang terputus, bukan respons query baru.Contoh - Kontrol izin lanjutan
Tipe
@dataclass vs TypedDict: SDK ini menggunakan dua jenis tipe. Kelas yang didekorasi dengan @dataclass (seperti ResultMessage, AgentDefinition, TextBlock) adalah instance objek saat runtime dan mendukung akses atribut: msg.result. Kelas yang didefinisikan dengan TypedDict (seperti ThinkingConfigEnabled, McpStdioServerConfig, SyncHookJSONOutput) adalah dict biasa saat runtime dan memerlukan akses kunci: config["budget_tokens"], bukan config.budget_tokens. Sintaks panggilan ClassName(field=value) bekerja untuk keduanya, tetapi hanya dataclass yang menghasilkan objek dengan atribut.SdkMcpTool
Definisi untuk tool SDK MCP yang dibuat dengan dekorator @tool.
Transport
Kelas dasar abstrak untuk implementasi transport kustom. Gunakan ini untuk berkomunikasi dengan proses Claude melalui saluran kustom (misalnya, koneksi jarak jauh alih-alih subprocess lokal).
Impor:
from claude_agent_sdk import Transport
ClaudeAgentOptions
Dataclass konfigurasi untuk query Claude Code.
Menangani respons API yang lambat atau terhenti
Subprocess CLI membaca beberapa variabel lingkungan yang mengontrol timeout API dan deteksi stall. Teruskan melaluiClaudeAgentOptions.env:
API_TIMEOUT_MS: timeout per-permintaan pada klien Anthropic, dalam milidetik. Default600000. Berlaku untuk loop utama dan semua subagent.CLAUDE_CODE_MAX_RETRIES: maksimal retry API. Default10, dibatasi pada15. Setiap retry mendapat jendelaAPI_TIMEOUT_MSsendiri, jadi waktu dinding terburuk kira-kiraAPI_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)ditambah backoff. Untuk run tanpa pengawasan yang perlu menunggu melalui pemadaman yang lebih lama, aturCLAUDE_CODE_RETRY_WATCHDOG=1: itu retry kapasitas error tanpa batas, dan sejak Claude Code v2.1.199 menaikkan default untuk error transien lainnya menjadi300dan menghapus batas pada variabel ini.CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: watchdog stall untuk subagent yang diluncurkan denganrun_in_background. Default600000. Direset pada setiap event stream; pada stall itu membatalkan subagent, menandai tugas gagal, dan menampilkan error ke parent dengan hasil parsial apa pun. Tidak berlaku untuk subagent sinkron.CLAUDE_ENABLE_STREAM_WATCHDOGdenganCLAUDE_STREAM_IDLE_TIMEOUT_MS: membatalkan permintaan ketika header telah tiba tetapi badan respons berhenti streaming. Watchdog aktif secara default untuk semua penyedia; aturCLAUDE_ENABLE_STREAM_WATCHDOG=0untuk menonaktifkannya.CLAUDE_STREAM_IDLE_TIMEOUT_MSdefault ke300000dan diklem ke minimum itu. Permintaan yang dibatalkan melalui jalur retry normal.
OutputFormat
Konfigurasi untuk validasi output terstruktur. Teruskan ini sebagai dict ke field output_format pada ClaudeAgentOptions:
SystemPromptPreset
Konfigurasi untuk menggunakan preset system prompt Claude Code dengan penambahan opsional.
SystemPromptFile
Konfigurasi untuk memuat system prompt kustom dari file alih-alih meneruskannya sebagai string. SDK memetakan ini ke flag CLI --system-prompt-file. Gunakan bentuk file ketika prompt besar: SDK meneruskan string system_prompt pada argv subprocess CLI, yang tunduk pada batas panjang command-line OS sebelum SDK mengirim permintaan API apa pun. Di Linux satu argumen lebih panjang dari kira-kira 128 KB gagal pada spawn proses dengan Argument list too long. Di Windows seluruh command line dibatasi pada kira-kira 32 KB, jadi bentuk string gagal pada ambang yang lebih rendah.
SettingSource
Mengontrol sumber konfigurasi berbasis filesystem mana yang dimuat pengaturan SDK.
Perilaku default
Ketikasetting_sources dihilangkan atau None, query() memuat pengaturan filesystem yang sama seperti CLI Claude Code: pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola dimuat dalam semua kasus; pengaturan yang dikelola server diambil ketika sesi mengautentikasi dengan kredensial organisasi pada konfigurasi yang memenuhi syarat. Lihat What settingSources does not control untuk input yang dibaca terlepas dari opsi ini, dan cara menonaktifkannya.
Mengapa menggunakan setting_sources
Nonaktifkan pengaturan filesystem:Dalam Python SDK 0.1.59 dan lebih awal, daftar kosong diperlakukan sama dengan menghilangkan opsi, jadi
setting_sources=[] tidak menonaktifkan pengaturan filesystem. Upgrade ke rilis yang lebih baru jika Anda memerlukan daftar kosong untuk berlaku. SDK TypeScript tidak terpengaruh.Preseden pengaturan
Ketika beberapa sumber dimuat, pengaturan digabungkan dengan preseden ini (tertinggi ke terendah):- Pengaturan lokal (
.claude/settings.local.json) - Pengaturan proyek (
.claude/settings.json) - Pengaturan pengguna (
~/.claude/settings.json)
agents dan allowed_tools mengganti pengaturan filesystem pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola mengambil prioritas atas opsi programatis.
AgentDefinition
Konfigurasi untuk subagent yang didefinisikan secara programatis.
Field
AgentDefinition menggunakan camelCase, seperti disallowedTools, permissionMode, dan maxTurns. Nama-nama ini memetakan langsung ke format wire yang dibagikan dengan SDK TypeScript. Ini berbeda dari ClaudeAgentOptions, yang menggunakan Python snake_case untuk field tingkat atas yang setara seperti disallowed_tools dan permission_mode. Karena AgentDefinition adalah dataclass, melewatkan keyword snake_case menimbulkan TypeError pada waktu konstruksi.PermissionMode
Mode izin untuk mengontrol eksekusi tool.
EffortLevel
Tingkat usaha untuk membimbing kedalaman thinking.
CanUseTool
Type alias untuk fungsi callback izin tool.
tool_name: Nama tool yang sedang dipanggilinput_data: Parameter input toolcontext:ToolPermissionContextdengan informasi tambahan
PermissionResult (baik PermissionResultAllow atau PermissionResultDeny).
Callback adalah pengganti SDK untuk prompt izin interaktif: dipanggil hanya ketika alur evaluasi izin diselesaikan ke prompt. Panggilan tool yang sudah disetujui oleh entri allowed_tools, aturan allow pengaturan, atau mode izin, seperti acceptEdits atau bypassPermissions, tidak pernah memanggilnya. Untuk gating setiap panggilan tool, gunakan hook PreToolUse sebagai gantinya.
AskUserQuestion, tool MCP yang ditandai requiresUserInteraction, dan connector tools organisasi Anda atur ke ask mencapai callback bahkan ketika aturan allow cocok. Dalam mode dontAsk panggilan ini ditolak sebagai gantinya, tanpa memanggil callback.
ToolPermissionContext
Informasi konteks yang diteruskan ke callback izin tool.
PermissionResult
Tipe union untuk hasil callback izin.
PermissionResultAllow
Hasil yang menunjukkan panggilan tool harus diizinkan.
PermissionResultDeny
Hasil yang menunjukkan panggilan tool harus ditolak.
PermissionUpdate
Konfigurasi untuk memperbarui izin secara programatis.
PermissionRuleValue
Aturan untuk ditambahkan, diganti, atau dihapus dalam pembaruan izin.
ToolsPreset
Konfigurasi preset tools untuk menggunakan set tool default Claude Code.
ThinkingConfig
Mengontrol perilaku extended thinking. Union dari tiga konfigurasi:
Field opsional
display mengontrol apakah teks thinking dikembalikan "summarized" atau "omitted". Pada Claude Opus 4.7 dan lebih baru, default API adalah "omitted", jadi atur "summarized" untuk menerima konten thinking dalam output ThinkingBlock.
Karena ini adalah kelas TypedDict, mereka adalah dict biasa saat runtime. Baik buatlah sebagai dict literal atau panggil kelas seperti konstruktor; keduanya menghasilkan dict. Akses field dengan config["budget_tokens"], bukan config.budget_tokens:
SdkBeta
Tipe literal untuk fitur beta SDK.
betas dalam ClaudeAgentOptions untuk mengaktifkan fitur beta.
McpSdkServerConfig
Konfigurasi untuk server MCP SDK yang dibuat dengan create_sdk_mcp_server().
McpServerConfig
Tipe union untuk konfigurasi server MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpServerStatusConfig
Konfigurasi server MCP seperti yang dilaporkan oleh get_mcp_status(). Ini adalah union dari semua varian transport McpServerConfig ditambah varian output-only claudeai-proxy untuk server yang di-proxy melalui claude.ai.
McpSdkServerConfigStatus adalah bentuk yang dapat diserialisasi dari McpSdkServerConfig dengan hanya field type ("sdk") dan name (str); instance dalam proses dihilangkan. McpClaudeAIProxyServerConfig memiliki field type ("claudeai-proxy"), url (str), dan id (str).
McpStatusResponse
Respons dari ClaudeSDKClient.get_mcp_status(). Membungkus daftar status server di bawah kunci mcpServers.
McpServerStatus
Status server MCP yang terhubung, terdapat dalam McpStatusResponse.
SdkPluginConfig
Konfigurasi untuk memuat plugins dalam SDK.
Contoh:
Tipe Pesan
Message
Tipe union dari semua pesan yang mungkin.
UserMessage
Pesan input pengguna.
AssistantMessage
Pesan respons asisten dengan blok konten.
AssistantMessageError
Tipe error yang mungkin untuk pesan asisten.
SystemMessage
Pesan sistem dengan metadata.
ResultMessage
Pesan hasil akhir dengan informasi biaya dan penggunaan.
subtype menentukan field mana yang lainnya diisi. Ini adalah salah satu dari "success", "error_during_execution", "error_max_turns", "error_max_budget_usd", atau "error_max_structured_output_retries". Dataclass Python meratakan semua varian menjadi satu bentuk, jadi field yang tidak berlaku untuk subtype yang dikembalikan adalah None.
Beberapa field membawa detail diagnostik ketika percakapan berakhir dengan error:
is_error:Trueketika percakapan berakhir dalam status error. SelaluTruepada subtypeerror_*. Padasubtype="success"ini adalahTrueketika permintaan model terakhir gagal, berarti loop agen selesai tetapi panggilan API terakhir mengembalikan error.api_error_status: kode status HTTP dari error API yang mengakhiri.Noneketika putaran berakhir tanpa satu. Diisi hanya padasubtype="success".result: teks pesan asisten terakhir padasubtype="success", atauNonepada subtypeerror_*. Ketikasubtype="success"danis_error=True, ini menyimpan string error API jika tersedia tetapi dapat kosong, jadi periksaapi_error_statusdan kontenAssistantMessagesebelumnya untuk detail.errors: string error tingkat loop seperti pesan max-turns. Diisi hanya pada subtypeerror_*.
usage berisi kunci berikut ketika ada:
Dict
model_usage memetakan nama model ke penggunaan per-model. Kunci dict dalam menggunakan camelCase karena nilai diteruskan tanpa modifikasi dari proses CLI yang mendasar, cocok dengan tipe ModelUsage TypeScript:
StreamEvent
Event stream untuk pembaruan pesan parsial selama streaming. Hanya diterima ketika include_partial_messages=True dalam ClaudeAgentOptions. Impor via from claude_agent_sdk.types import StreamEvent.
RateLimitEvent
Dipancarkan ketika status rate limit berubah (misalnya, dari "allowed" ke "allowed_warning"). Gunakan ini untuk memperingatkan pengguna sebelum mereka mencapai batas keras, atau untuk mundur ketika status adalah "rejected".
RateLimitInfo
Status rate limit yang dibawa oleh RateLimitEvent.
TaskStartedMessage
Dipancarkan ketika tugas latar belakang dimulai. Tugas latar belakang adalah apa pun yang dilacak di luar putaran utama: perintah Bash yang di-background, Monitor watch, subagent yang dihasilkan melalui tool Agent, atau agent jarak jauh. Field task_type memberi tahu Anda yang mana. Penamaan ini tidak terkait dengan penggantian nama tool Task-ke-Agent.
TaskUsage
Data token dan timing untuk tugas latar belakang.
TaskProgressMessage
Dipancarkan secara berkala dengan pembaruan kemajuan untuk tugas latar belakang yang sedang berjalan.
TaskNotificationMessage
Dipancarkan ketika tugas latar belakang selesai, gagal, atau dihentikan. Tugas latar belakang termasuk perintah Bash run_in_background, Monitor watches, dan subagent latar belakang.
Tipe Blok Konten
ContentBlock
Tipe union dari semua blok konten.
TextBlock
Blok konten teks.
ThinkingBlock
Blok konten thinking (untuk model dengan kemampuan thinking).
ToolUseBlock
Blok permintaan penggunaan tool.
ToolResultBlock
Blok hasil eksekusi tool.
Tipe Error
ClaudeSDKError
Kelas exception dasar untuk semua error SDK.
CLINotFoundError
Diangkat ketika Claude Code CLI tidak diinstal atau tidak ditemukan.
CLIConnectionError
Diangkat ketika koneksi ke Claude Code gagal.
ProcessError
Diangkat ketika proses Claude Code gagal.
CLIJSONDecodeError
Diangkat ketika parsing JSON gagal.
Tipe Hook
Untuk panduan komprehensif tentang menggunakan hooks dengan contoh dan pola umum, lihat Hooks guide.HookEvent
Tipe event hook yang didukung.
SDK TypeScript mendukung event hook tambahan yang belum tersedia di Python:
SessionStart, SessionEnd, Setup, TeammateIdle, TaskCompleted, ConfigChange, WorktreeCreate, WorktreeRemove, PostToolBatch, dan MessageDisplay.HookCallback
Definisi tipe untuk fungsi callback hook.
input: Input hook yang kuat dengan union yang dibedakan berdasarkanhook_event_name(lihatHookInput)tool_use_id: Pengenal penggunaan tool opsional (untuk hook terkait tool)context: Konteks hook dengan informasi tambahan
HookJSONOutput yang mungkin berisi:
decision:"block"untuk memblokir tindakansystemMessage: Pesan peringatan yang ditampilkan kepada penggunahookSpecificOutput: Data output spesifik hook
HookContext
Informasi konteks yang diteruskan ke callback hook.
HookMatcher
Konfigurasi untuk mencocokkan hooks ke event atau tools tertentu.
HookInput
Tipe union dari semua tipe input hook. Tipe aktual bergantung pada field hook_event_name.
BaseHookInput
Field dasar yang ada di semua tipe input hook.
PreToolUseHookInput
Data input untuk event hook PreToolUse.
PostToolUseHookInput
Data input untuk event hook PostToolUse.
PostToolUseFailureHookInput
Data input untuk event hook PostToolUseFailure. Dipanggil ketika eksekusi tool gagal.
UserPromptSubmitHookInput
Data input untuk event hook UserPromptSubmit.
StopHookInput
Data input untuk event hook Stop.
SubagentStopHookInput
Data input untuk event hook SubagentStop.
PreCompactHookInput
Data input untuk event hook PreCompact.
NotificationHookInput
Data input untuk event hook Notification.
SubagentStartHookInput
Data input untuk event hook SubagentStart.
PermissionRequestHookInput
Data input untuk event hook PermissionRequest. Memungkinkan hooks untuk menangani keputusan izin secara programatis.
HookJSONOutput
Tipe union untuk nilai pengembalian callback hook.
SyncHookJSONOutput
Output hook sinkron dengan field kontrol dan keputusan.
Gunakan
continue_ (dengan underscore) dalam kode Python. Ini secara otomatis dikonversi ke continue ketika dikirim ke CLI.HookSpecificOutput
TypedDict yang berisi nama event hook dan field spesifik event. Bentuknya bergantung pada nilai hookEventName. Untuk detail lengkap tentang field yang tersedia per event hook, lihat Control execution with hooks.
Union yang dibedakan dari tipe output spesifik event. Field hookEventName menentukan field mana yang valid.
AsyncHookJSONOutput
Output hook async yang menunda eksekusi hook.
Gunakan
async_ (dengan underscore) dalam kode Python. Ini secara otomatis dikonversi ke async ketika dikirim ke CLI.Contoh Penggunaan Hook
Contoh ini mendaftarkan dua hooks: satu yang memblokir perintah bash berbahaya sepertirm -rf /, dan satu lagi yang mencatat semua penggunaan tool untuk audit. Hook keamanan hanya berjalan pada perintah Bash (melalui matcher), sementara hook logging berjalan pada semua tools.
Tipe Input/Output Tool
Dokumentasi skema input/output untuk semua tools Claude Code bawaan. Meskipun Python SDK tidak mengekspor ini sebagai tipe, mereka mewakili struktur input dan output tool dalam pesan.Agent
Nama tool:Agent (sebelumnya Task, yang masih diterima sebagai alias)
Input:
AskUserQuestion
Nama tool:AskUserQuestion
Mengajukan pertanyaan klarifikasi kepada pengguna selama eksekusi. Lihat Handle approvals and user input untuk detail penggunaan.
Input:
Bash
Nama tool:Bash
Input:
Monitor
Nama tool:Monitor
Menjalankan sumber latar belakang dan mengirimkan setiap event ke Claude sehingga dapat bereaksi tanpa polling: command menjalankan skrip dan mengeluarkan satu event per baris stdout, dan ws membuka WebSocket dan mengeluarkan satu event per frame teks. Berikan tepat satu dari command atau ws.
Ketika Monitor menjalankan perintah, ia mengikuti aturan izin yang sama seperti Bash; pengawasan WebSocket meminta persetujuan secara terpisah. Sumber ws memerlukan Claude Code v2.1.195 atau lebih baru. Lihat Monitor tool reference untuk perilaku dan ketersediaan penyedia.
Input:
Edit
Nama tool:Edit
Input:
Read
Nama tool:Read
Input:
Write
Nama tool:Write
Input:
Glob
Nama tool:Glob
Input:
Grep
Nama tool:Grep
Input:
NotebookEdit
Nama tool:NotebookEdit
Input:
WebFetch
Nama tool:WebFetch
Input:
WebSearch
Nama tool:WebSearch
Input:
TodoWrite
Nama tool:TodoWrite
Mulai dari Claude Code v2.1.142,
TodoWrite dinonaktifkan secara default. Gunakan TaskCreate, TaskGet, TaskUpdate, dan TaskList sebagai gantinya. Lihat Migrate to Task tools untuk memperbarui kode pemantauan Anda, atau atur CLAUDE_CODE_ENABLE_TASKS=0 untuk kembali ke TodoWrite.TaskCreate
Nama tool:TaskCreate
Input:
TaskUpdate
Nama tool:TaskUpdate
Input:
TaskGet
Nama tool:TaskGet
Input:
TaskList
Nama tool:TaskList
Input:
BashOutput
Nama tool:BashOutput
Input:
KillBash
Nama tool:KillBash
Input:
ExitPlanMode
Nama tool:ExitPlanMode
Input:
ListMcpResources
Nama tool:ListMcpResourcesTool
Input:
ReadMcpResource
Nama tool:ReadMcpResourceTool
Input:
Fitur Lanjutan dengan ClaudeSDKClient
Membangun Antarmuka Percakapan Berkelanjutan
Menggunakan Hooks untuk Modifikasi Perilaku
Pemantauan Kemajuan Real-time
Contoh Penggunaan
Operasi file dasar (menggunakan query)
Penanganan error
Mode streaming dengan klien
Menggunakan tools kustom dengan ClaudeSDKClient
Konfigurasi Sandbox
SandboxSettings
Konfigurasi untuk perilaku sandbox. Gunakan ini untuk mengaktifkan sandboxing perintah dan mengonfigurasi pembatasan jaringan secara programatis.
Sandbox bergantung pada dukungan platform dan, di Linux, alat seperti
bubblewrap dan socat. Secara default, ketika enabled adalah True tetapi sandbox tidak dapat dimulai, perintah berjalan tanpa sandbox dengan peringatan di stderr. Default ini berbeda dari SDK TypeScript, di mana failIfUnavailable default ke true.Atur "failIfUnavailable": True dalam pengaturan sandbox Anda untuk berhenti sebagai gantinya. Kunci belum dideklarasikan pada SandboxSettings namun, tetapi SDK meneruskannya ke Claude Code, yang menghormatinya. query() kemudian melaporkan ResultMessage dengan subtype="error_during_execution" dan alasannya dalam errors. Perhatikan subtype itu daripada mengharapkan query() untuk menaikkan sebelum menghasilkan pesan.Contoh penggunaan
SandboxNetworkConfig
Konfigurasi spesifik jaringan untuk mode sandbox. Pengaturan ini berlaku untuk perintah Bash dalam sandbox ketika enabled adalah True dalam SandboxSettings induk. Mereka tidak membatasi tool WebFetch, yang menggunakan aturan izin sebagai gantinya.
Proxy sandbox bawaan memberlakukan daftar izin jaringan berdasarkan nama host yang diminta dan tidak menghentikan atau memeriksa lalu lintas TLS, sehingga teknik seperti domain fronting dapat berpotensi melewatinya. Lihat Batasan keamanan sandboxing untuk detail dan Penyebaran aman untuk mengonfigurasi proxy yang menghentikan TLS.
SandboxIgnoreViolations
Konfigurasi untuk mengabaikan pelanggaran sandbox tertentu.
Fallback Izin untuk Perintah Tanpa Sandbox
KetikaallowUnsandboxedCommands diaktifkan, model dapat meminta untuk menjalankan perintah di luar sandbox dengan mengatur dangerouslyDisableSandbox: True dalam input tool. Permintaan ini jatuh kembali ke sistem izin yang ada, berarti handler can_use_tool Anda akan dipanggil, memungkinkan Anda menerapkan logika otorisasi kustom.
excludedCommands vs allowUnsandboxedCommands:excludedCommands: Daftar statis perintah yang selalu melewati sandbox secara otomatis (misalnya,["docker"]). Model tidak memiliki kontrol atas ini.allowUnsandboxedCommands: Memungkinkan model memutuskan saat runtime apakah akan meminta eksekusi tanpa sandbox dengan mengaturdangerouslyDisableSandbox: Truedalam input tool.
- Audit permintaan model: Catat ketika model meminta eksekusi tanpa sandbox
- Implementasikan allowlist: Hanya izinkan perintah tertentu untuk berjalan tanpa sandbox
- Tambahkan alur persetujuan: Memerlukan otorisasi eksplisit untuk operasi istimewa
Lihat juga
- SDK overview - Konsep SDK umum
- TypeScript SDK reference - Dokumentasi SDK TypeScript
- CLI reference - Antarmuka baris perintah
- Common workflows - Panduan langkah demi langkah