Langsung ke konten utama

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 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> not found. Untuk mengatasi ini, sematkan biner platform sebagai aset file, ekstrak ke path nyata saat startup dengan extractFromBunfs(), dan teruskan path tersebut ke pathToClaudeCodeExecutable. Helper extractFromBunfs() memerlukan @anthropic-ai/claude-agent-sdk v0.3.144 atau lebih baru. Contoh di bawah ini membangun untuk macOS pada Apple Silicon:
extractFromBunfs() menyalin biner yang disematkan keluar dari filesystem virtual executable yang dikompilasi ke direktori temp per-pengguna dan mengembalikan path nyata. Di luar executable yang dikompilasi, ia mengembalikan path input tidak berubah, jadi kode yang sama berjalan dalam pengembangan tanpa modifikasi. Setiap executable yang dikompilasi menyematkan biner platform tunggal. Cocokkan paket platform dalam impor ke --target Anda:
  • Untuk cross-compile, instal paket platform yang tidak cocok, misalnya npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force.
  • Di Windows, subpath biner adalah claude.exe, misalnya @anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.

Fungsi

query()

Fungsi utama untuk berinteraksi dengan Claude Code. Membuat generator asinkron yang melakukan streaming pesan saat tiba.

Parameter

Pengembalian

Mengembalikan 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.

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.

tool()

Membuat definisi tool MCP yang aman tipe untuk digunakan dengan server MCP SDK.

Parameter

ToolAnnotations

Dieksport ulang dari @modelcontextprotocol/sdk/types.js. Semua field adalah petunjuk opsional; klien tidak boleh mengandalkannya untuk keputusan keamanan.

createSdkMcpServer()

Membuat instance server MCP yang berjalan dalam proses yang sama dengan aplikasi Anda.

Parameter

listSessions()

Menemukan dan membuat daftar sesi masa lalu dengan metadata ringan. Filter berdasarkan direktori proyek atau buat daftar sesi di semua proyek.

Parameter

Tipe pengembalian: SDKSessionInfo

Contoh

Cetak 10 sesi terbaru untuk proyek. Hasil diurutkan 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

resolveSettings()

Menyelesaikan pengaturan Claude Code yang efektif untuk direktori tertentu menggunakan mesin penggabungan yang sama dengan CLI, tanpa menspawn CLI Claude. Gunakan untuk memeriksa konfigurasi apa yang akan dilihat oleh panggilan query() sebelum memanggil satu.
Fungsi ini alpha dan API-nya mungkin berubah sebelum stabilisasi. Fungsi ini membaca sumber MDM, termasuk plist macOS dan Windows HKLM/HKCU, untuk paritas dengan startup CLI, tetapi tidak mengeksekusi subprocess policyHelper yang dikonfigurasi admin. Field permissions.defaultMode dikembalikan apa adanya dari semua tingkat termasuk pengaturan proyek. Filter kepercayaan yang diterapkan CLI sebelum menghormati mode izin yang meningkat tidak diterapkan.

Parameter

resolveSettings() menerima objek opsi tunggal. Semua field bersifat opsional.

Tipe pengembalian: ResolvedSettings

resolveSettings() mengembalikan objek yang menjelaskan pengaturan yang digabungkan dan sumber yang berkontribusi pada setiap kunci.

Contoh

Contoh di bawah ini menyelesaikan pengaturan untuk direktori proyek dan mencetak sumber yang mengontrol periode pembersihan.

Tipe

Options

Objek konfigurasi untuk fungsi query().

Tangani respons API yang lambat atau terhenti

Subprocess CLI membaca beberapa variabel lingkungan yang mengontrol timeout API dan deteksi stall. Lewatkan melalui opsi env:
  • API_TIMEOUT_MS: timeout per-request pada klien Anthropic, dalam milidetik. Default 600000. Berlaku untuk loop utama dan semua subagen.
  • CLAUDE_CODE_MAX_RETRIES: maksimum retry API. Default 10, dibatasi pada 15. Setiap retry mendapatkan jendela API_TIMEOUT_MS sendiri, jadi waktu dinding terburuk kira-kira API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1) ditambah backoff. Untuk run yang tidak diawasi yang perlu menunggu melalui pemadaman yang lebih lama, atur CLAUDE_CODE_RETRY_WATCHDOG=1: itu retry kapasitas error tanpa batas, dan mulai dari Claude Code v2.1.199 menaikkan default untuk error transien lainnya menjadi 300 dan menghapus cap pada variabel ini.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: stall watchdog untuk subagen yang diluncurkan dengan run_in_background. Default 600000. 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 dengan CLAUDE_STREAM_IDLE_TIMEOUT_MS: membatalkan request ketika header telah tiba tetapi body respons berhenti streaming. Watchdog aktif secara default untuk semua penyedia; atur CLAUDE_ENABLE_STREAM_WATCHDOG=0 untuk menonaktifkannya. CLAUDE_STREAM_IDLE_TIMEOUT_MS default ke 300000 dan diklem ke minimum itu. Request yang dibatalkan melalui jalur retry normal.

