Instalasi
SDK menggabungkan biner Claude Code asli untuk platform Anda sebagai dependensi opsional seperti
@anthropic-ai/claude-agent-sdk-darwin-arm64. Anda tidak perlu menginstal Claude Code secara terpisah. Jika pengelola paket Anda melewatkan dependensi opsional, SDK melempar Native CLI binary for <platform> not found; setel pathToClaudeCodeExecutable ke biner claude yang diinstal secara terpisah sebagai gantinya.Kompilasi ke executable tunggal
Ketika Anda mengompilasi aplikasi Anda menjadi executable file tunggal denganbun build --compile, SDK tidak dapat menyelesaikan biner CLI yang dibundel saat runtime. require.resolve tidak berfungsi di dalam filesystem virtual $bunfs executable yang dikompilasi, jadi SDK melempar Native CLI binary for <platform> not found.
Untuk mengatasi ini, sematkan biner platform sebagai aset file, ekstrak ke path nyata saat startup dengan extractFromBunfs(), dan teruskan path tersebut ke pathToClaudeCodeExecutable.
Helper extractFromBunfs() memerlukan @anthropic-ai/claude-agent-sdk v0.3.144 atau lebih baru. Contoh di bawah ini membangun untuk macOS pada Apple Silicon:
extractFromBunfs() menyalin biner yang disematkan keluar dari filesystem virtual executable yang dikompilasi ke direktori temp per-pengguna dan mengembalikan path nyata. Di luar executable yang dikompilasi, ia mengembalikan path input tidak berubah, jadi kode yang sama berjalan dalam pengembangan tanpa modifikasi.
Setiap executable yang dikompilasi menyematkan biner platform tunggal. Cocokkan paket platform dalam impor ke --target Anda:
- Untuk cross-compile, instal paket platform yang tidak cocok, misalnya
npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force. - Di Windows, subpath biner adalah
claude.exe, misalnya@anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.
Fungsi
query()
Fungsi utama untuk berinteraksi dengan Claude Code. Membuat generator asinkron yang melakukan streaming pesan saat tiba.
Parameter
Pengembalian
Mengembalikan objekQuery yang memperluas AsyncGenerator<SDKMessage, void> dengan metode tambahan.
startup()
Pra-pemanasan subprocess CLI dengan menspawnya dan menyelesaikan handshake inisialisasi sebelum prompt tersedia. Handle WarmQuery yang dikembalikan menerima prompt nanti dan menulisnya ke proses yang sudah siap, sehingga panggilan query() pertama diselesaikan tanpa membayar biaya spawn dan inisialisasi subprocess secara inline.
Parameter
Pengembalian
MengembalikanPromise<WarmQuery> yang diselesaikan setelah subprocess telah dispawn dan menyelesaikan handshake inisialisasinya.
Contoh
Panggilstartup() lebih awal, misalnya saat boot aplikasi, kemudian panggil .query() pada handle yang dikembalikan setelah prompt siap. Ini memindahkan spawn subprocess dan inisialisasi keluar dari jalur kritis.
tool()
Membuat definisi tool MCP yang aman tipe untuk digunakan dengan server MCP SDK.
Parameter
ToolAnnotations
Dieksport ulang dari @modelcontextprotocol/sdk/types.js. Semua field adalah petunjuk opsional; klien tidak boleh mengandalkannya untuk keputusan keamanan.
createSdkMcpServer()
Membuat instance server MCP yang berjalan dalam proses yang sama dengan aplikasi Anda.
Parameter
listSessions()
Menemukan dan membuat daftar sesi masa lalu dengan metadata ringan. Filter berdasarkan direktori proyek atau buat daftar sesi di semua proyek.
Parameter
Tipe pengembalian: SDKSessionInfo
Contoh
Cetak 10 sesi terbaru untuk proyek. Hasil diurutkan berdasarkanlastModified menurun, jadi item pertama adalah yang terbaru. Hilangkan dir untuk mencari di semua proyek.
getSessionMessages()
Membaca pesan pengguna dan asisten dari transkrip sesi masa lalu.
Parameter
Tipe pengembalian: SessionMessage
Contoh
getSessionInfo()
Membaca metadata untuk sesi tunggal berdasarkan ID tanpa memindai direktori proyek lengkap.
Parameter
Mengembalikan
SDKSessionInfo, atau undefined jika sesi tidak ditemukan.
renameSession()
Mengganti nama sesi dengan menambahkan entri judul kustom. Panggilan berulang aman; judul terbaru menang.
Parameter
tagSession()
Menandai sesi. Lewatkan null untuk menghapus tag. Panggilan berulang aman; tag terbaru menang.
Parameter
resolveSettings()
Menyelesaikan pengaturan Claude Code yang efektif untuk direktori tertentu menggunakan mesin penggabungan yang sama dengan CLI, tanpa menspawn CLI Claude. Gunakan untuk memeriksa konfigurasi apa yang akan dilihat oleh panggilan query() sebelum memanggil satu.
Fungsi ini alpha dan API-nya mungkin berubah sebelum stabilisasi. Fungsi ini membaca sumber MDM, termasuk plist macOS dan Windows HKLM/HKCU, untuk paritas dengan startup CLI, tetapi tidak mengeksekusi subprocess
policyHelper yang dikonfigurasi admin. Field permissions.defaultMode dikembalikan apa adanya dari semua tingkat termasuk pengaturan proyek. Filter kepercayaan yang diterapkan CLI sebelum menghormati mode izin yang meningkat tidak diterapkan.Parameter
resolveSettings() menerima objek opsi tunggal. Semua field bersifat opsional.
Tipe pengembalian: ResolvedSettings
resolveSettings() mengembalikan objek yang menjelaskan pengaturan yang digabungkan dan sumber yang berkontribusi pada setiap kunci.
Contoh
Contoh di bawah ini menyelesaikan pengaturan untuk direktori proyek dan mencetak sumber yang mengontrol periode pembersihan.Tipe
Options
Objek konfigurasi untuk fungsi query().
Tangani respons API yang lambat atau terhenti
Subprocess CLI membaca beberapa variabel lingkungan yang mengontrol timeout API dan deteksi stall. Lewatkan melalui opsienv:
API_TIMEOUT_MS: timeout per-request pada klien Anthropic, dalam milidetik. Default600000. Berlaku untuk loop utama dan semua subagen.CLAUDE_CODE_MAX_RETRIES: maksimum retry API. Default10, dibatasi pada15. Setiap retry mendapatkan jendelaAPI_TIMEOUT_MSsendiri, jadi waktu dinding terburuk kira-kiraAPI_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)ditambah backoff. Untuk run yang tidak diawasi yang perlu menunggu melalui pemadaman yang lebih lama, aturCLAUDE_CODE_RETRY_WATCHDOG=1: itu retry kapasitas error tanpa batas, dan mulai dari Claude Code v2.1.199 menaikkan default untuk error transien lainnya menjadi300dan menghapus cap pada variabel ini.CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: stall watchdog untuk subagen yang diluncurkan denganrun_in_background. Default600000. Reset pada setiap event stream; pada stall itu membatalkan subagen, menandai tugas gagal, dan menampilkan error ke parent dengan hasil parsial apa pun. Tidak berlaku untuk subagen sinkron.CLAUDE_ENABLE_STREAM_WATCHDOGdenganCLAUDE_STREAM_IDLE_TIMEOUT_MS: membatalkan request ketika header telah tiba tetapi body 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. Request yang dibatalkan melalui jalur retry normal.
Objek Query
Antarmuka yang dikembalikan oleh fungsi query().
Metode
applyFlagSettings()
Mengubah pengaturan pada sesi yang sedang berjalan tanpa memulai ulang query. Gunakan ketika pengaturan yang tidak memiliki setter khusus perlu berubah di tengah sesi, seperti memperketat permissions setelah agen membaca input yang tidak terpercaya. setModel() dan setPermissionMode() adalah setter khusus untuk dua kunci itu; applyFlagSettings() adalah bentuk umum yang menerima subset kunci pengaturan apa pun, dan melewatkan model di sini berperilaku sama seperti setModel().
Hanya beberapa kunci yang berlaku di tengah sesi:
- Diterapkan pada putaran berikutnya:
model,effortLevel,ultracode,permissions,hooks,skillOverrides,fastMode,agent. Beralihagentjuga menerapkan penggantian model agen itu, hooks, dan prompt sistem pada putaran berikutnya. - Tidak ada efek di tengah sesi: opsi prompt sistem. Ini diselesaikan sekali saat startup, jadi sesi yang sedang berjalan menyimpan nilai asli meskipun panggilan berhasil. Untuk mengubahnya, mulai sesi baru.
effortLevel menerima nama tingkat usaha. Ini juga menerima "ultracode", yang menjalankan sesi pada usaha xhigh dan mengaktifkan ultracode. Tipe Settings mendeklarasikan effortLevel tanpa nilai itu, jadi lewatkan { ultracode: true } yang setara dalam TypeScript. Nilai ultracode memerlukan Claude Code v2.1.203 atau lebih baru dan diterima hanya oleh applyFlagSettings(), bukan oleh kunci effortLevel dalam file pengaturan.
Nilai ditulis ke lapisan flag-settings, lapisan yang sama yang opsi settings inline dari query() isi saat startup. Flag settings duduk di dekat bagian atas urutan preseden pengaturan: mereka mengganti pengaturan pengguna, proyek, dan lokal, dan hanya pengaturan kebijakan terkelola yang dapat mengganti mereka. Ini adalah tier yang sama yang bagian preseden di halaman sebut opsi terprogram.
Panggilan berturut-turut shallow-merge kunci tingkat atas. Panggilan kedua dengan { permissions: {...} } mengganti seluruh objek permissions dari panggilan sebelumnya daripada deep-merging ke dalamnya. Untuk menghapus kunci dari lapisan flag dan kembali ke sumber preseden lebih rendah, lewatkan null untuk kunci itu. Melewatkan undefined tidak memiliki efek karena serialisasi JSON menjatuhkannya.
Hanya tersedia dalam mode input streaming, batasan yang sama seperti setModel() dan setPermissionMode().
Contoh di bawah beralih model aktif di tengah sesi, kemudian menghapus override sehingga model kembali ke apa pun yang ditentukan pengaturan pengguna atau proyek.
applyFlagSettings() adalah TypeScript-only. SDK Python tidak mengekspos metode setara.WarmQuery
Handle yang dikembalikan oleh startup(). Subprocess sudah dispawn dan diinisialisasi, jadi memanggil query() pada handle ini menulis prompt langsung ke proses yang siap tanpa latensi startup.
Metode
WarmQuery mengimplementasikan AsyncDisposable, jadi dapat digunakan dengan await using untuk pembersihan otomatis.
SDKControlInitializeResponse
Tipe pengembalian dari initializationResult(). Berisi data inisialisasi sesi.
initialize ke sesi yang sudah berjalan, wrapper control-response juga membawa array pending_permission_requests opsional. Field berada pada wrapper respons itu sendiri, bukan dalam payload SDKControlInitializeResponse di atas. Setiap entri adalah pesan control_request lengkap dengan bentuk { type: "control_request", request_id, request } yang sama dengan sesi yang dialirkan untuk permintaan izin saat berjalan.
Ini adalah permintaan yang dikeluarkan sebelum klien terhubung dan masih menunggu balasan. SDK membaca array untuk Anda dan mengirimkan setiap entri ke callback canUseTool Anda, pengiriman ulang yang sama yang reinitialize() picu setelah celah transport. Tangani ID permintaan berulang secara idempotent, karena entri dapat mengulangi permintaan yang callback sudah terima sebelum koneksi putus.
SDKControlInterruptResponse
Penerimaan interrupt: nilai yang interrupt() diselesaikan dengan pada CLI yang mengiklankan kemampuan interrupt_receipt_v1 dalam SDKSystemMessage.capabilities. Memerlukan Claude Code v2.1.205 atau lebih baru. CLI sebelumnya menjawab interrupt dengan payload kesuksesan kosong, jadi interrupt() diselesaikan ke undefined.
still_queued mencantumkan UUID pesan pengguna yang bertahan dari interrupt: pesan masih dalam antrian, ditambah batch apa pun yang sudah dihapus antrian untuk putaran berikutnya tetapi belum dapat dijangkau oleh abort. Masing-masing berjalan sebagai putaran sendiri setelah interrupt kecuali Anda membatalkannya terlebih dahulu. Gunakan penerimaan untuk memutuskan apakah akan mengirim ulang apa pun; mengirim ulang pesan yang sudah terdaftar menghasilkan putaran duplikat.
Interpretasikan daftar dengan peringatan ini:
- Hanya pesan yang antri dengan UUID muncul. Array kosong tidak berarti tidak ada lagi yang akan berjalan.
- Hanya pesan thread utama yang terdaftar. Pesan yang ditujukan ke subagen di luar jangkauan.
- Daftar dapat mencakup UUID yang klien Anda tidak pernah kirim, seperti pemicu tugas terjadwal. Abaikan UUID yang tidak Anda kenal alih-alih memperlakukannya sebagai error.
SDKResultMessage putaran yang terputus. Baca penerimaan daripada memeriksa antrian setelah hasil itu: loop memulai putaran antrian berikutnya segera, jadi antrian yang Anda periksa setelah hasil sudah berubah.
AgentDefinition
Konfigurasi untuk subagen yang didefinisikan secara terprogram.
AgentMcpServerSpec
Menentukan server MCP yang tersedia untuk subagen. Dapat berupa nama server (string yang mereferensikan server dari konfigurasi mcpServers parent) atau konfigurasi server inline yang merekam nama server ke config.
McpServerConfigForProcessTransport adalah McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.
SettingSource
Mengontrol sumber konfigurasi berbasis filesystem mana yang dimuat pengaturan SDK.
Perilaku default
KetikasettingSources dihilangkan atau undefined, 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 Apa yang tidak dikontrol settingSources untuk input yang dibaca terlepas dari opsi ini, dan cara menonaktifkannya.
Mengapa menggunakan settingSources
Nonaktifkan pengaturan filesystem: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, allowedTools, dan settings mengganti pengaturan filesystem pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola mengambil preseden atas opsi terprogram.
PermissionMode
CanUseTool
Tipe fungsi izin kustom untuk mengontrol penggunaan tool.
Fungsi adalah pengganti SDK untuk prompt izin interaktif: dipanggil hanya ketika alur evaluasi izin diselesaikan ke prompt. Panggilan tool yang sudah disetujui oleh entri allowedTools, aturan allow pengaturan, atau mode izin, seperti acceptEdits atau bypassPermissions, tidak pernah memanggilnya. Untuk gating setiap tool call, gunakan hook PreToolUse sebagai gantinya.
AskUserQuestion, tool MCP yang ditandai requiresUserInteraction, dan tool konektor organisasi Anda atur ke ask mencapai fungsi bahkan ketika aturan allow cocok. Dalam mode dontAsk panggilan ini ditolak sebagai gantinya, tanpa memanggilnya.
Callback biasanya menyelesaikan permintaan dengan mengembalikan
PermissionResult, yang SDK tulis kembali melalui transportnya sebagai control_response. Kembalikan null hanya ketika aplikasi Anda sudah mengirim control_response untuk permintaan ini melalui saluran sendiri, mengulangi requestId; SDK kemudian melewati penulisan respons ke transportnya. Mengembalikan null dalam kasus lain meninggalkan tool call terblokir tanpa batas, karena tidak ada control_response yang pernah dikirim dan prompt izin tidak timeout.
Opsi requestId dan nilai pengembalian null memerlukan Claude Code v2.1.199 atau lebih baru.
PermissionResult
Hasil pemeriksaan izin.
ToolConfig
Konfigurasi untuk perilaku tool bawaan.
McpServerConfig
Konfigurasi untuk server MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
McpClaudeAIProxyServerConfig
SdkPluginConfig
Konfigurasi untuk memuat plugin di SDK.
Contoh:
Tipe Pesan
SDKMessage
Tipe union dari semua pesan yang mungkin dikembalikan oleh query.
SDKAssistantMessage
Pesan respons asisten.
message adalah BetaMessage dari Anthropic SDK. Ini mencakup field seperti id, content, model, stop_reason, dan usage.
SDKAssistantMessageError adalah salah satu dari: 'authentication_failed', 'oauth_org_not_allowed', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens', atau 'unknown'. 'model_not_found' berarti model yang dipilih tidak ada atau tidak tersedia untuk akun atau deployment Anda. 'overloaded' berarti API mengembalikan 529 karena server mencapai kapasitas, berbeda dengan 'rate_limit', yang merupakan 429 terhadap kuota Anda.
SDKUserMessage
Pesan input pengguna.
shouldQuery ke false untuk menambahkan pesan ke transkrip tanpa memicu putaran asisten. Pesan ditahan dan digabungkan ke pesan pengguna berikutnya yang memicu putaran. Gunakan ini untuk menyuntikkan konteks, seperti output perintah yang Anda jalankan out of band, tanpa menghabiskan panggilan model.
Pada pesan yang membawa blok tool_result, tool_use_result adalah objek output terstruktur tool daripada teks yang dikirim ke model. Bentuknya tergantung pada tool yang dinamai oleh blok tool_use yang cocok, jadi field ini diketik unknown; bentuk bawaan tercantum di bawah Tipe Output Tool.
Untuk tool Agent, tool_use_result adalah AgentOutput. Pada hasil completed, content menyimpan laporan subagent tanpa ID agen dan trailer penggunaan yang Claude Code tambahkan ke teks tool_result, jadi render dari tool_use_result daripada mem-parse teks itu.
SDKUserMessageReplay
Pesan pengguna yang diputar ulang dengan UUID yang diperlukan.
origin-nya adalah peer atau channel, mencapai aliran sebagai replay apakah itu disampaikan selama putaran aktif atau memulai putaran baru saat sesi idle. Sebelum v2.1.207, putaran yang disuntikkan disampaikan saat sesi idle tidak menghasilkan pesan pada aliran dan hanya muncul ketika Anda membaca ulang transkrip.
SDKResultMessage
Pesan hasil akhir.
subtype:
api_error_status: kode status HTTP dari kesalahan API yang mengakhiri percakapan. Tidak ada ataunullketika putaran berakhir tanpa kesalahan API.ttft_ms: waktu ke token pertama dalam milidetik, diukur ketika pesan asisten pertama yang lengkap tiba. Hadir hanya pada cabang kesuksesan.ttft_stream_ms: waktu dalam milidetik hingga event aliranmessage_startpertama, ketika aliran respons dibuka. Lebih rendah darittft_ms; celah antara keduanya adalah waktu yang dihabiskan untuk streaming pesan pertama. Hadir hanya pada cabang kesuksesan.terminal_reason: mengapa loop berakhir. Salah satu dari"completed","max_turns","tool_deferred","aborted_streaming","aborted_tools","hook_stopped","stop_hook_prevented","background_requested","blocking_limit","rapid_refill_breaker","prompt_too_long","image_error","model_error","api_error","malformed_tool_use_exhausted","budget_exhausted","structured_output_retry_exhausted","tool_deferred_unavailable", atau"turn_setup_failed".fast_mode_state: salah satu dari"on","off", atau"cooldown".
origin meneruskan SDKMessageOrigin dari pesan pengguna yang memicu hasil ini. Ketika tugas latar belakang selesai dan SDK menyuntikkan putaran lanjutan sintetis, SDKResultMessage yang dihasilkan membawa origin: { kind: "task-notification" }. Periksa field ini untuk membedakan hasil yang menjawab prompt Anda dari hasil yang dipancarkan untuk lanjutan tugas latar belakang, sehingga Anda dapat merutekan atau menekan yang terakhir. Field ini tidak ada untuk hasil yang dipancarkan sebelum putaran pengguna apa pun, seperti kesalahan startup.
Ketika hook PreToolUse mengembalikan permissionDecision: "defer", hasilnya memiliki stop_reason: "tool_deferred" dan deferred_tool_use membawa id, name, dan input tool yang tertunda. Baca field ini untuk menampilkan permintaan di UI Anda sendiri, kemudian lanjutkan dengan session_id yang sama untuk melanjutkan. Lihat Defer a tool call for later untuk perjalanan putaran lengkap.
SDKSystemMessage
Pesan inisialisasi sistem.
capabilities menamai perilaku protokol yang diimplementasikan CLI ini, sehingga Anda dapat mendeteksi fitur daripada membandingkan string claude_code_version. Ini adalah set terbuka: abaikan nilai yang tidak Anda kenali, dan periksa kemampuan spesifik yang perilakunya Anda andalkan. Field ini memerlukan Claude Code v2.1.205 atau lebih baru dan tidak ada pada CLI yang lebih awal.
SDKPartialAssistantMessage
Pesan parsial streaming (hanya ketika includePartialMessages adalah true). Field parent_tool_use_id selalu null: event aliran dipancarkan untuk sesi utama saja. Untuk atribusi subagent, gunakan pesan lengkap, yang membawa parent_tool_use_id, atau aktifkan forwardSubagentText untuk menerima teks dan pemikiran subagent sebagai pesan lengkap.
SDKCompactBoundaryMessage
Pesan yang menunjukkan batas pemadatan percakapan.
SDKStatusMessage
Pesan status aliran.
SDKLocalCommandOutputMessage
Output perintah lokal.
SDKHookStartedMessage
Hook dimulai.
SDKHookProgressMessage
Kemajuan hook.
SDKHookResponseMessage
Respons hook.
SDKToolProgressMessage
Kemajuan tool.
SDKAuthStatusMessage
Status autentikasi.
SDKTaskNotificationMessage
Notifikasi tugas.
SDKTaskStartedMessage
Tugas dimulai.
SDKTaskProgressMessage
Kemajuan tugas.
SDKTaskUpdatedMessage
Tugas diperbarui.
SDKBackgroundTasksChangedMessage
Tugas latar belakang berubah.
SDKThinkingTokensMessage
Token pemikiran.
SDKSessionStateChangedMessage
Status sesi berubah.
SDKWorkerShuttingDownMessage
Dipancarkan pada pembongkaran worker yang elegan sehingga klien jarak jauh dapat menunjukkan mengapa worker hilang daripada menunggu timeout heartbeat. reason adalah string snake_case pendek yang ditetapkan oleh CLI host, seperti "host_exit" atau "remote_control_disabled". Bertindak atas ini hanya ketika streaming langsung. Sesi yang dilanjutkan memutar ulang instance masa lalu dari pesan ini, jadi abaikan dalam kasus itu.
SDKCommandsChangedMessage
Perintah berubah.
SDKNotificationMessage
Notifikasi.
SDKFilesPersistedEvent
Event file yang disimpan.
SDKToolUseSummaryMessage
Ringkasan penggunaan tool.
SDKMemoryRecallMessage
Pesan recall memori.
SDKRateLimitEvent
Event batas laju.
SDKElicitationCompleteMessage
Elicitasi selesai.
SDKPermissionDeniedMessage
Event aliran yang dipancarkan ketika sistem izin secara otomatis menolak panggilan tool tanpa prompt interaktif. Gunakan ini untuk merender penolakan di UI Anda saat terjadi, daripada hanya mengamati hasil tool is_error yang mengikuti. Jalur tanya interaktif mencapai aplikasi Anda secara terpisah melalui callback canUseTool. Penolakan yang dikeluarkan oleh hook PreToolUse tidak dilaporkan melalui event ini.
Event ini memerlukan Claude Code v2.1.136 atau lebih baru.
SDKPromptSuggestionMessage
Saran prompt.
SDKAPIRetryMessage
Percobaan ulang API.
SDKMirrorErrorMessage
Kesalahan mirror.
SDKInformationalMessage
Spanduk teks generik yang dipancarkan oleh loop. Membawa baris status non-error, umpan balik hook seperti alasan blok hook UserPromptSubmit, dan output perintah. Render content sebagai plaintext pada level yang diberikan.
SDKConversationResetMessage
Percakapan direset.
SDKPermissionDenial
Informasi tentang penggunaan tool yang ditolak.
SDKMessageOrigin
Asal-usul pesan dengan peran pengguna. Ini muncul sebagai origin pada SDKUserMessage dan diteruskan ke SDKResultMessage yang sesuai sehingga Anda dapat mengetahui apa yang memicu putaran tertentu.
Tipe Hook
Untuk panduan komprehensif tentang menggunakan hooks dengan contoh dan pola umum, lihat panduan Hooks.HookEvent
Event hook yang tersedia.
HookCallback
Tipe fungsi callback hook.
HookCallbackMatcher
Konfigurasi hook dengan matcher opsional.
HookInput
Tipe union dari semua tipe input hook.
BaseHookInput
Antarmuka dasar yang diperluas oleh semua tipe input hook.
prompt_id adalah UUID yang mengidentifikasi prompt pengguna yang sedang diproses. Ini cocok dengan atribut prompt.id pada acara OpenTelemetry dan tidak ada sampai input pengguna pertama. Memerlukan Claude Code v2.1.196 atau lebih baru.
PreToolUseHookInput
PostToolUseHookInput
PostToolUseFailureHookInput
PostToolBatchHookInput
Dipicu sekali setelah setiap pemanggilan alat dalam batch telah diselesaikan, sebelum permintaan model berikutnya. tool_response membawa konten tool_result yang diserialisasi yang dilihat model; bentuknya berbeda dari objek Output terstruktur dari PostToolUseHookInput.
NotificationHookInput
UserPromptSubmitHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCompletedHookInput
ConfigChangeHookInput
WorktreeCreateHookInput
WorktreeRemoveHookInput
MessageDisplayHookInput
HookJSONOutput
Nilai pengembalian hook.
AsyncHookJSONOutput
SyncHookJSONOutput
Tipe Input Tool
Dokumentasi skema input untuk semua tool Claude Code bawaan. Tipe ini dieksport dari@anthropic-ai/claude-agent-sdk dan dapat digunakan untuk interaksi tool yang aman tipe.
ToolInputSchemas
Union dari semua tipe input tool, dieksport dari @anthropic-ai/claude-agent-sdk.
Agent
Nama tool:Agent (sebelumnya Task, yang masih diterima sebagai alias)
AskUserQuestion
Nama tool:AskUserQuestion
Bash
Nama tool:Bash
Monitor
Nama tool:Monitor
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. Sumber ws memerlukan Claude Code v2.1.195 atau yang lebih baru.
Atur persistent: true untuk watch panjang sesi seperti log tails. Ketika Monitor menjalankan perintah, ia mengikuti aturan izin yang sama seperti Bash; watch WebSocket meminta persetujuan secara terpisah. Lihat referensi tool Monitor untuk perilaku dan ketersediaan provider.
TaskOutput
Nama tool:TaskOutput
Edit
Nama tool:Edit
Read
Nama tool:Read
pages untuk rentang halaman PDF (misalnya, "1-5").
Write
Nama tool:Write
Glob
Nama tool:Glob
Grep
Nama tool:Grep
TaskStop
Nama tool:TaskStop
task_id juga menerima rekan tim agent atau agen latar belakang bernama berdasarkan ID agen atau nama.
NotebookEdit
Nama tool:NotebookEdit
WebFetch
Nama tool:WebFetch
WebSearch
Nama tool:WebSearch
Workflow
Nama tool:Workflow
Workflow tersedia di Agent SDK v0.3.149 dan yang lebih baru. Setidaknya satu dari script, name, atau scriptPath diperlukan.
TodoWrite
Nama tool:TodoWrite
Mulai dari TypeScript Agent SDK 0.3.142,
TodoWrite dinonaktifkan secara default. Gunakan TaskCreate, TaskGet, TaskUpdate, dan TaskList sebagai gantinya. Lihat Migrasi ke tool Task untuk memperbarui kode pemantauan Anda, atau atur CLAUDE_CODE_ENABLE_TASKS=0 untuk kembali ke TodoWrite.TaskCreate
Nama tool:TaskCreate
TaskUpdate
Nama tool:TaskUpdate
status ke "deleted" untuk menghapusnya.
TaskGet
Nama tool:TaskGet
null ketika ID tidak ditemukan.
TaskList
Nama tool:TaskList
ExitPlanMode
Nama tool:ExitPlanMode
allowedPrompts sudah usang dan diabaikan; Claude Code masih menerimanya sehingga pemanggil dan transkrip yang ada memvalidasi. Sebelum v2.1.205, ia meminta izin Bash berbasis prompt untuk mengimplementasikan rencana.
ListMcpResources
Nama tool:ListMcpResourcesTool
ReadMcpResource
Nama tool:ReadMcpResourceTool
EnterWorktree
Nama tool:EnterWorktree
path untuk beralih ke worktree yang ada alih-alih membuat yang baru. Pada entri pertama target harus berupa worktree terdaftar dari repositori saat ini atau, dalam workspace multi-repo, dari repositori yang bersarang di dalamnya; dari dalam sesi worktree harus berada di bawah .claude/worktrees/ dari repositori sesi. name dan path saling eksklusif.
Tipe Output Tool
Dokumentasi skema output untuk semua tool Claude Code bawaan. Tipe ini dieksport dari@anthropic-ai/claude-agent-sdk dan mewakili data respons aktual yang dikembalikan oleh setiap tool.
ToolOutputSchemas
Union dari semua tipe output tool.
Agent
Nama tool:Agent (sebelumnya Task, yang masih diterima sebagai alias)
status: "completed" untuk tugas yang selesai, "async_launched" untuk tugas latar belakang, dan "remote_launched" untuk tugas yang Claude Code kirimkan ke sesi cloud jarak jauh, di mana sessionUrl menautkan ke sesi tersebut dan taskId mengidentifikasinya.
Field resolvedModel pada varian completed dan async_launched menamai model yang sebenarnya dijalankan oleh subagen, yang dapat berbeda dari input model yang diminta ketika availableModels atau override lainnya berlaku. Field ini memerlukan Claude Code v2.1.174 atau lebih baru.
Pada varian completed, worktreePath diatur ketika subagen berjalan di worktree git terisolasi, dan worktreeBranch menamai cabang worktree tersebut ketika Claude Code membuatnya. usage.service_tier membawa string tier layanan yang dilaporkan API untuk permintaan subagen.
Sebelum v2.1.207, tipe yang dipublikasikan lebih sempit. Tipe tersebut menghilangkan worktreePath, worktreeBranch, citations, toolStats.frameCount, dan field penggunaan inference_geo, speed, dan iterations, dan mengetik service_tier sebagai "standard" | "priority" | "batch". Field yang ditandai tipe sebagai opsional dapat tidak ada pada hasil yang dicatat oleh versi sebelumnya.
AskUserQuestion
Nama tool:AskUserQuestion
response diatur ketika pengguna mengetik balasan bentuk bebas alih-alih menjawab pertanyaan terstruktur; ketika ada, Claude menerima “Pengguna merespons: …” alih-alih daftar jawaban per-pertanyaan.
Bash
Nama tool:Bash
backgroundTaskId.
Monitor
Nama tool:Monitor
TaskStop untuk membatalkan watch lebih awal.
Edit
Nama tool:Edit
Read
Nama tool:Read
type.
Write
Nama tool:Write
Glob
Nama tool:Glob
Grep
Nama tool:Grep
mode: daftar file, konten dengan kecocokan, atau hitungan kecocokan.
TaskStop
Nama tool:TaskStop
NotebookEdit
Nama tool:NotebookEdit
WebFetch
Nama tool:WebFetch
WebSearch
Nama tool:WebSearch
Workflow
Nama tool:Workflow
error sebelum memperlakukan run sebagai dimulai: skrip yang gagal pemeriksaan sintaksnya mengembalikan status: "async_launched" dengan error diatur, dan tidak pernah berjalan.
TodoWrite
Nama tool:TodoWrite
Mulai dari TypeScript Agent SDK 0.3.142,
TodoWrite dinonaktifkan secara default. Gunakan TaskCreate, TaskGet, TaskUpdate, dan TaskList sebagai gantinya. Lihat Migrasi ke tool Task untuk memperbarui kode pemantauan Anda, atau atur CLAUDE_CODE_ENABLE_TASKS=0 untuk kembali ke TodoWrite.TaskCreate
Nama tool:TaskCreate
TaskUpdate
Nama tool:TaskUpdate
TaskGet
Nama tool:TaskGet
null ketika ID tidak ditemukan.
TaskList
Nama tool:TaskList
ExitPlanMode
Nama tool:ExitPlanMode
ListMcpResources
Nama tool:ListMcpResourcesTool
ReadMcpResource
Nama tool:ReadMcpResourceTool
EnterWorktree
Nama tool:EnterWorktree
Tipe Izin
PermissionUpdate
Operasi untuk memperbarui izin.
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
Tipe Lainnya
ApiKeySource
SdkBeta
Fitur beta yang tersedia yang dapat diaktifkan melalui opsi betas. Lihat Beta headers untuk informasi lebih lanjut.
SlashCommand
Informasi tentang perintah slash yang tersedia.
ModelInfo
Informasi tentang model yang tersedia.
AgentInfo
Informasi tentang subagen yang tersedia yang dapat dipanggil melalui tool Agent.
McpServerStatus
Status server MCP yang terhubung.
McpServerStatusConfig
Konfigurasi server MCP seperti yang dilaporkan oleh mcpServerStatus(). Ini adalah union dari semua tipe transport server MCP.
McpServerConfig untuk detail tentang setiap tipe transport.
AccountInfo
Informasi akun untuk pengguna yang diautentikasi.
ModelUsage
Statistik penggunaan per-model yang dikembalikan dalam pesan hasil. Nilai costUSD adalah estimasi sisi klien. Lihat Lacak biaya dan penggunaan untuk peringatan penagihan.
ConfigScope
NonNullableUsage
Versi Usage dengan semua field nullable dibuat non-nullable.
Usage
Statistik penggunaan token. Ini adalah tipe BetaUsage dari @anthropic-ai/sdk.
BetaServerToolUsage dan BetaIterationsUsage didefinisikan dalam @anthropic-ai/sdk.
CallToolResult
Tipe hasil tool MCP (dari @modelcontextprotocol/sdk/types.js). structuredContent adalah objek JSON yang dapat dikembalikan bersama content, termasuk blok gambar. Lihat Kembalikan data terstruktur.
ThinkingConfig
Mengontrol perilaku pemikiran/penalaran Claude. Mengambil preseden atas maxThinkingTokens yang sudah usang.
display opsional mengontrol apakah teks pemikiran dikembalikan "summarized" atau "omitted". Pada Claude Opus 4.7 dan yang lebih baru, default API adalah "omitted", jadi atur "summarized" untuk menerima konten pemikiran dalam blok thinking.
SpawnedProcess
Antarmuka untuk spawn proses kustom (digunakan dengan opsi spawnClaudeCodeProcess). ChildProcess sudah memenuhi antarmuka ini.
SpawnOptions
Opsi yang diteruskan ke fungsi spawn kustom.
Field
signal memberi tahu fungsi spawn Anda kapan harus merobohkan proses. Teruskan sebagai opsi signal ke spawn() Node, atau teruskan ke handler teardown VM atau container Anda.Signal ini tidak menyala saat Options.abortController membatalkan. SDK pertama-tama menutup stdin proses dan menunggu sekitar dua detik sehingga CLI dapat ditutup dengan bersih, kemudian membatalkan signal ini. Untuk bereaksi saat pemanggil membatalkan, dengarkan Options.abortController.signal Anda sendiri, yang dapat direferensikan fungsi spawn Anda dari cakupan penutupnya.McpSetServersResult
Hasil operasi setMcpServers().
RewindFilesResult
Hasil operasi rewindFiles().
SDKStatusMessage
Pesan pembaruan status (misalnya, pemadatan).
SDKTaskNotificationMessage
Notifikasi ketika tugas latar belakang selesai, gagal, atau dihentikan. Tugas latar belakang mencakup perintah Bash run_in_background, watch Monitor, dan subagen latar belakang.
SDKToolUseSummaryMessage
Ringkasan penggunaan tool dalam percakapan.
SDKHookStartedMessage
Dipancarkan ketika hook mulai mengeksekusi.
Claude Code mengirimkan pesan ini, SDKHookProgressMessage, dan SDKHookResponseMessage ke aliran pesan segera, termasuk saat hook SessionStart atau Setup masih berjalan selama startup sesi. Claude Code v2.1.169 hingga v2.1.203 mengirimkan pesan ini dalam satu batch setelah hook SessionStart atau Setup selesai; v2.1.204 mengembalikan pengiriman langsung.
SDKHookProgressMessage
Dipancarkan saat hook sedang berjalan, dengan output stdout/stderr.
SDKHookResponseMessage
Dipancarkan ketika hook selesai mengeksekusi.
SDKToolProgressMessage
Dipancarkan secara berkala saat tool sedang mengeksekusi untuk menunjukkan kemajuan.
SDKAuthStatusMessage
Dipancarkan selama alur autentikasi.
SDKTaskStartedMessage
Dipancarkan ketika tugas latar belakang dimulai. Field task_type adalah "local_bash" untuk perintah Bash latar belakang dan watch Monitor, "local_agent" untuk subagen, atau "remote_agent".
SDKTaskProgressMessage
Dipancarkan secara berkala saat subagen atau tugas latar belakang sedang berjalan. Field summary diisi hanya ketika agentProgressSummaries diaktifkan.
SDKTaskUpdatedMessage
Dipancarkan ketika status tugas latar belakang berubah, seperti ketika transisi dari running ke completed. Gabungkan patch ke dalam peta tugas lokal Anda yang dikunci oleh task_id. Field end_time adalah timestamp epoch Unix dalam milidetik, dapat dibandingkan dengan Date.now().
SDKBackgroundTasksChangedMessage
Dipancarkan setiap kali set tugas latar belakang yang aktif berubah: tugas dimulai, selesai, dibunuh, atau agen foreground di-background. Array tasks adalah set aktif lengkap. Ganti set yang di-cache dengan setiap payload alih-alih memasangkan acara task_started dan task_notification, sehingga perubahan keanggotaan berikutnya memperbaiki acara apa pun yang Anda lewatkan.
Pengurutan relatif terhadap acara per-tugas tersebut tidak ditentukan, jadi jangan menghubungkan dua aliran tersebut.
Tidak ada yang dipancarkan saat startup. Atur ulang ke set kosong setiap kali proses CLI sesi dimulai atau dimulai ulang dan biarkan perubahan keanggotaan berikutnya mengisinya kembali.
Memerlukan Claude Code v2.1.203 atau lebih baru.
SDKThinkingTokensMessage
Dipancarkan saat Claude menghasilkan blok pemikiran, termasuk yang diredaksi, membawa estimasi berjalan token pemikiran yang dihasilkan sejauh ini. estimated_tokens adalah total berjalan untuk blok pemikiran saat ini dan estimated_tokens_delta adalah kenaikan yang dibawa oleh frame ini. Gunakan untuk tampilan kemajuan. Hitungan akhir untuk loop agen tingkat atas adalah pesan hasil usage.output_tokens, yang tidak termasuk token subagen; gunakan modelUsage untuk akuntansi seluruh pohon.
Memerlukan Claude Code v2.1.153 atau lebih baru.
SDKFilesPersistedEvent
Dipancarkan ketika checkpoint file dipersistenkan ke disk.
SDKRateLimitEvent
Dipancarkan ketika sesi mengalami batas laju.
errorCode adalah "credits_required", penolakan berasal dari langganan claude.ai yang penggunaan yang disertakan sudah habis, dan sesi tidak dapat dilanjutkan sampai pengguna membeli kredit penggunaan. canUserPurchaseCredits menunjukkan apakah pengguna yang diautentikasi dapat membeli kredit untuk akun, dan hasChargeableSavedPaymentMethod menunjukkan apakah metode pembayaran yang disimpan ada di file. Ketiga field ini tidak ada pada acara batas laju yang bukan penolakan yang diperlukan kredit. Memerlukan Claude Code v2.1.181 atau lebih baru.
SDKLocalCommandOutputMessage
Output dari perintah slash lokal (misalnya, /voice atau /usage). Ditampilkan sebagai teks gaya asisten dalam transkrip.
SDKCommandsChangedMessage
Dipancarkan ketika set perintah yang tersedia berubah di tengah sesi, seperti ketika skills ditemukan saat agen memasuki subdirektori. Array commands adalah daftar lengkap yang diperbarui, jadi ganti daftar perintah yang di-cache dengan payload ini. Memanggil supportedCommands() lagi tidak setara: metode itu mengembalikan snapshot yang ditangkap saat inisialisasi dan tidak mencerminkan perubahan di tengah sesi.
SDKPromptSuggestionMessage
Dipancarkan setelah setiap putaran ketika promptSuggestions diaktifkan. Berisi prompt pengguna berikutnya yang diprediksi.
SDKConversationResetMessage
Dipancarkan ketika percakapan sesi diganti tanpa mengakhiri sesi, seperti setelah /clear, pada exit plan-mode, atau ketika percakapan segar dimulai. Pasang transkrip kosong di bawah new_conversation_id dan buang judul sesi yang di-cache.
SDKConversationResetMessage dalam Claude Code v2.1.203 dan lebih baru. Sebelum v2.1.203, SDKMessage mereferensikan tipe tanpa mendeklarasikannya, jadi penyempitan pada type === "conversation_reset" gagal untuk typecheck ketika skipLibCheck dinonaktifkan.
AbortError
Kelas error kustom untuk operasi abort.
Konfigurasi Sandbox
SandboxSettings
Konfigurasi untuk perilaku sandbox. Gunakan ini untuk mengaktifkan sandboxing perintah dan mengonfigurasi pembatasan jaringan secara terprogram.
Sandbox bergantung pada dukungan platform dan, di Linux, alat seperti
bubblewrap dan socat. Ketika enabled adalah true dan sandbox tidak dapat dimulai, query() melaporkan pesan result dengan subtype: "error_during_execution" dan alasan dalam errors. Untuk panggilan query() pesan tunggal, SDK melempar setelah menghasilkan hasil kesalahan itu, jadi bungkus loop dalam blok try untuk melanjutkan melewatinya. Lihat Menangani hasil untuk kontrak kesalahan.Untuk menjalankan unsandboxed sebagai gantinya, atur failIfUnavailable: false.Contoh penggunaan
SandboxNetworkConfig
Konfigurasi spesifik jaringan untuk mode sandbox. Pengaturan ini berlaku untuk perintah Bash sandboxed ketika enabled adalah true dalam SandboxSettings induk. Mereka tidak membatasi tool WebFetch, yang menggunakan aturan izin sebagai gantinya.
Proxy sandbox bawaan memberlakukan
allowedDomains 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.SandboxFilesystemConfig
Konfigurasi spesifik filesystem untuk mode sandbox.
Fallback Izin untuk Perintah Unsandboxed
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 canUseTool Anda dipanggil, memungkinkan Anda untuk mengimplementasikan logika otorisasi kustom. Dalam contoh di bawah, isCommandAuthorized mewakili pemeriksaan otorisasi yang Anda tentukan.
excludedCommands vs allowUnsandboxedCommands:excludedCommands: Daftar statis perintah yang selalu bypass sandbox secara otomatis (misalnya,['docker']). Model tidak memiliki kontrol atas ini.allowUnsandboxedCommands: Biarkan model memutuskan pada runtime apakah akan meminta eksekusi unsandboxed dengan mengaturdangerouslyDisableSandbox: truedalam input tool.
- Audit permintaan model: Catat ketika model meminta eksekusi unsandboxed
- Implementasikan allowlist: Hanya izinkan perintah tertentu untuk berjalan unsandboxed
- Tambahkan alur persetujuan: Memerlukan otorisasi eksplisit untuk operasi istimewa
Lihat juga
- Gambaran umum SDK - Konsep SDK umum
- Referensi SDK Python - Dokumentasi SDK Python
- Referensi CLI - Antarmuka baris perintah
- Alur kerja umum - Panduan langkah demi langkah