Instalasi
SDK menggabungkan biner Claude Code asli untuk platform Anda sebagai dependensi opsional seperti
@anthropic-ai/claude-agent-sdk-darwin-arm64. Anda tidak perlu menginstal Claude Code secara terpisah. Jika pengelola paket Anda melewatkan dependensi opsional, SDK melempar Native CLI binary for <platform> not found; setel pathToClaudeCodeExecutable ke biner claude yang diinstal secara terpisah sebagai gantinya.Kompilasi ke executable tunggal
Ketika Anda mengompilasi aplikasi Anda menjadi executable file tunggal denganbun build --compile, SDK tidak dapat menyelesaikan biner CLI yang dibundel saat runtime. require.resolve tidak berfungsi di dalam filesystem virtual $bunfs executable yang dikompilasi, jadi SDK melempar Native CLI binary for <platform> not found.
Untuk mengatasi ini, sematkan biner platform sebagai aset file, ekstrak ke path nyata saat startup dengan extractFromBunfs(), dan teruskan path tersebut ke pathToClaudeCodeExecutable.
Helper extractFromBunfs() memerlukan @anthropic-ai/claude-agent-sdk v0.3.144 atau lebih baru. Contoh di bawah ini membangun untuk macOS pada Apple Silicon:
extractFromBunfs() menyalin biner yang disematkan keluar dari filesystem virtual executable yang dikompilasi ke direktori temp per-pengguna dan mengembalikan path nyata. Di luar executable yang dikompilasi, ia mengembalikan path input tidak berubah, jadi kode yang sama berjalan dalam pengembangan tanpa modifikasi.
Setiap executable yang dikompilasi menyematkan biner platform tunggal. Cocokkan paket platform dalam impor ke --target Anda:
- Untuk cross-compile, instal paket platform yang tidak cocok, misalnya
npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force. - Di Windows, subpath biner adalah
claude.exe, misalnya@anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.
Fungsi
query()
Fungsi utama untuk berinteraksi dengan Claude Code. Membuat generator asinkron yang melakukan streaming pesan saat tiba.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | Prompt input sebagai string atau async iterable untuk mode streaming |
options | Options | Objek konfigurasi opsional (lihat tipe Options di bawah) |
Pengembalian
Mengembalikan objekQuery yang memperluas AsyncGenerator<SDKMessage, void> dengan metode tambahan.
startup()
Pra-pemanasan subprocess CLI dengan menspawnya dan menyelesaikan handshake inisialisasi sebelum prompt tersedia. Handle WarmQuery yang dikembalikan menerima prompt nanti dan menulisnya ke proses yang sudah siap, sehingga panggilan query() pertama diselesaikan tanpa membayar biaya spawn dan inisialisasi subprocess secara inline.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
options | Options | Objek konfigurasi opsional. Sama dengan parameter options ke query() |
initializeTimeoutMs | number | Waktu maksimum dalam milidetik untuk menunggu inisialisasi subprocess. Default ke 60000. Jika inisialisasi tidak selesai tepat waktu, promise ditolak dengan error timeout |
Pengembalian
MengembalikanPromise<WarmQuery> yang diselesaikan setelah subprocess telah dispawn dan menyelesaikan handshake inisialisasinya.
Contoh
Panggilstartup() lebih awal, misalnya saat boot aplikasi, kemudian panggil .query() pada handle yang dikembalikan setelah prompt siap. Ini memindahkan spawn subprocess dan inisialisasi keluar dari jalur kritis.
tool()
Membuat definisi tool MCP yang aman tipe untuk digunakan dengan server MCP SDK.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
name | string | Nama tool |
description | string | Deskripsi tentang apa yang dilakukan tool |
inputSchema | Schema extends AnyZodRawShape | Skema Zod yang mendefinisikan parameter input tool (mendukung Zod 3 dan Zod 4) |
handler | (args, extra) => Promise<CallToolResult> | Fungsi asinkron yang mengeksekusi logika tool |
extras | { annotations?: ToolAnnotations } | Anotasi tool MCP opsional yang memberikan petunjuk perilaku kepada klien |
ToolAnnotations
Dieksport ulang dari @modelcontextprotocol/sdk/types.js. Semua field adalah petunjuk opsional; klien tidak boleh mengandalkannya untuk keputusan keamanan.
| Field | Tipe | Default | Deskripsi |
|---|---|---|---|
title | string | undefined | Judul yang dapat dibaca manusia untuk tool |
readOnlyHint | boolean | false | Jika true, tool tidak memodifikasi lingkungannya |
destructiveHint | boolean | true | Jika true, tool dapat melakukan pembaruan destruktif (hanya bermakna ketika readOnlyHint adalah false) |
idempotentHint | boolean | false | Jika true, panggilan berulang dengan argumen yang sama tidak memiliki efek tambahan (hanya bermakna ketika readOnlyHint adalah false) |
openWorldHint | boolean | true | Jika true, tool berinteraksi dengan entitas eksternal (misalnya, pencarian web). Jika false, domain tool ditutup (misalnya, tool memori) |
createSdkMcpServer()
Membuat instance server MCP yang berjalan dalam proses yang sama dengan aplikasi Anda.
Parameter
| Parameter | Tipe | Deskripsi |
|---|---|---|
options.name | string | Nama server MCP |
options.version | string | String versi opsional |
options.tools | Array<SdkMcpToolDefinition> | Array definisi tool yang dibuat dengan tool() |
listSessions()
Menemukan dan membuat daftar sesi masa lalu dengan metadata ringan. Filter berdasarkan direktori proyek atau buat daftar sesi di semua proyek.
Parameter
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
options.dir | string | undefined | Direktori untuk membuat daftar sesi. Ketika dihilangkan, mengembalikan sesi di semua proyek |
options.limit | number | undefined | Jumlah maksimum sesi yang akan dikembalikan |
options.includeWorktrees | boolean | true | Ketika dir berada di dalam repositori git, sertakan sesi dari semua jalur worktree |
Tipe pengembalian: SDKSessionInfo
| Properti | Tipe | Deskripsi |
|---|---|---|
sessionId | string | Pengenal sesi unik (UUID) |
summary | string | Judul tampilan: judul kustom, ringkasan yang dihasilkan otomatis, atau prompt pertama |
lastModified | number | Waktu modifikasi terakhir dalam milidetik sejak epoch |
fileSize | number | undefined | Ukuran file sesi dalam byte. Hanya diisi untuk penyimpanan JSONL lokal |
customTitle | string | undefined | Judul sesi yang ditetapkan pengguna (melalui /rename) |
firstPrompt | string | undefined | Prompt pengguna bermakna pertama dalam sesi |
gitBranch | string | undefined | Cabang Git di akhir sesi |
cwd | string | undefined | Direktori kerja untuk sesi |
tag | string | undefined | Tag sesi yang ditetapkan pengguna (lihat tagSession()) |
createdAt | number | undefined | Waktu pembuatan dalam milidetik sejak epoch, dari timestamp entri pertama |
Contoh
Cetak 10 sesi terbaru untuk proyek. Hasil diurutkan berdasarkanlastModified menurun, jadi item pertama adalah yang terbaru. Hilangkan dir untuk mencari di semua proyek.
getSessionMessages()
Membaca pesan pengguna dan asisten dari transkrip sesi masa lalu.
Parameter
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
sessionId | string | required | UUID sesi untuk dibaca (lihat listSessions()) |
options.dir | string | undefined | Direktori proyek untuk menemukan sesi. Ketika dihilangkan, mencari di semua proyek |
options.limit | number | undefined | Jumlah maksimum pesan yang akan dikembalikan |
options.offset | number | undefined | Jumlah pesan yang akan dilewati dari awal |
Tipe pengembalian: SessionMessage
| Properti | Tipe | Deskripsi |
|---|---|---|
type | "user" | "assistant" | Peran pesan |
uuid | string | Pengenal pesan unik |
session_id | string | Sesi yang pesan ini milik |
message | unknown | Payload pesan mentah dari transkrip |
parent_tool_use_id | string | null | Untuk pesan subagent, tool_use_id dari panggilan tool Agent yang memicu. null untuk pesan sesi utama dan sesi yang lebih lama |
Contoh
getSessionInfo()
Membaca metadata untuk sesi tunggal berdasarkan ID tanpa memindai direktori proyek lengkap.
Parameter
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
sessionId | string | required | UUID sesi yang akan dicari |
options.dir | string | undefined | Jalur direktori proyek. Ketika dihilangkan, mencari di semua direktori proyek |
SDKSessionInfo, atau undefined jika sesi tidak ditemukan.
renameSession()
Mengganti nama sesi dengan menambahkan entri judul kustom. Panggilan berulang aman; judul terbaru menang.
Parameter
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
sessionId | string | required | UUID sesi yang akan diganti nama |
title | string | required | Judul baru. Harus tidak kosong setelah memangkas spasi putih |
options.dir | string | undefined | Jalur direktori proyek. Ketika dihilangkan, mencari di semua direktori proyek |
tagSession()
Menandai sesi. Lewatkan null untuk menghapus tag. Panggilan berulang aman; tag terbaru menang.
Parameter
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
sessionId | string | required | UUID sesi yang akan ditandai |
tag | string | null | required | String tag, atau null untuk menghapus |
options.dir | string | undefined | Jalur direktori proyek. Ketika dihilangkan, mencari di semua direktori proyek |
resolveSettings()
Menyelesaikan pengaturan Claude Code yang efektif untuk direktori tertentu menggunakan mesin penggabungan yang sama dengan CLI, tanpa menspawn CLI Claude. Gunakan untuk memeriksa konfigurasi apa yang akan dilihat oleh panggilan query() sebelum memanggil satu.
Fungsi ini alpha dan API-nya mungkin berubah sebelum stabilisasi. Fungsi ini membaca sumber MDM, termasuk plist macOS dan Windows HKLM/HKCU, untuk paritas dengan startup CLI, tetapi tidak mengeksekusi subprocess
policyHelper yang dikonfigurasi admin. Field permissions.defaultMode dikembalikan apa adanya dari semua tingkat termasuk pengaturan proyek. Filter kepercayaan yang diterapkan CLI sebelum menghormati mode izin yang meningkat tidak diterapkan.Parameter
resolveSettings() menerima objek opsi tunggal. Semua field bersifat opsional.
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
options.cwd | string | process.cwd() | Direktori untuk menyelesaikan pengaturan proyek dan lokal relatif terhadap |
options.settingSources | SettingSource[] | Semua sumber | Sumber filesystem mana yang akan dimuat. Lewatkan [] untuk melewati pengaturan pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola dimuat dalam semua kasus |
options.managedSettings | Settings | undefined | Pengaturan tingkat kebijakan pembatasan yang disediakan oleh host penyematan. Dijatuhkan secara default ketika tingkat terkelola yang diterapkan admin hadir; digabungkan di bawah tingkat itu ketika parentSettingsBehavior adalah "merge". Kunci non-pembatasan seperti model secara diam-diam dijatuhkan sehingga opsi ini dapat memperketat kebijakan terkelola tetapi tidak melonggarkannya |
options.serverManagedSettings | Settings | undefined | Payload pengaturan terkelola server dari /api/claude_code/settings. Kunci non-pembatasan melewati tanpa filter |
Tipe pengembalian: ResolvedSettings
resolveSettings() mengembalikan objek yang menjelaskan pengaturan yang digabungkan dan sumber yang berkontribusi pada setiap kunci.
| Properti | Tipe | Deskripsi |
|---|---|---|
effective | Settings | Pengaturan yang digabungkan setelah menerapkan semua sumber yang diaktifkan dalam urutan preseden |
provenance | Partial<Record<keyof Settings, ProvenanceEntry>> | Untuk setiap kunci tingkat atas dalam effective, sumber mana yang memasok nilai |
sources | Array<{ source, settings, path?, policyOrigin? }> | Pengaturan mentah per-sumber, diurutkan dari preseden terendah hingga tertinggi |
Contoh
Contoh di bawah ini menyelesaikan pengaturan untuk direktori proyek dan mencetak sumber yang mengontrol periode pembersihan.Tipe
Options
Objek konfigurasi untuk fungsi query().
| Properti | Tipe | Default | Deskripsi |
|---|---|---|---|
abortController | AbortController | new AbortController() | Pengontrol untuk membatalkan operasi |
additionalDirectories | string[] | [] | Direktori tambahan yang dapat diakses Claude |
agent | string | undefined | Nama agen untuk thread utama. Agen harus didefinisikan dalam opsi agents atau dalam pengaturan |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Tentukan subagen secara terprogram |
agentProgressSummaries | boolean | false | Ketika true, hasilkan ringkasan kemajuan satu baris untuk subagen dan teruskan pada event task_progress melalui field summary. Berlaku untuk subagen foreground dan background |
allowDangerouslySkipPermissions | boolean | false | Aktifkan bypass izin. Diperlukan saat menggunakan permissionMode: 'bypassPermissions' |
allowedTools | string[] | [] | Tool untuk auto-approve tanpa prompt. Ini tidak membatasi Claude hanya pada tool ini; tool yang tidak terdaftar jatuh ke permissionMode dan canUseTool. Gunakan disallowedTools untuk memblokir tool. Lihat Izin |
betas | SdkBeta[] | [] | Aktifkan fitur beta |
canUseTool | CanUseTool | undefined | Fungsi izin kustom untuk penggunaan tool |
continue | boolean | false | Lanjutkan percakapan terbaru |
cwd | string | process.cwd() | Direktori kerja saat ini |
debug | boolean | false | Aktifkan mode debug untuk proses Claude Code |
debugFile | string | undefined | Tulis log debug ke jalur file tertentu. Secara implisit mengaktifkan mode debug |
disallowedTools | string[] | [] | Tool untuk tolak. Nama bare seperti "Bash" menghapus tool dari konteks Claude. Aturan scoped seperti "Bash(rm *)" membiarkan tool tersedia dan menolak panggilan yang cocok dalam setiap mode izin, termasuk bypassPermissions. Lihat Izin |
effort | 'low' | 'medium' | 'high' | 'xhigh' | 'max' | 'high' | Mengontrol seberapa banyak usaha yang Claude masukkan ke dalam responsnya. Bekerja dengan pemikiran adaptif untuk memandu kedalaman pemikiran |
enableFileCheckpointing | boolean | false | Aktifkan pelacakan perubahan file untuk rewinding. Lihat File checkpointing |
env | Record<string, string | undefined> | process.env | Variabel lingkungan. Ketika diatur, ini mengganti lingkungan subprocess alih-alih menggabungkan dengan process.env, jadi lewatkan { ...process.env, YOUR_VAR: 'value' } untuk menyimpan variabel yang diwariskan seperti PATH. Lihat Tangani respons API yang lambat atau terhenti untuk contoh pola ini, dan Variabel lingkungan untuk variabel yang dibaca CLI yang mendasarinya. Atur CLAUDE_AGENT_SDK_CLIENT_APP untuk mengidentifikasi aplikasi Anda di header User-Agent |
executable | 'bun' | 'deno' | 'node' | Auto-detected | Runtime JavaScript yang akan digunakan |
executableArgs | string[] | [] | Argumen untuk diteruskan ke executable |
extraArgs | Record<string, string | null> | {} | Argumen tambahan |
fallbackModel | string | undefined | Model yang digunakan jika model utama gagal |
forkSession | boolean | false | Saat melanjutkan dengan resume, fork ke ID sesi baru alih-alih melanjutkan sesi asli |
forwardSubagentText | boolean | false | Teruskan blok teks dan pemikiran subagen sebagai pesan asisten dan pengguna dengan parent_tool_use_id diatur, sehingga konsumen dapat merender transkrip bersarang. Secara default hanya blok tool_use dan tool_result dari subagen yang dipancarkan |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Callback hook untuk event |
includeHookEvents | boolean | false | Sertakan event lifecycle hook dalam aliran pesan sebagai SDKHookStartedMessage, SDKHookProgressMessage, dan SDKHookResponseMessage |
includePartialMessages | boolean | false | Sertakan event pesan parsial |
loadTimeoutMs | number | 60000 | Alpha. Timeout dalam milidetik untuk setiap panggilan sessionStore.load() dan sessionStore.listSubkeys() selama materialisasi resume. Jika adapter tidak settle dalam jendela ini, query gagal alih-alih hang. Diabaikan ketika sessionStore tidak diatur |
managedSettings | Settings | undefined | Pengaturan tingkat kebijakan yang disediakan oleh proses parent yang memunculkan. Dijatuhkan ketika tier managed-settings yang dikontrol IT sudah ada di mesin, kecuali admin itu memilih dengan parentSettingsBehavior: 'merge'. Disaring ke kunci restrictive-only terlepas dari itu |
maxBudgetUsd | number | undefined | Hentikan query ketika estimasi biaya sisi klien mencapai nilai USD ini. Dibandingkan dengan estimasi yang sama seperti total_cost_usd; lihat Lacak biaya dan penggunaan untuk peringatan akurasi |
maxThinkingTokens | number | undefined | Deprecated: Gunakan thinking sebagai gantinya. Token maksimum untuk proses pemikiran |
maxTurns | number | undefined | Putaran agen maksimum (perjalanan round-trip penggunaan tool) |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Konfigurasi server MCP |
model | string | Default dari CLI | Model Claude yang akan digunakan |
onElicitation | (request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult> | undefined | Callback untuk menangani permintaan elicitation MCP. Dipanggil ketika server MCP meminta input pengguna dan tidak ada hook yang menanganinya terlebih dahulu. Ketika tidak disediakan, permintaan elicitation yang tidak ditangani secara otomatis ditolak |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | Tentukan format output untuk hasil agen. Lihat Output terstruktur untuk detail |
outputStyle | string | undefined | Bukan field Options. Atur outputStyle dalam objek settings inline atau file pengaturan sebagai gantinya. Lihat Aktifkan output style |
pathToClaudeCodeExecutable | string | Auto-resolved dari biner asli bundel | Jalur ke executable Claude Code. Hanya diperlukan jika dependensi opsional dilewati selama instalasi atau platform Anda tidak dalam set yang didukung |
permissionMode | PermissionMode | 'default' | Mode izin untuk sesi |
permissionPromptToolName | string | undefined | Nama tool MCP untuk prompt izin |
persistSession | boolean | true | Ketika false, menonaktifkan persistensi sesi ke disk. Sesi tidak dapat dilanjutkan nanti |
planModeInstructions | string | undefined | Instruksi alur kerja kustom untuk mode plan. Ketika permissionMode adalah 'plan', string ini mengganti badan alur kerja mode plan default. CLI masih membungkusnya dengan preamble penegakan read-only dan footer protokol ExitPlanMode |
plugins | SdkPluginConfig[] | [] | Muat plugin kustom dari jalur lokal. Lihat Plugins untuk detail |
promptSuggestions | boolean | false | Aktifkan saran prompt. Mengirimkan pesan prompt_suggestion setelah setiap putaran dengan prompt pengguna berikutnya yang diprediksi |
resume | string | undefined | ID sesi untuk dilanjutkan |
resumeSessionAt | string | undefined | Lanjutkan sesi pada UUID pesan tertentu |
sandbox | SandboxSettings | undefined | Konfigurasi perilaku sandbox secara terprogram. Lihat Pengaturan sandbox untuk detail |
sessionId | string | Auto-generated | Gunakan UUID tertentu untuk sesi alih-alih auto-generate |
sessionStore | SessionStore | undefined | Cerminkan transkrip sesi ke backend eksternal sehingga host apa pun dapat melanjutkannya. Lihat Pertahankan sesi ke penyimpanan eksternal |
sessionStoreFlush | 'batched' | 'eager' | 'batched' | Alpha. Mode flush untuk sessionStore. Diabaikan ketika sessionStore tidak diatur |
settings | string | Settings | undefined | Objek pengaturan inline atau jalur ke file pengaturan. Mengisi lapisan flag-settings dalam urutan preseden. Ubah saat runtime dengan applyFlagSettings() |
settingSources | SettingSource[] | CLI defaults (all sources) | Kontrol pengaturan filesystem mana yang akan dimuat. Lewatkan [] untuk menonaktifkan pengaturan pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola dimuat terlepas dari itu. Lihat Gunakan fitur Claude Code |
skills | string[] | 'all' | undefined | Skills yang tersedia untuk sesi. Lewatkan 'all' untuk mengaktifkan setiap skill yang ditemukan, atau daftar nama skill. Ketika diatur, SDK menambahkan tool Skill ke allowedTools secara otomatis. Jika Anda juga meneruskan tools, sertakan 'Skill' dalam daftar itu. Lihat Skills |
spawnClaudeCodeProcess | (options: SpawnOptions) => SpawnedProcess | undefined | Fungsi kustom untuk spawn proses Claude Code. Gunakan untuk menjalankan Claude Code di VM, kontainer, atau lingkungan jarak jauh |
stderr | (data: string) => void | undefined | Callback untuk output stderr |
strictMcpConfig | boolean | false | Gunakan hanya server yang diteruskan dalam mcpServers dan abaikan .mcp.json proyek, pengaturan pengguna, server MCP yang disediakan plugin, dan konektor claude.ai |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean } | undefined (minimal prompt) | Konfigurasi prompt sistem. Lewatkan string untuk prompt kustom, atau { type: 'preset', preset: 'claude_code' } untuk menggunakan prompt sistem Claude Code. Saat menggunakan bentuk objek preset, tambahkan append untuk memperluas dengan instruksi tambahan, dan atur excludeDynamicSections: true untuk memindahkan konteks per-sesi ke pesan pengguna pertama untuk reuse prompt-cache yang lebih baik di seluruh mesin |
taskBudget | { total: number } | undefined | Alpha. Anggaran tugas sisi API dalam token. Ketika diatur, model diberitahu anggaran token sisa yang tersisa sehingga dapat mengatur kecepatan penggunaan tool dan membungkus sebelum batas |
thinking | ThinkingConfig | { type: 'adaptive' } untuk model yang didukung | Mengontrol perilaku pemikiran/penalaran Claude. Lihat ThinkingConfig untuk opsi |
title | string | undefined | Judul tampilan untuk sesi. Saat melanjutkan melalui resume atau continue, judul sesi yang dilanjutkan yang bertahan mengambil preseden; gunakan renameSession() untuk mengubah judul sesi yang ada |
toolAliases | Record<string, string> | undefined | Petakan nama tool bawaan ke nama tool MCP sehingga Claude memanggil implementasi MCP Anda sebagai gantinya dari bawaan. Misalnya, { Bash: 'mcp__workspace__bash' } |
toolConfig | ToolConfig | undefined | Konfigurasi untuk perilaku tool bawaan. Lihat ToolConfig untuk detail |
tools | string[] | { type: 'preset'; preset: 'claude_code' } | undefined | Konfigurasi tool. Lewatkan array nama tool atau gunakan preset untuk mendapatkan tool default Claude Code |
Tangani respons API yang lambat atau terhenti
Subprocess CLI membaca beberapa variabel lingkungan yang mengontrol timeout API dan deteksi stall. Lewatkan melalui opsienv:
API_TIMEOUT_MS: timeout per-request pada klien Anthropic, dalam milidetik. Default600000. Berlaku untuk loop utama dan semua subagen.CLAUDE_CODE_MAX_RETRIES: maksimum retry API. Default10. Setiap retry mendapatkan jendelaAPI_TIMEOUT_MSsendiri, jadi waktu dinding terburuk kira-kiraAPI_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)ditambah backoff.CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: stall watchdog untuk subagen yang diluncurkan denganrun_in_background. Default600000. Reset pada setiap event stream; pada stall itu membatalkan subagen, menandai tugas gagal, dan menampilkan error ke parent dengan hasil parsial apa pun. Tidak berlaku untuk subagen sinkron.CLAUDE_ENABLE_STREAM_WATCHDOG=1denganCLAUDE_STREAM_IDLE_TIMEOUT_MS: membatalkan request ketika header telah tiba tetapi body respons berhenti streaming. Dimatikan secara default.CLAUDE_STREAM_IDLE_TIMEOUT_MSdefault ke300000dan diklem ke minimum itu. Request yang dibatalkan melalui jalur retry normal.
Objek Query
Antarmuka yang dikembalikan oleh fungsi query().
Metode
| Metode | Deskripsi |
|---|---|
interrupt() | Mengganggu query (hanya tersedia dalam mode input streaming) |
rewindFiles(userMessageId, options?) | Mengembalikan file ke keadaan mereka pada pesan pengguna yang ditentukan. Lewatkan { dryRun: true } untuk pratinjau perubahan. Memerlukan enableFileCheckpointing: true. Lihat File checkpointing |
setPermissionMode() | Mengubah mode izin (hanya tersedia dalam mode input streaming) |
setModel() | Mengubah model (hanya tersedia dalam mode input streaming) |
setMaxThinkingTokens() | Deprecated: Gunakan opsi thinking sebagai gantinya. Mengubah token pemikiran maksimum |
applyFlagSettings(settings) | Menggabungkan pengaturan ke dalam lapisan flag settings sesi saat runtime (hanya tersedia dalam mode input streaming). Lihat applyFlagSettings() |
initializationResult() | Mengembalikan hasil inisialisasi lengkap termasuk perintah yang didukung, model, info akun, dan konfigurasi gaya output |
supportedCommands() | Mengembalikan perintah slash yang tersedia |
supportedModels() | Mengembalikan model yang tersedia dengan info tampilan |
supportedAgents() | Mengembalikan subagen yang tersedia sebagai AgentInfo[] |
mcpServerStatus() | Mengembalikan status server MCP yang terhubung |
accountInfo() | Mengembalikan informasi akun |
reconnectMcpServer(serverName) | Sambungkan kembali server MCP berdasarkan nama |
toggleMcpServer(serverName, enabled) | Aktifkan atau nonaktifkan server MCP berdasarkan nama |
setMcpServers(servers) | Ganti secara dinamis set server MCP untuk sesi ini. Mengembalikan info tentang server mana yang ditambahkan, dihapus, dan error apa pun |
streamInput(stream) | Alirkan pesan input ke query untuk percakapan multi-putaran |
stopTask(taskId) | Hentikan tugas latar belakang yang sedang berjalan berdasarkan ID |
close() | Tutup query dan hentikan proses yang mendasarinya. Secara paksa mengakhiri query dan membersihkan semua sumber daya |
applyFlagSettings()
Mengubah pengaturan apa pun pada sesi yang sedang berjalan tanpa memulai ulang query. Gunakan ketika pengaturan yang tidak memiliki setter khusus perlu berubah di tengah sesi, seperti memperketat permissions setelah agen membaca input yang tidak terpercaya. setModel() dan setPermissionMode() adalah setter khusus untuk dua kunci itu; applyFlagSettings() adalah bentuk umum yang menerima subset kunci pengaturan apa pun, dan melewatkan model di sini berperilaku sama seperti setModel().
Hanya beberapa kunci yang berlaku di tengah sesi:
- Diterapkan pada putaran berikutnya:
model,effortLevel,ultracode,permissions,hooks,skillOverrides,fastMode,awaySummaryEnabled,agent. Beralihagentjuga menerapkan penggantian model agen itu, hooks, dan prompt sistem pada putaran berikutnya. - Tidak ada efek di tengah sesi: opsi prompt sistem. Ini diselesaikan sekali saat startup, jadi sesi yang sedang berjalan menyimpan nilai asli meskipun panggilan berhasil. Untuk mengubahnya, mulai sesi baru.
settings inline dari query() isi saat startup. Flag settings duduk di dekat bagian atas urutan preseden pengaturan: mereka mengganti pengaturan pengguna, proyek, dan lokal, dan hanya pengaturan kebijakan terkelola yang dapat mengganti mereka. Ini adalah tier yang sama yang bagian preseden di halaman sebut opsi terprogram.
Panggilan berturut-turut shallow-merge kunci tingkat atas. Panggilan kedua dengan { permissions: {...} } mengganti seluruh objek permissions dari panggilan sebelumnya daripada deep-merging ke dalamnya. Untuk menghapus kunci dari lapisan flag dan kembali ke sumber preseden lebih rendah, lewatkan null untuk kunci itu. Melewatkan undefined tidak memiliki efek karena serialisasi JSON menjatuhkannya.
Hanya tersedia dalam mode input streaming, batasan yang sama seperti setModel() dan setPermissionMode().
Contoh di bawah beralih model aktif di tengah sesi, kemudian menghapus override sehingga model kembali ke apa pun yang ditentukan pengaturan pengguna atau proyek.
applyFlagSettings() adalah TypeScript-only. SDK Python tidak mengekspos metode setara.WarmQuery
Handle yang dikembalikan oleh startup(). Subprocess sudah dispawn dan diinisialisasi, jadi memanggil query() pada handle ini menulis prompt langsung ke proses yang siap tanpa latensi startup.
Metode
| Metode | Deskripsi |
|---|---|
query(prompt) | Kirim prompt ke subprocess yang sudah dipanaskan dan kembalikan Query. Hanya dapat dipanggil sekali per WarmQuery |
close() | Tutup subprocess tanpa mengirim prompt. Gunakan ini untuk membuang warm query yang tidak lagi diperlukan |
WarmQuery mengimplementasikan AsyncDisposable, jadi dapat digunakan dengan await using untuk pembersihan otomatis.
SDKControlInitializeResponse
Tipe pengembalian dari initializationResult(). Berisi data inisialisasi sesi.
initialize ke sesi yang sudah berjalan, wrapper control-response juga membawa array pending_permission_requests opsional. Field berada pada wrapper respons itu sendiri, bukan dalam payload SDKControlInitializeResponse di atas. Setiap entri adalah pesan control_request lengkap dengan bentuk { type: "control_request", request_id, request } yang sama dengan sesi yang dialirkan untuk permintaan izin saat berjalan.
Ini adalah permintaan yang dikeluarkan sebelum klien terhubung dan masih menunggu balasan, jadi baca array ini untuk menampilkan prompt izin in-flight segera; mereka tidak akan dikirim ulang.
AgentDefinition
Konfigurasi untuk subagen yang didefinisikan secara terprogram.
| Field | Diperlukan | Deskripsi |
|---|---|---|
description | Ya | Deskripsi bahasa alami tentang kapan menggunakan agen ini |
tools | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi semua tool dari parent. Untuk preload Skills ke dalam konteks agen, gunakan field skills daripada mencantumkan 'Skill' di sini |
disallowedTools | Tidak | Array nama tool untuk secara eksplisit tidak izinkan untuk agen ini |
prompt | Ya | Prompt sistem agen |
model | Tidak | Penggantian model untuk agen ini. Menerima alias seperti 'sonnet', 'opus', 'haiku', 'inherit', atau ID model lengkap. Jika dihilangkan atau 'inherit', menggunakan model utama |
mcpServers | Tidak | Spesifikasi server MCP untuk agen ini |
skills | Tidak | Array nama skill untuk preload ke konteks agen |
initialPrompt | Tidak | Auto-submitted sebagai putaran pengguna pertama ketika agen ini berjalan sebagai agen thread utama |
maxTurns | Tidak | Jumlah maksimum putaran agen (API round-trips) sebelum berhenti |
background | Tidak | Jalankan agen ini sebagai tugas latar belakang non-blocking ketika dipanggil |
memory | Tidak | Sumber memori untuk agen ini: 'user', 'project', atau 'local' |
effort | Tidak | Tingkat usaha penalaran untuk agen ini. Menerima tingkat bernama atau integer |
permissionMode | Tidak | Mode izin untuk eksekusi tool dalam agen ini. Lihat PermissionMode |
criticalSystemReminder_EXPERIMENTAL | Tidak | Eksperimental: Pengingat kritis ditambahkan ke prompt sistem |
AgentMcpServerSpec
Menentukan server MCP yang tersedia untuk subagen. Dapat berupa nama server (string yang mereferensikan server dari konfigurasi mcpServers parent) atau konfigurasi server inline yang merekam nama server ke config.
McpServerConfigForProcessTransport adalah McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.
SettingSource
Mengontrol sumber konfigurasi berbasis filesystem mana yang dimuat pengaturan SDK.
| Nilai | Deskripsi | Lokasi |
|---|---|---|
'user' | Pengaturan pengguna global | ~/.claude/settings.json |
'project' | Pengaturan proyek bersama (version controlled) | .claude/settings.json |
'local' | Pengaturan proyek lokal (gitignored) | .claude/settings.local.json |
Perilaku default
KetikasettingSources dihilangkan atau undefined, query() memuat pengaturan filesystem yang sama seperti CLI Claude Code: pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola dimuat dalam semua kasus. Lihat Apa yang tidak dikontrol settingSources untuk input yang dibaca terlepas dari opsi ini, dan cara menonaktifkannya.
Mengapa menggunakan settingSources
Nonaktifkan pengaturan filesystem:Preseden pengaturan
Ketika beberapa sumber dimuat, pengaturan digabungkan dengan preseden ini (tertinggi ke terendah):- Pengaturan lokal (
.claude/settings.local.json) - Pengaturan proyek (
.claude/settings.json) - Pengaturan pengguna (
~/.claude/settings.json)
agents, allowedTools, dan settings mengganti pengaturan filesystem pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola mengambil preseden atas opsi terprogram.
PermissionMode
CanUseTool
Tipe fungsi izin kustom untuk mengontrol penggunaan tool.
| Opsi | Tipe | Deskripsi |
|---|---|---|
signal | AbortSignal | Signaled jika operasi harus dibatalkan |
suggestions | PermissionUpdate[] | Saran pembaruan izin sehingga pengguna tidak diprompt lagi untuk tool ini. Prompt Bash menyertakan saran dengan destination localSettings, jadi mengembalikannya dalam updatedPermissions menulis aturan ke .claude/settings.local.json dan bertahan di seluruh sesi. |
blockedPath | string | Jalur file yang memicu permintaan izin, jika berlaku |
decisionReason | string | Menjelaskan mengapa permintaan izin ini dipicu |
toolUseID | string | Pengenal unik untuk tool call spesifik ini dalam pesan asisten |
agentID | string | Jika berjalan dalam sub-agen, ID sub-agen |
PermissionResult
Hasil pemeriksaan izin.
ToolConfig
Konfigurasi untuk perilaku tool bawaan.
| Field | Tipe | Deskripsi |
|---|---|---|
askUserQuestion.previewFormat | 'markdown' | 'html' | Opt-in ke field preview pada opsi AskUserQuestion dan atur format kontennya. Ketika tidak diatur, Claude tidak mengirimkan preview |
McpServerConfig
Konfigurasi untuk server MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
McpClaudeAIProxyServerConfig
SdkPluginConfig
Konfigurasi untuk memuat plugin di SDK.
| Field | Tipe | Deskripsi |
|---|---|---|
type | 'local' | Harus 'local' (hanya plugin lokal yang saat ini didukung) |
path | string | Jalur absolut atau relatif ke direktori plugin |
Tipe Pesan
SDKMessage
Tipe union dari semua pesan yang mungkin dikembalikan oleh query.
SDKAssistantMessage
Pesan respons asisten.
message adalah BetaMessage dari Anthropic SDK. Ini mencakup field seperti id, content, model, stop_reason, dan usage.
SDKAssistantMessageError adalah salah satu dari: 'authentication_failed', 'oauth_org_not_allowed', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens', atau 'unknown'. 'model_not_found' berarti model yang dipilih tidak ada atau tidak tersedia untuk akun atau deployment Anda. 'overloaded' berarti API mengembalikan 529 karena server mencapai kapasitas, berbeda dengan 'rate_limit', yang merupakan 429 terhadap kuota Anda.
SDKUserMessage
Pesan input pengguna.
shouldQuery ke false untuk menambahkan pesan ke transkrip tanpa memicu putaran asisten. Pesan ditahan dan digabungkan ke pesan pengguna berikutnya yang memicu putaran. Gunakan ini untuk menyuntikkan konteks, seperti output perintah yang Anda jalankan out of band, tanpa menghabiskan panggilan model.
SDKUserMessageReplay
Pesan pengguna yang diputar ulang dengan UUID yang diperlukan.
SDKResultMessage
Pesan hasil akhir.
subtype:
api_error_status: kode status HTTP dari kesalahan API yang mengakhiri percakapan. Tidak ada ataunullketika putaran berakhir tanpa kesalahan API.ttft_ms: waktu ke token pertama dalam milidetik. Hadir hanya pada cabang kesuksesan.terminal_reason: mengapa loop berakhir. Salah satu dari"completed","max_turns","tool_deferred","aborted_streaming","aborted_tools","hook_stopped","stop_hook_prevented","blocking_limit","rapid_refill_breaker","prompt_too_long","image_error", atau"model_error".fast_mode_state: salah satu dari"on","off", atau"cooldown".
origin meneruskan SDKMessageOrigin dari pesan pengguna yang memicu hasil ini. Ketika tugas latar belakang selesai dan SDK menyuntikkan putaran lanjutan sintetis, SDKResultMessage yang dihasilkan membawa origin: { kind: "task-notification" }. Periksa field ini untuk membedakan hasil yang menjawab prompt Anda dari hasil yang dipancarkan untuk lanjutan tugas latar belakang, sehingga Anda dapat merutekan atau menekan yang terakhir. Field ini tidak ada untuk hasil yang dipancarkan sebelum putaran pengguna apa pun, seperti kesalahan startup.
Ketika hook PreToolUse mengembalikan permissionDecision: "defer", hasilnya memiliki stop_reason: "tool_deferred" dan deferred_tool_use membawa id, name, dan input tool yang tertunda. Baca field ini untuk menampilkan permintaan di UI Anda sendiri, kemudian lanjutkan dengan session_id yang sama untuk melanjutkan. Lihat Defer a tool call for later untuk perjalanan putaran lengkap.
SDKSystemMessage
Pesan inisialisasi sistem.
SDKPartialAssistantMessage
Pesan parsial streaming (hanya ketika includePartialMessages adalah true).
SDKCompactBoundaryMessage
Pesan yang menunjukkan batas pemadatan percakapan.
SDKPluginInstallMessage
Event kemajuan instalasi plugin. Dipancarkan ketika CLAUDE_CODE_SYNC_PLUGIN_INSTALL diatur, sehingga aplikasi Agent SDK Anda dapat melacak instalasi plugin marketplace sebelum putaran pertama. Status started dan completed membatasi keseluruhan instalasi. Status installed dan failed melaporkan marketplace individual dan menyertakan name.
SDKPermissionDeniedMessage
Event aliran yang dipancarkan ketika sistem izin secara otomatis menolak panggilan tool tanpa prompt interaktif. Gunakan ini untuk merender penolakan di UI Anda saat terjadi, daripada hanya mengamati hasil tool is_error yang mengikuti. Jalur tanya interaktif mencapai aplikasi Anda secara terpisah melalui callback canUseTool. Penolakan yang dikeluarkan oleh hook PreToolUse tidak dilaporkan melalui event ini.
Event ini memerlukan Claude Code v2.1.136 atau lebih baru.
| Field | Tipe | Deskripsi |
|---|---|---|
tool_name | string | Nama tool yang ditolak |
tool_use_id | string | ID dari blok tool_use yang dijawab penolakan ini |
agent_id | string | ID subagent ketika panggilan yang ditolak berasal dari dalam subagent. Mencerminkan field pada can_use_tool untuk perutean sisi host |
decision_reason_type | string | Diskriminator untuk komponen yang memutuskan, seperti "rule", "mode", "classifier", atau "asyncAgent" |
decision_reason | string | Alasan yang dapat dibaca manusia dari komponen yang memutuskan, ketika tersedia |
message | string | Pesan penolakan yang dikembalikan ke model dalam tool_result |
SDKPermissionDenial
Informasi tentang penggunaan tool yang ditolak.
SDKMessageOrigin
Asal-usul pesan dengan peran pengguna. Ini muncul sebagai origin pada SDKUserMessage dan diteruskan ke SDKResultMessage yang sesuai sehingga Anda dapat mengetahui apa yang memicu putaran tertentu.
kind | Arti |
|---|---|
human | Input langsung dari pengguna akhir. Pada pesan pengguna, origin yang tidak ada juga berarti input manusia. |
channel | Pesan yang tiba di channel. server adalah nama server MCP sumber. |
peer | Pesan dari sesi agen lain melalui SendMessage. from adalah alamat pengirim; name adalah nama tampilan pengirim ketika tersedia. |
task-notification | Putaran sintetis yang disuntikkan setelah tugas latar belakang selesai. Lihat SDKTaskNotificationMessage. |
coordinator | Pesan dari koordinator tim dalam tim agen. |
Tipe Hook
Untuk panduan komprehensif tentang menggunakan hooks dengan contoh dan pola umum, lihat panduan Hooks.HookEvent
Event hook yang tersedia.
HookCallback
Tipe fungsi callback hook.
HookCallbackMatcher
Konfigurasi hook dengan matcher opsional.
HookInput
Tipe union dari semua tipe input hook.
BaseHookInput
Antarmuka dasar yang diperluas oleh semua tipe input hook.
PreToolUseHookInput
PostToolUseHookInput
PostToolUseFailureHookInput
PostToolBatchHookInput
Dipicu sekali setelah setiap pemanggilan alat dalam batch telah diselesaikan, sebelum permintaan model berikutnya. tool_response membawa konten tool_result yang diserialisasi yang dilihat model; bentuknya berbeda dari objek Output terstruktur dari PostToolUseHookInput.
NotificationHookInput
UserPromptSubmitHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCompletedHookInput
ConfigChangeHookInput
WorktreeCreateHookInput
WorktreeRemoveHookInput
MessageDisplayHookInput
HookJSONOutput
Nilai pengembalian hook.
AsyncHookJSONOutput
SyncHookJSONOutput
Tipe Input Tool
Dokumentasi skema input untuk semua tool Claude Code bawaan. Tipe ini dieksport dari@anthropic-ai/claude-agent-sdk dan dapat digunakan untuk interaksi tool yang aman tipe.
ToolInputSchemas
Union dari semua tipe input tool, dieksport dari @anthropic-ai/claude-agent-sdk.
Agent
Nama tool:Agent (sebelumnya Task, yang masih diterima sebagai alias)
AskUserQuestion
Nama tool:AskUserQuestion
Bash
Nama tool:Bash
Monitor
Nama tool:Monitor
persistent: true untuk watch panjang sesi seperti log tails. Monitor mengikuti aturan izin yang sama seperti Bash. Lihat referensi tool Monitor untuk perilaku dan ketersediaan provider.
TaskOutput
Nama tool:TaskOutput
Edit
Nama tool:Edit
Read
Nama tool:Read
pages untuk rentang halaman PDF (misalnya, "1-5").
Write
Nama tool:Write
Glob
Nama tool:Glob
Grep
Nama tool:Grep
TaskStop
Nama tool:TaskStop
NotebookEdit
Nama tool:NotebookEdit
WebFetch
Nama tool:WebFetch
WebSearch
Nama tool:WebSearch
Workflow
Nama tool:Workflow
Workflow tersedia di Agent SDK v0.3.149 dan yang lebih baru. Setidaknya satu dari script, name, atau scriptPath diperlukan.
| Field | Type | Description |
|---|---|---|
script | string | Skrip workflow inline. Harus dimulai dengan export const meta = { name, description, phases } sebagai literal, diikuti oleh badan skrip menggunakan agent(), parallel(), pipeline(), dan phase() |
name | string | Nama workflow bawaan atau yang disimpan di .claude/workflows/. Diselesaikan ke skrip |
scriptPath | string | Jalur ke file skrip workflow di disk. Mengambil prioritas atas script dan name. Setiap invokasi menyimpan skrip dan mengembalikan jalur dalam hasil, sehingga Anda dapat mengedit file itu dan menginvokasi kembali dengan scriptPath yang sama untuk melakukan iterasi |
args | unknown | Nilai input yang diekspos ke skrip sebagai args global, untuk workflow bernama yang diparameterisasi seperti pertanyaan penelitian atau daftar jalur file. Lewatkan array dan objek sebagai nilai JSON aktual, bukan sebagai string yang dikodekan JSON |
resumeFromRunId | string | Run ID dari invokasi Workflow sebelumnya untuk dilanjutkan. Panggilan agent() yang selesai dengan input yang tidak berubah mengembalikan hasil yang di-cache; hanya panggilan yang berubah atau baru yang berjalan langsung. Sesi yang sama saja |
TodoWrite
Nama tool:TodoWrite
Mulai dari TypeScript Agent SDK 0.3.142,
TodoWrite dinonaktifkan secara default. Gunakan TaskCreate, TaskGet, TaskUpdate, dan TaskList sebagai gantinya. Lihat Migrasi ke tool Task untuk memperbarui kode pemantauan Anda, atau atur CLAUDE_CODE_ENABLE_TASKS=0 untuk kembali ke TodoWrite.TaskCreate
Nama tool:TaskCreate
TaskUpdate
Nama tool:TaskUpdate
status ke "deleted" untuk menghapusnya.
TaskGet
Nama tool:TaskGet
null ketika ID tidak ditemukan.
TaskList
Nama tool:TaskList
ExitPlanMode
Nama tool:ExitPlanMode
ListMcpResources
Nama tool:ListMcpResourcesTool
ReadMcpResource
Nama tool:ReadMcpResourceTool
EnterWorktree
Nama tool:EnterWorktree
path untuk beralih ke worktree yang ada dari repositori saat ini alih-alih membuat yang baru. name dan path saling eksklusif.
Tipe Output Tool
Dokumentasi skema output untuk semua tool Claude Code bawaan. Tipe ini dieksport dari@anthropic-ai/claude-agent-sdk dan mewakili data respons aktual yang dikembalikan oleh setiap tool.
ToolOutputSchemas
Union dari semua tipe output tool.
Agent
Nama tool:Agent (sebelumnya Task, yang masih diterima sebagai alias)
status: "completed" untuk tugas yang selesai, "async_launched" untuk tugas latar belakang, dan "sub_agent_entered" untuk subagen interaktif.
AskUserQuestion
Nama tool:AskUserQuestion
response diatur ketika pengguna mengetik balasan bentuk bebas alih-alih menjawab pertanyaan terstruktur; ketika ada, Claude menerima “Pengguna merespons: …” alih-alih daftar jawaban per-pertanyaan.
Bash
Nama tool:Bash
backgroundTaskId.
Monitor
Nama tool:Monitor
TaskStop untuk membatalkan watch lebih awal.
Edit
Nama tool:Edit
Read
Nama tool:Read
type.
Write
Nama tool:Write
Glob
Nama tool:Glob
Grep
Nama tool:Grep
mode: daftar file, konten dengan kecocokan, atau hitungan kecocokan.
TaskStop
Nama tool:TaskStop
NotebookEdit
Nama tool:NotebookEdit
WebFetch
Nama tool:WebFetch
WebSearch
Nama tool:WebSearch
Workflow
Nama tool:Workflow
error sebelum memperlakukan run sebagai dimulai: skrip yang gagal pemeriksaan sintaksnya mengembalikan status: "async_launched" dengan error diatur, dan tidak pernah berjalan.
| Field | Type | Description |
|---|---|---|
status | "async_launched" | Tool menerima invokasi. Ini adalah satu-satunya nilai yang diambil field |
taskId | string | Pengenal tugas latar belakang untuk run |
runId | string | Pengenal workflow run untuk diteruskan sebagai resumeFromRunId pada invokasi kemudian |
summary | string | Deskripsi satu baris tentang apa yang dilakukan workflow |
transcriptDir | string | Direktori tempat transkrip subagen ditulis selama eksekusi |
scriptPath | string | Jalur ke skrip workflow yang disimpan untuk run ini. Edit dan teruskan kembali sebagai scriptPath untuk menjalankan ulang tanpa mengirim ulang skrip |
error | string | Diatur ketika skrip gagal pemeriksaan sintaksnya. Ketika ada, run tidak dimulai meskipun status async_launched |
TodoWrite
Nama tool:TodoWrite
Mulai dari TypeScript Agent SDK 0.3.142,
TodoWrite dinonaktifkan secara default. Gunakan TaskCreate, TaskGet, TaskUpdate, dan TaskList sebagai gantinya. Lihat Migrasi ke tool Task untuk memperbarui kode pemantauan Anda, atau atur CLAUDE_CODE_ENABLE_TASKS=0 untuk kembali ke TodoWrite.TaskCreate
Nama tool:TaskCreate
TaskUpdate
Nama tool:TaskUpdate
TaskGet
Nama tool:TaskGet
null ketika ID tidak ditemukan.
TaskList
Nama tool:TaskList
ExitPlanMode
Nama tool:ExitPlanMode
ListMcpResources
Nama tool:ListMcpResourcesTool
ReadMcpResource
Nama tool:ReadMcpResourceTool
EnterWorktree
Nama tool:EnterWorktree
Tipe Izin
PermissionUpdate
Operasi untuk memperbarui izin.
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
Tipe Lainnya
ApiKeySource
SdkBeta
Fitur beta yang tersedia yang dapat diaktifkan melalui opsi betas. Lihat Beta headers untuk informasi lebih lanjut.
SlashCommand
Informasi tentang perintah slash yang tersedia.
ModelInfo
Informasi tentang model yang tersedia.
AgentInfo
Informasi tentang subagen yang tersedia yang dapat dipanggil melalui tool Agent.
| Field | Tipe | Deskripsi |
|---|---|---|
name | string | Pengenal tipe agen (misalnya, "Explore", "general-purpose") |
description | string | Deskripsi tentang kapan menggunakan agen ini |
model | string | undefined | Alias model yang digunakan agen ini. Jika dihilangkan, mewarisi model parent |
McpServerStatus
Status server MCP yang terhubung.
McpServerStatusConfig
Konfigurasi server MCP seperti yang dilaporkan oleh mcpServerStatus(). Ini adalah union dari semua tipe transport server MCP.
McpServerConfig untuk detail tentang setiap tipe transport.
AccountInfo
Informasi akun untuk pengguna yang diautentikasi.
ModelUsage
Statistik penggunaan per-model yang dikembalikan dalam pesan hasil. Nilai costUSD adalah estimasi sisi klien. Lihat Lacak biaya dan penggunaan untuk peringatan penagihan.
ConfigScope
NonNullableUsage
Versi Usage dengan semua field nullable dibuat non-nullable.
Usage
Statistik penggunaan token. Ini adalah tipe BetaUsage dari @anthropic-ai/sdk.
BetaServerToolUsage dan BetaIterationsUsage didefinisikan dalam @anthropic-ai/sdk.
CallToolResult
Tipe hasil tool MCP (dari @modelcontextprotocol/sdk/types.js). structuredContent adalah objek JSON yang dapat dikembalikan bersama content, termasuk blok gambar. Lihat Kembalikan data terstruktur.
ThinkingConfig
Mengontrol perilaku pemikiran/penalaran Claude. Mengambil preseden atas maxThinkingTokens yang sudah usang.
display opsional mengontrol apakah teks pemikiran dikembalikan "summarized" atau "omitted". Pada Claude Opus 4.7 dan yang lebih baru, default API adalah "omitted", jadi atur "summarized" untuk menerima konten pemikiran dalam blok thinking.
SpawnedProcess
Antarmuka untuk spawn proses kustom (digunakan dengan opsi spawnClaudeCodeProcess). ChildProcess sudah memenuhi antarmuka ini.
SpawnOptions
Opsi yang diteruskan ke fungsi spawn kustom.
Field
signal memberi tahu fungsi spawn Anda kapan harus merobohkan proses. Teruskan sebagai opsi signal ke spawn() Node, atau teruskan ke handler teardown VM atau container Anda.Signal ini tidak menyala saat Options.abortController membatalkan. SDK pertama-tama menutup stdin proses dan menunggu sekitar dua detik sehingga CLI dapat ditutup dengan bersih, kemudian membatalkan signal ini. Untuk bereaksi saat pemanggil membatalkan, dengarkan Options.abortController.signal Anda sendiri, yang dapat direferensikan fungsi spawn Anda dari cakupan penutupnya.McpSetServersResult
Hasil operasi setMcpServers().
RewindFilesResult
Hasil operasi rewindFiles().
SDKStatusMessage
Pesan pembaruan status (misalnya, pemadatan).
SDKTaskNotificationMessage
Notifikasi ketika tugas latar belakang selesai, gagal, atau dihentikan. Tugas latar belakang mencakup perintah Bash run_in_background, watch Monitor, dan subagen latar belakang.
SDKToolUseSummaryMessage
Ringkasan penggunaan tool dalam percakapan.
SDKHookStartedMessage
Dipancarkan ketika hook mulai mengeksekusi.
SDKHookProgressMessage
Dipancarkan saat hook sedang berjalan, dengan output stdout/stderr.
SDKHookResponseMessage
Dipancarkan ketika hook selesai mengeksekusi.
SDKToolProgressMessage
Dipancarkan secara berkala saat tool sedang mengeksekusi untuk menunjukkan kemajuan.
SDKAuthStatusMessage
Dipancarkan selama alur autentikasi.
SDKTaskStartedMessage
Dipancarkan ketika tugas latar belakang dimulai. Field task_type adalah "local_bash" untuk perintah Bash latar belakang dan watch Monitor, "local_agent" untuk subagen, atau "remote_agent".
SDKTaskProgressMessage
Dipancarkan secara berkala saat subagen atau tugas latar belakang sedang berjalan. Field summary diisi hanya ketika agentProgressSummaries diaktifkan.
SDKTaskUpdatedMessage
Dipancarkan ketika status tugas latar belakang berubah, seperti ketika transisi dari running ke completed. Gabungkan patch ke dalam peta tugas lokal Anda yang dikunci oleh task_id. Field end_time adalah timestamp epoch Unix dalam milidetik, dapat dibandingkan dengan Date.now().
SDKFilesPersistedEvent
Dipancarkan ketika checkpoint file dipersistenkan ke disk.
SDKRateLimitEvent
Dipancarkan ketika sesi mengalami batas laju.
SDKLocalCommandOutputMessage
Output dari perintah slash lokal (misalnya, /voice atau /usage). Ditampilkan sebagai teks gaya asisten dalam transkrip.
SDKCommandsChangedMessage
Dipancarkan ketika set perintah yang tersedia berubah di tengah sesi, seperti ketika skills ditemukan saat agen memasuki subdirektori. Array commands adalah daftar lengkap yang diperbarui, jadi ganti daftar perintah yang di-cache dengan payload ini. Memanggil supportedCommands() lagi tidak setara: metode itu mengembalikan snapshot yang ditangkap saat inisialisasi dan tidak mencerminkan perubahan di tengah sesi.
SDKPromptSuggestionMessage
Dipancarkan setelah setiap putaran ketika promptSuggestions diaktifkan. Berisi prompt pengguna berikutnya yang diprediksi.
AbortError
Kelas error kustom untuk operasi abort.
Konfigurasi Sandbox
SandboxSettings
Konfigurasi untuk perilaku sandbox. Gunakan ini untuk mengaktifkan sandboxing perintah dan mengonfigurasi pembatasan jaringan secara terprogram.
| Properti | Tipe | Default | Deskripsi |
|---|---|---|---|
enabled | boolean | false | Aktifkan mode sandbox untuk eksekusi perintah |
failIfUnavailable | boolean | true | Berhenti saat startup jika enabled adalah true tetapi sandbox tidak dapat dimulai. Atur false untuk kembali ke eksekusi unsandboxed dengan peringatan di stderr |
autoAllowBashIfSandboxed | boolean | true | Auto-approve perintah bash ketika sandbox diaktifkan |
excludedCommands | string[] | [] | Perintah yang selalu bypass pembatasan sandbox (misalnya, ['docker']). Ini berjalan unsandboxed secara otomatis tanpa keterlibatan model |
allowUnsandboxedCommands | boolean | true | Izinkan model untuk meminta menjalankan perintah di luar sandbox. Ketika true, model dapat mengatur dangerouslyDisableSandbox dalam input tool, yang jatuh kembali ke sistem izin |
network | SandboxNetworkConfig | undefined | Konfigurasi sandbox spesifik jaringan |
filesystem | SandboxFilesystemConfig | undefined | Konfigurasi sandbox spesifik filesystem untuk pembatasan baca/tulis |
ignoreViolations | Record<string, string[]> | undefined | Peta kategori pelanggaran ke pola untuk diabaikan (misalnya, { file: ['/tmp/*'], network: ['localhost'] }) |
enableWeakerNestedSandbox | boolean | false | Aktifkan sandbox bersarang yang lebih lemah untuk kompatibilitas |
ripgrep | { command: string; args?: string[] } | undefined | Konfigurasi biner ripgrep kustom untuk lingkungan sandbox |
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, kemudian berhenti. Perhatikan subtype itu daripada mengharapkan query() untuk melempar sebelum menghasilkan pesan.Untuk menjalankan unsandboxed sebagai gantinya, atur failIfUnavailable: false.Contoh penggunaan
SandboxNetworkConfig
Konfigurasi spesifik jaringan untuk mode sandbox. Pengaturan ini berlaku untuk perintah Bash sandboxed ketika enabled adalah true dalam SandboxSettings induk. Mereka tidak membatasi tool WebFetch, yang menggunakan aturan izin sebagai gantinya.
| Properti | Tipe | Default | Deskripsi |
|---|---|---|---|
allowedDomains | string[] | [] | Nama domain yang dapat diakses proses sandboxed |
deniedDomains | string[] | [] | Nama domain yang tidak dapat diakses proses sandboxed. Mengambil prioritas atas allowedDomains |
allowManagedDomainsOnly | boolean | false | Hanya pengaturan yang dikelola. Ketika diatur dalam pengaturan yang dikelola, hanya entri allowedDomains dari pengaturan yang dikelola yang dihormati dan entri dari pengaturan pengguna, proyek, atau lokal diabaikan. Tidak berpengaruh ketika diatur melalui opsi SDK |
allowLocalBinding | boolean | false | Izinkan proses untuk mengikat ke port lokal (misalnya, untuk dev server) |
allowUnixSockets | string[] | [] | Jalur Unix socket yang dapat diakses proses (misalnya, Docker socket) |
allowAllUnixSockets | boolean | false | Izinkan akses ke semua Unix socket |
httpProxyPort | number | undefined | Port proxy HTTP untuk permintaan jaringan |
socksProxyPort | number | undefined | Port proxy SOCKS untuk permintaan jaringan |
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.
| Properti | Tipe | Default | Deskripsi |
|---|---|---|---|
allowWrite | string[] | [] | Pola jalur file untuk mengizinkan akses tulis ke |
denyWrite | string[] | [] | Pola jalur file untuk menolak akses tulis ke |
denyRead | string[] | [] | Pola jalur file untuk menolak akses baca ke |
Fallback Izin untuk Perintah Unsandboxed
KetikaallowUnsandboxedCommands diaktifkan, model dapat meminta untuk menjalankan perintah di luar sandbox dengan mengatur dangerouslyDisableSandbox: true dalam input tool. Permintaan ini jatuh kembali ke sistem izin yang ada, berarti handler canUseTool Anda dipanggil, memungkinkan Anda untuk mengimplementasikan logika otorisasi kustom.
excludedCommands vs allowUnsandboxedCommands:excludedCommands: Daftar statis perintah yang selalu bypass sandbox secara otomatis (misalnya,['docker']). Model tidak memiliki kontrol atas ini.allowUnsandboxedCommands: Biarkan model memutuskan pada runtime apakah akan meminta eksekusi unsandboxed dengan mengaturdangerouslyDisableSandbox: truedalam input tool.
- Audit permintaan model: Catat ketika model meminta eksekusi unsandboxed
- Implementasikan allowlist: Hanya izinkan perintah tertentu untuk berjalan unsandboxed
- Tambahkan alur persetujuan: Memerlukan otorisasi eksplisit untuk operasi istimewa
Lihat juga
- Gambaran umum SDK - Konsep SDK umum
- Referensi SDK Python - Dokumentasi SDK Python
- Referensi CLI - Antarmuka baris perintah
- Alur kerja umum - Panduan langkah demi langkah