Objek Query

Antarmuka yang dikembalikan oleh fungsi query().

Metode

applyFlagSettings()

Mengubah pengaturan pada sesi yang sedang berjalan tanpa memulai ulang query. Gunakan ketika pengaturan yang tidak memiliki setter khusus perlu berubah di tengah sesi, seperti memperketat permissions setelah agen membaca input yang tidak terpercaya. setModel() dan setPermissionMode() adalah setter khusus untuk dua kunci itu; applyFlagSettings() adalah bentuk umum yang menerima subset kunci pengaturan apa pun, dan melewatkan model di sini berperilaku sama seperti setModel(). Hanya beberapa kunci yang berlaku di tengah sesi:
  • Diterapkan pada putaran berikutnya: model, effortLevel, ultracode, permissions, hooks, skillOverrides, fastMode, agent. Beralih agent juga menerapkan penggantian model agen itu, hooks, dan prompt sistem pada putaran berikutnya.
  • Tidak ada efek di tengah sesi: opsi prompt sistem. Ini diselesaikan sekali saat startup, jadi sesi yang sedang berjalan menyimpan nilai asli meskipun panggilan berhasil. Untuk mengubahnya, mulai sesi baru.
effortLevel menerima nama tingkat usaha. Ini juga menerima "ultracode", yang menjalankan sesi pada usaha xhigh dan mengaktifkan ultracode. Tipe Settings mendeklarasikan effortLevel tanpa nilai itu, jadi lewatkan { ultracode: true } yang setara dalam TypeScript. Nilai ultracode memerlukan Claude Code v2.1.203 atau lebih baru dan diterima hanya oleh applyFlagSettings(), bukan oleh kunci effortLevel dalam file pengaturan. Nilai ditulis ke lapisan flag-settings, lapisan yang sama yang opsi settings inline dari query() isi saat startup. Flag settings duduk di dekat bagian atas urutan preseden pengaturan: mereka mengganti pengaturan pengguna, proyek, dan lokal, dan hanya pengaturan kebijakan terkelola yang dapat mengganti mereka. Ini adalah tier yang sama yang bagian preseden di halaman sebut opsi terprogram. Panggilan berturut-turut shallow-merge kunci tingkat atas. Panggilan kedua dengan { permissions: {...} } mengganti seluruh objek permissions dari panggilan sebelumnya daripada deep-merging ke dalamnya. Untuk menghapus kunci dari lapisan flag dan kembali ke sumber preseden lebih rendah, lewatkan null untuk kunci itu. Melewatkan undefined tidak memiliki efek karena serialisasi JSON menjatuhkannya. Hanya tersedia dalam mode input streaming, batasan yang sama seperti setModel() dan setPermissionMode(). Contoh di bawah beralih model aktif di tengah sesi, kemudian menghapus override sehingga model kembali ke apa pun yang ditentukan pengaturan pengguna atau proyek.
applyFlagSettings() adalah TypeScript-only. SDK Python tidak mengekspos metode setara.

WarmQuery

Handle yang dikembalikan oleh startup(). Subprocess sudah dispawn dan diinisialisasi, jadi memanggil query() pada handle ini menulis prompt langsung ke proses yang siap tanpa latensi startup.

Metode

WarmQuery mengimplementasikan AsyncDisposable, jadi dapat digunakan dengan await using untuk pembersihan otomatis.

SDKControlInitializeResponse

Tipe pengembalian dari initializationResult(). Berisi data inisialisasi sesi.
Ketika klien mengirim initialize ke sesi yang sudah berjalan, wrapper control-response juga membawa array pending_permission_requests opsional. Field berada pada wrapper respons itu sendiri, bukan dalam payload SDKControlInitializeResponse di atas. Setiap entri adalah pesan control_request lengkap dengan bentuk { type: "control_request", request_id, request } yang sama dengan sesi yang dialirkan untuk permintaan izin saat berjalan. Ini adalah permintaan yang dikeluarkan sebelum klien terhubung dan masih menunggu balasan. SDK membaca array untuk Anda dan mengirimkan setiap entri ke callback canUseTool Anda, pengiriman ulang yang sama yang reinitialize() picu setelah celah transport. Tangani ID permintaan berulang secara idempotent, karena entri dapat mengulangi permintaan yang callback sudah terima sebelum koneksi putus.

