Skip to main content

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 dengan bun 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 objek Query 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

Mengembalikan Promise<WarmQuery> yang diselesaikan setelah subprocess telah dispawn dan menyelesaikan handshake inisialisasinya.

Contoh

Panggil startup() 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 berdasarkan lastModified 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:
  • sessionId bukan UUID
  • sesi tidak dapat ditemukan, atau tidak memiliki pesan
  • upToMessageId tidak 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.
Snapshot berbeda dari apa yang diterapkan sesi live query():
  • policyHelper: resolveSettings() membaca sumber MDM, termasuk plist macOS dan Windows HKLM/HKCU, tetapi tidak mengeksekusi subprocess policyHelper yang dikonfigurasi admin.
  • Pengaturan terkelola server: resolveSettings() tidak mengambil pengaturan terkelola server. Lewatkan mereka sebagai options.serverManagedSettings untuk menyertakannya.
  • defaultMode: snapshot mengembalikan permissions.defaultMode apa 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 menetapkan cleanupPeriodDays, 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 opsi env:
  • API_TIMEOUT_MS: timeout per permintaan pada klien Anthropic, dalam milidetik. Default 600000. Berlaku untuk loop utama dan semua subagent.
  • CLAUDE_CODE_MAX_RETRIES: jumlah retry API maksimum. Default 10, dibatasi hingga 15. Setiap retry mendapatkan jendela API_TIMEOUT_MS sendiri. Untuk eksekusi tanpa pengawasan yang perlu menunggu gangguan yang lebih lama, atur CLAUDE_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 menjadi 300 serta menghapus batas pada variabel ini.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: watchdog kemacetan untuk subagent. Selama stream watchdog aktif, defaultnya adalah CLAUDE_STREAM_IDLE_TIMEOUT_MS ditambah 5 menit, yang berjumlah 600000 kecuali Anda menaikkan variabel tersebut. Dengan stream watchdog nonaktif, defaultnya adalah 600000. Sebelum v2.1.257, defaultnya selalu 600000. 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_WATCHDOG dengan CLAUDE_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; atur CLAUDE_ENABLE_STREAM_WATCHDOG=0 untuk menonaktifkannya. CLAUDE_STREAM_IDLE_TIMEOUT_MS memiliki default 300000 dan 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 belakang ANTHROPIC_BASE_URL dengan ping keep-alive, host yang mengatur includePartialMessages terus menerima event stream ping, 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. Mengganti agent juga 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 mengganti model saat 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: null mengembalikan sesi ke tingkat effort default model, bukan ke opsi effort dari query() atau effortLevel dari file pengaturan.
  • agent: null menjalankan thread utama tanpa agent, dimulai dari giliran berikutnya, alih-alih memulihkan opsi agent dari query() atau agent dari file pengaturan. Jika agent yang dihapus telah menerapkan modelnya sendiri, sesi kembali ke model yang diresolusinya saat startup.
  • ultracode: null mematikan ultracode, sama seperti false, alih-alih memulihkan nilai ultracode dari file pengaturan. Sesi mempertahankan tingkat effort saat ini, jadi teruskan effortLevel dalam panggilan yang sama untuk mengubahnya.
Hanya tersedia dalam mode input streaming, batasan yang sama seperti 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": menerima outputStyle dan menggabungkannya ke dalam file pengaturan lokal proyek, .claude/settings.local.json. Gaya baru berlaku pada permintaan berikutnya dari sesi.
  • "userSettings": menerima effortLevel dan menyimpannya sebagai tingkat effort default untuk model sesi saat ini, di bawah modelSettings dalam file pengaturan pengguna Anda. Meneruskan max tidak menulis apa pun, karena max hanya berlaku untuk sesi. Sesi yang sedang berjalan tetap mempertahankan tingkat effort saat ini, jadi panggil applyFlagSettings() jika Anda juga ingin mengubahnya. Sumber ini memerlukan TypeScript SDK v0.3.277 atau lebih baru, yang membundel Claude Code v2.1.277.
