Instalasi
SDK menggabungkan biner Claude Code asli untuk platform Anda sebagai dependensi opsional seperti
@anthropic-ai/claude-agent-sdk-darwin-arm64. Sebagian besar instalasi tidak memerlukan instalasi Claude Code terpisah. Versi SDK melacak versi Claude Code yang dibundel. SDK v0.3.191 menggabungkan Claude Code v2.1.191, jadi fitur di halaman ini yang memerlukan versi Claude Code tertentu memerlukan rilis SDK dengan nomor patch yang sama atau lebih baru. Jika pengelola paket Anda melewatkan dependensi opsional, SDK melempar Native CLI binary for <platform>-<arch> not found; setel pathToClaudeCodeExecutable ke biner claude yang diinstal secara terpisah sebagai gantinya.Jika pengelola paket Anda tidak menerapkan bidang libc npm, seperti yang tidak dilakukan Yarn 1.x, Anda mendapatkan paket platform glibc dan musl di Linux, kira-kira menggandakan ukuran instalasi. Pada Agent SDK v0.2.141 atau lebih baru, SDK masih meluncurkan varian yang benar. Untuk memulihkan ruang dalam gambar kontainer, hapus paket platform yang tidak cocok dengan libc tempat aplikasi Anda berjalan; untuk runtime glibc pada x64, itu adalah rm -rf node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl. Pada mesin pengembangan penghapusan bersifat sementara, karena Yarn menginstal ulang paket pada perubahan dependensi berikutnya.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>-<arch> 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.
Impor entri /core ketika Anda membundel Agent SDK
Jika aplikasi Anda membundel Agent SDK bersama dengan dependensinya sendiri, impor dari @anthropic-ai/claude-agent-sdk/core alih-alih akar paket. Entri /core memerlukan TypeScript Agent SDK v0.3.282 atau lebih baru, dan tipenya memerlukan TypeScript 5.0 atau lebih baru.
Entri /core mengekspor query(), startup(), tool(), createSdkMcpServer(), dan resolveSettings() yang sama seperti entri akar, bersama dengan fungsi yang mengganti nama, menandai, dan menghapus sesi, AbortError, konstanta runtime, dan setiap tipe. Ini tidak menambahkan nama miliknya sendiri. Untuk menjaga kode yang dimuat aplikasi Anda tetap kecil, /core menghilangkan beberapa ekspor akar, termasuk prewarm(), kelas InMemorySessionStore, dan pembantu yang mencantumkan, membaca, melakukan fork, mengimpor, dan merangkum sesi. Jika Anda memerlukan salah satunya, gunakan entri akar sebagai gantinya.
Entri akar menginline salinan miliknya sendiri dari zod dan @modelcontextprotocol/sdk. Entri /core mengimpornya dari node_modules Anda pada rentang yang dideklarasikan peerDependencies Agent SDK, jadi bundel yang sudah menyertakan mereka tidak membawa salinan kedua. Impor dari entri akar atau /core dalam proses tertentu, bukan keduanya: mereka adalah bundel terpisah, dan memuat keduanya memberi Anda dua salinan dari kelas dan status Agent SDK.
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. Jika Anda belum mengetahui direktori kerja sesi, gunakan prewarm() sebagai gantinya.
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.
prewarm()
Alpha. Memulai proses Claude Code sebagai cadangan sebelum Anda mengetahui sesi mana yang akan dilayaninya, sehingga Anda dapat mengikatnya ke sesi nanti dengan claim(). Gunakan dalam aplikasi yang boot sebelum pengguna memilih folder. Memerlukan TypeScript Agent SDK v0.3.282 atau lebih baru.
prewarm() menyelesaikan handshake inisialisasi yang sama dengan startup(), dengan proses menunggu di options.cwd ketika Anda menetapkannya dan sebaliknya di direktori sementara pribadi di bawah direktori konfigurasi Claude Code Anda. Direktori kerja sesi, hook SessionStart nya, server MCP stdio nya, dan konteks CLAUDE.md dan git nya menunggu klaim. Cadangan menahan kira-kira 230 hingga 260 MB memori saat menunggu. Jika spawnClaudeCodeProcess Anda menjalankan Claude Code di mesin lain atau dalam kontainer, atur options.cwd ke direktori yang ada di sana agar cadangan menunggu.
options dan initializeTimeoutMs berarti sama seperti untuk startup(), kecuali bahwa options.cwd hanya menetapkan direktori tempat cadangan menunggu. Promise diselesaikan dengan SpareProcess setelah proses menyelesaikan handshake inisialisasinya. prewarm() melempar jika options menetapkan resume, continue, atau forkSession, karena cadangan tidak memiliki sesi. Semuanya yang tidak dapat ditetapkan klaim, seperti mcpServers, hooks, canUseTool, settingSources, systemPrompt, dan plugins, diperbaiki untuk kehidupan cadangan, jadi simpan satu cadangan per set opsi yang berbeda dan prewarm lagi ketika mereka berubah.
Contoh
Prewarm saat boot aplikasi, kemudian klaim cadangan ketika pengguna memulai sesi:tool()
Membuat definisi tool MCP yang aman tipe untuk digunakan dengan server MCP SDK.
Parameter
ToolAnnotations
Didefinisikan di @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
forkSession()
Menyalin transkrip sesi ke sesi baru sehingga Anda dapat membawa percakapan ke arah lain sementara sesi asli tetap tidak berubah. Untuk bercabang dari titik yang lebih awal dalam percakapan, lewatkan upToMessageId.
Parameter
Mengembalikan
{ sessionId }, UUID sesi baru. Lewatkan sebagai resume untuk melanjutkan fork. Fork tidak menyertakan checkpoint file dari sesi asli, sehingga Anda tidak dapat mengembalikannya ke checkpoint yang diambil sebelum fork.
forkSession() melempar error ketika:
sessionIdbukan UUID- sesi tidak dapat ditemukan, atau tidak memiliki pesan
upToMessageIdtidak cocok dengan pesan apa pun dalam transkrip
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.
query():
policyHelper:resolveSettings()membaca sumber MDM, termasuk plist macOS dan Windows HKLM/HKCU, tetapi tidak mengeksekusi subprocesspolicyHelperyang dikonfigurasi admin.- Pengaturan terkelola server:
resolveSettings()tidak mengambil pengaturan terkelola server. Lewatkan mereka sebagaioptions.serverManagedSettingsuntuk menyertakannya. defaultMode: snapshot mengembalikanpermissions.defaultModeapa adanya dari setiap tingkat, sehingga dapat mencakup nilai'auto'dan'bypassPermissions'dari pengaturan proyek dan lokal, yang sesi live abaikan.
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. Pada mesin di mana tidak ada file pengaturan yang menetapkancleanupPeriodDays, kedua baris yang dicetak menunjukkan undefined untuk nilai, yang merupakan output yang diharapkan daripada error.
Tipe
Options
Objek konfigurasi untuk fungsi query().
Menangani respons API yang lambat atau macet
Subprocess CLI membaca beberapa environment variable yang mengontrol timeout API dan deteksi kemacetan. Teruskan melalui opsienv:
-
API_TIMEOUT_MS: timeout per permintaan pada klien Anthropic, dalam milidetik. Default600000. Berlaku untuk loop utama dan semua subagent. -
CLAUDE_CODE_MAX_RETRIES: jumlah retry API maksimum. Default10, dibatasi hingga15. Setiap retry mendapatkan jendelaAPI_TIMEOUT_MSsendiri. Untuk eksekusi tanpa pengawasan yang perlu menunggu gangguan yang lebih lama, aturCLAUDE_CODE_RETRY_WATCHDOG=1: opsi ini mencoba ulang error kapasitas sementara tanpa batas dan, pada Claude Code v2.1.199 atau lebih baru, menaikkan default untuk error sementara lainnya menjadi300serta menghapus batas pada variabel ini. -
CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: watchdog kemacetan untuk subagent. Selama stream watchdog aktif, defaultnya adalahCLAUDE_STREAM_IDLE_TIMEOUT_MSditambah 5 menit, yang berjumlah600000kecuali Anda menaikkan variabel tersebut. Dengan stream watchdog nonaktif, defaultnya adalah600000. Sebelum v2.1.257, defaultnya selalu600000. Timer di-reset pada setiap event stream. Saat terjadi kemacetan, Claude Code membatalkan subagent dan melaporkan kemacetan tersebut ke induknya. Untuk subagent latar belakang, Claude Code juga menandai tugas sebagai gagal dan melampirkan hasil parsial apa pun. -
CLAUDE_ENABLE_STREAM_WATCHDOGdenganCLAUDE_STREAM_IDLE_TIMEOUT_MS: stream watchdog yang membatalkan permintaan ketika header telah tiba tetapi body respons berhenti di-streaming. Watchdog aktif secara default untuk semua penyedia; aturCLAUDE_ENABLE_STREAM_WATCHDOG=0untuk menonaktifkannya.CLAUDE_STREAM_IDLE_TIMEOUT_MSmemiliki default300000dan dibatasi pada nilai minimum tersebut. Setelah pembatalan, Retry otomatis membahas apa yang dilakukan Claude Code, berdasarkan seberapa jauh respons telah berjalan. Selama watchdog menunggu respons yang ditahan terbuka oleh gateway di belakangANTHROPIC_BASE_URLdengan ping keep-alive, host yang mengaturincludePartialMessagesterus menerima event streamping, jadi baca frame tersebut sebagai tanda aktif alih-alih menghentikan sesi karena timeout saat tidak ada aktivitas. Sebelum v2.1.257, frame tersebut berhenti 5 menit setelah event stream nyata terakhir.
Objek Query
Interface 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 diubah di tengah sesi, seperti memperketat permissions setelah agent membaca input yang tidak tepercaya. setModel() dan setPermissionMode() adalah setter khusus untuk kedua kunci tersebut; applyFlagSettings() adalah bentuk umum yang menerima subset apa pun dari kunci pengaturan, dan meneruskan model di sini berperilaku sama seperti setModel().
Hanya beberapa kunci yang berlaku di tengah sesi:
- Diterapkan pada giliran berikutnya:
effortLevel,ultracode,permissions,hooks,skillOverrides,fastMode,agent. Menggantiagentjuga menerapkan override model dan hook milik agent tersebut pada giliran berikutnya. System prompt-nya diterapkan pada giliran berikutnya, atau, dalam sesi yang menggunakan ulang system prompt yang tercatat, setelah sesi dipadatkan. - Diterapkan selama giliran saat ini:
model. Jika Anda menggantimodelsaat Claude sedang mengerjakan satu giliran, respons yang sedang dihasilkan Claude selesai dengan model lama, dan sisa giliran, dimulai dari panggilan berikutnya yang dilakukan Claude Code ke model, menggunakan model baru. Subagent mempertahankan modelnya sendiri. Sebelum v2.1.212, penggantian di tengah giliran menunggu hingga giliran berikutnya. - Tidak berpengaruh di tengah sesi: opsi system prompt. Opsi ini diresolusi sekali saat startup, sehingga sesi yang sedang berjalan mempertahankan nilai asli meskipun panggilan berhasil. Untuk mengubahnya, mulai sesi baru.
effortLevel menerima nama tingkat effort. Kunci ini juga menerima "ultracode", yang meminta effort xhigh dengan ultracode aktif. applyFlagSettings() mendeklarasikan effortLevel tanpa nilai tersebut, jadi di TypeScript teruskan { ultracode: true, effortLevel: "xhigh" } untuk hasil yang sama, atau kunci ultracode saja untuk mengaktifkan ultracode pada tingkat effort sesi saat ini. Nilai ultracode memerlukan Claude Code v2.1.203 atau lebih baru dan hanya diterima oleh applyFlagSettings(), bukan oleh kunci effortLevel dalam file pengaturan. Sebelum v2.1.284, kunci ultracode saja juga mengatur tingkat menjadi xhigh.
Nilai-nilai tersebut ditulis ke lapisan flag-settings, digabungkan di atas apa yang diatur oleh opsi settings inline dari query() saat startup. Ini adalah tingkat yang sama yang disebut opsi terprogram oleh bagian prioritas di halaman ini.
Panggilan berturut-turut melakukan penggabungan dangkal pada kunci tingkat atas. Panggilan kedua dengan { permissions: {...} } menggantikan seluruh objek permissions dari panggilan sebelumnya alih-alih menggabungkannya secara mendalam.
Untuk menghapus kunci yang Anda atur dengan applyFlagSettings(), teruskan null untuk kunci tersebut. Sebagian besar kunci kemudian kembali terlebih dahulu ke nilai yang diatur opsi settings dari query() saat startup, lalu ke sumber dengan prioritas lebih rendah. model yang dihapus di-reset ke model default Claude Code, bahkan ketika file pengaturan mengatur model. Meneruskan undefined tidak berpengaruh karena serialisasi JSON menghapusnya.
Tiga kunci selain model mereset state sesi alih-alih kembali ke nilai sebelumnya:
effortLevel: nullmengembalikan sesi ke tingkat effort default model, bukan ke opsieffortdariquery()ataueffortLeveldari file pengaturan.agent: nullmenjalankan thread utama tanpa agent, dimulai dari giliran berikutnya, alih-alih memulihkan opsiagentdariquery()atauagentdari file pengaturan. Jika agent yang dihapus telah menerapkan modelnya sendiri, sesi kembali ke model yang diresolusinya saat startup.ultracode: nullmematikan ultracode, sama sepertifalse, alih-alih memulihkan nilaiultracodedari file pengaturan. Sesi mempertahankan tingkat effort saat ini, jadi teruskaneffortLeveldalam panggilan yang sama untuk mengubahnya.
setModel() dan setPermissionMode().
Contoh di bawah mengganti model aktif di tengah sesi, lalu menghapus override sehingga model di-reset ke model default Claude Code.
applyFlagSettings() hanya tersedia di TypeScript. Python SDK tidak menyediakan metode yang setara.updateSettings()
Menulis satu kunci yang ada dalam allowlist ke file pengaturan di disk, sehingga nilainya bertahan untuk sesi berikutnya yang memuat sumber tersebut. Setiap sumber menerima satu kunci, dengan nilai string:
"localSettings": menerimaoutputStyledan menggabungkannya ke dalam file pengaturan lokal proyek,.claude/settings.local.json. Gaya baru berlaku pada permintaan berikutnya dari sesi."userSettings": menerimaeffortLeveldan menyimpannya sebagai tingkat effort default untuk model sesi saat ini, di bawahmodelSettingsdalam file pengaturan pengguna Anda. Meneruskanmaxtidak menulis apa pun, karenamaxhanya berlaku untuk sesi. Sesi yang sedang berjalan tetap mempertahankan tingkat effort saat ini, jadi panggilapplyFlagSettings()jika Anda juga ingin mengubahnya. Sumber ini memerlukan TypeScript SDK v0.3.277 atau lebih baru, yang membundel Claude Code v2.1.277.
settingSources sesi mengecualikan sumber yang Anda sebutkan. Menghapus kunci tidak didukung.
toggleMcpServer()
Menonaktifkan server akan memutus koneksinya dan menghapus tool-nya dari sesi. Untuk server yang Anda tambahkan di tengah sesi dan untuk server in-process, hal ini bergantung pada versi Claude Code Anda:
- Server stdio, SSE, atau HTTP yang Anda tambahkan di tengah sesi dengan
setMcpServers(): penghapusan tool-nya memerlukan Claude Code v2.1.285 atau lebih baru. - Server in-process yang Anda buat dengan
createSdkMcpServer(), baik Anda meneruskannya dalammcpServersmaupun dengansetMcpServers(): pemutusan koneksi dan penghapusan tool-nya memerlukan Claude Code v2.1.286 atau lebih baru. Menonaktifkan server tersebut juga menggagalkan panggilan tool-nya yang masih berjalan, sehingga Claude langsung menerima hasil error untuk masing-masing panggilan, tanpa menunggu handler Anda selesai.
WarmQuery
Handle yang dikembalikan oleh startup(). Subprocess sudah di-spawn dan diinisialisasi, sehingga memanggil query() pada handle ini menulis prompt langsung ke proses yang siap tanpa latensi startup.
Metode
WarmQuery mengimplementasikan AsyncDisposable, sehingga dapat digunakan dengan await using untuk pembersihan otomatis.
SpareProcess
Alpha. Handle yang dikembalikan oleh prewarm(): proses Claude Code yang sudah dimulai tetapi belum terikat ke sesi dan dapat diklaim satu kali. Memerlukan TypeScript Agent SDK v0.3.282 atau lebih baru.
Anggota
options.cwd wajib diisi. Klaim juga dapat mengatur additionalDirectories, model, permissionMode, maxThinkingTokens, overlay flag-settings dalam settings, appendSystemPrompt, title, agents, dan token per sesi dalam env.
Claude Code dapat menolak klaim, misalnya untuk folder yang tidak ada atau folder yang pengaturan proyeknya mengatur env, agent, atau model. Setelah penolakan, prompt yang sudah dikirim claim() mendapat hasil error yang teksnya diawali not_claimed, lalu query yang dikembalikan melempar error. Bungkus loop query dalam blok try untuk melanjutkan melewati error tersebut. Ketika claimed ditolak dengan pesan yang diawali option_not_applied, sesi berjalan tanpa model atau maxThinkingTokens yang Anda minta. Setelah penolakan lainnya, prompt Anda belum dijalankan, jadi mulai sesi dengan query() sebagai gantinya.
SDKControlInitializeResponse
Tipe kembalian dari initializationResult(). Berisi data inisialisasi sesi.
hooks_applied melaporkan apakah Claude Code mendaftarkan hooks yang dibawa oleh permintaan initialize. SDK mengirim permintaan tersebut sekali saat sesi dimulai dan lagi pada setiap panggilan reinitialize(). Field ini memerlukan Agent SDK v0.3.238 atau lebih baru.
Claude Code menghilangkan field ini ketika permintaan tidak membawa hook. Ketika permintaan membawa hook, nilainya bergantung pada apakah permintaan tersebut merupakan initialize pertama sesi dan, untuk permintaan berulang, pada cara permintaan tersebut mencapai sesi:
true: Claude Code mendaftarkan hook. Initialize pertama sesi mengembalikan nilai ini. Initialize berulang yang dikirim melalui stdin CLI juga mengembalikantrue. Dalam kasus tersebut, hook dalam permintaan baru menggantikan hook yang didaftarkan sebelumnya.false: Claude Code mengabaikan hook. Initialize berulang yang dikirim ke sesi remote mengembalikan nilai ini, sehingga klien kedua yang bergabung ke sesi tidak dapat menggantikan hook yang didaftarkan klien pertama.
hooks pada setiap initialize berulang.
Field sdkMcpServerManifests pada permintaan dan field sdk_mcp_manifests_parked pada respons ditujukan untuk server MCP SDK in-process yang Anda buat dengan createSdkMcpServer(). Aplikasi Anda tidak mengatur maupun membaca kedua field tersebut.
claude_code_version adalah versi Claude Code dari proses yang menjalankan giliran sesi. Nilainya sama dengan yang dibawa oleh pesan init SDKSystemMessage, sehingga Anda dapat membaca versi CLI sebelum giliran pertama.
- Field ini memerlukan Agent SDK v0.3.296 atau lebih baru, yang membundel Claude Code v2.1.296.
- Jika field bernilai
undefineddan Anda mengaturpathToClaudeCodeExecutable, arahkan ke Claude Code v2.1.296 atau lebih baru.
fast_mode_state, dan ketika sesuatu memblokir fast mode, fast_mode_disabled_reason membawa kode alasan di sampingnya, sehingga Anda dapat menjelaskan keadaan yang terblokir alih-alih menurunkan ulang ketersediaannya. Kedua perilaku tersebut memerlukan Claude Code v2.1.219 atau lebih baru. Sebelum v2.1.219, respons menghilangkan fast_mode_state ketika fast mode tidak tersedia dan tidak pernah membawa alasan. Untuk kode alasan dan maknanya, lihat fast_mode_disabled_reason pada pesan hasil.
Wrapper respons kontrol untuk initialize yang berhasil juga membawa array pending_permission_requests. Field ini 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 seperti yang di-streaming sesi untuk permintaan izin saat berjalan.
Array ini mencantumkan permintaan izin yang telah diterbitkan oleh proses Claude Code ini dan belum diselesaikan. SDK membaca array ini untuk Anda dan mengirimkan setiap entri ke callback canUseTool Anda, pengiriman ulang yang sama yang dipicu oleh reinitialize() setelah celah transport. Tangani ID permintaan yang berulang secara idempoten, karena sebuah entri dapat mengulangi permintaan yang sudah diterima callback sebelum koneksi terputus.
Array ini selalu ada pada respons initialize yang berhasil dan kosong ketika proses ini tidak memiliki permintaan izin yang belum diselesaikan. Memerlukan Claude Code v2.1.268 atau lebih baru. Versi sebelumnya dapat menghilangkan field ini, jadi jika Anda mem-parsing protokol wire sendiri, anggap field yang hilang sebagai CLI yang lebih lama, bukan sebagai bukti bahwa tidak ada yang tertunda.
SDKControlInterruptResponse
Tanda terima interupsi: nilai yang digunakan interrupt() untuk diselesaikan pada CLI yang mengiklankan kapabilitas interrupt_receipt_v1 dalam SDKSystemMessage.capabilities. Memerlukan Claude Code v2.1.205 atau lebih baru. CLI yang lebih lama menjawab interupsi dengan payload sukses kosong, sehingga interrupt() diselesaikan menjadi undefined.
still_queued mencantumkan UUID pesan pengguna yang tertunda saat interupsi tiba: pesan yang masih dalam antrean, ditambah pesan apa pun yang telah diambil Claude Code dari antrean untuk giliran berikutnya. Setelah giliran pertama sesi dimulai, Claude Code memproses pesan yang tercantum setelah interupsi kecuali Anda membatalkannya terlebih dahulu, dan dapat menggabungkan beberapa pesan ke dalam satu giliran. Jika Anda menginterupsi sebelum giliran pertama dimulai, Claude Code membatalkan giliran tersebut segera setelah dimulai, dan pesan yang tercantum dalam giliran tersebut tidak mendapat respons.
Gunakan tanda terima untuk memutuskan apakah perlu mengirim ulang sesuatu. Pesan tercantum yang tidak Anda batalkan masuk ke percakapan baik mendapat respons maupun tidak, sehingga mengirimnya ulang akan mengirimkannya ke Claude dua kali.
Tafsirkan daftar ini dengan catatan berikut:
- Hanya pesan yang dimasukkan ke antrean dengan UUID yang muncul. Array kosong tidak berarti tidak ada hal lain yang akan berjalan.
- Hanya pesan thread utama yang dicantumkan. Pesan yang ditujukan ke subagent berada di luar cakupan.
- Daftar dapat menyertakan UUID yang tidak pernah dikirim klien Anda, seperti pemicu tugas terjadwal. Abaikan UUID yang tidak Anda kenali alih-alih menganggapnya sebagai error.
interrupt(), dapat mengatur cancel_queued: true pada permintaan kontrol interrupt. Claude Code v2.1.219 dan yang lebih baru mengiklankan dukungan dengan kapabilitas interrupt_cancel_queued_v1 dalam SDKSystemMessage.capabilities; CLI yang lebih lama mengabaikan field ini dan membiarkan pesan dalam antrean berjalan seperti biasa. Interupsi semacam itu juga membatalkan setiap pesan yang seharusnya tercantum di bawah still_queued: tanda terima mencantumkannya di bawah cancelled sebagai gantinya, still_queued kosong, dan tidak ada satu pun yang berjalan.
Daftar cancelled memiliki catatan yang sama dengan still_queued. Metode interrupt() tidak pernah mengirim cancel_queued, sehingga tanda terima yang digunakannya untuk diselesaikan tidak membawa cancelled.
Tanda terima ini adalah snapshot yang diambil pada saat interupsi diproses, dan pada interupsi yang bersih, tanda terima tiba sebelum SDKResultMessage dari giliran yang diinterupsi. Baca tanda terima alih-alih memeriksa antrean setelah hasil tersebut: loop langsung memulai giliran berikutnya dalam antrean, sehingga antrean yang Anda periksa setelah hasil sudah berubah.
SDKControlGetContextUsageResponse
Tipe kembalian dari getContextUsage(). Dengan detail default, ini adalah payload yang sama yang dirender Claude Code untuk perintah /context dalam sesi interaktif, sehingga selain jumlah token, payload ini membawa field tampilan seperti color dan gridRows yang digunakan Claude Code untuk menggambar grid penggunaan /context.
Argumen opsional detail dari metode ini memilih cara Claude Code menghitung setiap kategori. Argumen detail memerlukan Agent SDK v0.3.257 atau lebih baru.
'full': default. Claude Code menghitung setiap kategori dengan permintaan API penghitungan token. Permintaan ini tidak muncul dalam stream pesan, sehingga pelacakan biaya yang membaca stream tidak akan melihatnya. Pada Anthropic API, penghitungan token tidak ditagih.'summary': teruskan{ detail: 'summary' }untuk mendapatkan jawaban dari penggunaan respons terakhir dan estimasi lokal sebagai gantinya. Tidak ada permintaan penghitungan token yang dikirim, dan angka per kategori bersifat perkiraan.
/context sebagai prompt alih-alih memanggil metode ini, Claude Code melampirkan payload SDKContextUsage ke field context_usage dari pesan assistant yang menyampaikan hasilnya. Field tersebut memerlukan Agent SDK v0.3.232 atau lebih baru.
categoriesberisi total per kategori.kindpada setiap entri mengklasifikasikan baris dengan nilai yang sama sepertiSDKContextUsageCategory. Klasifikasikan baris berdasarkan field ini, bukan berdasarkannametampilan. Field ini memerlukan Agent SDK v0.3.268 atau lebih baru.mcpToolsdanagentsmengatribusikan token ke masing-masing tool MCP dan subagent.memoryFilesmencantumkan setiap file memori yang dimuat beserta biayanya.skills.skillFrontmattermengatribusikan token daftar skill ke setiap skill yang disertakan. Jumlah per skill mengukur entri daftar setiap skill sebagaimana sebenarnya dikirim Claude Code, yang bisa lebih pendek daripada frontmatter lengkap skill tersebut. Bandingkanskills.totalSkillsdenganskills.includedSkillsuntuk melihat apakah setiap skill yang ditemukan masuk ke dalam daftar.
totalTokens adalah penggunaan konteks sesi saat ini, dan maxTokens adalah jendela yang menjadi acuan pengukuran penggunaan tersebut. Jendela tersebut adalah context window model, atau jendela auto-compaction yang lebih rendah jika berlaku. rawMaxTokens membawa nilai yang sama dengan maxTokens, dan percentage adalah totalTokens sebagai persentase yang dibulatkan dari jendela tersebut. apiUsage berisi penggunaan dari respons API terbaru, bukan total berjalan untuk sesi.
Claude Code tidak mengisi diagnostik opsional deferredBuiltinTools, systemTools, dan systemPromptSections, jadi anggap field tersebut tidak ada meskipun tipe mendeklarasikannya.
SDKControlReadFileResponse
Tipe kembalian dari readFile().
contents berisi teks file, atau data base64 ketika Anda meminta encoding: 'base64'; field encoding pada respons diatur ke 'base64' dalam kasus tersebut. absPath adalah path absolut yang telah diresolusi. truncated diatur ketika file lebih panjang dari batas maxBytes dan isinya dipotong pada batas tersebut.
Apa yang dapat dibaca readFile()
readFile() melayani kumpulan file yang lebih sempit daripada tool Read:
- File reguler di dalam salah satu direktori kerja sesi, seperti
cwddanadditionalDirectories - Beberapa file milik Claude Code sendiri untuk sesi, seperti hasil tool
Read tetap memblokir path yang cocok, dan aturan allow Read yang luas tidak membuka sisa filesystem untuk readFile(). Untuk hal lainnya, panggilan diselesaikan dengan null.
SDKControlReloadPluginsResponse
Tipe kembalian dari reloadPlugins().
commands,agents, danmcpServers: perintah, subagent, dan status server MCP sesi, dalam bentuk yang sama dengan yang dikembalikansupportedCommands(),supportedAgents(), danmcpServerStatus().supportedAgents()tetap mengembalikan daftar yang diambil saat inisialisasi, jadi bacaagentsdi sini untuk kumpulan setelah pemuatan ulangplugins: setiap plugin yang dimuat besertanamedanpathinstalasinya.versionmengulangi apa yang dideklarasikan manifest plugin dan dikendalikan oleh pembuat plugin, jadi validasi sebelum memercayainya. Field ini dihilangkan ketika manifest tidak mendeklarasikannyaerror_count: jumlah error dari pemuatan plugin
{ holdOnCacheImpact: true } ke reloadPlugins() untuk menahan pemuatan ulang yang akan membatalkan prompt cache percakapan alih-alih menerapkannya. Claude Code menjalankan pemeriksaan yang dilakukan perintah interaktif /reload-plugins sebelum memperingatkan tentang biaya cache. Opsi ini memerlukan Agent SDK v0.3.268 atau lebih baru. Executable Claude Code yang lebih lama dari v2.1.268, seperti yang Anda arahkan melalui pathToClaudeCodeExecutable, mengabaikan opsi ini dan menerapkan pemuatan ulang.
Ketika Anda meneruskan opsi ini, baca held untuk mengetahui apa yang terjadi:
true: pemuatan ulang tidak diterapkan, dan field koleksi menggambarkan sesi sebagaimana adanya saat ini.cache_impactmenjelaskan apa yang akan berubah jika diterapkan. Untuk tetap menerapkannya, panggilreloadPlugins()lagi tanpa opsi tersebut.false: pemeriksaan tidak menemukan dampak cache, dan pemuatan ulang diterapkan.- Tidak ada: Anda tidak meneruskan opsi tersebut, atau executable Claude Code lebih lama dari v2.1.268 dan menerapkan pemuatan ulang.
cache_impact hanya ada bersama held: true. mcp_servers_added dan mcp_servers_removed menyebutkan server MCP plugin yang akan didaftarkan atau dihapus oleh pemuatan ulang, sebagai nama dengan cakupan plugin:<plugin>:<server>. Nama-nama tersebut dibuat oleh pembuat plugin, jadi validasi sebelum menampilkannya. lsp_tool_change menyatakan apakah penerapan akan menambahkan atau menghapus tool LSP, atau null jika tidak melakukan keduanya. Bentuk may- berarti pemeriksaan tidak dapat sepenuhnya melihat kumpulan plugin yang tertunda.
SDKControlReloadSkillsResponse
Tipe kembalian dari reloadSkills().
skills mencantumkan skill yang tersedia setelah pemuatan ulang, dalam bentuk SlashCommand yang sama dengan yang dikembalikan supportedCommands().
SDKControlReloadOutputStylesResponse
Tipe kembalian dari reloadOutputStyles().
available_output_styles mencantumkan nama gaya output bawaan dan kustom yang tersedia setelah pemuatan ulang.
SDKControlMcpReadResourceResponse
Tipe kembalian dari readMcpResource(), yang membawa hasil resources/read dari server MCP. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.
readMcpResource() nama server sebagaimana dilaporkan mcpServerStatus() dan URI ui://, seperti ui.resourceUri yang dideklarasikan tool dalam _meta-nya. Panggilan ditolak untuk skema URI lain, untuk server MCP SDK yang di-host sendiri oleh aplikasi Anda, dan untuk server yang tidak terhubung. Metode ini tersedia ketika capabilities pada pesan init menyertakan mcp_read_resource_v1.
Setiap entri contents adalah satu item konten sebagaimana dikirim server, tanpa kunci _meta apa pun di bawah prefiks com.anthropic/, yang dicadangkan untuk Claude Code. blob berisi data base64 untuk item biner, dan _meta adalah _meta milik item itu sendiri, tempat server MCP Apps meletakkan ui.csp dan ui.permissions dari resource tersebut.
Isinya adalah HTML pihak ketiga yang tidak tepercaya, jadi render di dalam sandbox.
AgentDefinition
Konfigurasi untuk subagent yang didefinisikan secara terprogram.
AgentMcpServerSpec
Menentukan server MCP yang tersedia untuk subagent. Dapat berupa nama server (string yang merujuk ke server dari konfigurasi mcpServers milik induk) atau record konfigurasi server inline yang memetakan nama server ke konfigurasinya.
McpServerConfigForProcessTransport adalah McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.
SettingSource
Mengontrol sumber konfigurasi berbasis sistem file mana yang digunakan SDK untuk memuat pengaturan.
Perilaku default
KetikasettingSources dihilangkan atau bernilai undefined, query() memuat pengaturan sistem file yang sama seperti Claude Code CLI: user, project, dan local. Lihat Hal yang tidak dikontrol oleh settingSources untuk input yang dibaca terlepas dari opsi ini, serta cara menonaktifkannya.
Mengapa menggunakan settingSources
Menonaktifkan pengaturan sistem file:"project" dalam settingSources. Lihat Memodifikasi system prompt untuk mengetahui bagaimana pemuatan CLAUDE.md berinteraksi dengan opsi system prompt.
Prioritas pengaturan
Ketika beberapa sumber dimuat, pengaturan digabungkan dengan urutan prioritas berikut (tertinggi ke terendah):- Pengaturan lokal (
.claude/settings.local.json) - Pengaturan proyek (
.claude/settings.json) - Pengaturan pengguna (
~/.claude/settings.json)
agents, allowedTools, dan settings menimpa pengaturan sistem file user, project, dan local. Pengaturan kebijakan terkelola diutamakan daripada opsi terprogram.
PermissionMode
CanUseTool
Tipe fungsi izin kustom untuk mengontrol penggunaan tool.
Fungsi ini merupakan pengganti SDK untuk permintaan izin interaktif: fungsi ini hanya dipanggil ketika alur evaluasi izin berujung pada permintaan izin. Panggilan tool yang sudah disetujui oleh entri allowedTools, aturan allow dalam pengaturan, atau mode izin, seperti acceptEdits atau bypassPermissions, tidak pernah memanggilnya. Untuk mengendalikan setiap panggilan tool, gunakan hook PreToolUse sebagai gantinya.
Aturan allow tidak menyetujui terlebih dahulu tindakan yang tidak disetujui otomatis oleh mode mana pun; lihat Cara izin dievaluasi untuk mengetahui tindakan mana yang mencapai callback dan apa yang terjadi dalam mode dontAsk dan auto.
Callback biasanya menyelesaikan permintaan dengan mengembalikan
PermissionResult, yang ditulis kembali oleh SDK melalui transport-nya sebagai control_response. Kembalikan null hanya ketika aplikasi Anda telah mengirim control_response untuk permintaan ini melalui saluran miliknya sendiri, dengan menyertakan kembali requestId; SDK kemudian melewati penulisan respons ke transport-nya. Mengembalikan null dalam kasus lain akan membuat panggilan tool terblokir tanpa batas waktu, karena tidak ada control_response yang pernah dikirim dan permintaan izin tidak mengalami timeout.
Opsi requestId dan nilai kembalian null memerlukan Claude Code v2.1.199 atau lebih baru.
PermissionResult
Hasil dari 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:
Jenis Pesan
SDKMessage
Tipe union dari semua pesan yang mungkin dikembalikan oleh kueri.
SDKAssistantMessage
Pesan respons asisten.
message adalah BetaMessage dari Anthropic SDK. Ini mencakup bidang seperti id, content, model, stop_reason, dan usage.
SDKAssistantMessageError adalah salah satu dari: 'authentication_failed', 'oauth_org_not_allowed', 'account_on_hold', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens', 'cloud_credential_error', atau 'unknown'. Empat dari nilai-nilai ini berarti lebih dari yang nama mereka katakan:
'model_not_found': model yang dipilih tidak ada atau tidak tersedia untuk akun atau deployment Anda'overloaded': API mengembalikan 529 karena server mencapai kapasitas, berbeda dengan'rate_limit', yang merupakan 429 terhadap kuota Anda'account_on_hold': akun Anda sedang ditahan'cloud_credential_error': Claude Code tidak dapat memperoleh kredensial AWS atau Google Cloud yang dapat digunakan di mesin tempat ia berjalan, sehingga tidak ada permintaan yang mencapai penyedia cloud. Penyebab umum adalah masuk cloud yang kedaluwarsa atau tidak pernah selesai di mesin itu, meskipun layanan kredensial yang sesaat tidak dapat dijangkau melaporkan nilai yang sama. Lihat Tidak dapat memuat kredensial AWS atau Google Cloud. Memerlukan TypeScript Agent SDK v0.3.267 atau lebih baru, yang menggabungkan Claude Code v2.1.267
aborted adalah true ketika gangguan atau pembatalan memotong pesan asisten sebelum aliran selesai: pesan tidak memiliki stop_reason dan konten mungkin berakhir di tengah kata. Bidang ini tidak ada pada pesan yang diselesaikan secara normal. Ini memerlukan Agent SDK v0.3.214 atau lebih baru.
agent_id mengidentifikasi subagent yang menghasilkan pesan dan tidak ada pada pesan thread utama. Nilainya sama dengan task_id pada task_started dan event tugas lainnya dari subagent tersebut, dan tidak berubah ketika subagent dilanjutkan. Field ini memerlukan Agent SDK v0.3.292 atau yang lebih baru.
Cocokkan pesan subagent dengan event tugasnya berdasarkan agent_id alih-alih memasangkan parent_tool_use_id sebuah pesan dengan tool_use_id sebuah event tugas. Ketika sebuah panggilan tool melanjutkan subagent, event tugas membawa tool_use_id dari panggilan tersebut, sedangkan pesan tetap membawa parent_tool_use_id dari panggilan tool yang pertama kali memulai subagent, sehingga keduanya tidak lagi cocok.
Claude Code menetapkan user_message_uuid dan user_message_uuids pada pesan asisten pertama dari giliran tersebut, dengan ketentuan yang dijelaskan di user_message_uuid. Ketika giliran tersebut melanjutkan giliran yang terinterupsi oleh restart, pesan asisten yang membawa field tersebut juga membawa resume_reason.
timestamp adalah waktu ISO 8601 ketika konten pesan selesai dihasilkan pada proses yang menghasilkannya. Nilai berasal dari jam mesin itu, jadi gunakan hanya untuk tampilan dan jangan urutkan pesan berdasarkannya. Satu giliran API dapat menghasilkan beberapa pesan asisten yang berbagi message.id, masing-masing dengan timestamp sendiri. Ketika bidang tidak ada, kembali ke waktu Anda menerima pesan.
context_usage adalah salinan terstruktur dari laporan /context, diketik sebagai SDKContextUsage, dan memerlukan Agent SDK v0.3.232 atau lebih baru. Ketika Anda mengirim /context sebagai prompt, Claude Code mengirimkan laporan sebagai pesan asisten yang message.content-nya menyimpan tabel markdown, dan melampirkan context_usage ke pesan yang sama. Claude Code tidak menetapkan bidang pada pesan asisten lain mana pun, dan versi sebelumnya mengirimkan tabel /context tanpanya, jadi baca rincian dari bidang ketika ada dan kembali ke teks markdown ketika tidak.
usage_report adalah salinan terstruktur dari laporan /usage, bertipe SDKUsageReport, dan memerlukan Agent SDK v0.3.273 atau yang lebih baru. Ketika Anda mengirim /usage sebagai prompt, Claude Code mengirimkan laporan sebagai pesan asisten yang message.content-nya berisi teks tersebut. Claude Code melampirkan usage_report pada pesan yang sama hanya ketika sesi memenuhi semua kondisi berikut:
- Sesi melakukan autentikasi dengan kredensial claude.ai
- Kredensial menunjukkan tipe paket yang dikenal atau membawa scope
user:profile - Akun tidak menggunakan penagihan berbasis penggunaan
claude setup-token yang diteruskan sebagai CLAUDE_CODE_OAUTH_TOKEN secara default tidak memenuhi syarat, karena hanya membawa scope user:inference. Sesi lain, seperti sesi dengan kunci API, mengirimkan teks tanpa field ini, begitu pula versi sebelumnya. Baca laporan dari field ini ketika ada dan gunakan teks sebagai gantinya ketika tidak ada.
SDKUserMessage
Pesan input pengguna.
pasted_content untuk mengirim konten yang pengguna tempel ke UI prompt Anda daripada ketik, satu entri per tempel, masing-masing string atau array blok konten. Claude Code menambahkan teks setiap entri setelah teks yang diketik, secara berurutan, dan dapat membungkus setiap tempel dalam tag <pasted_content>. Blok selain teks diabaikan, jadi kirim gambar dan dokumen dalam message.content. Memerlukan Agent SDK v0.3.277 atau lebih baru.
Tetapkan inline_pastes untuk memberi tahu Claude Code bagian mana dari message.content yang ditempelkan pengguna alih-alih diketik, satu string per tempelan. Teks prompt tetap berada di tempat pengguna meletakkannya. Claude Code dapat membungkus setiap tempelan yang tercantum dalam tag <pasted_content> di tempatnya berada, sehingga Claude dapat membedakan materi yang ditempelkan dari kata-kata pengguna sendiri. Hanya tempelan di blok teks terakhir prompt yang dibungkus. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.
Setiap field tempelan memiliki batas ukuran:
pasted_content: jika jumlah entri ditambah blok konten di dalamnya melebihi 1.000, Claude Code mengabaikan seluruh field.inline_pastes: Claude Code menggunakan 100 entri pertama yang tidak kosong dan mengabaikan sisanya.
shouldQuery, client_composed, atau priority untuk mengubah cara Claude Code menangani pesan yang Anda kirim:
shouldQuery: atur kefalseuntuk menambahkan pesan ke transkrip tanpa memicu giliran asisten. Pesan ditahan dan digabungkan ke pesan pengguna berikutnya yang memicu giliran. Gunakan ini untuk menyuntikkan konteks, seperti output perintah yang Anda jalankan di luar pita, tanpa menghabiskan panggilan model.client_composed: atur ketrueuntuk membuat Claude Code mengirimkan teks pesan seperti yang ditulis. Claude Code kemudian tidak memperluas penyebutan@pathatau@server:resource, dan tidak menjalankan teks yang dimulai dengan/sebagai perintah. Sementara opsiverbatimPromptsaktif, SDK menetapkan bidang pada setiap pesan. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru dan Claude Code v2.1.248 atau lebih baru.priority: mengontrol kapan pesan yang Anda kirim selama giliran yang sedang berjalan mencapai Claude:'next', atau tanpa fieldpriority: Claude membaca pesan dalam giliran yang sama, segera setelah panggilan tool yang sedang dijalankannya selesai. Jika giliran berakhir lebih dulu, pesan tersebut memulai giliran berikutnya.'later': Claude Code menahan pesan hingga giliran berakhir dan mengirimkannya sebagai giliran baru.'now'denganorigin: { kind: "human" }: pada Claude Code v2.1.286 atau lebih baru, pekerjaan yang dapat berlanjut di latar belakang dipindahkan ke sana, dan Claude membaca pesan dalam giliran yang sama. Pekerjaan yang dapat dipindahkan mencakup perintah shell, subagent, dan panggilan tool MCP. Pada v2.1.287 atau lebih baru, ini juga mencakup panggilan WebFetch dan WebSearch. Ketika Claude hanya sedang menulis respons, atau pekerjaan yang dijalankannya tidak dapat dipindahkan, Claude Code menginterupsi giliran sebagai gantinya dan Claude membaca pesan berikutnya.'now'tanpa origin tersebut: Claude Code menginterupsi giliran dan Claude membaca pesan berikutnya.
tool_result untuk salah satu panggilan tool-nya sendiri, membawa agent_id. Lihat SDKAssistantMessage, yang mendefinisikan field tersebut dan persyaratan versinya.
Pada pesan yang membawa blok tool_result, tool_use_result adalah objek output terstruktur dari tool, bukan teks yang dikirim ke model. Bentuknya bergantung pada tool yang disebutkan oleh blok tool_use yang sesuai, sehingga field ini bertipe unknown; bentuk bawaan tercantum di Tipe Output Tool. Hasil-hasil berikut memerlukan penanganan di luar bentuk yang tercantum:
- Tool
Agent:tool_use_resultadalahAgentOutput. Render dari objek ini alih-alih mengurai tekstool_result.contentdari hasilcompletedberisi laporan subagent, atau, untuk subagent yang laporannya melalui panggilan toolSubagentHandback, catatan singkat tentang penyerahan tersebut sebagai pengganti laporan. Dalam auto mode pada Claude Code v2.1.271 atau lebih baru, setiap subagent yang menghasilkan hasilcompletedmelapor dengan cara tersebut kecuali jika merupakan fork, dan Claude menerima laporan sebagai pesan terpisah dari subagent. - Panggilan WebFetch atau WebSearch yang dipindahkan Claude Code ke latar belakang untuk mengirimkan pesan
'now': pesan pengguna yang membawatool_resultdari panggilan tersebut memilikitool_use_resultyang ditetapkan ke{ detachedToolCall: true }. Panggilan masih berjalan, dan Claude menerima hasilnya setelah selesai. Tidak adatool_resultkedua untuktool_use_idtersebut yang menyusul, jadi jika aplikasi Anda menggambar satu baris untuk setiap panggilan tool, tandai baris ini sebagai dipindahkan ke latar belakang ketika pesan ini tiba. Memerlukan Claude Code v2.1.287 atau lebih baru. - Tool MCP yang hasilnya berisi blok
resource_link:tool_use_resultadalah objek dengan arrayresourceLinksberisi entriSDKMcpResourceLink. Claude menerima setiap tautan sebagai baris teks di bloktool_result, jadi bacaresourceLinksuntuk merender file yang dikembalikan server alih-alih mengurai teks tersebut. Claude Code menghilangkanresourceLinksketika hasil tidak memiliki tautan dan pada hasil dari subagent, menyimpan paling banyak 50 tautan per hasil, dan berhenti menambahkan tautan setelah array mencapai 64 KiB JSON terserialisasi.resourceLinksmemerlukan Agent SDK v0.3.257 atau lebih baru. - Tool MCP yang mengembalikan
structuredContent:tool_use_resultadalah objek yang anggotastructuredContent-nya berisi apa yang dikirim server dan anggotacontent-nya berisi nilaiMcpOutput. Hasil dari subagent tidak membawastructuredContent. - Tool MCP yang
structuredContent-nya terserialisasi menjadi lebih dari 1.048.576 karakter JSON: Claude Code tidak menyertakanstructuredContentpadatool_use_resultdan menetapkanstructuredContentOmitted: truesebagai gantinya, sehingga aplikasi Anda dapat membedakan objek yang dibuang dari tool yang tidak mengirim apa pun. Anggota lainnya, seperticontentdanresourceLinks, tetap ada, dan apa yang diterima Claude tidak berubah. Claude Code v2.1.287 atau yang lebih baru menerapkan batas ini. Dua jenis tool berbeda:- Tool dari server SDK in-process dikecualikan dan mengirimkan objek secara utuh.
- Tool yang entri
tools/list-nya mendeklarasikan resourceui://MCP Apps memiliki batas 8.388.608 karakter pada Claude Code v2.1.295 atau yang lebih baru, dan versi sebelum v2.1.295 mengecualikannya.
SDKUserMessageReplay
Pesan pengguna yang diputar ulang dengan UUID yang diperlukan.
origin-nya adalah peer atau channel, mencapai aliran sebagai pemutaran ulang baik itu disampaikan selama giliran aktif maupun memulai giliran baru saat sesi menganggur. Sebelum v2.1.207, giliran yang disuntikkan yang disampaikan saat sesi menganggur 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 giliran berakhir tanpa kesalahan API.ttft_ms: waktu ke token pertama dalam milidetik, diukur ketika pesan asisten lengkap pertama tiba. Hadir hanya pada lengan kesuksesan.ttft_stream_ms: waktu dalam milidetik hingga acara aliranmessage_startpertama, ketika aliran respons terbuka. Lebih rendah darittft_ms; celah antara keduanya adalah waktu yang dihabiskan untuk streaming pesan pertama. Hadir hanya pada lengan kesuksesan.user_message_uuid:uuiddari pesan yang Anda kirim yang dijawab giliran ini. Lihatuser_message_uuiduntuk hasil mana yang membawanya.user_message_uuids:uuiddari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Lihatuser_message_uuids.resume_reason: alasan giliran ini melanjutkan giliran yang terinterupsi oleh restart. Ada pada kedua cabang. Lihatresume_reason.local_command: nama perintah yang dijalankan giliran, pada hasil kesuksesan giliran yang diselesaikan oleh perintah tanpa memasuki loop agent, seperti/compact. Nama dilipat menjadi huruf kecil dan garis bawah, jadi/reload-pluginsmelaporkanreload_plugins. Perintah yang disediakan server MCP, dan/mcpbawaan, melaporkanmcp. Perintah yang Anda tentukan sendiri melaporkancustom. Argumen tidak pernah disertakan. Tidak ada pada setiap giliran yang memasuki loop agent dan pada pengiriman yang tidak menjalankan perintah. Memerlukan Agent SDK v0.3.268 atau lebih baru.request_sent_wall_ms: epoch milidetik di mana Claude Code mengirim permintaan API, untuk penggabungan dengan stempel waktu sisi server. Hadir hanya bersama denganuser_message_uuid, pada hasil kesuksesan denganis_errorfalse yang gilirannya mengirim permintaan API.first_content_frame_ms: waktu dalam milidetik hingga acara alirancontent_block_startataucontent_block_deltapertama, menghitung thinking block sebagai konten. Hadir hanya pada lengan kesuksesan, ketikais_erroradalah false. Memerlukan Agent SDK v0.3.260 atau lebih baru.first_stream_post_ms,first_stream_post_ack_ms,first_stream_post_wall_ms: waktu untuk mengunggah acara aliran pertama giliran. Claude Code merekamnya hanya dalam sesi yang dialirkan ke claude.ai, seperti sesi cloud, dan hasil yangquery()hasilkan tidak membawanya. Memerlukan Agent SDK v0.3.260 atau lebih baru.usage: loop agent utama saja. Mengecualikan panggilan subagent dan model tambahan, dan per-giliran dalam sesi input streaming. Lebih baik gunakanmodelUsageuntuk akuntansi token/biaya.modelUsage: total per-model untuk setiap panggilan model yang dibuat melalui pipeline kueri selama panggilanquery()ini, termasuk loop utama, subagent, dan panggilan internal seperti compaction dan agent Workflow. Panggilan pembantu di luar pipeline itu, seperti pengklasifikasi izin dan permintaan penghitungan token, dikecualikan. Panggilan yang melanjutkan sesi juga menghitung total per-model yang dipulihkan dari panggilan sebelumnya sesi. Dalam sesi input streaming total bersifat kumulatif di seluruh giliran, jadi baca hasil terbaru daripada menjumlahkan di seluruh hasil. Lihat Lacak biaya dalam mode input streaming untuk pengaturan ulang dan Pulihkan total setelah kerusakan sesi untuk hasil yang dinolkan.total_cost_usd: biaya perkiraan kumulatif dalam USD, mencakup panggilan yang sama denganmodelUsagedan diatur ulang pada titik yang sama. Panggilan yang melanjutkan sesi juga menghitung total yang dipulihkan dari panggilan sebelumnya sesi. Ini adalah perkiraan, bukan pernyataan penagihan. Lihat Lacak biaya dan penggunaan untuk peringatan akurasi.queued_turn_count: jumlah pesan yang Anda kirim denganorigin: { kind: "human" }yang masih menunggu ketika Claude Code menghasilkan hasil. Lihatqueued_turn_countuntuk apa yang0dan bidang yang tidak ada katakan.result_index: posisi hasil ini dalam urutan pengiriman run, menghitung dari 0 di seluruh setiap hasil yang ditulis proses. Hadir pada kedua lengan. Hasil yang penulisannya gagal masih menggunakan nomornya, jadi celah dalam urutan berarti hasil hilang. Memerlukan Agent SDK v0.3.268 atau lebih baru.startup_failure_reason: mengapa Claude Code menolak untuk memulai, pada hasilerror_during_executionyang ditulis sebelum keluar pada kegagalan startup yang diketahui. Lihatstartup_failure_reasonuntuk nilai-nilai dan kegagalan mana yang membawanya. Memerlukan Agent SDK v0.3.274 atau lebih baru.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".fast_mode_disabled_reason: mengapa fast mode tidak tersedia sekarang. Tidak ada ketika tidak ada yang memblokir fast mode, meskipun permintaan mungkin masih berjalan dengan kecepatan standar. Selama cooldown setelah rate limit fast mode, Claude Code melaporkanfast_mode_state: "cooldown"tanpa kode alasan dan mengaktifkan kembali fast mode ketika cooldown berakhir. Memerlukan Claude Code v2.1.219 atau lebih baru.
Pasangan bidang yang sama muncul pada
SDKSystemMessage dan pada SDKControlInitializeResponse, jadi Anda dapat membaca status fast mode sebelum giliran pertama.
Bidang origin meneruskan SDKMessageOrigin dari pesan pengguna yang memicu hasil ini. Ketika SDK menyuntikkan giliran tindak lanjut sintetis, seperti untuk tugas latar belakang yang selesai, SDKResultMessage yang dihasilkan membawa origin: { kind: "task-notification" }. Routine yang pemicunya aktif dan pesan yang diverifikasi server dari sesi lain Anda tiba dengan jenis ini juga, masing-masing dengan subkind yang dijelaskan dalam Subkind notifikasi tugas. Periksa kind untuk membedakan hasil yang menjawab prompt Anda dari tindak lanjut yang disuntikkan sebelum merutekan atau menekan mereka. Jika aplikasi Anda mendeklarasikan run terjadwal, hasil mereka membawa kind: "task-notification" juga, jadi jangan menekan berdasarkan kind saja.
Ketika beberapa penyelesaian tugas latar belakang antri bersama-sama, Claude Code dapat menjawabnya dalam satu giliran daripada satu giliran masing-masing. Setiap penyelesaian masih menghasilkan hasilnya sendiri dengan asal ini. Semua kecuali yang terakhir dari penyelesaian yang Claude Code jawab bersama menghasilkan hasil kosong dengan num_turns: 0, secara berurutan, dan hasil yang terakhir membawa giliran yang menjawab mereka semua.
Bidang tidak ada untuk hasil yang dipancarkan sebelum giliran pengguna apa pun, seperti kesalahan startup.
Ketika hook PreToolUse mengembalikan permissionDecision: "defer", hasil memiliki stop_reason: "tool_deferred" dan deferred_tool_use membawa id, name, dan input tool yang tertunda. Baca bidang ini untuk menampilkan permintaan di UI Anda sendiri, kemudian lanjutkan dengan session_id yang sama untuk melanjutkan. Lihat Tunda panggilan tool untuk nanti untuk perjalanan pulang-pergi lengkap.
user_message_uuid
uuid dari SDKUserMessage yang dijawab giliran, diulang sehingga Anda dapat mencocokkan balasan Claude Code dengan pesan yang Anda kirim. Claude Code mengulangi uuid hanya jika Anda menetapkan satu pada pesan. Bidang ini opsional pada SDKUserMessage, dan prompt string yang dilewatkan ke query() tidak membawa apa pun.
Pesan mana yang dijawab giliran tergantung pada bagaimana giliran dimulai:
- Pesan reguler yang Anda kirim, yang berarti tanpa
isSynthetic: true: giliran menjawab pesan itu untuk seluruh jalannya. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan bidang kemudian membawa hanyauuidpesan terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, gunakanuser_message_uuids. - Pesan yang Anda kirim dengan
isSynthetic: true: giliran menjawab pesan itu pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan yang diambil dari saat itu. Mengulangiuuidpesan sintetis memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada giliran sintetis. - Prompt yang dihasilkan Claude Code untuk melanjutkan giliran yang terinterupsi di bawah
CLAUDE_CODE_RESUME_INTERRUPTED_TURN: ketika prompt terakhir dari giliran yang terinterupsi adalah pesan reguler yang Anda kirim, baik yang membuka giliran maupun yang diambil Claude Code selama giliran, giliran yang dilanjutkan menjawab pesan tersebut pada awalnya.resume_reasonmembedakan frame giliran yang dilanjutkan dari frame upaya yang terinterupsi. Ketika prompt terakhir bukan pesan reguler Anda, giliran yang dilanjutkan tidak menjawab pesan Anda pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan yang diambil tersebut sejak saat itu. Pengembalian prompt giliran yang terinterupsi memerlukan Agent SDK v0.3.268 atau yang lebih baru. - Prompt lain yang dihasilkan Claude Code sendiri: giliran tidak menjawab pesan Anda pada awalnya dan frame-nya tidak membawa echo. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan itu dari saat itu. Echo pengambilan memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada giliran ini.
uuid pesan yang dijawab pada tiga jenis frame:
- Hasil: setiap hasil giliran yang menjawab pesan yang Anda kirim. Setiap hasil seperti itu membawanya pada Agent SDK v0.3.265 atau lebih baru. Sebelum v0.3.265, hasil kesuksesan giliran yang dimulai pesan reguler tidak membawanya ketika giliran tidak mengirim permintaan API atau berakhir dengan panggilan tool yang ditunda. Sebelum v0.3.246, hasil kesalahan juga tidak membawanya, dan sebelum v0.3.216 setiap hasil tidak.
- Balasan pertama giliran: pesan asisten pertama, dan dengan
includePartialMessagesjuga acara aliran pertama yangevent.type-nya bukanping, jadi Anda dapat mengikat balasan sebelum hasil tiba. Echo balasan pertama memerlukan Agent SDK v0.3.246 atau lebih baru. Sebelum v0.3.269, denganincludePartialMessages, Claude Code menetapkannya hanya pada acara aliran pertama itu, atau pada pesan asisten pertama ketika giliran tidak mengalirkan apa pun. Ketika pesan yang dijawab giliran berubah di tengah giliran, balasan pertama setelah perubahan membawa bidang juga, pada Agent SDK v0.3.265 atau lebih baru; versi sebelumnya menetapkannya pada satu frame balasan per giliran. - Setiap frame
thinking_tokensgiliran: jadi Anda dapat mengatribusikan kemajuan thinking ke pesan yang Anda kirim tanpa menunggu balasan pertama giliran. Memerlukan Agent SDK v0.3.260 atau lebih baru.
- Frame balasan selain balasan pertama itu
- Frame subagent
- Giliran yang tidak menjawab pesan Anda, atau menjawab pesan yang Anda kirim tanpa
uuid - Hasil yang tidak menjawab pesan apa pun yang Anda kirim, seperti hasil yang dinolkan setelah proses pekerja yang jatuh
user_message_uuids
uuid dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan user_message_uuid kemudian menamai hanya yang terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, cari uuid pesan itu di mana pun dalam daftar ini. Memerlukan Agent SDK v0.3.259 atau lebih baru.
Claude Code menetapkan daftar bersama dengan user_message_uuid pada setiap frame balasan yang membawa bidang itu dan pada hasil. Untuk set lengkap frame giliran yang mengulangi uuid pesan yang dijawab, dan versi yang masing-masing memerlukan, lihat user_message_uuid. Daftar selalu berisi user_message_uuid dan menyimpan paling banyak 64 entri.
Ketika Claude Code mengambil pesan reguler yang Anda kirim saat giliran berjalan, ia menambahkan uuid pesan itu ke daftar hasil.
Ketika balasan pertama atau hasil membawa user_message_uuid tanpa daftar, itu berasal dari versi Claude Code sebelumnya, jadi kembali ke bidang tunggal.
resume_reason
Alasan giliran ini melanjutkan giliran yang terinterupsi oleh restart. Claude Code menetapkan field ini pada giliran yang melanjutkan giliran terinterupsi di bawah CLAUDE_CODE_RESUME_INTERRUPTED_TURN, sehingga Anda dapat membedakan balasan dan hasil giliran yang dilanjutkan dari upaya yang terinterupsi. Memerlukan Agent SDK v0.3.268 atau yang lebih baru.
Claude Code menetapkan bidang pada dua jenis frame:
- Hasil giliran yang dilanjutkan: pada cabang success maupun error, baik hasil membawa
user_message_uuidmaupun tidak. - Frame balasan giliran yang dilanjutkan: yang membawa
user_message_uuid.
interrupted_turn.
queued_turn_count
Jumlah pesan yang Anda kirim dengan origin: { kind: "human" } yang masih menunggu dalam antrian perintah ketika Claude Code menghasilkan hasil. Memerlukan Agent SDK v0.3.242 atau lebih baru.
Apa yang 0 dan bidang yang tidak ada katakan:
0: Claude Code tidak menghitung pesan yang Anda kirim tanpaoriginitu, dan tidak menghitung notifikasi tugas, jadi giliran masih dapat mengikuti.- Tidak ada: hasil akhir yang Claude Code pancarkan setelah kerusakan atau kesalahan startup fatal menghilangkan bidang, dan mungkin membawa total yang dinolkan.
startup_failure_reason
Mengapa Claude Code menolak untuk memulai, sehingga aplikasi Anda dapat menawarkan perbaikan daripada retry. Claude Code menetapkannya pada hasil error_during_execution yang ditulis sebelum keluar pada kegagalan startup yang diketahui. Hasil itu membawa total yang dinolkan, dan array errors-nya membawa teks yang sama dengan stderr. Bidang tidak ada pada setiap hasil lainnya. Memerlukan Agent SDK v0.3.274 atau lebih baru.
Atur CLAUDE_CODE_STARTUP_FAILURE_RESULTS ke 1 dalam env untuk menerima hasil ini untuk setiap nilai SDKStartupFailureReason. Tanpa variabel itu, Claude Code menulis hasil hanya untuk kegagalan ini, dan sisanya berakhir dengan output stderr, keluar non-nol, dan tidak ada pesan hasil:
- Resume yang Claude Code hentikan karena tidak dapat mengembalikan sesi ke worktree-nya, dengan
worktree_unverifiedatauworktree_resume_refused. Bagian itu mengatakan kesalahan mana yang membawa nilai mana. continueyang ditolak dari percakapan yang dipegang sesi latar belakang, dengansession_held_by_background. Untukresumeyang ditolak dari percakapan seperti itu, Claude Code menulis hasil hanya ketika variabel diatur.
SDKSystemMessage
Pesan inisialisasi sistem.
fast_mode_state melaporkan status fast mode sesi. Ketika sesuatu memblokir fast mode, fast_mode_disabled_reason menamai pemeriksaan yang memblokirnya; bidang memerlukan Claude Code v2.1.219 atau lebih baru. Untuk kode alasan dan artinya, lihat fast_mode_disabled_reason pada pesan hasil.
terminal_slash_commands menamai entri dalam slash_commands yang antarmukanya terikat ke terminal lokal, seperti exit. Anda dapat mengirimnya seperti entri lain dalam slash_commands; bidang ada sehingga klien jarak jauh atau mobile dapat menyembunyikannya dari menu perintah. Bidang ada hanya ketika tidak kosong, dan memerlukan Agent SDK v0.3.229 atau lebih baru.
sourcepada setiap entrimcp_servers: dari mana definisi server berasal, dengan nilai yang sama sepertisourcemilikMcpServerStatus. Memerlukan Agent SDK v0.3.274 atau lebih baru.effort: tingkat effort yang Claude Code kirim pada permintaan sesi berikutnya, ataunullketika tidak mengirim apa pun. Claude Code menetapkan bidang hanya pada pesan init yang dikirimnya ke klien Remote Control, dan menghilangkannya dari pesan init yang dibaca aplikasi Anda. Memerlukan Agent SDK v0.3.234 atau lebih baru.
capabilities menamai perilaku protokol yang diimplementasikan CLI ini, jadi Anda dapat mendeteksi fitur daripada membandingkan string claude_code_version. Ini adalah set terbuka: abaikan nilai yang tidak Anda kenal, dan periksa kemampuan spesifik yang perilakunya Anda andalkan. Bidang memerlukan Claude Code v2.1.205 atau lebih baru dan tidak ada pada CLI sebelumnya.
Array
plugin_errors mencantumkan kegagalan pemuatan plugin. Entri menggambarkan baik plugin yang tidak dimuat dan tidak ada dalam plugins, atau plugin yang dimuat tanpa salah satu bagiannya, seperti file hooks-nya. Kunci dihilangkan ketika tidak ada yang gagal. SDKSystemMessage mendeklarasikan plugin_errors dalam Agent SDK v0.3.283 atau lebih baru.
Ketika direktori atau arsip dari opsi plugins Anda sendiri gagal dimuat, bidang plugin entri menyimpan tag posisional seperti inline[0] daripada nama plugin. Ini terjadi, misalnya, ketika jalur tidak ada atau manifes tidak valid. Cocokkan entri seperti itu dengan opsi Anda berdasarkan bidang path.
Tabel di bawah mencantumkan bidang setiap entri plugin_errors.
SDKPartialAssistantMessage
Pesan parsial streaming (hanya ketika includePartialMessages bernilai true).
Field parent_tool_use_id selalu null: event stream hanya dikeluarkan untuk sesi utama. Untuk atribusi subagent, gunakan pesan lengkap, yang membawa agent_id dan parent_tool_use_id, atau aktifkan forwardSubagentText untuk menerima teks dan thinking subagent sebagai pesan lengkap.
user_message_uuid dan user_message_uuids pada event stream non-ping pertama dari giliran, dan lagi ketika pesan yang dijawab giliran berubah, dengan ketentuan di user_message_uuid. Ketika giliran melanjutkan giliran yang terinterupsi oleh restart, event stream yang membawa field tersebut juga membawa resume_reason.
SDKCompactBoundaryMessage
Pesan yang menunjukkan batas compaction percakapan.
SDKInformationalMessage
Spanduk teks generik yang dipancarkan oleh loop. Membawa peringatan, pemberitahuan, dan baris status non-kesalahan lainnya yang Claude Code naikkan, dan umpan balik hook seperti alasan blokir hook UserPromptSubmit.
Pada Claude Code v2.1.227 atau lebih baru, systemMessage hook dapat tiba sebagai pesan ini, dengan setiap baris diawali oleh nama hook, seperti PostToolUse:Bash says:. Setiap bagian acara pada halaman hooks mengatakan bagaimana output muncul.
Render content sebagai plaintext pada level yang diberikan.
SDKWorkerShuttingDownMessage
Dipancarkan pada pembongkaran pekerja yang anggun sehingga klien jarak jauh dapat menunjukkan mengapa pekerja keluar daripada menunggu timeout detak jantung. 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 instans masa lalu dari pesan ini, jadi abaikan dalam kasus itu.
SDKPluginInstallMessage
Acara kemajuan instalasi plugin. Dipancarkan ketika CLAUDE_CODE_SYNC_PLUGIN_INSTALL diatur, jadi aplikasi Agent SDK Anda dapat melacak instalasi plugin marketplace sebelum giliran pertama. Status started dan completed mengurung instalasi keseluruhan. Status installed dan failed melaporkan marketplace individual dan menyertakan name.
SDKPermissionDeniedMessage
Acara aliran yang dipancarkan ketika sistem izin menolak panggilan tool tanpa permintaan izin interaktif. Gunakan untuk merender penolakan di UI Anda saat terjadi, daripada hanya mengamati hasil tool is_error yang mengikuti. Penolakan mana yang dilaporkan tergantung pada bagaimana run menangani permintaan izin:
- Dengan callback
canUseTooldanpermissionPrompts: 'host'default: permintaan izin pergi ke callback Anda, dan acara ini melaporkan penolakan yang Claude Code putuskan sendiri tanpa memanggilnya. - Tanpa keduanya: run
-ppolos, atauquery()yang tidak menetapkancanUseToolmaupunpermissionPromptToolName, menolak setiap panggilan tool yang akan memicu permintaan izin kecuali hookPermissionRequestmengizinkannya, dan event ini melaporkan penolakan tersebut serta penolakan yang diputuskan Claude Code sendiri. Sebelum v2.1.223, Claude Code tidak mengeluarkan event ini dalam run tanpa callback. - Dengan tool prompt MCP, diatur dengan
permissionPromptToolNameatau flag--permission-prompt-tool, danpermissionPrompts: 'host'default: Claude Code tidak memancarkan acara ini sama sekali, bahkan untuk penolakan aturan yang diputuskannya sendiri. - Dengan
permissionPrompts: 'none': Claude Code menolak panggilan yang akan memunculkan permintaan izin, bahkan ketikacanUseToolatau tool prompt MCP juga diatur, dan acara ini melaporkan penolakan itu serta yang Claude Code putuskan sendiri. Memerlukan Claude Code v2.1.259 atau lebih baru.
PreToolUse, baik hook menolak panggilan sendiri maupun aturan deny menimpa keputusan allow atau ask hook. Acara ini juga best-effort: kadang-kadang Claude Code merekam penolakan tanpa memancarkan acara ini, jadi permission_denials pada pesan hasil adalah catatan otoritatif.
SDKPermissionDenial
Informasi tentang penggunaan tool yang ditolak.
SDKContextUsage
Bentuk terstruktur dari laporan /context, dibawa sebagai context_usage pada SDKAssistantMessage yang mengirimkan hasil /context. Agent SDK v0.3.232 dan lebih baru mengekspor tipe ini. Tidak seperti SDKControlGetContextUsageResponse, ia hanya membawa data yang diperlukan untuk merender rincian penggunaan, tanpa bidang tampilan seperti color dan gridRows. Claude Code menghitung laporan dengan permintaan API penghitungan token yang tidak muncul dalam aliran pesan; lihat bagaimana permintaan ini ditangani.
model hingga over_limit menggambarkan sesi secara keseluruhan, dan bidang koleksi mengatribusikan token ke item individual.
over_limit.kind merekam bagaimana Claude Code menentukan jendela, bukan apakah API menerima permintaan berikutnya:
hard_limit: jendela adalah apa yang Claude Code yakini sebagai batas model itu sendiri, yang jika dilampaui API menolak permintaancompaction_window: jendela adalah jendela kebijakan compaction, yang mungkin atau mungkin tidak bertepatan dengan batas model
SDKContextUsageCategory
Satu baris rincian penggunaan-per-kategori /context.
Setiap nilai
kind mengatakan apa token baris tersebut:
used: konten yang menempati context windowfree: jendela yang tersisabuffer: cadangan compactiondeferred: skema tool yang Claude Code tahan di luar jendela dan kecualikan dari perhitungan penggunaan, dicantumkan sebagai informasi
SDKUsageReport
Bentuk terstruktur dari laporan /usage, dibawa sebagai usage_report pada SDKAssistantMessage yang mengirimkan hasil /usage. Agent SDK v0.3.273 dan yang lebih baru mengekspor tipe ini. Tipe ini bersifat eksperimental: bentuknya dapat berubah.
session dan rate_limits:
session: total biaya dan penggunaan berjalan Claude Code, dibaca dari buku besar yang sama dengantotal_cost_usddanmodelUsagepadaSDKResultMessage. Setiap entrimodel_usageadalahModelUsage.rate_limits: baris penggunaan paket dalamlimitsdan pengeluaran kredit penggunaan dalamextra_usage. Bernilainullketika Claude Code tidak dapat memperoleh penggunaan paket, misalnya ketika token OAuth sesi tidak memiliki scopeuser:profile.
session.total_cost_usd secara lokal dari jumlah token, sehingga nilainya adalah estimasi dan bukan yang ditagihkan paket Anda. Pengeluaran kredit penggunaan yang dilaporkan server adalah blok extra_usage yang terpisah. Lihat Melacak biaya dan penggunaan untuk catatan tentang akurasi.
limits berisi baris penggunaan server sebagaimana dikirim server: meter mana yang berlaku, cakupannya, label, tingkat keparahan, dan urutannya ditentukan server, jadi render baris apa adanya.
- Array kosong berarti server tidak melaporkan meter apa pun.
nullberarti Claude Code tidak memiliki baris untuk dilaporkan.
limits menjelaskan satu meter penggunaan:
Sebelum Agent SDK v0.3.277, tipe ini mendeklarasikan
severity dan is_active sebagai opsional dan nullable, dan sebuah baris dapat tiba tanpa keduanya.
extra_usage adalah pengeluaran dan batas kredit penggunaan untuk periode penagihan sebagaimana dilaporkan server, ada ketika paket memiliki kredit penggunaan. Jumlah dinyatakan dalam satuan kecil dari currency, sen untuk USD.
monthly_limitbernilainullketika akun ini tidak memiliki batas pengeluaran sendiri. Pada paket Team dan Enterprise, jangan rendernullsebagai tidak terbatas.is_enabledbernilaifalseselama kredit penggunaan tidak dapat membayar permintaan.
SDKMessageOrigin
Asal usul pesan peran pengguna. Ini muncul sebagai origin pada SDKUserMessage dan diteruskan ke SDKResultMessage yang sesuai sehingga Anda dapat mengetahui apa yang memicu giliran tertentu.
Subkind notifikasi tugas
Ketika Claude Code mengirimkan notifikasi tugas ke sesi, ia menetapkansubkind pada origin notifikasi jika server Anthropic memverifikasi dari mana notifikasi itu berasal. Ia juga menetapkan subkind ketika aplikasi Anda sendiri mendeklarasikan pesan sebagai run terjadwal, yang memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru. subkind memerlukan Claude Code v2.1.213 atau lebih baru, dan mengambil salah satu dari dua nilai:
scheduled-trigger: notifikasi adalah prompt tersimpan sebuah routine, disampaikan karena salah satu pemicu routine aktif: jadwalnya, pemicu API-nya, pemicu GitHub-nya, atau Run now. Prompt yang aplikasi Anda deklarasikan sebagai run terjadwal membawa nilai ini juga. Claude Code membingkai ini ke model sebagai tugas yang ditugaskan ke sesi, dengan pemberitahuan berbeda dari pemberitahuan yang dibawa notifikasi tugas lain.peer-send-message: notifikasi adalah pesan yang dikirim sesi lain milik Anda dengan toolsend_messagesisi server yang digunakan sesi cloud untuk saling berkirim pesan, bukan toolSendMessagelintas sesi, dan server Anthropic memverifikasi bahwa kedua sesi termasuk dalam grup pribadi sesi yang sama. Memerlukan Claude Code v2.1.224 atau lebih baru. Pengirimansend_messageyang tidak diverifikasi server dengan cara itu tidak mendapat subkind.
subkind. Itu termasuk aktivitas PR yang disampaikan ke sesi dan acara latar belakang seperti tugas yang selesai. Pesan dari tool SendMessage lintas sesi sama sekali bukan notifikasi tugas: baik berasal dari sesi di mesin yang sama maupun melalui server Anthropic dari mesin lain, Claude Code memberinya kind: "peer" dan bidang asal peer.
fireReason mengatakan mengapa notifikasi scheduled-trigger aktif, sebagai token huruf kecil pendek seperti scheduled, manual, retry, catch_up, atau api. Server Anthropic menetapkannya pada pengiriman routine, dan aplikasi Anda menetapkannya ketika mendeklarasikan run terjadwal. Bidang ini tidak ada ketika keduanya tidak mengirimnya. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.
Tugas latar belakang dapat berjalan lebih dari sekali dengan task_id yang sama, misalnya ketika Claude melanjutkan subagent. Setiap eksekusi memiliki run_id sendiri. Ketika notifikasi suatu eksekusi mencapai sesi Anda sebagai pesan pengguna, runId pada origin task-notification pesan tersebut berisi nilai yang sama. Notifikasi dapat tiba setelah eksekusi berikutnya dari tugas tersebut dimulai, dan tetap membawa ID eksekusi sebelumnya. Untuk mengetahui eksekusi mana yang memiliki suatu giliran, bandingkan runId, bukan task_id. Memerlukan TypeScript Agent SDK v0.3.292 atau yang lebih baru.
Deklarasikan run terjadwal
Jika aplikasi Anda menjalankan prompt sesuai jadwalnya sendiri, deklarasikan setiap run sehingga Claude Code membingkai giliran ke model sebagai tugas terjadwal daripada sebagai input langsung dari pengguna. Mulai sesi denganCLAUDE_CODE_HOST_SCHEDULED_RUN diatur ke 1 dalam env, kemudian kirim SDKUserMessage run dengan origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" } dan tanpa isSynthetic. Claude Code mengabaikan deklarasi dalam proses yang dimulai tanpa variabel itu. Ia juga mengabaikannya dalam proses yang lingkungannya membawa CLAUDECODE atau CLAUDE_CODE_CHILD_SESSION. Claude Code menyimpan fireReason hanya ketika nilainya adalah 1 hingga 32 huruf kecil atau garis bawah. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.
Bidang asal peer
Asalpeer mengidentifikasi agent mana yang mengirim pesan: rekan kerja dalam proses yang mengirim ke main dengan SendMessage, atau rekan lintas sesi, sesi Claude Code lain milik Anda. Rekan lintas sesi memerlukan Claude Code v2.1.224 atau lebih baru di macOS dan Linux; lihat ketersediaan pesan lintas sesi untuk persyaratan Windows native. Rekan lintas sesi dapat berjalan di mesin yang sama, atau di mesin lain milik Anda atau di cloud ketika pesannya tiba melalui Remote Control. Dua jenis pengirim mengisi bidang secara berbeda:
from: nama rekan kerja, atau alamat pengirim untuk rekan lintas sesi. Untuk pesan lintas mesin satu arah, pengirim tidak memiliki alamat balasan danfromadalah"unknown". Nilai dibuat oleh pengirim;verifiedPeerPidadalah identitas yang diverifikasi.fromMode: kelas izin sesi pengirim,bypassatauprompting, dideklarasikan oleh host yang meneruskan pesan peer antara sesi Anda, seperti aplikasi desktop. Claude Code membacanya dalam sesi penerima ketika menerapkan kontrol inbound. Memerlukan Agent SDK v0.3.234 atau lebih baru.senderTaskId: ID tugas rekan kerja. Tidak ada untuk rekan lintas sesi.name: nama tampilan pengirim, dinormalisasi oleh Claude Code: ia menghapus code point kontrol, format, surrogate, dan pemisah baris atau paragraf Unicode, kemudian memangkas hasil dan membatasinya pada 64 code point dengan elipsis. Memerlukan Claude Code v2.1.205 atau lebih baru.body: isi pesan yang telah didekode dengan amplop peer dihapus, sama persis per byte dengan apa yang dilihat model. Ada untuk satu pesan rekan tim, tidak ada ketika beberapa pesan digabungkan; untuk peer lintas sesi, hanya ada ketika giliran tersebut tepat berupa satu amplop peer yang dibentuk oleh Claude Code. Tampilkannamedanbodyalih-alih mem-parsing ulang teks pesan. Sebelum v2.1.299, pesan yang digabungkan mempertahankanbodypesan pertama. Memerlukan Claude Code v2.1.205 atau yang lebih baru.fromSession: ID sesi pengirim yang dapat dibuka host, diatur oleh host pengirim sehingga UI Anda dapat menautkan kembali ke sesi pengirim. Sepertifrom, nilainya diklaim oleh pengirim: gunakan hanya sebagai target navigasi, dan jangan perlakukan sebagai bukti identitas pengirim. Memerlukan Claude Code v2.1.216 atau lebih baru.verifiedPeerPid: ID proses dari proses yang terhubung ke soket pesan lintas sesi sesi ini, diverifikasi oleh kernel dan dibaca dari koneksi itu sendiri, tidak pernah dari payload. Gunakan ini, bukanfrom, untuk mengidentifikasi pengirim:fromdapat dipalsukan oleh proses apa pun milik pengguna yang sama. Bidang tidak ada ketika Claude Code tidak dapat memverifikasinya, seperti di Windows atau ingress non-soket, jadi nilai yang tidak ada berarti pengirim tidak diverifikasi. Untuk lalu lintas yang diteruskan, ini mengidentifikasi relay daripada penulis pesan, dan ID proses dapat didaur ulang, jadi perlakukan sebagai asal usul daripada token autentikasi. Memerlukan Claude Code v2.1.216 atau lebih baru.
Tipe Hook
Untuk panduan 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
mcp_server hadir ketika alat berasal dari server MCP; lihat McpServerProvenance. Input PostToolUse, PostToolUseFailure, PermissionRequest, dan PermissionDenied membawa bidang yang sama. Bidang ini memerlukan Agent SDK v0.3.274 atau lebih baru.
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.
PermissionDeniedHookInput
NotificationHookInput
UserPromptSubmitHookInput
UserPromptExpansionHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
StopFailureHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PostCompactHookInput
PreModelSwitchHookInput
Dipicu sebelum perubahan model yang diminta berlaku. context_tokens dan bidang setelahnya memperkirakan biaya pengiriman ulang percakapan ke model baru. Untuk deskripsi bidang lengkap dan semantik pemblokiran, lihat PreModelSwitch.
PostModelSwitchHookInput
Dipicu setelah model sesi berubah. Ini membawa bidang yang sama dengan PreModelSwitchHookInput, dengan dua nilai source tambahan. Lihat PostModelSwitch.
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCreatedHookInput
TaskCompletedHookInput
ElicitationHookInput
ElicitationResultHookInput
ConfigChangeHookInput
InstructionsLoadedHookInput
DirectoryAddedHookInput
directory adalah jalur absolut dari direktori yang ditambahkan. source adalah "slash_command" ketika /add-dir menambahkannya dan "register_repo_root" ketika permintaan kontrol SDK melakukannya.
WorktreeCreateHookInput
WorktreeRemoveHookInput
CwdChangedHookInput
FileChangedHookInput
MessageDisplayHookInput
HookJSONOutput
Nilai pengembalian hook.
AsyncHookJSONOutput
SyncHookJSONOutput
Jenis Input Tool
Dokumentasi skema input untuk tool Claude Code bawaan. Jenis-jenis ini diekspor dari@anthropic-ai/claude-agent-sdk/sdk-tools dan dapat digunakan untuk interaksi tool yang aman tipe.
ToolInputSchemas
Gabungan jenis input tool yang diekspor dari @anthropic-ai/claude-agent-sdk/sdk-tools; anggota mencakup:
Agent
Nama tool:Agent. Nama sebelumnya Task masih diterima sebagai alias, dan array tools dalam pesan init SDKSystemMessage saat ini mencantumkan tool ini sebagai Task untuk kompatibilitas mundur.
Bidang
mode sudah usang dan diabaikan pada Claude Code v2.1.212 atau lebih baru. Subagent berjalan dalam mode izin sesi induk atau permissionMode definisinya, dan aturan pewarisan subagent memutuskan yang mana.AskUserQuestion
Nama tool:AskUserQuestion
Bash
Nama tool:Bash
Monitor
Nama tool:Monitor
command menjalankan skrip dan memancarkan satu peristiwa per baris stdout, dan ws membuka WebSocket dan memancarkan satu peristiwa per frame teks. Berikan tepat satu dari command atau ws. Sumber ws memerlukan Claude Code v2.1.195 atau lebih baru.
timeout_ms adalah batas waktu pengawasan dalam milidetik. Ini default ke 300000 dan menerima nilai hingga 3600000. Batas waktu efektif paling banyak 1800000, yaitu 30 menit, jadi nilai yang diterima lebih besar diperpendek ke itu. Pada batas waktu pengawasan berakhir dan Claude menerima satu pemberitahuan sehingga dapat memulai pengawasan baru jika masih membutuhkannya.
Jenis yang diekspor menandai timeout_ms sebagai wajib karena skema mengisi default; panggilan yang menghilangkannya memvalidasi.
Ketika Monitor menjalankan perintah, ia mengikuti aturan izin yang sama dengan Bash; pengawasan WebSocket meminta persetujuan secara terpisah. Lihat referensi tool Monitor untuk perilaku dan ketersediaan penyedia.
TaskOutput
Dihapus di Claude Code v2.1.277, bersama dengan jenisTaskOutputInput nya. Sebelumnya mengambil output dari tugas latar belakang yang sedang berjalan atau selesai; Claude membaca file output tugas latar belakang dengan Read sebagai gantinya.
Entri disallowedTools atau aturan deny yang masih menamai TaskOutput diabaikan tanpa peringatan.
Edit
Nama tool:Edit
Read
Nama tool:Read
- Gunakan
pagesuntuk rentang halaman PDF (misalnya,"1-5"). allow_largememungkinkan Claude membaca file teks melebihi batas ukuran biasa ketika context window sesi masih memiliki ruang. Ini memerlukan Agent SDK v0.3.296 atau lebih baru, yang menyertakan Claude Code v2.1.296.
tool_result panggilan Read. Pembacaan yang mengembalikan output pdf membawa blok text ringkasan diikuti oleh blok document. Pembacaan yang mengembalikan output parts membawa blok text ringkasan diikuti oleh satu blok per halaman yang diekstrak: blok image, atau blok text yang menamai halaman ketika Claude Code tidak dapat merendernya sebagai gambar. Sebelum Agent SDK v0.3.242, Claude Code mengirimkan konten file sebagai pesan user terpisah setelah hasil tool.
Write
Nama tool:Write
Glob
Nama tool:Glob
Grep
Nama tool:Grep
TaskStop
Nama tool:TaskStop
task_id juga menerima rekan tim tim agent atau agent latar belakang bernama berdasarkan ID atau nama agent.
NotebookEdit
Nama tool:NotebookEdit
WebFetch
Nama tool:WebFetch
offset adalah jumlah karakter yang dilewati dari awal halaman. Claude mengaturnya untuk melanjutkan membaca halaman yang panjang. Bidang ini memerlukan Agent SDK v0.3.290 atau lebih baru.
WebSearch
Nama tool:WebSearch
Workflow
Nama tool:Workflow
Workflow tersedia di Agent SDK v0.3.149 dan lebih baru. Setidaknya satu dari script, name, atau scriptPath diperlukan.
TodoWrite
Nama tool:TodoWrite
Tool berikut tersedia secara default hanya pada Claude Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5, dan model-model sebelumnya. Pada setiap model lainnya, termasuk ID model yang tidak dikenali Claude Code, tool tersebut tidak tersedia kecuali Anda memilih untuk mengaktifkannya:
TodoWriteTaskCreateTaskGetTaskUpdateTaskList
TodoWrite sebagai gantinya ketika Anda menetapkan CLAUDE_CODE_ENABLE_TASKS=0.Set default ini berlaku di Claude Code v2.1.268 dan yang lebih baru, yang dibundel oleh TypeScript Agent SDK dari v0.3.268.Lihat Ketersediaan model untuk memilih.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, di 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.
ExitWorktree
Nama tool:ExitWorktree
keep meninggalkan worktree dan branch di disk, sementara remove menghapus keduanya. discard_changes harus true ketika menghapus worktree yang memiliki file yang belum di-commit atau commit yang belum di-merge.
EnterPlanMode
Nama tool:EnterPlanMode
CronCreate
Nama tool:CronCreate
recurring ke false untuk menembak sekali pada kecocokan berikutnya. Pekerjaan bersifat sesi-scoped secara default, dan melanjutkan dengan --resume atau --continue memulihkan pekerjaan yang belum kedaluwarsa. Lihat Tugas terjadwal.
Mengatur durable ke true meminta persistensi ke .claude/scheduled_tasks.json sehingga pekerjaan bertahan dari restart. Penjadwalan tahan lama tidak tersedia di setiap sesi: ketika tidak, Claude Code menerima durable: true tetapi membuat pekerjaan hanya sesi. Baca bidang durable output untuk melihat apakah pekerjaan bertahan.
CronDelete
Nama tool:CronDelete
CronCreate.
CronList
Nama tool:CronList
.claude/scheduled_tasks.json dan pekerjaan hanya sesi dari sesi saat ini.
ScheduleWakeup
Nama tool:ScheduleWakeup
/loop yang berjalan sendiri. Runtime menjepit delaySeconds antara 60 dan 3600 detik. Bidang delaySeconds, reason, prompt, dan noop diperlukan kecuali stop adalah true. noop: true melaporkan bangun di mana tidak ada yang berubah. Mengatur stop: true membatalkan bangun yang tertunda dan mengakhiri /loop yang berjalan sendiri. Bidang stop memerlukan Claude Code v2.1.202 atau lebih baru. Lihat baris ScheduleWakeup dalam referensi tool.
RemoteTrigger
Nama tool:RemoteTrigger
/schedule. trigger_id diperlukan untuk tindakan get, update, run, dan list_runs. body diperlukan untuk create, update, dan create_webhook_trigger, dan opsional untuk run.
create_webhook_trigger melampirkan sumber peristiwa ke routine yang ada, seperti peristiwa GitHub yang menembaknya. body menamai sumber, peristiwa, dan routine untuk ditembak. Memerlukan Claude Code v2.1.225 atau lebih baru.
list_runs mencantumkan jalankan routine baru-baru ini, dan get_run_log membaca log satu jalankan. session_id menamai jalankan untuk dibaca, dari hasil list_runs, dan cursor menelusuri halaman hasil dari tindakan mana pun. Kedua tindakan memerlukan Claude Code v2.1.227 atau lebih baru.
Tool ini hanya tersedia ketika sesi diautentikasi dengan akun claude.ai pada paket dengan Routines diaktifkan, dan tidak ada ketika kebijakan organisasi Anda menonaktifkan sesi cloud. Pada Claude Code v2.1.227 atau lebih baru, tool juga tidak ada ketika Pemilik telah mematikan routine untuk organisasi. Sebelum v2.1.227, sesi dengan hanya toggle routine yang dimatikan masih menunjukkan tool, dan server menolak panggilannya.
PushNotification
Nama tool:PushNotification
message di bawah 200 karakter karena sistem operasi mobile memotong teks yang lebih panjang. Lihat baris PushNotification dalam referensi tool untuk ketersediaan penyedia; pengiriman push berjalan melalui infrastruktur yang dihosting Anthropic yang tidak dapat diakses dari Amazon Bedrock, Claude Platform di AWS, Platform Agent Google Cloud, atau Microsoft Foundry.
REPL
Dihapus di v2.1.275. Melalui v2.1.274, toolREPL eksperimental dapat dihidupkan dengan CLAUDE_CODE_REPL=1 dalam opsi env.
ReportFindings
Nama tool:ReportFindings
level bersifat opsional dan berisi tingkat effort yang dilaporkan Claude untuk review tersebut. Claude Code tidak membandingkannya dengan tingkat yang digunakan saat review dijalankan, sehingga keduanya dapat berbeda.
Setiap temuan membawa bidang-bidang ini:
file: jalur relatif repo temuan berada.lineopsional adalah baris 1-indexed yang ditambatkan.summary: pernyataan satu kalimat dari cacat.failure_scenariomenjelaskan input konkret dan status yang mengarah ke output yang salah atau crash.short_summary: label terkompresi opsional paling banyak 60 karakter untuk tampilan kompak. Memerlukan Claude Code v2.1.212 atau lebih baru.category: slug kebab-case pendek opsional dari jenis temuan, seperticorrectnessatautest-coverage. Memerlukan Claude Code v2.1.199 atau lebih baru.verdict: ditetapkan ketika lulus verifikasi berjalan; tidak ada pada tinjauan inline-only.outcome: ditetapkan hanya ketika melaporkan kembali setelah menerapkan perbaikan.
Artifact
Nama tool:Artifact
.html atau .md lokal sebagai halaman artefak yang dihosting, atau mencantumkan artefak yang diterbitkan pengguna. Hilangkan action atau lewatkan "publish" untuk menerbitkan file_path, yang diperlukan untuk tindakan publikasi. Setiap bidang di bawah berlaku untuk publikasi:
icon: satu kata generik pendek untuk ikon tab browser artefak, sepertichartataumap. Claude menyertakannya pada publikasi pertama dan menghilangkannya pada pembaruan, yang menjaga ikon artefak yang disimpan.favicon: sudah usang, dan Claude menghilangkannya.title: menamai halaman yang diterbitkan di tab browser dan galeri ketika file HTML tidak memiliki tag<title>.url: menargetkan artefak yang ada untuk diperbarui di tempat alih-alih membuat yang baru.
force adalah penimpa upaya terakhir yang membuang versi yang lebih baru yang diterbitkan sesi lain. Pada konflik, publikasi yang gagal mengembalikan konten yang lebih baru; Claude menggabungkan perubahannya ke konten itu, atau membaca ulang artefak, dan menerbitkan lagi. Lewatkan force hanya ketika pengguna secara eksplisit meminta untuk membuang versi itu.
Lewatkan "list" untuk menghitung artefak yang diterbitkan pengguna; hanya limit dan scope yang dapat menemaninya. scope default ke "mine", yang mencantumkan artefak yang dimiliki pengguna; "shared" mencantumkan artefak yang dibagikan orang lain kepada pengguna, dan "all" mencantumkan keduanya.
limit menetapkan jumlah maksimum artefak yang dikembalikan oleh sebuah daftar, dari 1 hingga 200. limit di atas 50 memerlukan Agent SDK v0.3.292 atau lebih baru. Tanpa limit, daftar mengembalikan hingga 25.
capabilities: kemampuan runtime yang digunakan halaman yang diterbitkan, dikunci berdasarkan nama kemampuan, seperti konektor yang dapat dipanggil halaman. Layanan artefak memvalidasi deklarasi dan menolak publikasi yang menamai kemampuan yang tidak dapat digunakan akun atau memberikan satu konfigurasi yang tidak valid. Lewatkan{}untuk menghapus deklarasi yang disimpan, dan hilangkan bidang pada redeploy untuk menyimpannya. Memerlukan Agent SDK v0.3.235 atau lebih baru.contract: versi runtime yang dijalankan halaman yang diterbitkan. Hilangkan untuk menyimpan versi artefak saat ini, lewatkan"latest"untuk upgrade, atau lewatkan versi tertentu untuk pin atau rollback. Memerlukan Agent SDK v0.3.235 atau lebih baru.
Projects
Nama tool:Projects
method:
project_info: mengembalikan metadata proyek dan daftar doc.project_read: membaca satu doc berdasarkanpath.project_search: menanyakan basis pengetahuan proyek denganquery.nmembatasi hit dan default ke5.project_write: membuat atau mengganti doc dipathdari tepat satu daricontent, yang membawa teks inline, ataulocal_path, yang menamai file di dalam direktori kerja.present_to_user: truemenandai doc yang ditulis sebagai deliverable yang perlu dilihat pengguna.project_delete: menghapus doc berdasarkanpath.
ReadMcpResourceDir
Nama tool:ReadMcpResourceDirTool
resources kosong dan bidang error melaporkan bahwa daftar direktori tidak diaktifkan.
RefreshMcpTools
Nama tool:RefreshMcpTools
CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1 dalam opsi env, dan hanya dalam sesi dengan setidaknya satu server MCP. Memerlukan Claude Code v2.1.211 atau lebih baru.
ShowOnboardingRolePicker
Nama tool:ShowOnboardingRolePicker
McpInput
Nama tool: nama tool MCP dinamis dari bentukmcp__<server>__<tool>
Tipe Output Tool
Dokumentasi skema output untuk tool Claude Code bawaan. Tipe ini dieksport dari@anthropic-ai/claude-agent-sdk/sdk-tools dan mewakili data respons aktual yang dikembalikan oleh setiap tool.
ToolOutputSchemas
Union dari tipe output tool yang dieksport dari @anthropic-ai/claude-agent-sdk/sdk-tools; anggota mencakup:
Agent
Nama tool:Agent. Nama sebelumnya Task masih diterima sebagai alias, dan array tools dalam pesan init SDKSystemMessage saat ini mencantumkan tool ini sebagai Task untuk kompatibilitas mundur.
status: "completed" untuk tugas yang selesai, "async_launched" untuk tugas latar belakang, dan "remote_launched" untuk tugas yang Claude Code kirimkan ke sesi cloud, di mana sessionUrl menautkan ke sesi tersebut dan taskId mengidentifikasinya.
Pada varian completed, resolvedModel menamai model yang dimulai oleh subagent, 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 async_launched, field ini menamai model yang digunakan ketika tugas berpindah ke latar belakang.
modelsUsed mencantumkan model yang digunakan subagent, secara berurutan. Field ini hadir hanya ketika pertukaran tengah-run terjadi, dan model muncul lagi ketika run bertukar kembali ke model tersebut. Pada async_launched, daftar mencakup model yang digunakan sebelum backgrounding. Baik modelsUsed maupun perilaku backgrounding dari resolvedModel memerlukan Claude Code v2.1.212 atau lebih baru.
Jika Claude Code menyimpan worktree terisolasi subagent, worktreePath pada hasil completed adalah tempat menemukannya. worktreeBranch adalah branch-nya, hadir ketika Claude Code membuat worktree dengan git.
Claude Code mengisi usage dan totalTokens dari permintaan API final subagent, bukan dari seluruh run, jadi usage.service_tier adalah string tier layanan yang dilaporkan API pada permintaan tersebut. Ketika ada, usage.output_tokens_details.thinking_tokens adalah jumlah token output permintaan tersebut yang merupakan token thinking. Field output_tokens_details memerlukan TypeScript SDK v0.3.228 atau lebih baru, yang menggabungkan Claude Code v2.1.228. Field fallback_credit memerlukan TypeScript SDK v0.3.285 atau lebih baru, yang menggabungkan Claude Code v2.1.285.
usage.output_tokens_details cocok dengan Usage.output_tokens_details dalam arti, dibatasi pada permintaan final tersebut, tetapi setiap levelnya bersifat opsional di sini. Lindungi baik objek maupun field, misalnya usage.output_tokens_details?.thinking_tokens ?? 0, daripada membacanya secara langsung.
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 “The user responded: …” alih-alih daftar jawaban per-pertanyaan.
Bash
Nama tool:Bash
stdout, stderr, dan backgroundTaskId membawa:
timedOutAfterMs adalah timeout dalam milidetik, diatur ketika perintah mencapai timeout dan berpindah ke latar belakang daripada dimulai di sana secara eksplisit. backgroundCwdHint diatur ketika perintah backgrounded berisi builtin perubahan direktori seperti cd, pushd, popd, atau chdir, dan mencatat bahwa direktori kerja sesi tidak berubah. Kedua field memerlukan Claude Code v2.1.210 atau lebih baru.
Ketika subagent yang berjalan di foreground memiliki perintah backgrounded, perintah berakhir ketika run subagent tersebut berakhir. Claude Code menetapkan backgroundEndsWithFinalResponse ke true pada perintah tersebut, dan menghilangkan field ketika perintah bertahan melewati giliran, seperti perintah yang dimulai oleh percakapan utama atau oleh subagent latar belakang. Field memerlukan Claude Code v2.1.227 atau lebih baru.
Claude Code menetapkan gitOperation.commit.branch ke branch yang dinamai dalam baris ringkasan commit git, dan menghilangkannya untuk commit yang dibuat pada HEAD terpisah. Field memerlukan Agent SDK v0.3.227 atau lebih baru. Claude Code melaporkan perintah gh pr reopen sebagai aksi PR reopened, yang memerlukan Agent SDK v0.3.234 atau lebih baru.
Monitor
Nama tool:Monitor
TaskStop untuk membatalkan watch lebih awal.
Edit
Nama tool:Edit
Read
Nama tool:Read
type.
Write
Nama tool:Write
originalFile dan structuredPatch tergantung pada write:
- Untuk file yang baru dibuat,
originalFileadalah null danstructuredPatchkosong - Pada overwrite,
originalFilemembawa konten sebelumnya, kecuali ketika konten tersebut lebih besar dari sekitar 10 MB: Claude Code kemudian melewatkan diff dan mengembalikanoriginalFilenull danstructuredPatchkosong structuredPatchjuga kosong ketika write tidak mengubah apa pun atau diff timeout
Glob
Nama tool:Glob
totalMatches dan countIsComplete memerlukan Claude Code v2.1.191 atau lebih baru. totalMatches melaporkan jumlah file yang cocok sebelum truncation. Ketika countIsComplete adalah false, totalMatches adalah batas bawah karena pencarian yang mendasar memotong output-nya sendiri.
Grep
Nama tool:Grep
mode: daftar file, konten dengan kecocokan, atau hitungan kecocokan. Dalam mode count, numFiles dan numMatches adalah total di seluruh set hasil, bukan slice yang dipaginasi. Sebelum v2.1.208, head_limit atau offset yang memotong entri yang tercantum juga memotong total tersebut.
totalFiles memerlukan Claude Code v2.1.208 atau lebih baru dan melaporkan jumlah total hasil sebelum paginasi head_limit dan offset dalam mode files_with_matches. totalLines memerlukan Claude Code v2.1.210 atau lebih baru dan melaporkan jumlah total baris sebelum paginasi dalam mode content.
TaskStop
Nama tool:TaskStop
NotebookEdit
Nama tool:NotebookEdit
WebFetch
Nama tool:WebFetch
artifactRead adalah catatan Claude Code sendiri tentang pembacaan artifact, hadir hanya ketika Claude mengambil artifact yang dapat dipublikasikan sesi. Claude Code membacanya kembali ketika sesi dilanjutkan sehingga publikasi kemudian dibangun di atas versi yang tepat; kode Anda tidak perlu bertindak atas hal ini. slug menamai artifact, ver adalah versi yang dibaca catat dan tidak ada ketika tidak mencatat apa pun, dan seeded: false menandai pembacaan yang sumber lengkapnya tidak mencapai Claude. Field seeded memerlukan Agent SDK v0.3.239 atau lebih baru.
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
Tool berikut tersedia secara default hanya pada Claude Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5, dan model-model sebelumnya. Pada setiap model lainnya, termasuk ID model yang tidak dikenali Claude Code, tool tersebut tidak tersedia kecuali Anda memilih untuk mengaktifkannya:
TodoWriteTaskCreateTaskGetTaskUpdateTaskList
TodoWrite sebagai gantinya ketika Anda menetapkan CLAUDE_CODE_ENABLE_TASKS=0.Set default ini berlaku di Claude Code v2.1.268 dan yang lebih baru, yang dibundel oleh TypeScript Agent SDK dari v0.3.268.Lihat Ketersediaan Model untuk opt in.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
ExitWorktree
Nama tool:ExitWorktree
EnterPlanMode
Nama tool:EnterPlanMode
CronCreate
Nama tool:CronCreate
CronDelete
Nama tool:CronDelete
CronList
Nama tool:CronList
.claude/scheduled_tasks.json dan pekerjaan hanya-sesi dari sesi saat ini. Pekerjaan hanya-sesi membawa durable: false; pekerjaan yang dibaca dari disk menghilangkan field.
ScheduleWakeup
Nama tool:ScheduleWakeup
stopped adalah true ketika panggilan mengakhiri loop dengan stop: true. Field ini memerlukan Claude Code v2.1.202 atau lebih baru. Field cancelledWakeups menghitung berapa banyak wake-up yang tertunda yang dibatalkan oleh panggilan stop: true. Nilai 0 berarti tidak ada yang tertunda, dan cron /loop berulang tidak dibatalkan oleh stop: true. Field ini memerlukan Claude Code v2.1.206 atau lebih baru.
RemoteTrigger
Nama tool:RemoteTrigger
PushNotification
Nama tool:PushNotification
ReportFindings
Nama tool:ReportFindings
level yang diteruskan Claude, dan temuan yang diulang kembali untuk body hasil. Memerlukan Claude Code v2.1.196 atau lebih baru. Field short_summary yang diulang kembali memerlukan Claude Code v2.1.212 atau lebih baru.
Artifact
Nama tool:Artifact
url halaman yang dipublikasikan dan path lokal yang dipublikasikan untuk aksi publish, dengan updated diatur ke true ketika publish menerapkan ulang artifact yang ada, dan warnings membawa nasihat apa pun pada waktu publish. Aksi list mengembalikan baris artifacts sebagai gantinya, dengan truncated diatur ketika lebih banyak artifact ada daripada batas yang diminta. Pada listing yang scopenya bukan "mine", setiap baris membawa rel menandai apakah pengguna memiliki artifact atau dibagikan dengan mereka, dan scope output mencatat scope non-default mana yang menghasilkan listing; keduanya tidak ada pada listing default.
Hasil list juga melaporkan total, jumlah artifact yang cocok dengan scope yang dicantumkan, termasuk yang melebihi limit. Ketika total_at_least diatur, angka tersebut adalah batas bawah dan mungkin ada lebih banyak artifact. Kedua field memerlukan Agent SDK v0.3.292 atau lebih baru.
Projects
Nama tool:Projects
method, mencerminkan input. project_read mengembalikan doc teks kecil inline dalam content dan menulis doc yang lebih besar ke jalur local_file sebagai gantinya; project_search mengembalikan RAG hits dengan rag: true ketika indeks proyek tersedia dan kembali ke daftar jalur docs sebaliknya.
ReadMcpResourceDir
Nama tool:ReadMcpResourceDirTool
"inode/directory"; error membawa pesan yang dapat dibaca manusia ketika server tidak dapat mencantumkan direktori.
RefreshMcpTools
Nama tool:RefreshMcpTools
refreshed berarti daftar tool yang di-query ulang diterapkan, error berarti re-query gagal dan set tool sebelumnya disimpan, dan not_connected berarti server tidak memiliki koneksi live untuk query.
ShowOnboardingRolePicker
Nama tool:ShowOnboardingRolePicker
role ketika mereka memilih chip peran atau mengetik satu, dan dismissed: true ketika mereka menutup picker. Objek kosong berarti pengguna menyetujui panggilan tanpa memilih peran.
McpOutput
Nama tool: nama tool MCP dinamis dari bentukmcp__<server>__<tool>
structuredContent atau tautan sumber daya, lihat tool_use_result, yang menyimpan nilai ini dalam anggota content-nya. Pada runtime nilainya juga dapat undefined, meskipun tipe yang dieksport tidak memodelkan ini.
Tipe Izin
PermissionUpdate
Operasi untuk memperbarui izin.
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
Tipe Lainnya
ApiKeySource
Tempat asal kunci API untuk permintaan sesi, dilaporkan sebagai apiKeySource pada pesan inisialisasi SDKSystemMessage.
Agent SDK v0.3.234 dan yang lebih baru mencantumkan empat nilai ini dalam tipe. Tipe juga menyimpan
user, project, org, temporary, dan oauth sehingga kode yang lebih lama masih dapat dikompilasi, dan Claude Code tidak melaporkannya.
SdkBeta
Fitur beta yang tersedia yang dapat diaktifkan melalui opsi betas. Lihat Beta headers untuk informasi lebih lanjut.
SlashCommand
Informasi tentang perintah yang tersedia.
builtin bernilai true pada baris ketika perintah adalah milik Claude Code sendiri dan mengetik /name menjalankannya. Field ini tidak ada untuk perintah yang didefinisikan oleh pengguna, proyek, plugin, atau server MCP, dan untuk perintah bawaan yang digantikan menurut nama oleh salah satu dari mereka. Memerlukan Agent SDK v0.3.277 atau lebih baru.
ModelInfo
Informasi tentang model yang tersedia.
AgentInfo
Informasi tentang subagent yang tersedia yang dapat dipanggil melalui tool Agent.
McpServerProvenance
Server MCP yang melayani tool mcp__*, dan tempat asal definisi server itu. Input hook PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest, dan PermissionDenied membawanya sebagai mcp_server, dan opsi CanUseTool membawanya sebagai mcpServer. Keduanya menghilangkannya untuk tool yang tidak berasal dari server MCP.
source mengambil salah satu nilai berikut. Set ini terbuka, jadi perlakukan nilai yang tidak Anda kenali sebagai sumber yang dikonfigurasi, tidak pernah sebagai sdk:
sdk: server dalam proses yang didaftarkan aplikasi Anda. Hanya aplikasi host SDK yang dapat mendaftarkannya, jadi server yang dikonfigurasi tidak pernah melaporkansdk, apa pun namanya.plugin: server yang disediakan plugin.name-nya adalah bentukplugin:<plugin-name>:<server-name>yang bersifat scoped seperti yang dijelaskan di bawah server MCP yang disediakan plugin.- Cakupan konfigurasi:
user,project,local,dynamic,managed,enterprise,claudeai, atauagent. Server.mcp.jsonmelaporkanproject, dan cakupan instalasi MCP mendefinisikanlocal,project, danuser. Server yang diteruskan aplikasi Anda dalam opsimcpServers, selain server SDK dalam proses, melaporkandynamic.
source, bukan pada name atau awalan nama tool mcp__<server>__. Untuk sumber apa pun selain sdk, name adalah teks yang tidak dipercaya: escape sebelum ditampilkan.
McpServerProvenance dan field yang membawanya memerlukan Agent SDK v0.3.274 atau lebih baru.
McpServerStatus
Status server MCP yang terhubung.
source menyatakan tempat asal definisi server, dengan nilai dan aturan kepercayaan yang sama seperti source pada McpServerProvenance. Field ini memerlukan Agent SDK v0.3.274 atau lebih baru dan tidak ada pada versi sebelumnya.
_meta pada entri tools membawa anggota MCP Apps dari _meta tool itu, sehingga aplikasi Anda dapat menemukan sumber daya ui:// untuk dirender dengan readMcpResource(). Claude Code meneruskan objek ui dan string datar ui/resourceUri yang sudah deprecated, dan menahan setiap kunci lainnya. Di dalam ui, resourceUri adalah string ui:// dan visibility adalah array "model" dan "app" ketika server menetapkannya, dan anggota lainnya diteruskan tanpa perubahan. Claude Code menghapus salah satu kunci tersebut ketika nilainya tidak valid, dan menghilangkan _meta dari tool yang tidak mendeklarasikan keduanya. Field ini hadir hanya ketika capabilities pesan inisialisasi mencakup mcp_tool_ui_meta_v1, dan memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.
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 catatan terkait penagihan.
thinkingTokens menghitung thinking token yang dihasilkan model ini. outputTokens sudah mencakupnya, jadi jangan menjumlahkan keduanya. Field ini tidak ada sampai sebuah giliran berjalan pada versi Claude Code yang mencatatnya, jadi sesi yang dilanjutkan yang dimulai pada versi sebelumnya melaporkan hitungan sebagian. thinkingTokens memerlukan Agent SDK v0.3.257 atau lebih baru.
Field canonicalModel dan provider memerlukan Claude Code v2.1.218 atau lebih baru. canonicalModel adalah ID model kanonik yang digunakan pencarian harga; nilainya dapat berbeda dari string model mentah yang menjadi kunci entri, misalnya ketika string itu adalah ID khusus penyedia atau alias.
provider menamai backend API yang melayani model, seperti firstParty, bedrock, vertex, foundry, anthropicAws, mantle, atau gateway.
costBasis menamai tabel harga yang menentukan harga permintaan terbaru model: list untuk harga daftar, managed untuk tabel modelPricing, atau unknown ketika tidak ada yang cocok dengan ID model. Field ini memerlukan Claude Code v2.1.246 atau lebih baru.
ConfigScope
NonNullableUsage
Versi Usage dengan semua field nullable dibuat non-nullable kecuali fallback_credit, yang masih dapat bernilai null.
Usage
Statistik penggunaan token. Ini adalah tipe BetaUsage dari @anthropic-ai/sdk.
BetaServerToolUsage, BetaIterationsUsage, BetaOutputTokensDetails, dan BetaFallbackCreditUsage didefinisikan dalam @anthropic-ai/sdk.
output_tokens_details merinci output yang ditagih menurut kategori. Saat ini field ini membawa satu field, thinking_tokens: number, yang menghitung token output yang dihasilkan model sebagai penalaran internal, termasuk pembatas thinking block. Field output_tokens_details memerlukan TypeScript SDK v0.3.228 atau lebih baru, yang menyertakan Claude Code v2.1.228.
- Penagihan: baca rincian ini untuk observabilitas, bukan untuk penagihan.
output_tokenstetap menjadi total otoritatif, danoutput_tokens - thinking_tokensmendekati output non-penalaran. - Apa yang dihitung: penalaran mentah yang dihasilkan model, yang dapat lebih panjang daripada teks thinking yang dikembalikan dalam badan respons. API menghitungnya dengan melakukan tokenisasi ulang teks mentah itu, jadi hasilnya dapat berbeda beberapa token dari hitungan generasi eksak model.
- Streaming: pada pesan asisten yang di-streaming, rincian ini, seperti
output_tokens, adalah placeholdermessage_startdan tidak membawa hitungan nyata, jadi bacalah dariusagepada pesan hasil seperti yang dijelaskan di Baca token output dari pesan hasil. Pada pesan hasil,thinking_tokensbernilai0ketika model atau penyedia tidak melaporkan rincian. - Kasus
null:output_tokens_detailssendiri bernilainullpada pesan asisten yang disintesis Claude Code, seperti pesan error API.
Usage membawa fallback_credit bergantung pada @anthropic-ai/sdk yang Anda instal, yang menambahkannya di 0.115.0.
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.
SDKMcpResourceLink
Satu file yang dikembalikan tool MCP melalui referensi. Claude Code membangun setiap entri dari blok resource_link dalam hasil tool dan mengirimkan daftarnya sebagai resourceLinks pada SDKUserMessage.tool_use_result, atau sebagai resource_links pada SDKTaskNotificationMessage ketika panggilan selesai di latar belakang. Memerlukan Agent SDK v0.3.257 atau lebih baru.
uri atau name-nya bukan string, dan menghilangkan field opsional yang nilainya bukan dari tipe yang tercantum.
ThinkingConfig
Mengontrol perilaku thinking/penalaran Claude. Diutamakan daripada maxThinkingTokens yang sudah deprecated.
display opsional mengontrol apakah teks thinking dikembalikan "summarized" atau "omitted". Pada Claude Opus 4.7 dan yang lebih baru, default API adalah "omitted", jadi atur "summarized" untuk menerima konten thinking dalam blok thinking. Claude Code tidak meneruskan nilai display Anda ke beberapa penyedia, seperti Amazon Bedrock dan Agent Platform Google Cloud. Pada penyedia tersebut, Opus 4.7 dan yang lebih baru mengembalikan blok thinking kosong bahkan ketika Anda menetapkan display ke "summarized".
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 menghentikan proses. Teruskan sebagai opsi signal ke spawn() Node, atau teruskan ke handler teardown VM atau container Anda.Signal ini tidak terpicu pada saat Options.abortController membatalkan. SDK pertama-tama menutup stdin proses dan menunggu sekitar dua detik sehingga CLI dapat berhenti dengan bersih, kemudian membatalkan signal ini. Untuk bereaksi tepat saat pemanggil membatalkan, dengarkan Options.abortController.signal Anda sendiri, yang dapat direferensikan fungsi spawn Anda dari cakupan penutupnya.McpSetServersResult
Hasil operasi setMcpServers().
setMcpServers(), Claude Code menerapkan aturan berikut:
- Server yang tidak disebutkan dalam panggilan: di luar sesi cloud, Claude Code memutuskan koneksi server yang ditambahkan oleh panggilan
setMcpServers()sebelumnya dan server SDK dalam proses, lalu mencantumkannya dalamremoved. Server lainnya tetap berjalan dan tidak dicantumkan dalamremoved, di antaranya server stdio, HTTP, dan SSE dari opsimcpServers, server dari file pengaturan, dan server yang disediakan plugin. - Server yang disebutkan dalam panggilan: Claude Code mengganti server stdio, HTTP, atau SSE yang ditambahkan oleh panggilan
setMcpServers()sebelumnya hanya ketika konfigurasinya berbeda dari yang Anda teruskan. Server SDK dalam proses yang sudah terdaftar dengan nama tersebut tetap seperti apa adanya, jadi untuk menggantinya, keluarkan server itu dari satu panggilan dan tambahkan pada panggilan berikutnya. - Server bawaan yang dimulai CLI saat startup: jika panggilan menyebutkan salah satunya, Claude Code menghapus entri itu dan melaporkannya dalam
errors.
added mencantumkan server yang ditambahkan atau diganti Claude Code, terlepas dari apakah server tersebut terhubung. Server yang gagal terhubung muncul di added dan errors, dengan teks kegagalan di bawah errors dan baris failed dalam mcpServerStatus(). Sebelum Claude Code v2.1.257, server yang upaya koneksinya melempar error dilaporkan hanya di bawah errors.
RewindFilesResult
Hasil operasi rewindFiles().
skippedLinks menghitung jalur yang dilacak yang ditolak rewind untuk dipulihkan atau dihapus demi keamanan link: symlink, hard link, atau file non-reguler lainnya di jalur yang dilacak, direktori parent yang tidak lagi mengarah ke tempat yang ditunjuknya ketika checkpoint diambil, atau backup yang tidak dapat dibaca dengan aman. Field ini memerlukan Claude Code v2.1.216 atau lebih baru. Panggilan pratinjau dengan rewindFiles(userMessageId, { dryRun: true }) tidak pernah menetapkannya.
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 subagent latar belakang. Untuk field run_id dan ambient, lihat SDKTaskStartedMessage, yang mendefinisikannya beserta persyaratan versinya.
reason ditetapkan ketika tugas berakhir karena penyebab selain penyelesaian, kegagalan, atau penghentiannya sendiri, dan memerlukan Agent SDK v0.3.273 atau lebih baru. Claude Code menetapkannya hanya dalam sesi yang terhubung melalui claude.ai: sesi cloud, termasuk yang berjalan pada runner yang di-host sendiri, dan sesi Remote Control. Panggilan query() lokal tidak pernah menetapkannya. Satu-satunya nilainya, worker_restart, berarti proses Claude Code yang menjalankan tugas tersebut dimulai ulang. Notifikasi membawa status "stopped", jadi perlakukan tugas tersebut sebagai tidak selesai maupun gagal.
Ketika Claude Code memindahkan panggilan tool MCP yang panjang ke latar belakang, blok tool_result untuk panggilan itu hanya berisi placeholder dan hasil nyata panggilan tiba dalam notifikasi ini. Cocokkan notifikasi dengan panggilan menggunakan tool_use_id. Pada notifikasi completed, resource_links mencantumkan file yang dikembalikan tool melalui referensi sebagai entri SDKMcpResourceLink, dengan batas 50 link dan 64 KiB yang sama seperti tool_use_result.resourceLinks. Claude Code menghilangkan resource_links ketika hasil tidak memiliki link dan pada notifikasi untuk tugas yang bukan panggilan tool MCP. resource_links memerlukan Agent SDK v0.3.257 atau lebih baru.
Claude Code menambahkan pemberitahuan di awal setiap notifikasi tugas yang dikirimnya ke model, kecuali pengiriman yang ditandai dengan subkind scheduled-trigger, yang membawa framing tugas yang ditugaskan sebagai gantinya. Pemberitahuan tersebut menyatakan bahwa tidak ada input manusia yang terjadi, sehingga model tidak memperlakukan notifikasi sebagai instruksi atau persetujuan pengguna.
Untuk mendeteksi giliran notifikasi tugas, periksa origin.kind === "task-notification" pada SDKUserMessage atau SDKResultMessage alih-alih mencocokkan teks pemberitahuan. Baca subkind dari field yang sama jika Anda perlu tahu apa yang memicunya. Sebelum v2.1.205, Claude Code tidak menyertakan pemberitahuan pada notifikasi yang tiba saat sesi sedang idle.
SDKToolUseSummaryMessage
Ringkasan penggunaan tool dalam percakapan.
SDKHookStartedMessage
Dipancarkan ketika hook mulai dieksekusi.
Claude Code mengirimkan pesan ini, SDKHookProgressMessage, dan SDKHookResponseMessage ke stream pesan dengan segera, termasuk saat hook SessionStart atau Setup masih berjalan selama startup sesi. Claude Code v2.1.169 hingga v2.1.203 mengirimkan pesan-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 dieksekusi.
SDKToolProgressMessage
Dipancarkan secara berkala saat tool sedang dieksekusi untuk menunjukkan kemajuan.
tool_progress setiap 30 detik dengan heartbeat: true. Setiap heartbeat membawa nama tool dan jumlah detik yang telah berlalu, sehingga Anda dapat membedakan panggilan yang berjalan lama dari sesi yang macet. Claude Code tidak memancarkan heartbeat untuk panggilan tool di dalam subagent. Field heartbeat memerlukan Agent SDK v0.3.214 atau lebih baru. Sebelum v2.1.257, Claude Code juga tidak memancarkan heartbeat untuk panggilan tool Agent foreground.
Pada pesan tool_progress untuk tool Agent selain heartbeat, subagent_type menamai tipe subagent yang sedang berjalan, seperti general-purpose. subagent_retry hadir saat subagent itu menunggu backoff error API, seperti rate limit atau kelebihan beban, dengan satu pesan per upaya retry. Kedua field memerlukan Agent SDK v0.3.214 atau lebih baru.
Untuk merender indikator retry dari subagent_retry:
- Lacak indikator berdasarkan
parent_tool_use_id, yang unik per subagent.tool_use_iddibagikan oleh subagent paralel dari satu giliran asisten, jadi melacak berdasarkan itu akan membuat pembaruan satu subagent menghapus indikator subagent lain. - Hapus indikator ketika
tool_progressberikutnya untukparent_tool_use_idyang sama tiba tanpasubagent_retrymaupunheartbeat: true, atau ketika pesan hasil tool tiba. Frame denganheartbeat: truehanya melaporkan bahwa proses masih aktif, jadi pertahankan indikator ketika frame tersebut tiba.attemptdapat melebihimax_retriesdalam retry persisten, jadi jangan menentukan penghapusan dari penghitung. - Perlakukan
error_categorysebagai token untuk memilih teks pesan Anda sendiri, bukan sebagai teks tampilan. Nilainya adalahrate_limit,overloaded,authentication_failed,server_error,cloud_credential_error, danunknown. Tangani nilai yang tidak Anda kenali dengan cara yang sama seperti Anda menanganiunknown, karena rilis berikutnya dapat menambahkan nilai.
SDKAuthStatusMessage
Dipancarkan selama alur autentikasi.
SDKTaskStartedMessage
Dipancarkan ketika tugas dimulai. Field task_type bernilai "local_bash" untuk perintah Bash dan watch Monitor, "local_agent" untuk subagent, atau "remote_agent".
run_id mengidentifikasi satu eksekusi tugas. Ketika tugas berjalan lagi dengan task_id yang sama, seperti subagent yang dilanjutkan Claude, eksekusi baru mendapatkan run_id baru. Field ini memerlukan Agent SDK v0.3.292 atau lebih baru. Gunakan untuk memisahkan eksekusi-eksekusi dari satu tugas:
- Cocokkan pesan dengan eksekusi: pesan
task_started,task_progress,task_updated, dantask_notificationdari satu eksekusi membawarun_idyang sama. Entri eksekusi tersebut dalam setiapSDKBackgroundTasksChangedMessagejuga membawanya, demikian pularunIdpada origin pesan pengguna yang mengirimkan notifikasi eksekusi tersebut. - Deteksi pesan yang terlambat: jika dibandingkan sebagai string biasa, ID eksekusi dari satu tugas terurut sesuai urutan dimulainya eksekusi, jadi pesan yang
run_id-nya terurut sebelum eksekusi yang sedang Anda tampilkan berasal dari eksekusi sebelumnya. Perlakukan nilai ini sebagai opaque selain untuk perbandingan tersebut. - Gunakan
task_idsebagai fallback: ketika pesan tidak membawarun_id, sepertitask_notificationyang dipancarkan sesi yang dilanjutkan untuk menutup tugas yang dimulai oleh proses sebelumnya, atribusikan pesan tersebut berdasarkantask_id.
task_started memiliki task_id yang sama, dan notifikasi yang mengakhiri eksekusi pertama membawa ID eksekusi pertama:
ambient bernilai true untuk tugas yang bukan bagian dari pekerjaan sesi, seperti tugas yang dijalankan Claude Code untuk operasinya sendiri. Pemantau pembaruan langsung juga bersifat ambient, termasuk pemantau yang diminta pengguna. Kecualikan tugas ambient dari indikator aktivitas. Field ini memerlukan Agent SDK v0.3.247 atau lebih baru.
ambient juga muncul pada SDKTaskNotificationMessage dan pada entri SDKBackgroundTasksChangedMessage.
is_backgrounded dan spawn_depth menjelaskan bagaimana Claude Code memulai tugas. Kedua field memerlukan Agent SDK v0.3.238 atau lebih baru.
is_backgrounded: Claude Code menetapkannya pada tugas"local_agent"dan"local_bash".trueberarti tugas berjalan di latar belakang.falseberarti tugas berjalan di foreground, dan panggilan tool yang memulainya tetap terblokir sampai tugas selesai atau pindah ke latar belakang.spawn_depth: Claude Code menetapkannya hanya pada tugas"local_agent". Subagent yang di-spawn oleh thread utama memiliki kedalaman1. Subagent yang di-spawn oleh subagent berkedalaman1memiliki kedalaman2, dan seterusnya.
is_backgrounded: true, karena Claude Code menjalankan setiap subagent yang dilanjutkan di latar belakang. Ketika tugas foreground kemudian pindah ke latar belakang, Claude Code melaporkan nilai is_backgrounded yang baru dalam pesan task_updated alih-alih mengirimkan task_started kedua.
parent_task_id menyimpan task_id dari subagent yang meluncurkan tugas ini. Gunakan untuk mengelompokkan setiap tugas di bawah subagent yang memulainya. Claude Code menetapkannya pada tugas subagent, Bash, dan Monitor. Field ini memerlukan Agent SDK v0.3.292 atau lebih baru. Field ini tidak ada ketika:
- Thread utama meluncurkan tugas
- Claude Code tidak lagi melacak tugas parent
- Rekan tim atau agent di dalam workflow meluncurkan tugas
SDKTaskProgressMessage
Dipancarkan secara berkala saat subagent atau tugas latar belakang sedang berjalan. Untuk field run_id, lihat SDKTaskStartedMessage, yang mendefinisikannya beserta persyaratan versinya.
Untuk tugas subagent, field summary membawa ringkasan kemajuan yang dihasilkan model dan diisi hanya ketika agentProgressSummaries diaktifkan. Untuk panggilan tool MCP yang dipindahkan ke latar belakang, summary membawa kemajuan terbaru yang dilaporkan server MCP dan tidak bergantung pada opsi itu.
SDKTaskUpdatedMessage
Dipancarkan ketika status tugas latar belakang berubah, seperti ketika beralih 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, yang dapat dibandingkan dengan Date.now(). Untuk field run_id, lihat SDKTaskStartedMessage, yang mendefinisikannya beserta persyaratan versinya.
SDKBackgroundTasksChangedMessage
Dipancarkan setiap kali set tugas latar belakang yang aktif berubah: tugas dimulai, selesai, atau dihentikan paksa; agent foreground dipindahkan ke latar belakang; atau field description, ambient, atau parent_task_id suatu tugas berubah. Untuk field run_id dan parent_task_id pada setiap entri, lihat SDKTaskStartedMessage, yang mendefinisikannya beserta persyaratan versinya.
Array tasks adalah set aktif lengkap. Ganti set yang di-cache dengan setiap payload alih-alih memasangkan event task_started dan task_notification, sehingga perubahan keanggotaan berikutnya memperbaiki event apa pun yang Anda lewatkan.
Ketika tugas berakhir, task_updated dan task_notification-nya tiba sebelum background_tasks_changed yang menghapusnya dari daftar. Di luar itu, urutan relatif terhadap event per-tugas tidak ditentukan.
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.
Ketika Anda mengirimkan permintaan kontrol initialize berulang ke sesi yang sedang berjalan, seperti dengan reinitialize() setelah jeda transport, Claude Code menyusulkan respons dengan snapshot set aktif saat ini, bahkan ketika set tersebut kosong. Dengan demikian, host yang terhubung kembali mengetahui apa yang sedang berjalan tanpa menunggu perubahan keanggotaan berikutnya. Sebelum Agent SDK v0.3.239, Claude Code tidak mengirimkan snapshot setelah initialize berulang.
Memerlukan Claude Code v2.1.203 atau lebih baru.
subagent_type menamai tipe subagent pada entri yang task_type-nya bernilai "local_agent", seperti general-purpose atau nama subagent kustom. Field ini memerlukan Agent SDK v0.3.293 atau lebih baru.
SDKThinkingTokensMessage
Dipancarkan saat Claude menghasilkan thinking block, termasuk yang diredaksi. estimated_tokens adalah estimasi berjalan dari thinking token yang dihasilkan sejauh ini dalam blok saat ini, dan estimated_tokens_delta adalah kenaikan yang dibawa frame ini. Gunakan estimasi ini untuk tampilan kemajuan.
Ketika model atau penyedia melaporkan rincian, hitungan akhir untuk loop agent tingkat atas adalah usage.output_tokens_details.thinking_tokens pada pesan hasil, yang tidak mencakup token subagent.
Memerlukan Claude Code v2.1.153 atau lebih baru.
SDKSessionStateChangedMessage
Dipancarkan ketika Claude Code melaporkan status sesi. Untuk menerima pesan-pesan ini, atur CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS=1. Claude Code dapat melaporkan status yang sama lebih dari sekali, jadi baca pesan sebagai status sesi saat ini, bukan sebagai transisi.
Field state membawa salah satu nilai berikut:
running: sesi sedang bekerja.idle: Claude Code sedang menunggu prompt Anda berikutnya.requires_action: sesi terblokir menunggu jawaban atas permintaan yang dikirimnya ke host Anda, seperti permintaan izin.
idle suatu giliran dan pesan result-nya dapat tiba dalam urutan apa pun. Untuk mengubah apakah idle menunggu pekerjaan latar belakang seperti subagent latar belakang atau eksekusi workflow, lihat CLAUDE_CODE_BG_TASKS_REPORT_RUNNING.
SDKFilesPersistedEvent
Dipancarkan ketika checkpoint file disimpan ke disk.
SDKRateLimitEvent
Dipancarkan ketika sesi mengalami rate limit.
errorCode bernilai "credits_required", penolakan berasal dari langganan claude.ai yang penggunaan bawaannya sudah habis, dan sesi tidak dapat dilanjutkan sampai pengguna membeli kredit penggunaan. canUserPurchaseCredits menunjukkan apakah pengguna yang diautentikasi dapat membeli kredit untuk akun tersebut, dan hasChargeableSavedPaymentMethod menunjukkan apakah ada metode pembayaran yang tersimpan. Ketiga field ini tidak ada pada event rate limit yang bukan penolakan karena memerlukan kredit. Memerlukan Claude Code v2.1.181 atau lebih baru.
SDKLocalCommandOutputMessage
Claude Code tidak memancarkan tipe pesan ini. Ketika Anda mengirimkan perintah seperti /context atau /usage sebagai prompt, outputnya tiba sebagai SDKAssistantMessage.
SDKCommandsChangedMessage
Dipancarkan ketika set perintah yang tersedia berubah di tengah sesi, seperti ketika Claude Code menemukan skills saat agent memasuki subdirektori. Array commands adalah daftar lengkap yang diperbarui, jadi ganti daftar perintah yang di-cache dengan payload ini. Memanggil supportedCommands() setelah pesan ini mengembalikan daftar terbaru yang sama, karena metode tersebut melacak push terbaru; ini memerlukan Agent SDK v0.3.216 atau lebih baru. Dalam versi SDK sebelumnya, supportedCommands() mengembalikan snapshot yang ditangkap saat inisialisasi dan tidak pernah mencerminkan perubahan di tengah sesi.
Claude Code juga memancarkan pesan ini ketika prompt server MCP masuk ke atau keluar dari daftar, misalnya ketika server selesai terhubung setelah sesi dimulai. Ini memerlukan Claude Code v2.1.281 atau lebih baru.
SDKPromptSuggestionMessage
Dipancarkan setelah giliran ketika promptSuggestions diaktifkan dan Claude Code menghasilkan saran untuk giliran itu. Berisi prediksi prompt pengguna berikutnya. Untuk giliran yang tidak mendapat saran, lihat Ketika Claude Code melewatkan saran.
SDKConversationResetMessage
Dipancarkan ketika percakapan sesi diganti tanpa mengakhiri sesi. Dalam panggilan query(), hanya /clear dan aliasnya yang menghasilkan pesan ini. Pasang transkrip kosong di bawah new_conversation_id dan buang judul sesi yang di-cache.
trigger: apa yang membuang percakapan. Atur ulang transkrip Anda pada setiap pesanconversation_reset, termasuk pesan yang field ini tidak ada atau membawa nilai yang tidak Anda kenali.user_message_uuid:uuiddari pesan pengguna yang membawa/clear. Gunakan untuk mencocokkan reset dengan pesan itu.timestamp: kapan reset terjadi, sebagai string ISO 8601 dalam UTC. Gunakan untuk tampilan, bukan untuk mengurutkan pesan.
trigger, user_message_uuid, dan timestamp memerlukan Claude Code v2.1.281 atau lebih baru.
Typing yang dipublikasikan SDK mendeklarasikan SDKConversationResetMessage dalam Claude Code v2.1.203 dan yang lebih baru. Sebelum v2.1.203, SDKMessage mereferensikan tipe tersebut tanpa mendeklarasikannya, sehingga penyempitan pada type === "conversation_reset" gagal dalam typecheck ketika skipLibCheck dinonaktifkan.
AbortError
Kelas error kustom untuk operasi abort.
AbortError adalah satu-satunya kelas error dalam API bertipe SDK. Kegagalan lainnya, seperti proses Claude Code keluar atau gagal diluncurkan, menolak iterasi pesan dengan error yang tidak membawa kelas SDK untuk dicocokkan. Pemecahan masalah mengelompokkan error tersebut berdasarkan pesan, beserta penyebab dan perbaikan untuk masing-masing.
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.
Entri excludedCommands Anda sebagai gantinya mengambil perintah keluar dari sandbox tanpa keterlibatan model; sandbox.excludedCommands mencakup kapan entri berlaku.
Dalam contoh di bawah, isCommandAuthorized mewakili pemeriksaan otorisasi yang Anda tentukan.
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