SDKControlInterruptResponse

Penerimaan interrupt: nilai yang interrupt() diselesaikan dengan pada CLI yang mengiklankan kemampuan interrupt_receipt_v1 dalam SDKSystemMessage.capabilities. Memerlukan Claude Code v2.1.205 atau lebih baru. CLI sebelumnya menjawab interrupt dengan payload kesuksesan kosong, jadi interrupt() diselesaikan ke undefined.
still_queued mencantumkan UUID pesan pengguna yang bertahan dari interrupt: pesan masih dalam antrian, ditambah batch apa pun yang sudah dihapus antrian untuk putaran berikutnya tetapi belum dapat dijangkau oleh abort. Masing-masing berjalan sebagai putaran sendiri setelah interrupt kecuali Anda membatalkannya terlebih dahulu. Gunakan penerimaan untuk memutuskan apakah akan mengirim ulang apa pun; mengirim ulang pesan yang sudah terdaftar menghasilkan putaran duplikat. Interpretasikan daftar dengan peringatan ini:
  • Hanya pesan yang antri dengan UUID muncul. Array kosong tidak berarti tidak ada lagi yang akan berjalan.
  • Hanya pesan thread utama yang terdaftar. Pesan yang ditujukan ke subagen di luar jangkauan.
  • Daftar dapat mencakup UUID yang klien Anda tidak pernah kirim, seperti pemicu tugas terjadwal. Abaikan UUID yang tidak Anda kenal alih-alih memperlakukannya sebagai error.
Penerimaan adalah snapshot yang diambil pada saat interrupt diproses, dan pada interrupt yang bersih tiba sebelum SDKResultMessage putaran yang terputus. Baca penerimaan daripada memeriksa antrian setelah hasil itu: loop memulai putaran antrian berikutnya segera, jadi antrian yang Anda periksa setelah hasil sudah berubah.

AgentDefinition

Konfigurasi untuk subagen yang didefinisikan secara terprogram.

AgentMcpServerSpec

Menentukan server MCP yang tersedia untuk subagen. Dapat berupa nama server (string yang mereferensikan server dari konfigurasi mcpServers parent) atau konfigurasi server inline yang merekam nama server ke config.
Di mana McpServerConfigForProcessTransport adalah McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.

SettingSource

Mengontrol sumber konfigurasi berbasis filesystem mana yang dimuat pengaturan SDK.

Perilaku default

Ketika settingSources dihilangkan atau undefined, query() memuat pengaturan filesystem yang sama seperti CLI Claude Code: pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola dimuat dalam semua kasus; pengaturan yang dikelola server diambil ketika sesi mengautentikasi dengan kredensial organisasi pada konfigurasi yang memenuhi syarat. Lihat Apa yang tidak dikontrol settingSources untuk input yang dibaca terlepas dari opsi ini, dan cara menonaktifkannya.

Mengapa menggunakan settingSources

Nonaktifkan pengaturan filesystem:
Muat semua pengaturan filesystem secara eksplisit:
Muat hanya sumber pengaturan tertentu:
Lingkungan pengujian dan CI:
Aplikasi SDK-only:
Memuat instruksi proyek CLAUDE.md:

Preseden pengaturan