Panggilan ditolak ketika permintaan membawa kunci lain, ketika sesi berjalan melalui transport remote, dan ketika 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 dalam mcpServers maupun dengan setMcpServers(): 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 mengembalikan true. 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.
Sebelum Agent SDK v0.3.238, respons tidak pernah membawa field ini, dan Claude Code mengabaikan 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 undefined dan Anda mengatur pathToClaudeCodeExecutable, arahkan ke Claude Code v2.1.296 atau lebih baru.
Respons selalu melaporkan 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.
Klien yang menjalankan protokol kontrol CLI secara langsung, bukan melalui 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.
Ketika Anda mengirim /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.
Baca atribusi token dari field koleksi:
  • categories berisi total per kategori. kind pada setiap entri mengklasifikasikan baris dengan nilai yang sama seperti SDKContextUsageCategory. Klasifikasikan baris berdasarkan field ini, bukan berdasarkan name tampilan. Field ini memerlukan Agent SDK v0.3.268 atau lebih baru.
  • mcpTools dan agents mengatribusikan token ke masing-masing tool MCP dan subagent.
  • memoryFiles mencantumkan setiap file memori yang dimuat beserta biayanya.
  • skills.skillFrontmatter mengatribusikan 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. Bandingkan skills.totalSkills dengan skills.includedSkills untuk 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 cwd dan additionalDirectories
  • Beberapa file milik Claude Code sendiri untuk sesi, seperti hasil tool
Aturan deny dan ask 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().
Field koleksi menggambarkan sesi setelah panggilan:
  • commands, agents, dan mcpServers: perintah, subagent, dan status server MCP sesi, dalam bentuk yang sama dengan yang dikembalikan supportedCommands(), supportedAgents(), dan mcpServerStatus(). supportedAgents() tetap mengembalikan daftar yang diambil saat inisialisasi, jadi baca agents di sini untuk kumpulan setelah pemuatan ulang
  • plugins: setiap plugin yang dimuat beserta name dan path instalasinya. version mengulangi apa yang dideklarasikan manifest plugin dan dikendalikan oleh pembuat plugin, jadi validasi sebelum memercayainya. Field ini dihilangkan ketika manifest tidak mendeklarasikannya
  • error_count: jumlah error dari pemuatan plugin
