-p dengan prompt Anda dan opsi CLI apa pun yang Anda butuhkan:
claude -p). Untuk paket SDK Python dan TypeScript dengan output terstruktur, callback persetujuan alat, dan objek pesan asli, lihat dokumentasi Agent SDK lengkap.
Penggunaan dasar
Tambahkan bendera-p (atau --print) ke perintah claude apa pun untuk menjalankannya secara non-interaktif. Tidak semua opsi CLI menggabung dengan -p. Claude Code menolak --bg, dan menolak --cloud dengan deskripsi tugas, dengan kesalahan yang menyebutkan konflik; --cloud dengan ID sesi dan -p sebagai gantinya antrian pesan ke sesi cloud tersebut dan keluar. Opsi yang akan Anda gabungkan dengan -p sering kali mencakup:
--continueuntuk melanjutkan percakapan--allowedToolsuntuk persetujuan otomatis alat--output-formatuntuk output terstruktur
Mulai lebih cepat dengan bare mode
Tambahkan--bare untuk mengurangi waktu startup dengan melewati penemuan otomatis hooks, skills, perintah kustom, subagents, plugins yang diinstal, server MCP, auto memory, dan CLAUDE.md. Tanpanya, claude -p memuat konteks yang sama dengan sesi interaktif, termasuk apa pun yang dikonfigurasi di direktori kerja atau ~/.claude.
Bare mode berguna untuk CI dan skrip di mana Anda memerlukan hasil yang sama di setiap mesin. Hook di ~/.claude rekan kerja atau server MCP di .mcp.json proyek tidak akan berjalan, karena bare mode tidak pernah membacanya. Direktori yang Anda beri nama dengan --add-dir adalah pengecualian parsial: bare mode memuat skills dari folder .claude/skills/ nya, tetapi masih melewati folder .claude/commands/ dan .claude/agents/ nya. Skills dari direktori tambahan mencakup apa yang dimuat dan tidak dimuat.
Tanpa --bare, sesi -p menjalankan hooks di .claude/settings.json proyek dan menghubungkan server di .mcp.json nya, bahkan di folder yang belum pernah Anda percayai. Sesi -p tidak menampilkan dialog kepercayaan ruang kerja dan tidak ada prompt persetujuan per-server. Apa yang berjalan sebelum Anda mempercayai folder mencakup setiap jenis konten repositori di bawah -p dan cara menjaganya tetap keluar.
Contoh ini menjalankan tugas ringkasan sekali pakai dalam bare mode dan pra-menyetujui alat Read sehingga panggilan selesai tanpa prompt izin. Atur ANTHROPIC_API_KEY sebelum menjalankannya, karena bare mode tidak menggunakan login langganan Anda:
ANTHROPIC_API_KEY di lingkungan, dengan kunci yang dibuat di Claude Console, atau berikan apiKeyHelper di JSON --settings. Amazon Bedrock, Google Cloud’s Agent Platform, dan Microsoft Foundry terus membaca kredensial penyedia mereka sendiri seperti biasanya.
Dalam bare mode Claude memiliki akses ke alat Bash, pembacaan file, dan pengeditan file. Berikan konteks apa pun yang Anda butuhkan dengan bendera:
--bare adalah mode yang direkomendasikan untuk panggilan skrip dan SDK, dan akan menjadi default untuk -p di rilis mendatang.Tugas latar belakang saat keluar
Jika Claude memulai tugas Bash latar belakang selama jalankanclaude -p, misalnya server dev atau build watch, shell tersebut dihentikan sekitar lima detik setelah Claude mengembalikan hasil akhirnya dan stdin telah ditutup. Periode grace memungkinkan tugas yang selesai tepat setelah hasil masih memberikan outputnya.
Jika Claude memulai subagent latar belakang atau alur kerja, claude -p sebagai gantinya tetap terbuka sampai pekerjaan itu selesai, karena hasilnya adalah bagian dari output akhir.
Secara default tunggu berakhir setelah 10 menit menunggu idle berkelanjutan, jadi subagent atau alur kerja yang macet tidak dapat membuat proses tetap terbuka tanpa batas. Pada titik itu Claude Code menghentikan apa pun yang masih berjalan dan menjatuhkan hasil parsialnya. Untuk mengubah batas, atur CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS, atau atur ke 0 untuk menunggu tanpa batas.
Jika Claude memulai watch Monitor selama jalankan claude -p, Claude Code menunggu watch sampai waktu habis atau batas sepuluh menit mengakhiri tunggu, mana pun yang terjadi lebih dulu. Saat menunggu, Claude terus merespons apa yang dilaporkan watch. Secara default, watch habis waktu lima menit setelah Claude memulainya.
Hentikan jalankan dengan SIGTERM
Jika Anda menghentikan jalankanclaude -p dengan SIGTERM, misalnya dengan kill atau dari pengawas proses, Claude Code keluar dengan kode 143. Claude Code meninggalkan giliran yang sedang berlangsung tidak selesai dan tidak mencatat hasil untuknya. Untuk mengakhiri giliran sebagai gantinya, kirim SIGINT, atau panggil interrupt() Agent SDK, sebelum Anda menghentikan proses.
Pada SIGTERM, Claude Code menghentikan pohon proses dari perintah Bash apa pun yang masih berjalan. Claude Code kemudian menjalankan SessionEnd hooks dan keluar. Saat keluar, Claude Code tidak memulai panggilan alat baru, tidak mengirim permintaan model baru, dan tidak menjalankan hook selain SessionEnd. Jika jalankan berada di tengah perintah atau menunggu jawaban untuk prompt izin ketika sinyal tiba, Claude Code menangani langkah itu sebagai berikut:
- Menjalankan perintah: Claude Code mencatat perintah sebagai terbunuh dalam sesi.
- Menunggu jawaban untuk prompt izin: jika Anda mengirim SIGTERM ke proses, Claude Code meninggalkan prompt tanpa jawaban. Jika program Anda menutup sesi melalui Agent SDK, SDK mengakhiri input Claude Code sebelum mengirim sinyal apa pun, dan Claude Code membatalkan prompt segera setelah input berakhir.
CLAUDE_CODE_RESUME_INTERRUPTED_TURN=1.
Jika direktori kerja dihapus
Jika direktori kerja dari sesiclaude -p atau Agent SDK dihapus di tengah sesi, sesi terus berjalan. Ketika giliran dimulai sementara direktori hilang, Claude Code mengeluarkan pesan peringatan dalam output stream-json, dan perintah shell gagal sampai direktori ada lagi.
Contoh
Contoh-contoh ini menyoroti pola CLI umum. Jika perintah menamai file sepertiauth.py atau build-error.txt, gantikan dengan file dari proyek Anda sendiri. Dalam CI atau lingkungan skrip lainnya, tambahkan --bare sehingga Claude Code dimulai tanpa memuat hooks, plugins, auto memory, atau CLAUDE.md host.
Saluran data melalui Claude
Mode non-interaktif membaca stdin, sehingga Anda dapat menyalurkan data dan mengarahkan respons keluar seperti alat baris perintah lainnya. Contoh ini menyalurkan log build ke Claude dan menulis penjelasan ke file:--output-format json, payload respons mencakup total_cost_usd dan rincian biaya per-model, sehingga pemanggil skrip dapat melacak pengeluaran tanpa berkonsultasi dengan dashboard penggunaan. Ketika Anda melanjutkan percakapan sebelumnya dengan --continue atau --resume, jalankan melaporkan total keseluruhan percakapan, pengeluaran jalankan sebelumnya disertakan. Kedua angka tersebut adalah perkiraan sisi klien dan dapat berbeda dari tagihan aktual Anda.
Stdin yang disalurkan dibatasi pada 10MB. Jika Anda melampaui batas, Claude Code keluar dengan kesalahan yang jelas dan status bukan nol. Untuk bekerja dengan input yang lebih besar, tulis konten ke file dan referensikan jalur file dalam prompt Anda alih-alih menyalurkannya.
Tambahkan Claude ke skrip build
Anda dapat membungkus panggilan non-interaktif dalam skrip untuk menggunakan Claude sebagai linter atau reviewer khusus proyek. Skrippackage.json ini menyalurkan diff terhadap main ke Claude dan memintanya untuk melaporkan typo. Menyalurkan diff berarti Claude tidak memerlukan izin Bash untuk membacanya, dan tanda kutip ganda yang di-escape menjaga skrip portabel ke Windows:
npm run lint:claude.
Dapatkan output terstruktur
Gunakan--output-format untuk mengontrol bagaimana respons dikembalikan:
text(default): output teks biasajson: JSON terstruktur dengan hasil, ID sesi, dan metadatastream-json: JSON yang dibatasi baris baru untuk streaming real-time
result:
--output-format json dengan --json-schema dan definisi JSON Schema. Respons mencakup metadata tentang permintaan (ID sesi, penggunaan, dll.) dengan output terstruktur di bidang structured_output.
Contoh ini mengekstrak nama fungsi dan mengembalikannya sebagai array string:
claude keluar dengan Error: --json-schema is not a valid JSON Schema diikuti oleh diagnostik validator. Claude Code menerima skema yang menggunakan kata kunci format, seperti "format": "email", tetapi memperlakukan format sebagai anotasi dan tidak memberlakukannya. Sebelum v2.1.205, Claude Code secara diam-diam mengabaikan skema yang tidak valid dan mengembalikan teks yang tidak terstruktur, dan memperlakukan skema apa pun yang berisi format sebagai tidak valid.
Stream respons
Gunakan--output-format stream-json dengan --verbose dan --include-partial-messages untuk menerima token saat dihasilkan. Setiap baris adalah objek JSON yang mewakili acara:
result dengan teks respons akhir, biaya, dan metadata sesi.
Jika konsumen Anda membaca aliran dengan lambat, Claude Code menunggu output yang antri untuk mengalir sebelum keluar, menskalakan tunggu dengan berapa banyak yang masih antri, dibatasi pada 30 detik. Sebelum v2.1.214 tunggu keluar dibatasi pada sekitar dua detik, yang dapat memotong akhir respons besar.
Contoh berikut menggunakan jq untuk memfilter delta teks dan menampilkan hanya teks streaming. Bendera -r menampilkan string mentah (tanpa tanda kutip) dan -j bergabung tanpa baris baru sehingga token streaming terus menerus:
Ikuti pesan subagent
Pesan dari subagents muncul dalam aliran sebagai pesanassistant dan user yang bidang parent_tool_use_id adalah ID dari tool call yang menelurkan subagent. Pesan dari percakapan utama membawa null di bidang itu.
Pesan pertama dari subagent yang berjalan dalam foreground adalah pesan user yang membawa prompt yang mendorong subagent. Setelah pesan pertama itu, Claude Code memancarkan:
- Secara default: blok
tool_usedantool_resultsubagent. - Dengan
--forward-subagent-textatauCLAUDE_CODE_FORWARD_SUBAGENT_TEXT: blok teks dan thinking subagent juga, sehingga Anda dapat merekonstruksi transkrip setiap subagent. Ini memerlukan Claude Code v2.1.211 atau lebih baru.
parent_tool_use_id, pesan subagent bersarang membawa ID dari Agent atau Skill tool call yang memulainya, sehingga Anda dapat membangun kembali pohon nesting penuh dengan mengikuti ID tersebut. Sebelum v2.1.219, pesan dari subagent bersarang tidak muncul dalam aliran.
Skills yang berjalan dalam subagent muncul dalam aliran dengan cara yang sama: pesan pertama skill yang di-fork adalah pesan user yang membawa konten skill yang mendorong jalankan. Jika Anda mengaktifkan salah satu opsi, aliran juga membawa blok teks dan thinking skill yang di-fork. Sebelum v2.1.265, hanya blok tool_use dan tool_result skill yang di-fork yang muncul dalam aliran.
Tangani percobaan ulang API
Ketika permintaan API gagal dengan kesalahan yang dapat dicoba ulang, Claude Code memancarkan acarasystem/api_retry sebelum mencoba ulang. Pada v2.1.246 atau lebih baru, ketika 401 atau 403 menolak kredensial apiKeyHelper, Claude Code membuat dua percobaan ulang pertama diam-diam tanpa acara, kemudian memancarkan acara seperti biasa dari percobaan ulang berturut-turut ketiga dan seterusnya. Percobaan ulang diam-diam masih dihitung menuju attempt. Anda dapat menggunakan acara untuk menampilkan kemajuan percobaan ulang di antarmuka Anda sendiri.
Baca metadata sesi
Acarasystem/init melaporkan metadata sesi termasuk model, alat, server MCP, dan plugin yang dimuat. Ini adalah acara pertama dalam aliran kecuali acara startup mendahuluinya:
- Acara
plugin_install, ketikaCLAUDE_CODE_SYNC_PLUGIN_INSTALLdiatur. - Acara
hook_started,hook_progress, danhook_response, saat hookSessionStartatauSetupyang dikonfigurasi berjalan. Ini streaming saat hook menghasilkannya. Claude Code v2.1.169 hingga v2.1.203 mengirimkannya dalam satu batch setelah hook selesai, masih sebelumsystem/init; v2.1.204 mengembalikan pengiriman langsung.
capabilities opsional dari string yang menamai perilaku protokol yang diimplementasikan versi Claude Code ini, seperti interrupt_receipt_v1 atau interrupt_cancel_queued_v1. Periksanya untuk mendeteksi fitur alih-alih membandingkan string versi, dan abaikan nilai yang tidak Anda kenali. Bidang ini memerlukan Claude Code v2.1.205 atau lebih baru dan tidak ada di versi sebelumnya. Lihat SDKSystemMessage untuk daftar kemampuan.
Gagalkan CI ketika plugin atau server MCP tidak dimuat
Gunakan bidang plugin dalam acarasystem/init untuk menangkap plugin yang tidak dimuat:
Ketika direktori
--plugin-dir atau arsip itu sendiri gagal dimuat, entri plugin_errors-nya mencakup jalur absolut yang diselesaikan sebagai path. Gunakan untuk membedakan mana dari beberapa nilai --plugin-dir yang gagal. Bidang path memerlukan Claude Code v2.1.283 atau lebih baru.
Gunakan bidang server MCP dengan cara yang sama. Ketika Anda berikan --mcp-config dengan -p, Claude Code menunggu server yang masih tertunda sebelum menjalankan giliran pertama, hingga timeout startup MCP_TIMEOUT, 30 detik secara default. Server jarak jauh dengan daftar alat yang di-cache melewati tunggu, menampilkan pending di system/init, dan terhubung pada pemanggilan alat pertamanya. Tunggu memerlukan Claude Code v2.1.221 atau lebih baru.
Claude Code memvalidasi setiap entri --mcp-config pada startup dan melewati entri yang gagal validasi, misalnya entri url tanpa type. Jalankan berlanjut dan keluar dengan bersih, jadi periksa bidang ini untuk menangkap server yang tidak pernah dimuat:
Ketika Anda menjalankan perintah dengan tangan di terminal, Claude Code juga mencetak peringatan startup ke stderr, seperti
Warning: 1 MCP server skipped due to invalid config:, diikuti oleh alasan untuk setiap entri yang dilewati. Ketika Anda mengarahkan stderr, atau ketika program seperti runner CI atau host SDK menangkapnya, Claude Code tidak mencetak peringatan dan melaporkan entri yang dilewati hanya di bidang mcp_server_errors. Peringatan memerlukan Claude Code v2.1.219 atau lebih baru.
Lacak pemasangan plugin
KetikaCLAUDE_CODE_SYNC_PLUGIN_INSTALL diatur, Claude Code memancarkan acara system/plugin_install saat plugin marketplace dipasang sebelum giliran pertama. Gunakan ini untuk menampilkan kemajuan pemasangan di UI Anda sendiri.
Persetujuan otomatis alat
Gunakan--allowedTools untuk membiarkan Claude menggunakan alat tertentu tanpa meminta. Contoh ini menjalankan suite pengujian dan memperbaiki kegagalan, memungkinkan Claude untuk menjalankan perintah Bash dan membaca/mengedit file tanpa meminta izin:
-p, mode izin awal bawaan adalah Manual di setiap paket, jadi berikan mode izin yang Anda inginkan:
auto: berikan--permission-mode autountuk memiliki pengklasifikasi meninjau sebagian besar tindakan alih-alih AndadontAsk: Claude Code menolak setiap panggilan yang akan meminta sebaliknya, yang berguna untuk CI runs yang terkunci. Tindakan yang tidak memerlukan persetujuan dalam mode Manual masih berjalan, seperti pembacaan file di direktori kerja Anda dan set perintah read-only, dan begitu juga tindakan yang entri--allowedToolsAnda atau aturanpermissions.allowcover.AskUserQuestion, alat konektor organisasi Anda atur keask, dan alat MCP yang ditandairequiresUserInteractionditolak bahkan ketika aturan allow cocokacceptEdits: Claude menulis file tanpa meminta, dan Claude Code auto-approves perintah filesystem umum sepertimkdir,touch,mv, dancp. Tindakan yang tidak ada mode auto-approve masih berlaku. Terlepas dari set perintah read-only, perintah shell lainnya dan permintaan jaringan masih memerlukan entri--allowedToolsatau aturanpermissions.allow. Lihat apa yangacceptEditsauto-approve untuk daftar lengkap
acceptEdits sebagai baseline:
Matikan prompt izin dalam jalankan tanpa pengawasan
Berikan--permission-prompts none ketika tidak ada yang tersedia untuk menjawab prompt izin, misalnya dalam pekerjaan terjadwal. Bendera paling penting ketika jalankan Anda memiliki host izin: aplikasi Agent SDK dengan callback canUseTool, atau alat MCP yang Anda berikan dengan --permission-prompt-tool. Tanpa bendera, jalankan Anda menunggu host itu menjawab setiap permintaan izin.
Dengan bendera, jalankan Anda tidak berkonsultasi dengan host atau menunggu itu. Apa pun yang akan meminta ditolak kecuali hook PermissionRequest mengizinkannya, Claude diberitahu bahwa tidak ada yang dapat menyetujui permintaan dan tidak mencoba ulang, dan jalankan berlanjut. Dalam jalankan -p tanpa host, permintaan ini ditolak baik cara, dan bendera juga memberitahu Claude tidak mencoba ulang mereka. Aturan izin, hook PermissionRequest, dan mode izin yang Anda atur masih memutuskan setiap panggilan terlebih dahulu; Claude Code hanya menolak permintaan yang tidak ada yang lain selesaikan.
Contoh ini menjalankan tugas tanpa pengawasan dalam mode auto. Pengklasifikasi meninjau setiap tindakan seperti biasa, dan Claude Code menolak apa pun yang akan jatuh kembali ke prompt:
--permission-prompts none, Claude Code menghapus alat yang memerlukan jawaban dari orang, seperti AskUserQuestion, sehingga Claude tidak dapat memanggilnya. Setiap permintaan elicitasi MCP yang tidak ada hook Elicitation jawab dibatalkan.
Dengan --output-format stream-json, penolakan muncul sebagai pesan sistem permission_denied, dan pesan hasil akhir mencantumnya di permission_denials.
Bendera
--permission-prompts memerlukan Claude Code v2.1.259 atau lebih baru. Versi sebelumnya menolaknya dengan kesalahan opsi tidak dikenal.Buat komit
Contoh ini meninjau perubahan yang dipentaskan dan membuat komit dengan pesan yang sesuai:--allowedTools menggunakan sintaks aturan izin. Spasi di akhir * memungkinkan pencocokan awalan, jadi Bash(git diff *) memungkinkan perintah apa pun yang dimulai dengan git diff. Spasi sebelum * penting: tanpanya, Bash(git diff*) juga akan cocok dengan git diff-index.
Dukungan perintah berbeda dalam mode
-p:- skills yang dipanggil pengguna dan perintah kustom bekerja. Sertakan
/skill-namedalam string prompt dan Claude Code memperluasnya sebelum menjalankan. - Perintah bawaan yang hanya berjalan di antarmuka terminal, seperti
/login, tidak tersedia. /model,/effort,/fast,/color, dan/renamemenerima nilai sebagai argumen, misalnya/model sonnet, dan/mcptanpa argumen mencetak ringkasan teks status server. Bentuk-bentuk ini memerlukan Claude Code v2.1.205 atau lebih baru dan mengikuti catatan ketersediaan setiap perintah.- Untuk mengubah pengaturan, berikan
key=valueke/config, misalnya/config thinking=false. /output-style <style>beralih output styles dan/output-stylesaja mencantumnya. Memerlukan Claude Code v2.1.269 atau lebih baru.
Sesuaikan prompt sistem
Gunakan--append-system-prompt untuk menambahkan instruksi sambil mempertahankan perilaku default Claude Code. Contoh ini menyalurkan diff PR ke Claude dan menginstruksikannya untuk meninjau kerentanan keamanan. Simpan sebagai skrip shell, misalnya review.sh:
"$1" berdiri untuk argumen pertama yang Anda berikan di baris perintah. Jalankan bash review.sh 123 dan shell mengganti "$1" dengan 123, jadi skrip mengambil diff untuk PR 123. Claude Code mencetak tinjauan sebagai JSON, dengan teks di bidang result.
Lihat system prompt flags untuk opsi lebih lanjut termasuk --system-prompt untuk sepenuhnya mengganti prompt default.
Lanjutkan percakapan
Gunakan--continue untuk melanjutkan percakapan terbaru, atau --resume dengan ID sesi untuk melanjutkan percakapan tertentu. Pada Claude Code v2.1.257 atau lebih baru, ketika Anda berikan --continue, Claude Code membuka sesi latar belakang yang telah selesai, tetapi bukan yang masih berjalan. Contoh ini menjalankan tinjauan, kemudian mengirim prompt tindak lanjut:
--resume jalur absolut ke file transkrip .jsonl sesi, dan Claude Code melanjutkan percakapan yang disimpan dalam file itu.
Langkah berikutnya
- Agent SDK quickstart: bangun agen pertama Anda dengan Python atau TypeScript
- CLI reference: semua bendera dan opsi CLI
- GitHub Actions: gunakan Agent SDK dalam alur kerja GitHub
- GitLab CI/CD: gunakan Agent SDK dalam pipeline GitLab