Ketika beberapa sumber dimuat, pengaturan digabungkan dengan preseden ini (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 mengganti pengaturan filesystem pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola mengambil preseden atas opsi terprogram.

PermissionMode

CanUseTool

Tipe fungsi izin kustom untuk mengontrol penggunaan tool. Fungsi adalah pengganti SDK untuk prompt izin interaktif: dipanggil hanya ketika alur evaluasi izin diselesaikan ke prompt. Panggilan tool yang sudah disetujui oleh entri allowedTools, aturan allow pengaturan, atau mode izin, seperti acceptEdits atau bypassPermissions, tidak pernah memanggilnya. Untuk gating setiap tool call, gunakan hook PreToolUse sebagai gantinya. AskUserQuestion, tool MCP yang ditandai requiresUserInteraction, dan tool konektor organisasi Anda atur ke ask mencapai fungsi bahkan ketika aturan allow cocok. Dalam mode dontAsk panggilan ini ditolak sebagai gantinya, tanpa memanggilnya.
Callback biasanya menyelesaikan permintaan dengan mengembalikan PermissionResult, yang SDK tulis kembali melalui transportnya sebagai control_response. Kembalikan null hanya ketika aplikasi Anda sudah mengirim control_response untuk permintaan ini melalui saluran sendiri, mengulangi requestId; SDK kemudian melewati penulisan respons ke transportnya. Mengembalikan null dalam kasus lain meninggalkan tool call terblokir tanpa batas, karena tidak ada control_response yang pernah dikirim dan prompt izin tidak timeout. Opsi requestId dan nilai pengembalian null memerlukan Claude Code v2.1.199 atau lebih baru.

PermissionResult

Hasil pemeriksaan izin.

ToolConfig

Konfigurasi untuk perilaku tool bawaan.

McpServerConfig

Konfigurasi untuk server MCP.

McpStdioServerConfig

McpSSEServerConfig

McpHttpServerConfig

McpSdkServerConfigWithInstance

McpClaudeAIProxyServerConfig

SdkPluginConfig

Konfigurasi untuk memuat plugin di SDK.
Contoh:
Untuk informasi lengkap tentang membuat dan menggunakan plugin, lihat Plugins.

Tipe Pesan

SDKMessage

Tipe union dari semua pesan yang mungkin dikembalikan oleh query.

SDKAssistantMessage

Pesan respons asisten.
Field 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.
Atur shouldQuery ke false untuk menambahkan pesan ke transkrip tanpa memicu putaran asisten. Pesan ditahan dan digabungkan ke pesan pengguna berikutnya yang memicu putaran. Gunakan ini untuk menyuntikkan konteks, seperti output perintah yang Anda jalankan out of band, tanpa menghabiskan panggilan model. Pada pesan yang membawa blok tool_result, tool_use_result adalah objek output terstruktur tool daripada teks yang dikirim ke model. Bentuknya tergantung pada tool yang dinamai oleh blok tool_use yang cocok, jadi field ini diketik unknown; bentuk bawaan tercantum di bawah Tipe Output Tool. Untuk tool Agent, tool_use_result adalah AgentOutput. Pada hasil completed, content menyimpan laporan subagent tanpa ID agen dan trailer penggunaan yang Claude Code tambahkan ke teks tool_result, jadi render dari tool_use_result daripada mem-parse teks itu.

SDKUserMessageReplay

Pesan pengguna yang diputar ulang dengan UUID yang diperlukan.
Putaran pengguna yang disuntikkan dari luar sesi, yang origin-nya adalah peer atau channel, mencapai aliran sebagai replay apakah itu disampaikan selama putaran aktif atau memulai putaran baru saat sesi idle. Sebelum v2.1.207, putaran yang disuntikkan disampaikan saat sesi idle tidak menghasilkan pesan pada aliran dan hanya muncul ketika Anda membaca ulang transkrip.

SDKResultMessage

Pesan hasil akhir.
Beberapa field 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 putaran berakhir tanpa kesalahan API.
  • ttft_ms: waktu ke token pertama dalam milidetik, diukur ketika pesan asisten pertama yang lengkap tiba. Hadir hanya pada cabang kesuksesan.
  • ttft_stream_ms: waktu dalam milidetik hingga event aliran message_start pertama, ketika aliran respons dibuka. Lebih rendah dari ttft_ms; celah antara keduanya adalah waktu yang dihabiskan untuk streaming pesan pertama. Hadir hanya pada cabang kesuksesan.
  • terminal_reason: mengapa loop berakhir. Salah satu dari "completed", "max_turns", "tool_deferred", "aborted_streaming", "aborted_tools", "hook_stopped", "stop_hook_prevented", "background_requested", "blocking_limit", "rapid_refill_breaker", "prompt_too_long", "image_error", "model_error", "api_error", "malformed_tool_use_exhausted", "budget_exhausted", "structured_output_retry_exhausted", "tool_deferred_unavailable", atau "turn_setup_failed".
  • fast_mode_state: salah satu dari "on", "off", atau "cooldown".
Field 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.
Array capabilities menamai perilaku protokol yang diimplementasikan CLI ini, sehingga Anda dapat mendeteksi fitur daripada membandingkan string claude_code_version. Ini adalah set terbuka: abaikan nilai yang tidak Anda kenali, dan periksa kemampuan spesifik yang perilakunya Anda andalkan. Field ini memerlukan Claude Code v2.1.205 atau lebih baru dan tidak ada pada CLI yang lebih awal.

SDKPartialAssistantMessage

Pesan parsial streaming (hanya ketika includePartialMessages adalah true). Field parent_tool_use_id selalu null: event aliran dipancarkan untuk sesi utama saja. Untuk atribusi subagent, gunakan pesan lengkap, yang membawa parent_tool_use_id, atau aktifkan forwardSubagentText untuk menerima teks dan pemikiran subagent sebagai pesan lengkap.

SDKCompactBoundaryMessage

Pesan yang menunjukkan batas pemadatan percakapan.

SDKStatusMessage

Pesan status aliran.

SDKLocalCommandOutputMessage

Output perintah lokal.

SDKHookStartedMessage

Hook dimulai.

SDKHookProgressMessage

Kemajuan hook.

SDKHookResponseMessage

Respons hook.

SDKToolProgressMessage

Kemajuan tool.

SDKAuthStatusMessage

Status autentikasi.

SDKTaskNotificationMessage

Notifikasi tugas.

SDKTaskStartedMessage

Tugas dimulai.

SDKTaskProgressMessage

Kemajuan tugas.

SDKTaskUpdatedMessage

Tugas diperbarui.

SDKBackgroundTasksChangedMessage

Tugas latar belakang berubah.

SDKThinkingTokensMessage

Token pemikiran.

SDKSessionStateChangedMessage

Status sesi berubah.

SDKWorkerShuttingDownMessage

Dipancarkan pada pembongkaran worker yang elegan sehingga klien jarak jauh dapat menunjukkan mengapa worker hilang daripada menunggu timeout heartbeat. reason adalah string snake_case pendek yang ditetapkan oleh CLI host, seperti "host_exit" atau "remote_control_disabled". Bertindak atas ini hanya ketika streaming langsung. Sesi yang dilanjutkan memutar ulang instance masa lalu dari pesan ini, jadi abaikan dalam kasus itu.

SDKCommandsChangedMessage

Perintah berubah.

SDKNotificationMessage

Notifikasi.

SDKFilesPersistedEvent

Event file yang disimpan.

SDKToolUseSummaryMessage

Ringkasan penggunaan tool.

SDKMemoryRecallMessage

Pesan recall memori.

SDKRateLimitEvent

Event batas laju.

SDKElicitationCompleteMessage

Elicitasi selesai.

SDKPermissionDeniedMessage

Event aliran yang dipancarkan ketika sistem izin secara otomatis menolak panggilan tool tanpa prompt interaktif. Gunakan ini untuk merender penolakan di UI Anda saat terjadi, daripada hanya mengamati hasil tool is_error yang mengikuti. Jalur tanya interaktif mencapai aplikasi Anda secara terpisah melalui callback canUseTool. Penolakan yang dikeluarkan oleh hook PreToolUse tidak dilaporkan melalui event ini. Event ini memerlukan Claude Code v2.1.136 atau lebih baru.

SDKPromptSuggestionMessage

Saran prompt.

SDKAPIRetryMessage

Percobaan ulang API.

SDKMirrorErrorMessage

Kesalahan mirror.

SDKInformationalMessage

Spanduk teks generik yang dipancarkan oleh loop. Membawa baris status non-error, umpan balik hook seperti alasan blok hook UserPromptSubmit, dan output perintah. Render content sebagai plaintext pada level yang diberikan.

SDKConversationResetMessage

Percakapan direset.

SDKPermissionDenial

Informasi tentang penggunaan tool yang ditolak.

SDKMessageOrigin

Asal-usul pesan dengan peran pengguna. Ini muncul sebagai origin pada SDKUserMessage dan diteruskan ke SDKResultMessage yang sesuai sehingga Anda dapat mengetahui apa yang memicu putaran tertentu.

Tipe Hook

Untuk panduan komprehensif tentang menggunakan hooks dengan contoh dan pola umum, lihat panduan Hooks.

HookEvent

Event hook yang tersedia.

HookCallback

Tipe fungsi callback hook.

HookCallbackMatcher

Konfigurasi hook dengan matcher opsional.

HookInput

Tipe union dari semua tipe input hook.

BaseHookInput

Antarmuka dasar yang diperluas oleh semua tipe input hook.
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

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)
Meluncurkan agen baru untuk menangani tugas kompleks multi-langkah secara otonom.