Teruskan { 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_impact menjelaskan apa yang akan berubah jika diterapkan. Untuk tetap menerapkannya, panggil reloadPlugins() 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.
Teruskan ke 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.
Di mana McpServerConfigForProcessTransport adalah McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.

SettingSource

Mengontrol sumber konfigurasi berbasis sistem file mana yang digunakan SDK untuk memuat pengaturan.

Perilaku default

Ketika settingSources 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:
Memuat hanya sumber pengaturan tertentu:
Untuk memuat instruksi proyek CLAUDE.md, sertakan "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):
  1. Pengaturan lokal (.claude/settings.local.json)
  2. Pengaturan proyek (.claude/settings.json)
  3. Pengaturan pengguna (~/.claude/settings.json)
Opsi terprogram seperti 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:
Untuk informasi lengkap tentang membuat dan menggunakan plugin, lihat Plugin.

Jenis Pesan

SDKMessage

Tipe union dari semua pesan yang mungkin dikembalikan oleh kueri.

SDKAssistantMessage

Pesan respons asisten.
Bidang 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
Token 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.
Atur 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.
Tetapkan shouldQuery, client_composed, atau priority untuk mengubah cara Claude Code menangani pesan yang Anda kirim:
  • shouldQuery: atur ke false untuk 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 ke true untuk membuat Claude Code mengirimkan teks pesan seperti yang ditulis. Claude Code kemudian tidak memperluas penyebutan @path atau @server:resource, dan tidak menjalankan teks yang dimulai dengan / sebagai perintah. Sementara opsi verbatimPrompts aktif, 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 field priority: 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' dengan origin: { 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.
Pesan ini, yang dikirim saat giliran sedang berjalan, meminta Claude mengubah arah tanpa kehilangan perintah shell yang masih berjalan:
Pesan pengguna yang dihasilkan subagent, seperti 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_result adalah AgentOutput. Render dari objek ini alih-alih mengurai teks tool_result. content dari hasil completed berisi laporan subagent, atau, untuk subagent yang laporannya melalui panggilan tool SubagentHandback, catatan singkat tentang penyerahan tersebut sebagai pengganti laporan. Dalam auto mode pada Claude Code v2.1.271 atau lebih baru, setiap subagent yang menghasilkan hasil completed melapor 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 membawa tool_result dari panggilan tersebut memiliki tool_use_result yang ditetapkan ke { detachedToolCall: true }. Panggilan masih berjalan, dan Claude menerima hasilnya setelah selesai. Tidak ada tool_result kedua untuk tool_use_id tersebut 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_result adalah objek dengan array resourceLinks berisi entri SDKMcpResourceLink. Claude menerima setiap tautan sebagai baris teks di blok tool_result, jadi baca resourceLinks untuk merender file yang dikembalikan server alih-alih mengurai teks tersebut. Claude Code menghilangkan resourceLinks ketika 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. resourceLinks memerlukan Agent SDK v0.3.257 atau lebih baru.
  • Tool MCP yang mengembalikan structuredContent: tool_use_result adalah objek yang anggota structuredContent-nya berisi apa yang dikirim server dan anggota content-nya berisi nilai McpOutput. Hasil dari subagent tidak membawa structuredContent.
  • Tool MCP yang structuredContent-nya terserialisasi menjadi lebih dari 1.048.576 karakter JSON: Claude Code tidak menyertakan structuredContent pada tool_use_result dan menetapkan structuredContentOmitted: true sebagai gantinya, sehingga aplikasi Anda dapat membedakan objek yang dibuang dari tool yang tidak mengirim apa pun. Anggota lainnya, seperti content dan resourceLinks, 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 resource ui:// 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.
Giliran pengguna yang disuntikkan dari luar sesi, yang jenis 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.
Beberapa bidang pada hasil membawa detail diagnostik di luar subtype:
  • api_error_status: kode status HTTP dari kesalahan API yang mengakhiri percakapan. Tidak ada atau null ketika 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 aliran message_start pertama, ketika aliran respons terbuka. Lebih rendah dari ttft_ms; celah antara keduanya adalah waktu yang dihabiskan untuk streaming pesan pertama. Hadir hanya pada lengan kesuksesan.
  • user_message_uuid: uuid dari pesan yang Anda kirim yang dijawab giliran ini. Lihat user_message_uuid untuk hasil mana yang membawanya.
  • user_message_uuids: uuid dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Lihat user_message_uuids.
  • resume_reason: alasan giliran ini melanjutkan giliran yang terinterupsi oleh restart. Ada pada kedua cabang. Lihat resume_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-plugins melaporkan reload_plugins. Perintah yang disediakan server MCP, dan /mcp bawaan, melaporkan mcp. Perintah yang Anda tentukan sendiri melaporkan custom. 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 dengan user_message_uuid, pada hasil kesuksesan dengan is_error false yang gilirannya mengirim permintaan API.
  • first_content_frame_ms: waktu dalam milidetik hingga acara aliran content_block_start atau content_block_delta pertama, menghitung thinking block sebagai konten. Hadir hanya pada lengan kesuksesan, ketika is_error adalah 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 yang query() 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 gunakan modelUsage untuk akuntansi token/biaya.
  • modelUsage: total per-model untuk setiap panggilan model yang dibuat melalui pipeline kueri selama panggilan query() 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 dengan modelUsage dan 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 dengan origin: { kind: "human" } yang masih menunggu ketika Claude Code menghasilkan hasil. Lihat queued_turn_count untuk apa yang 0 dan 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 hasil error_during_execution yang ditulis sebelum keluar pada kegagalan startup yang diketahui. Lihat startup_failure_reason untuk 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 melaporkan fast_mode_state: "cooldown" tanpa kode alasan dan mengaktifkan kembali fast mode ketika cooldown berakhir. Memerlukan Claude Code v2.1.219 atau lebih baru.
Gunakan kode alasan untuk menjelaskan mengapa fast mode mati di UI Anda sendiri daripada menurunkan ulang ketersediaan. Setiap kode menamai pemeriksaan yang memblokir fast mode: 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 hanya uuid pesan terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, gunakan user_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. Mengulangi uuid pesan 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_reason membedakan 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.
Claude Code mengulangi 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 includePartialMessages juga acara aliran pertama yang event.type-nya bukan ping, jadi Anda dapat mengikat balasan sebelum hasil tiba. Echo balasan pertama memerlukan Agent SDK v0.3.246 atau lebih baru. Sebelum v0.3.269, dengan includePartialMessages, 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_tokens giliran: 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.
Claude Code menghilangkan bidang dalam kasus-kasus ini:
  • 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_uuid maupun tidak.
  • Frame balasan giliran yang dilanjutkan: yang membawa user_message_uuid.
Nilainya adalah token huruf kecil yang pendek, seperti 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 tanpa origin itu, 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_unverified atau worktree_resume_refused. Bagian itu mengatakan kesalahan mana yang membawa nilai mana.
  • continue yang ditolak dari percakapan yang dipegang sesi latar belakang, dengan session_held_by_background. Untuk resume yang ditolak dari percakapan seperti itu, Claude Code menulis hasil hanya ketika variabel diatur.
Setiap nilai menamai satu penolakan:

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.
  • source pada setiap entri mcp_servers: dari mana definisi server berasal, dengan nilai yang sama seperti source milik McpServerStatus. Memerlukan Agent SDK v0.3.274 atau lebih baru.
  • effort: tingkat effort yang Claude Code kirim pada permintaan sesi berikutnya, atau null ketika 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.
Array 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.
Claude Code menetapkan 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 canUseTool dan permissionPrompts: 'host' default: permintaan izin pergi ke callback Anda, dan acara ini melaporkan penolakan yang Claude Code putuskan sendiri tanpa memanggilnya.
  • Tanpa keduanya: run -p polos, atau query() yang tidak menetapkan canUseTool maupun permissionPromptToolName, menolak setiap panggilan tool yang akan memicu permintaan izin kecuali hook PermissionRequest mengizinkannya, 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 permissionPromptToolName atau flag --permission-prompt-tool, dan permissionPrompts: '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 ketika canUseTool atau 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.
Dalam setiap konfigurasi, acara ini melewati penolakan apa pun yang diputuskan pada jalur hook 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.
Tabel mencantumkan apa yang Claude Code masukkan dalam setiap bidang. Bidang dari 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 permintaan
  • compaction_window: jendela adalah jendela kebijakan compaction, yang mungkin atau mungkin tidak bertepatan dengan batas model
Claude Code mengembangkan tipe secara aditif, menambahkan data baru sebagai bidang opsional daripada membentuk ulang yang ada. Baca bidang yang Anda ketahui dan abaikan yang tidak Anda kenal.

SDKContextUsageCategory

Satu baris rincian penggunaan-per-kategori /context.
Tabel mencantumkan apa yang Claude Code masukkan dalam setiap bidang baris. Setiap nilai kind mengatakan apa token baris tersebut:
  • used: konten yang menempati context window
  • free: jendela yang tersisa
  • buffer: cadangan compaction
  • deferred: 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.
Field tingkat atas adalah session dan rate_limits:
  • session: total biaya dan penggunaan berjalan Claude Code, dibaca dari buku besar yang sama dengan total_cost_usd dan modelUsage pada SDKResultMessage. Setiap entri model_usage adalah ModelUsage.
  • rate_limits: baris penggunaan paket dalam limits dan pengeluaran kredit penggunaan dalam extra_usage. Bernilai null ketika Claude Code tidak dapat memperoleh penggunaan paket, misalnya ketika token OAuth sesi tidak memiliki scope user:profile.
Claude Code menghitung 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.
  • null berarti Claude Code tidak memiliki baris untuk dilaporkan.
Setiap baris 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_limit bernilai null ketika akun ini tidak memiliki batas pengeluaran sendiri. Pada paket Team dan Enterprise, jangan render null sebagai tidak terbatas.
  • is_enabled bernilai false selama 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 menetapkan subkind 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 tool send_message sisi server yang digunakan sesi cloud untuk saling berkirim pesan, bukan tool SendMessage lintas sesi, dan server Anthropic memverifikasi bahwa kedua sesi termasuk dalam grup pribadi sesi yang sama. Memerlukan Claude Code v2.1.224 atau lebih baru. Pengiriman send_message yang tidak diverifikasi server dengan cara itu tidak mendapat subkind.
Setiap notifikasi tugas lain tidak memiliki 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 dengan CLAUDE_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

Asal peer 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 dan from adalah "unknown". Nilai dibuat oleh pengirim; verifiedPeerPid adalah identitas yang diverifikasi.
  • fromMode: kelas izin sesi pengirim, bypass atau prompting, 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. Tampilkan name dan body alih-alih mem-parsing ulang teks pesan. Sebelum v2.1.299, pesan yang digabungkan mempertahankan body pesan 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. Seperti from, 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, bukan from, untuk mengidentifikasi pengirim: from dapat 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.
Bidang 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.
Meluncurkan agent baru untuk menangani tugas kompleks multi-langkah secara otonom.

AskUserQuestion

Nama tool: AskUserQuestion
Menanyakan pertanyaan klarifikasi kepada pengguna selama eksekusi. Lihat Menangani persetujuan dan input pengguna untuk detail penggunaan.

Bash

Nama tool: Bash
Mengeksekusi perintah Bash dengan timeout opsional dan eksekusi latar belakang. Direktori kerja tetap ada di antara perintah, termasuk perintah yang dijalankan di giliran berikutnya dari sesi multi-giliran; status shell seperti environment variable yang diekspor tidak. Untuk batas pada perubahan direktori mana yang bertahan, lihat Apa yang bertahan di antara perintah. Untuk apa yang menetapkan batas latar depan, lihat Timeout dan batas output. Untuk batas waktu latar belakang, lihat Batas waktu untuk perintah latar belakang.

Monitor

Nama tool: Monitor
Menjalankan sumber latar belakang dan mengirimkan setiap peristiwa ke Claude sehingga dapat bereaksi tanpa polling: 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 jenis TaskOutputInput 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
Melakukan penggantian string yang tepat dalam file.

Read

Nama tool: Read
Membaca file dari sistem file lokal, termasuk teks, gambar, PDF, dan notebook Jupyter.
  • Gunakan pages untuk rentang halaman PDF (misalnya, "1-5").
  • allow_large memungkinkan 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.
Untuk PDF, Claude menerima konten file di dalam konten 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
Menulis file ke sistem file lokal, menimpa jika ada.

Glob

Nama tool: Glob
Pencocokan pola file cepat yang bekerja dengan ukuran codebase apa pun.

Grep

Nama tool: Grep
Tool pencarian yang dibangun di atas ripgrep dengan dukungan regex.

TaskStop

Nama tool: TaskStop
Menghentikan tugas latar belakang atau shell yang sedang berjalan berdasarkan ID. Mulai dari v2.1.198, task_id juga menerima rekan tim tim agent atau agent latar belakang bernama berdasarkan ID atau nama agent.

NotebookEdit

Nama tool: NotebookEdit
Mengedit sel dalam file notebook Jupyter.

WebFetch

Nama tool: WebFetch
Mengambil konten dari URL dan memprosesnya dengan model AI. 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
Mencari web dan mengembalikan hasil yang diformat.

Workflow

Nama tool: Workflow
Menjalankan workflow dinamis: skrip yang mengorkestra banyak subagent di latar belakang dan mengembalikan satu hasil terpadu. Tool Workflow tersedia di Agent SDK v0.3.149 dan lebih baru. Setidaknya satu dari script, name, atau scriptPath diperlukan.

TodoWrite

Nama tool: TodoWrite
Membuat dan mengelola daftar tugas terstruktur untuk melacak kemajuan.
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:
  • TodoWrite
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList
Di mana pun alat-alat tersebut tersedia, Claude Code menyediakan empat alat Task, atau 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
Membuat satu tugas dan mengembalikan ID yang ditugaskan.

TaskUpdate

Nama tool: TaskUpdate
Menambal satu tugas berdasarkan ID. Atur status ke "deleted" untuk menghapusnya.

TaskGet

Nama tool: TaskGet
Mengembalikan detail lengkap untuk satu tugas, atau null ketika ID tidak ditemukan.

TaskList

Nama tool: TaskList
Mengembalikan snapshot semua tugas dalam daftar saat ini.

ExitPlanMode

Nama tool: ExitPlanMode
Keluar dari plan mode. Bidang 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
Mencantumkan sumber daya MCP yang tersedia dari server yang terhubung.

ReadMcpResource

Nama tool: ReadMcpResourceTool
Membaca sumber daya MCP tertentu dari server.

EnterWorktree

Nama tool: EnterWorktree
Membuat dan memasuki worktree git sementara untuk pekerjaan terisolasi. Lewatkan 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
Keluar dari worktree git saat ini dan kembali ke direktori kerja asli. Tindakan 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
Memasuki plan mode, di mana Claude meneliti dan menyajikan rencana sebelum membuat perubahan.

CronCreate

Nama tool: CronCreate
Menjadwalkan prompt untuk dijalankan pada jadwal cron 5-bidang dalam waktu lokal. Atur 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
Menghapus pekerjaan cron terjadwal berdasarkan ID yang dikembalikan dari CronCreate.

CronList

Nama tool: CronList
Mencantumkan pekerjaan cron terjadwal: pekerjaan tahan lama dari .claude/scheduled_tasks.json dan pekerjaan hanya sesi dari sesi saat ini.

ScheduleWakeup

Nama tool: ScheduleWakeup
Menjadwalkan bangun sekali yang menembak prompt yang diberikan setelah penundaan. Tool ini mendukung perintah /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
Mengelola Routines, jalankan Claude Code terjadwal dan dipicu yang dihosting di cloud. Tool ini mendukung perintah /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
Mengirim notifikasi push proaktif kepada pengguna. Jaga 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, tool REPL eksperimental dapat dihidupkan dengan CLAUDE_CODE_REPL=1 dalam opsi env.

ReportFindings

Nama tool: ReportFindings
Melaporkan temuan code review sebagai daftar terstruktur sehingga Claude Code dapat merendernya alih-alih mencetaknya sebagai teks. Temuan diurutkan paling parah terlebih dahulu, dengan paling banyak 32 per panggilan, dan array kosong ketika tidak ada yang bertahan. Memerlukan Claude Code v2.1.196 atau lebih baru. 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. line opsional adalah baris 1-indexed yang ditambatkan.
  • summary: pernyataan satu kalimat dari cacat. failure_scenario menjelaskan 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, seperti correctness atau test-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
Menerbitkan file .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, seperti chart atau map. 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.
Jenis diekspor, tetapi tool dimatikan secara default dalam sesi Agent SDK. Publikasi juga memerlukan setiap kondisi dalam tabel ketersediaan artefak, yang tidak dipenuhi oleh sesi yang diautentikasi dengan kunci API.

Projects

Nama tool: Projects
Membaca dan menulis Proyek claude.ai yang dilampirkan ke sesi. Mengirim pada method:
  • project_info: mengembalikan metadata proyek dan daftar doc.
  • project_read: membaca satu doc berdasarkan path.
  • project_search: menanyakan basis pengetahuan proyek dengan query. n membatasi hit dan default ke 5.
  • project_write: membuat atau mengganti doc di path dari tepat satu dari content, yang membawa teks inline, atau local_path, yang menamai file di dalam direktori kerja. present_to_user: true menandai doc yang ditulis sebagai deliverable yang perlu dilihat pengguna.
  • project_delete: menghapus doc berdasarkan path.

ReadMcpResourceDir

Nama tool: ReadMcpResourceDirTool
Mencantumkan anak langsung dari sumber daya direktori pada server MCP. Hanya dapat digunakan terhadap server yang telah mendeklarasikan dukungan untuk daftar direktori; daftar tidak rekursif. Daftar direktori tidak diaktifkan di setiap sesi: ketika dimatikan, panggilan mengembalikan daftar resources kosong dan bidang error melaporkan bahwa daftar direktori tidak diaktifkan.

RefreshMcpTools

Nama tool: RefreshMcpTools
Menanyakan ulang daftar tool server MCP yang terhubung dan menerapkan perubahan apa pun. Jenis diekspor, tetapi Claude Code mendaftarkan tool hanya ketika Anda mengatur 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
Merender baris chip pemilih peran yang dapat diklik selama onboarding Cowork sehingga pengguna dapat memilih peran mereka dan mendapatkan plugin yang cocok diinstal. Tidak memerlukan argumen; daftar peran ditentukan oleh klien. Panggilan memblokir sampai pengguna merespons.

McpInput

Nama tool: nama tool MCP dinamis dari bentuk mcp__<server>__<tool>
Argumen tool MCP adalah objek terbuka: setiap server mendefinisikan parameternya sendiri, jadi jenis tidak menempatkan batasan pada nama bidang atau nilai. Konsultasikan skema tool server sendiri untuk bidang yang diterima tool tertentu.

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.
Mengembalikan hasil dari subagent. Didiskriminasikan pada field 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
Mengembalikan pertanyaan yang diajukan dan jawaban pengguna. 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
Field 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
Mengembalikan ID tugas latar belakang untuk monitor yang sedang berjalan. Gunakan ID ini dengan TaskStop untuk membatalkan watch lebih awal.

Edit

Nama tool: Edit
Mengembalikan diff terstruktur dari operasi edit.

Read

Nama tool: Read
Mengembalikan konten file dalam format yang sesuai dengan tipe file. Didiskriminasikan pada field type.

Write

Nama tool: Write
Mengembalikan hasil write dengan informasi diff terstruktur. Apa yang dibawa originalFile dan structuredPatch tergantung pada write:
  • Untuk file yang baru dibuat, originalFile adalah null dan structuredPatch kosong
  • Pada overwrite, originalFile membawa konten sebelumnya, kecuali ketika konten tersebut lebih besar dari sekitar 10 MB: Claude Code kemudian melewatkan diff dan mengembalikan originalFile null dan structuredPatch kosong
  • structuredPatch juga kosong ketika write tidak mengubah apa pun atau diff timeout

Glob

Nama tool: Glob
Mengembalikan jalur file yang cocok dengan pola glob, diurutkan berdasarkan waktu modifikasi. 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
Mengembalikan hasil pencarian. Bentuknya bervariasi menurut 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
Mengembalikan konfirmasi setelah menghentikan tugas latar belakang.

NotebookEdit

Nama tool: NotebookEdit
Mengembalikan hasil edit notebook dengan konten file asli dan diperbarui.

WebFetch

Nama tool: WebFetch
Mengembalikan konten yang diambil dengan status HTTP dan metadata. 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
Mengembalikan hasil pencarian dari web.

Workflow

Nama tool: Workflow
Mengembalikan segera setelah tool menerima invokasi. Hasil akhir tiba kemudian sebagai penyelesaian tugas. Periksa 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
Mengembalikan daftar tugas sebelumnya dan diperbarui.
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:
  • TodoWrite
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList
Di mana pun alat-alat tersebut tersedia, Claude Code menyediakan empat alat Task, atau 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
Mengembalikan tugas yang dibuat dengan ID yang ditetapkan.

TaskUpdate

Nama tool: TaskUpdate
Mengembalikan hasil pembaruan, termasuk field mana yang berubah.

TaskGet

Nama tool: TaskGet
Mengembalikan catatan tugas lengkap, atau null ketika ID tidak ditemukan.

TaskList

Nama tool: TaskList
Mengembalikan snapshot semua tugas dalam daftar saat ini.

ExitPlanMode

Nama tool: ExitPlanMode
Mengembalikan status rencana setelah keluar dari plan mode.

ListMcpResources

Nama tool: ListMcpResourcesTool
Mengembalikan array sumber daya MCP yang tersedia.

ReadMcpResource

Nama tool: ReadMcpResourceTool
Mengembalikan konten sumber daya MCP yang diminta.

EnterWorktree

Nama tool: EnterWorktree
Mengembalikan informasi tentang worktree git.

ExitWorktree

Nama tool: ExitWorktree
Mengembalikan aksi yang diambil dan detail tentang worktree yang keluar.

EnterPlanMode

Nama tool: EnterPlanMode
Mengembalikan konfirmasi bahwa plan mode telah dimasuki.

CronCreate

Nama tool: CronCreate
Mengembalikan ID pekerjaan dan deskripsi jadwal yang dapat dibaca manusia.

CronDelete

Nama tool: CronDelete
Mengembalikan ID pekerjaan yang dihapus.

CronList

Nama tool: CronList
Mengembalikan pekerjaan cron yang dijadwalkan: pekerjaan durable dari .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
Mengembalikan kapan wake-up akan diaktifkan sebagai timestamp epoch milidetik, penundaan yang benar-benar digunakan, dan apakah penundaan yang diminta diklem. Field 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
Mengembalikan status respons API dan body untuk operasi trigger.

PushNotification

Nama tool: PushNotification
Mengembalikan detail pengiriman, termasuk apakah notifikasi push atau lokal dikirim dan mengapa pengiriman dilewati.

ReportFindings

Nama tool: ReportFindings
Mengembalikan jumlah temuan yang dilaporkan, nilai 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
Mengembalikan 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
Didiskriminasikan pada field 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
Mengembalikan anak langsung dari sumber daya direktori. Subdirektori muncul dengan mimeType "inode/directory"; error membawa pesan yang dapat dibaca manusia ketika server tidak dapat mencantumkan direktori.

RefreshMcpTools

Nama tool: RefreshMcpTools
Mengembalikan satu entri per server: 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
Mengembalikan pilihan pengguna: 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 bentuk mcp__<server>__<tool>
Hasil tool MCP dikembalikan sebagai string atau array blok konten, tergantung pada server. Cabang objek polos trailing dalam tipe yang dieksport adalah artefak pembuatan skema. Untuk hasil yang juga membawa 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.
Claude Code melaporkan salah satu dari empat nilai: 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.
Di Claude API, beta context-1m-2025-08-07 sudah pensiun untuk Claude Sonnet 4.5 dan Claude Sonnet 4. Jika Anda masih meneruskannya dengan salah satu model tersebut, permintaan yang melebihi context window standar 200K-token mengembalikan error, jadi hapus beta tersebut dari betas. Untuk menjalankan sesi dengan context window 1M-token, atur model ke model yang berjalan dengan window 1M secara default, seperti claude-sonnet-5-5 atau claude-opus-5-5. Untuk model yang mencapai 1M hanya melalui varian [1m]-nya, tambahkan sufiks tersebut ke ID model, seperti pada claude-opus-4-6[1m].

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 melaporkan sdk, apa pun namanya.
  • plugin: server yang disediakan plugin. name-nya adalah bentuk plugin:<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, atau agent. Server .mcp.json melaporkan project, dan cakupan instalasi MCP mendefinisikan local, project, dan user. Server yang diteruskan aplikasi Anda dalam opsi mcpServers, selain server SDK dalam proses, melaporkan dynamic.
Dasarkan keputusan kepercayaan pada 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.
Lihat 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_tokens tetap menjadi total otoritatif, dan output_tokens - thinking_tokens mendekati 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 placeholder message_start dan tidak membawa hitungan nyata, jadi bacalah dari usage pada pesan hasil seperti yang dijelaskan di Baca token output dari pesan hasil. Pada pesan hasil, thinking_tokens bernilai 0 ketika model atau penyedia tidak melaporkan rincian.
  • Kasus null: output_tokens_details sendiri bernilai null pada pesan asisten yang disintesis Claude Code, seperti pesan error API.
Apakah 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.
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.
Claude Code menghapus blok yang 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.
Field 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().
Ketika Anda memanggil 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 dalam removed. Server lainnya tetap berjalan dan tidak dicantumkan dalam removed, di antaranya server stdio, HTTP, dan SSE dari opsi mcpServers, 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.
Promise diselesaikan setelah server stdio, HTTP, dan SSE yang baru ditambahkan terhubung atau gagal, jadi tool dari server yang terhubung tersedia pada giliran berikutnya. 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.
Saat panggilan tool berjalan dalam percakapan utama, Claude Code memancarkan pesan 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_id dibagikan oleh subagent paralel dari satu giliran asisten, jadi melacak berdasarkan itu akan membuat pembaruan satu subagent menghapus indikator subagent lain.
  • Hapus indikator ketika tool_progress berikutnya untuk parent_tool_use_id yang sama tiba tanpa subagent_retry maupun heartbeat: true, atau ketika pesan hasil tool tiba. Frame dengan heartbeat: true hanya melaporkan bahwa proses masih aktif, jadi pertahankan indikator ketika frame tersebut tiba. attempt dapat melebihi max_retries dalam retry persisten, jadi jangan menentukan penghapusan dari penghitung.
  • Perlakukan error_category sebagai token untuk memilih teks pesan Anda sendiri, bukan sebagai teks tampilan. Nilainya adalah rate_limit, overloaded, authentication_failed, server_error, cloud_credential_error, dan unknown. Tangani nilai yang tidak Anda kenali dengan cara yang sama seperti Anda menangani unknown, 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, dan task_notification dari satu eksekusi membawa run_id yang sama. Entri eksekusi tersebut dalam setiap SDKBackgroundTasksChangedMessage juga membawanya, demikian pula runId pada 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_id sebagai fallback: ketika pesan tidak membawa run_id, seperti task_notification yang dipancarkan sesi yang dilanjutkan untuk menutup tugas yang dimulai oleh proses sebelumnya, atribusikan pesan tersebut berdasarkan task_id.
Sebagai contoh, tiga pesan berikut, yang dipangkas hingga field pengenalnya, berasal dari subagent latar belakang yang dilanjutkan Claude satu kali. Kedua pesan 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". true berarti tugas berjalan di latar belakang. false berarti 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 kedalaman 1. Subagent yang di-spawn oleh subagent berkedalaman 1 memiliki kedalaman 2, dan seterusnya.
Subagent yang dilanjutkan selalu melaporkan 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
Parent dapat berupa tugas foreground atau tugas yang sudah berakhir, jadi perlakukan ID yang tidak Anda kenali sebagai tidak memiliki parent.

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.
Pesan 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.
Ketika 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.
Field opsional menjelaskan reset:
  • trigger: apa yang membuang percakapan. Atur ulang transkrip Anda pada setiap pesan conversation_reset, termasuk pesan yang field ini tidak ada atau membawa nilai yang tidak Anda kenali.
  • user_message_uuid: uuid dari 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.
Field 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

Keamanan Unix socket: Opsi allowUnixSockets dapat memberikan akses ke layanan sistem yang menjangkau di luar sandbox. Misalnya, mengizinkan /var/run/docker.sock secara efektif memberikan akses sistem host penuh melalui API Docker, melewati isolasi sandbox. Hanya izinkan Unix socket yang benar-benar diperlukan dan pahami implikasi keamanan dari masing-masing.

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

Ketika allowUnsandboxedCommands 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.
Perintah yang berjalan dengan dangerouslyDisableSandbox: true memiliki akses sistem penuh. Pastikan handler canUseTool Anda memvalidasi permintaan ini dengan hati-hati.Jika permissionMode diatur ke bypassPermissions dan allowUnsandboxedCommands diaktifkan, model dapat secara otonom mengeksekusi perintah di luar sandbox tanpa prompt persetujuan apa pun, terlepas dari tindakan yang tidak ada mode auto-approve. Kombinasi ini secara efektif memungkinkan model untuk melarikan diri dari isolasi sandbox secara diam-diam.

Lihat juga