CLI startup
CLINotFoundError: Claude Code not found
Python SDK meluncurkan Claude Code CLI sebagai subprocess. Ketika tidak dapat menemukan executableclaude, koneksi gagal dengan CLINotFoundError:
ClaudeAgentOptions(cli_path=...) dan menunjuk ke file yang hilang. Tanpa cli_path, SDK mencari PATH Anda dan lokasi instalasi umum, dan pesan mencakup instruksi instalasi untuk platform Anda.
Untuk memperbaikinya:
- Instal Claude Code jika belum diinstal. Lihat Install Claude Code untuk perintah di platform Anda.
- Jika Anda menetapkan
cli_path, konfirmasi file ada dan merupakan executableclaude. - Jika Anda mengandalkan resolusi
PATH, konfirmasiclaude --versionberfungsi di lingkungan yang sama tempat aplikasi Anda berjalan. Proses yang Anda luncurkan di luar shell Anda, seperti dari IDE atau manajer layanan, sering kali berjalan denganPATHyang berbeda.
pathToClaudeCodeExecutable. Cocokkan pesan yang Anda lihat:
Native CLI binary for <platform>-<arch> not found: paket platform bundel hilang, paling sering karena instalasi melewatkan dependensi opsional. Instal ulang@anthropic-ai/claude-agent-sdktanpa melewatkan dependensi opsional, atau arahkanpathToClaudeCodeExecutableke instalasi native. Dalam executable file tunggal yang dibangun denganbun build --compile, pesan yang sama memiliki penyebab dan solusi yang berbeda. Lihat Compile to a single executable.Claude Code native binary not found at <path>atauClaude Code executable not found at <path>. Is options.pathToClaudeCodeExecutable set?: file di jalur yang diselesaikan hilang, atau proses tidak dapat mengaksesnya. Konfirmasi file ada di jalur itu dan bahwa proses dapat mengaksesnya.
CLIConnectionError: Refusing to execute batch script
Di Windows, koneksi gagal denganCLIConnectionError ketika jalur CLI yang digunakan Python SDK adalah skrip batch .bat atau .cmd, termasuk shim claude.cmd yang dibuat instalasi npm:
cmd.exe /c, dan cmd.exe mem-parse ulang seluruh baris perintah pada waktu eksekusi, jadi nilai argumen dapat menjalankan perintah yang disuntikkan.
Sebagian besar instalasi Windows tidak pernah mencapai kesalahan ini. Wheel Windows x64 dari claude-agent-sdk membundel claude.exe, dan SDK lebih memilih CLI bundel, kemudian executable claude.exe native apa pun yang dapat ditemukannya, sebelum kembali ke shim batch. Anda melihat penolakan dalam dua kasus:
- Anda menetapkan
ClaudeAgentOptions(cli_path=...)ke file.batatau.cmd, seperti shimclaude.cmdnpm. - Instalasi Anda tidak memiliki
claude.exebundel atau native, misalnya instalasi sumber di ARM64 Windows di mana satu-satunyaclaudediPATHAnda adalah shim npm.
- Jika Anda menetapkan
ClaudeAgentOptions(cli_path=...), arahkan keclaude.exeatau hapus opsi. SDK melewatkan penemuan saatcli_pathdiatur, jadi instalasi native saja tidak dapat berlaku. - Instal Claude Code secara native di PowerShell:
irm https://claude.ai/install.ps1 | iex - Di Windows x64, instal wheel
claude-agent-sdk, yang membundelclaude.exe.
claude-agent-sdk 0.2.124, Python SDK menjalankan skrip batch melalui cmd.exe tanpa pemeriksaan ini.
CLIConnectionError: Failed to start Claude Code
SDK menemukan file di jalur yang diselesaikan tetapi tidak dapat meluncurkannya. Python menaikkan kegagalan ini sebagaiCLIConnectionError. TypeScript menolak iterasi pesan dengan kesalahan yang tidak membawa kelas SDK. Tabel di bawah memetakan setiap pesan ke apa yang diberitahukannya. Cocokkan pesan yang Anda lihat:
Di kedua SDK, penyebab umum adalah jalur yang diselesaikan yang menunjuk ke sesuatu yang tidak dapat dijalankan, seperti file teks, direktori, atau file tanpa izin eksekusi. Baca saran libc pesan binary native sebagai salah satu kemungkinan penyebab.
Untuk memperbaikinya di salah satu SDK:
- Konfirmasi jalur yang dikonfigurasi menunjuk ke executable
claudeitu sendiri dan bahwa file memiliki izin eksekusi. - Jika Anda tidak memerlukan jalur kustom, hapus
cli_pathdi Python ataupathToClaudeCodeExecutabledi TypeScript sehingga SDK menemukan CLI sendiri, lebih memilih salinan bundel-nya. - Ketika binary yang gagal adalah salinan bundel SDK dalam image kontainer, instal ulang SDK selama build image sehingga binary bundel cocok dengan platform kontainer, atau bangun ulang image untuk arsitektur yang dijalankannya. Penyebab umum adalah binary yang tidak cocok dengan arsitektur atau libc kontainer, atau yang kehilangan izin eksekusi dalam build image.
CLIConnectionError: Not connected
Memanggil metodeClaudeSDKClient di Python sebelum klien terhubung, atau setelah terputus, menaikkan CLIConnectionError dengan pesan ini:
await client.connect() sebelum metode klien lainnya, atau buka klien dengan async with ClaudeSDKClient() as client:, yang terhubung saat masuk.
CLI process exit
Entri di bagian ini berarti proses Claude Code berakhir saat aplikasi Anda menggunakannya. Kesalahan mana yang Anda lihat tergantung pada bahasa SDK dan apakah CLI melaporkan hasil kesalahan sebelum keluar.ProcessError: Command failed with exit code
Python SDK menaikkanProcessError ketika proses Claude Code keluar dengan kode bukan nol:
Error output adalah teks tetap daripada output kesalahan proses Anda. Teks tetap yang sama mengisi atribut stderr pengecualian. Atribut exit_code pengecualian membawa kode. Untuk menangkap apa yang benar-benar ditulis CLI ke stderr, berikan callback stderr di ClaudeAgentOptions dan catat apa yang diterimanya.
ProcessError telanjang berarti CLI keluar tanpa melaporkan hasil kesalahan. Ketika CLI melaporkan satu, SDK menaikkan ResultError sebagai gantinya, tercakup dalam Claude Code returned an error result. ResultError subkelas ProcessError, jadi except ProcessError menangkap keduanya. Untuk menanganinya secara berbeda, letakkan klausa except ResultError terlebih dahulu.
Sebelum claude-agent-sdk 0.2.140, Python SDK menaikkan keluar hasil kesalahan sebagai Exception biasa daripada ResultError.
Claude Code process exited with code N
Pembungkus IDE juga mencetak pesan ini, dan referensi kesalahan mencakupnya untuk VS Code dan peluncur lainnya. Entri ini mencakup apa yang diterima kode TypeScript SDK Anda. SDK menampilkan keluar CLI bukan nol sebagaiError biasa yang menolak loop for await atas pesan query(). Tidak ada kelas kesalahan SDK untuk ditangkap, jadi bungkus loop dalam try/catch dan cocokkan pada pesan:
stderr dalam opsi query. Proses yang dibunuh oleh sinyal melaporkan Claude Code process terminated by signal <name> dalam bentuk yang sama.
Claude Code returned an error result
Kedua SDK mengganti kesalahan keluar proses dengan pesan ini ketika CLI melaporkan hasil kesalahan sebelum keluar:ResultError, yang atribut data-nya membawa hasil kesalahan penuh. TypeScript menolak loop pesan dengan Error biasa yang membawa bentuk pesan yang sama.
Structured outputs
structured_output is None but the result says success
Pesan hasil dapat berakhir dengansubtype: "success" sementara structured_output adalah None di Python atau undefined di TypeScript. Jalankan selesai, tetapi tidak ada output yang divalidasi. Salah satu cara untuk mencapai ini adalah skema yang tidak dapat dipenuhi output apa pun, misalnya batasan panjang yang bertentangan. Jalankan berakhir tanpa kesalahan validasi, dan satu-satunya sinyal adalah structured_output yang hilang.
Perlakukan hasil ini sebagai kegagalan dalam kode aplikasi. Periksa baik bahwa subtype adalah success dan bahwa structured_output ada sebelum menggunakannya. Bagian Error handling menunjukkan pola ini untuk kedua SDK.
Jika terjadi berulang kali dengan skema yang Anda percaya benar, verifikasi skema dapat dipenuhi, kemudian sederhanakan sampai output divalidasi, dan perkenalkan kembali batasan satu per satu.