AskUserQuestion

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

Bash

Nama tool: Bash
Mengeksekusi perintah bash dalam sesi shell persisten dengan timeout opsional dan eksekusi latar belakang.

Monitor

Nama tool: Monitor
Menjalankan sumber latar belakang dan mengirimkan setiap event ke Claude sehingga dapat bereaksi tanpa polling: command menjalankan skrip dan mengeluarkan satu event per baris stdout, dan ws membuka WebSocket dan mengeluarkan satu event per frame teks. Berikan tepat satu dari command atau ws. Sumber ws memerlukan Claude Code v2.1.195 atau yang lebih baru. Atur persistent: true untuk watch panjang sesi seperti log tails. Ketika Monitor menjalankan perintah, ia mengikuti aturan izin yang sama seperti Bash; watch WebSocket meminta persetujuan secara terpisah. Lihat referensi tool Monitor untuk perilaku dan ketersediaan provider.

TaskOutput

Nama tool: TaskOutput
Mengambil output dari tugas latar belakang yang sedang berjalan atau selesai.

Edit

Nama tool: Edit
Melakukan penggantian string yang tepat dalam file.

Read

Nama tool: Read
Membaca file dari filesystem lokal, termasuk teks, gambar, PDF, dan notebook Jupyter. Gunakan pages untuk rentang halaman PDF (misalnya, "1-5").

Write

Nama tool: Write
Menulis file ke filesystem 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 kuat 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 agent atau agen latar belakang bernama berdasarkan ID agen atau nama.

NotebookEdit

Nama tool: NotebookEdit
Mengedit sel dalam file notebook Jupyter.

WebFetch

Nama tool: WebFetch
Mengambil konten dari URL dan memprosesnya dengan model AI.

WebSearch

Nama tool: WebSearch
Mencari web dan mengembalikan hasil yang diformat.

Workflow

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

TodoWrite

Nama tool: TodoWrite
Membuat dan mengelola daftar tugas terstruktur untuk melacak kemajuan.
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
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 dari semua tugas dalam daftar saat ini.

ExitPlanMode

Nama tool: ExitPlanMode
Keluar dari mode perencanaan. 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
Membuat daftar 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, dalam workspace multi-repo, dari repositori yang bersarang di dalamnya; dari dalam sesi worktree harus berada di bawah .claude/worktrees/ dari repositori sesi. name dan path saling eksklusif.

Tipe Output Tool

Dokumentasi skema output untuk semua tool Claude Code bawaan. Tipe ini dieksport dari @anthropic-ai/claude-agent-sdk dan mewakili data respons aktual yang dikembalikan oleh setiap tool.

ToolOutputSchemas

Union dari semua tipe output tool.

Agent

Nama tool: Agent (sebelumnya Task, yang masih diterima sebagai alias)
Mengembalikan hasil dari subagen. 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 jarak jauh, di mana sessionUrl menautkan ke sesi tersebut dan taskId mengidentifikasinya. Field resolvedModel pada varian completed dan async_launched menamai model yang sebenarnya dijalankan oleh subagen, yang dapat berbeda dari input model yang diminta ketika availableModels atau override lainnya berlaku. Field ini memerlukan Claude Code v2.1.174 atau lebih baru. Pada varian completed, worktreePath diatur ketika subagen berjalan di worktree git terisolasi, dan worktreeBranch menamai cabang worktree tersebut ketika Claude Code membuatnya. usage.service_tier membawa string tier layanan yang dilaporkan API untuk permintaan subagen. Sebelum v2.1.207, tipe yang dipublikasikan lebih sempit. Tipe tersebut menghilangkan worktreePath, worktreeBranch, citations, toolStats.frameCount, dan field penggunaan inference_geo, speed, dan iterations, dan mengetik service_tier sebagai "standard" | "priority" | "batch". Field yang ditandai tipe sebagai opsional dapat tidak ada pada hasil yang dicatat oleh versi sebelumnya.

AskUserQuestion

Nama tool: AskUserQuestion
Mengembalikan pertanyaan yang diajukan dan jawaban pengguna. 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
Mengembalikan output perintah dengan stdout/stderr terpisah. Perintah latar belakang menyertakan backgroundTaskId.

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.

Glob

Nama tool: Glob
Mengembalikan jalur file yang cocok dengan pola glob, diurutkan berdasarkan waktu modifikasi.

Grep

Nama tool: Grep
Mengembalikan hasil pencarian. Bentuknya bervariasi menurut mode: daftar file, konten dengan kecocokan, atau hitungan kecocokan.

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.

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.
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
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 mode perencanaan.

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.

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.
Beta context-1m-2025-08-07 sudah pensiun sejak 30 April 2026. Melewatkan nilai ini dengan Claude Sonnet 4.5 atau Sonnet 4 tidak berpengaruh, dan permintaan yang melebihi jendela konteks standar 200k-token mengembalikan error. Untuk menggunakan jendela konteks 1M-token, migrasikan ke Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, atau Claude Opus 4.8, yang mencakup konteks 1M dengan harga standar tanpa header beta yang diperlukan.

SlashCommand

Informasi tentang perintah slash yang tersedia.

ModelInfo

Informasi tentang model yang tersedia.

AgentInfo

Informasi tentang subagen yang tersedia yang dapat dipanggil melalui tool Agent.

McpServerStatus

Status server MCP yang terhubung.

McpServerStatusConfig

Konfigurasi server MCP seperti yang dilaporkan oleh mcpServerStatus(). Ini adalah union dari semua tipe transport server MCP.
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 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.
Field display opsional mengontrol apakah teks pemikiran dikembalikan "summarized" atau "omitted". Pada Claude Opus 4.7 dan yang lebih baru, default API adalah "omitted", jadi atur "summarized" untuk menerima konten pemikiran dalam blok thinking.

SpawnedProcess

Antarmuka untuk spawn proses kustom (digunakan dengan opsi spawnClaudeCodeProcess). ChildProcess sudah memenuhi antarmuka ini.

SpawnOptions

Opsi yang diteruskan ke fungsi spawn kustom.
Field signal memberi tahu fungsi spawn Anda kapan harus merobohkan proses. Teruskan sebagai opsi signal ke spawn() Node, atau teruskan ke handler teardown VM atau container Anda.Signal ini tidak menyala saat Options.abortController membatalkan. SDK pertama-tama menutup stdin proses dan menunggu sekitar dua detik sehingga CLI dapat ditutup dengan bersih, kemudian membatalkan signal ini. Untuk bereaksi saat pemanggil membatalkan, dengarkan Options.abortController.signal Anda sendiri, yang dapat direferensikan fungsi spawn Anda dari cakupan penutupnya.

McpSetServersResult

Hasil operasi setMcpServers().

RewindFilesResult

Hasil operasi rewindFiles().

SDKStatusMessage

Pesan pembaruan status (misalnya, pemadatan).

SDKTaskNotificationMessage

Notifikasi ketika tugas latar belakang selesai, gagal, atau dihentikan. Tugas latar belakang mencakup perintah Bash run_in_background, watch Monitor, dan subagen latar belakang.

SDKToolUseSummaryMessage

Ringkasan penggunaan tool dalam percakapan.

SDKHookStartedMessage

Dipancarkan ketika hook mulai mengeksekusi. Claude Code mengirimkan pesan ini, SDKHookProgressMessage, dan SDKHookResponseMessage ke aliran pesan segera, termasuk saat hook SessionStart atau Setup masih berjalan selama startup sesi. Claude Code v2.1.169 hingga v2.1.203 mengirimkan pesan ini dalam satu batch setelah hook SessionStart atau Setup selesai; v2.1.204 mengembalikan pengiriman langsung.

SDKHookProgressMessage

Dipancarkan saat hook sedang berjalan, dengan output stdout/stderr.

SDKHookResponseMessage

Dipancarkan ketika hook selesai mengeksekusi.

SDKToolProgressMessage

Dipancarkan secara berkala saat tool sedang mengeksekusi untuk menunjukkan kemajuan.

SDKAuthStatusMessage

Dipancarkan selama alur autentikasi.

SDKTaskStartedMessage

Dipancarkan ketika tugas latar belakang dimulai. Field task_type adalah "local_bash" untuk perintah Bash latar belakang dan watch Monitor, "local_agent" untuk subagen, atau "remote_agent".

SDKTaskProgressMessage

Dipancarkan secara berkala saat subagen atau tugas latar belakang sedang berjalan. Field summary diisi hanya ketika agentProgressSummaries diaktifkan.

SDKTaskUpdatedMessage

Dipancarkan ketika status tugas latar belakang berubah, seperti ketika transisi dari running ke completed. Gabungkan patch ke dalam peta tugas lokal Anda yang dikunci oleh task_id. Field end_time adalah timestamp epoch Unix dalam milidetik, dapat dibandingkan dengan Date.now().

SDKBackgroundTasksChangedMessage

Dipancarkan setiap kali set tugas latar belakang yang aktif berubah: tugas dimulai, selesai, dibunuh, atau agen foreground di-background. Array tasks adalah set aktif lengkap. Ganti set yang di-cache dengan setiap payload alih-alih memasangkan acara task_started dan task_notification, sehingga perubahan keanggotaan berikutnya memperbaiki acara apa pun yang Anda lewatkan. Pengurutan relatif terhadap acara per-tugas tersebut tidak ditentukan, jadi jangan menghubungkan dua aliran tersebut. Tidak ada yang dipancarkan saat startup. Atur ulang ke set kosong setiap kali proses CLI sesi dimulai atau dimulai ulang dan biarkan perubahan keanggotaan berikutnya mengisinya kembali. Memerlukan Claude Code v2.1.203 atau lebih baru.

SDKThinkingTokensMessage

Dipancarkan saat Claude menghasilkan blok pemikiran, termasuk yang diredaksi, membawa estimasi berjalan token pemikiran yang dihasilkan sejauh ini. estimated_tokens adalah total berjalan untuk blok pemikiran saat ini dan estimated_tokens_delta adalah kenaikan yang dibawa oleh frame ini. Gunakan untuk tampilan kemajuan. Hitungan akhir untuk loop agen tingkat atas adalah pesan hasil usage.output_tokens, yang tidak termasuk token subagen; gunakan modelUsage untuk akuntansi seluruh pohon. Memerlukan Claude Code v2.1.153 atau lebih baru.

SDKFilesPersistedEvent

Dipancarkan ketika checkpoint file dipersistenkan ke disk.

SDKRateLimitEvent

Dipancarkan ketika sesi mengalami batas laju.
Ketika errorCode adalah "credits_required", penolakan berasal dari langganan claude.ai yang penggunaan yang disertakan sudah habis, dan sesi tidak dapat dilanjutkan sampai pengguna membeli kredit penggunaan. canUserPurchaseCredits menunjukkan apakah pengguna yang diautentikasi dapat membeli kredit untuk akun, dan hasChargeableSavedPaymentMethod menunjukkan apakah metode pembayaran yang disimpan ada di file. Ketiga field ini tidak ada pada acara batas laju yang bukan penolakan yang diperlukan kredit. Memerlukan Claude Code v2.1.181 atau lebih baru.

SDKLocalCommandOutputMessage

Output dari perintah slash lokal (misalnya, /voice atau /usage). Ditampilkan sebagai teks gaya asisten dalam transkrip.

SDKCommandsChangedMessage

Dipancarkan ketika set perintah yang tersedia berubah di tengah sesi, seperti ketika skills ditemukan saat agen memasuki subdirektori. Array commands adalah daftar lengkap yang diperbarui, jadi ganti daftar perintah yang di-cache dengan payload ini. Memanggil supportedCommands() lagi tidak setara: metode itu mengembalikan snapshot yang ditangkap saat inisialisasi dan tidak mencerminkan perubahan di tengah sesi.

SDKPromptSuggestionMessage

Dipancarkan setelah setiap putaran ketika promptSuggestions diaktifkan. Berisi prompt pengguna berikutnya yang diprediksi.

SDKConversationResetMessage

Dipancarkan ketika percakapan sesi diganti tanpa mengakhiri sesi, seperti setelah /clear, pada exit plan-mode, atau ketika percakapan segar dimulai. Pasang transkrip kosong di bawah new_conversation_id dan buang judul sesi yang di-cache.
Pengetikan yang dipublikasikan SDK mendeklarasikan SDKConversationResetMessage dalam Claude Code v2.1.203 dan lebih baru. Sebelum v2.1.203, SDKMessage mereferensikan tipe tanpa mendeklarasikannya, jadi penyempitan pada type === "conversation_reset" gagal untuk typecheck ketika skipLibCheck dinonaktifkan.

AbortError

Kelas error kustom untuk operasi abort.

Konfigurasi Sandbox

SandboxSettings

Konfigurasi untuk perilaku sandbox. Gunakan ini untuk mengaktifkan sandboxing perintah dan mengonfigurasi pembatasan jaringan secara terprogram.
Sandbox bergantung pada dukungan platform dan, di Linux, alat seperti bubblewrap dan socat. Ketika enabled adalah true dan sandbox tidak dapat dimulai, query() melaporkan pesan result dengan subtype: "error_during_execution" dan alasan dalam errors. Untuk panggilan query() pesan tunggal, SDK melempar setelah menghasilkan hasil kesalahan itu, jadi bungkus loop dalam blok try untuk melanjutkan melewatinya. Lihat Menangani hasil untuk kontrak kesalahan.Untuk menjalankan unsandboxed sebagai gantinya, atur failIfUnavailable: false.

Contoh penggunaan

Keamanan Unix socket: Opsi allowUnixSockets dapat memberikan akses ke layanan sistem yang kuat. 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. Dalam contoh di bawah, isCommandAuthorized mewakili pemeriksaan otorisasi yang Anda tentukan.
excludedCommands vs allowUnsandboxedCommands:
  • excludedCommands: Daftar statis perintah yang selalu bypass sandbox secara otomatis (misalnya, ['docker']). Model tidak memiliki kontrol atas ini.
  • allowUnsandboxedCommands: Biarkan model memutuskan pada runtime apakah akan meminta eksekusi unsandboxed dengan mengatur dangerouslyDisableSandbox: true dalam input tool.
Pola ini memungkinkan Anda untuk:
  • 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
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 (aturan ask eksplisit masih memaksa satu). Kombinasi ini secara efektif memungkinkan model untuk melarikan diri dari isolasi sandbox secara diam-diam.

Lihat juga