Skill yang ada daripada menambahkan entri tool baru.
Dalam auto mode, pengklasifikasi memutuskan sebagian besar permintaan izin alih-alih Anda. Kolom
Permission required menunjukkan apakah tool meminta izin dalam Mode Manual untuk path di dalam direktori kerja. Tools akses file yang ditandai Tidak, termasuk Read, Grep, dan Glob, masih meminta izin untuk path di luar direktori kerja dan direktori tambahan. Bash ditandai Ya tetapi menjalankan set bawaan perintah read-only tanpa meminta izin.Konfigurasi tools dengan aturan izin dan hooks
Sebagian besar waktu, Claude memutuskan kapan menggunakan tools ini dan Anda tidak perlu menamakannya sendiri saat berinteraksi dengan Claude. Anda mereferensikan nama tools secara langsung saat menentukan izin dan konfigurasi lainnya:- dalam
permissions.allowdanpermissions.denydalam pengaturan, dan antarmuka/permissions - dalam flag CLI
--allowedToolsdan--disallowedTools - dalam opsi Agent SDK
allowedToolsdandisallowedTools - dalam frontmatter
allowed-toolsskill - dalam kondisi
ifhook
ToolName(specifier). Specifier tergantung pada tools, dan beberapa tools berbagi format:
Tools yang tidak tercantum di sini, seperti
ExitPlanMode atau ShareOnboardingGuide, hanya menerima nama tools tanpa specifier.
Aturan izin Edit(...) juga memberikan akses baca ke jalur yang sama, jadi Anda tidak perlu aturan Read(...) yang cocok. Aturan penolakan Read(...) juga memblokir tools Edit dan Write pada jalur yang sama, termasuk membuat file baru di sana, karena kedua tools mengubah konten yang harus dapat dibaca kembali oleh Claude. Untuk tool Write, pemeriksaan penolakan Read memerlukan Claude Code v2.1.228 atau lebih baru.
Field matcher Hook menggunakan nama tools tanpa format yang diparenthesiskan. Lihat pola matcher untuk aturan pencocokan. Untuk nama field yang setiap tools teruskan ke tool_input dalam hooks, lihat referensi input PreToolUse.
Perilaku tool Agent
Tool Agent menjalankan subagent dalam context window terpisah. Subagent bekerja melalui tugasnya secara otonom, kemudian mengembalikan hasilnya ke percakapan induk. Induk tidak melihat panggilan tool perantara atau output subagent, hanya hasil akhir itu. Tool yang sama juga dapat meluncurkan teammate atau fork:- Teammate: dengan tim agent diaktifkan, panggilan yang membawa
namedapat meluncurkan teammate sebagai gantinya, yang melaporkan kembali melalui pesan tim daripada dengan mengembalikan hasil - Fork: di mana pun fork mode aktif, tool ini dapat meluncurkan forked subagent, yang mewarisi percakapan induk penuh daripada memulai dari awal
maxTurns dalam definisi subagent. Ketika subagent mencapai batas, Claude Code menandai hasil yang dikembalikan sebagai output parsial, dan Claude dapat melanjutkan subagent untuk melanjutkan.
Tool mana yang dapat digunakan subagent non-fork tergantung pada bidang tools dan disallowedTools dalam definisi subagent:
- Tidak ada bidang yang diatur: subagent mewarisi setiap tool yang tersedia untuk subagents.
toolssaja: subagent hanya mendapatkan tool yang terdaftar.disallowedToolssaja: subagent mendapatkan setiap tool induk kecuali yang terdaftar.- Keduanya diatur:
disallowedToolsmemiliki prioritas. Tool yang terdaftar di keduanya dihapus.
tools. Di mana kondisi dalam entri tabel tool SubagentHandback berlaku, Claude Code juga memberikan tool itu kepada subagent, bahkan jika Anda menghilangkannya dari tools atau mencantumkannya dalam disallowedTools.
Jika setiap entri dalam daftar tools subagent gagal cocok dengan tool yang dapat digunakan, tool Agent biasanya mengembalikan kesalahan yang menamai entri daripada meluncurkan subagent; lihat Agent would be spawned with zero tools untuk pesan dan cara memperbaiki setiap entri.
Meluncurkan subagent tidak sendiri meminta izin. Claude Code memeriksa panggilan tool subagent sendiri terhadap aturan izin Anda saat berjalan.
Di mana Anda melihat prompt izin subagent tergantung pada apakah berjalan di latar depan atau latar belakang. Claude Code menjalankan subagent di latar belakang secara default, kecuali kasus yang berjalan di latar depan.
- Subagent latar depan menampilkan prompt izin yang sama yang akan Anda lihat dalam percakapan utama, pada saat setiap panggilan tool terjadi.
- Subagent latar belakang menampilkan permintaan izin di sesi utama Anda. Permintaan tersebut menamai subagent mana yang meminta, dan menekan Esc menolak panggilan tool itu saja tanpa menghentikan subagent.
tools nya, misalnya dengan meninggalkan Bash dari daftar, atau atur aturan penolakan dalam pengaturan Anda.
Perilaku tool AskUserQuestion
Claude menggunakanAskUserQuestion untuk mengajukan pertanyaan pilihan ganda kepada Anda ketika memerlukan keputusan atau klarifikasi. Jawab dengan memilih opsi, atau ketik teks Anda sendiri melalui baris Other atau kolom catatan.
Ketika Anda menjawab dengan mengetik teks Anda sendiri, Claude Code menyampaikan jawaban dengan redaksi netral sehingga Claude mengikuti apa yang Anda tulis, termasuk permintaan untuk menunggu atau menjelaskan terlebih dahulu.
Timeout auto-continue pertanyaan
Pertanyaan tetap terbuka sampai Anda menjawabnya. Jika Anda ingin pertanyaan yang Anda biarkan tanpa jawaban akhirnya ditutup dan membiarkan Claude melanjutkan tanpa Anda, atur pengaturanaskUserQuestionTimeout ke 60s, 5m, atau 10m, baik di settings.json pengguna Anda atau dari baris Question auto-continue timeout di /config.
Setelah pertanyaan duduk selama itu tanpa input, dialog ditutup dengan sendirinya: ia mengirimkan opsi apa pun yang sudah Anda pilih dan memberi tahu Claude bahwa Anda mungkin jauh dari keyboard, jadi Claude melanjutkan dengan penilaian sendiri dan dapat menanyakan kembali nanti. Anda melihat hitungan mundur untuk 20 detik terakhir. Tekan tombol apa pun untuk memulai ulang timer. Selama terminal Anda melaporkan bahwa jendelanya sedang dalam fokus, timer tidak menghitung mundur.
Timer tidak pernah dimulai untuk pertanyaan yang diajukan Claude di sesi latar belakang, dalam mode pembaca layar, atau saat sesi terhubung ke Remote Control. Pertanyaan-pertanyaan tersebut menunggu sampai Anda menjawabnya. Timeout hanya berlaku untuk pertanyaan pilihan ganda AskUserQuestion; permintaan izin, termasuk persetujuan rencana, tidak pernah auto-resolve saat idle.
Perilaku tool Bash
Tool Bash menjalankan setiap perintah dalam proses terpisah.Apa yang bertahan di antara perintah
- Ketika Claude menjalankan
cddi sesi utama, direktori kerja yang baru terbawa ke perintah Bash berikutnya selama direktori tersebut tetap berada di dalam direktori proyek atau direktori kerja tambahan yang Anda tambahkan dengan--add-dir,/add-dir, atauadditionalDirectoriesdi pengaturan. Ini termasuk perintah yang dijalankan Claude sebagai respons terhadap pesan Anda berikutnya.- Sesi subagent tidak pernah membawa perubahan direktori kerja.
- Jika
cdberakhir di luar direktori tersebut, Claude Code mengatur ulang ke direktori proyek dan menambahkanShell cwd was reset to <dir>ke hasil tool. - Untuk menonaktifkan perilaku terbawa ini sehingga setiap perintah Bash dimulai di direktori proyek, atur
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1.
- Environment variable tidak bertahan. Sebuah
exportdalam satu perintah tidak akan tersedia di perintah berikutnya. - Alias dan fungsi shell yang didefinisikan dalam file startup shell Anda tersedia. Saat sesi dimulai, Claude Code memuat
~/.zshrc,~/.bashrc, atau~/.profiletergantung shell Anda, menangkap alias, fungsi, dan opsi shell yang dihasilkan, lalu menerapkannya ke setiap perintah Bash.
CLAUDE_ENV_FILE ke sebuah skrip shell sebelum menjalankan Claude Code, atau gunakan hook SessionStart untuk mengisinya secara dinamis.
Timeout dan batas output
Setiap perintah berjalan dengan timeout, dan Claude yang mengelolanya: ketika Claude menginginkan waktu lebih lama dari default untuk suatu perintah, Claude meneruskan parametertimeout bersama panggilan tersebut. Anda tidak pernah mengatur timeout per perintah.
Dua environment variable mengontrol apa yang didapat Claude untuk perintah yang berjalan di latar depan:
BASH_DEFAULT_TIMEOUT_MS— default ketika Claude tidak meneruskan timeout; dua menit secara bawaanBASH_MAX_TIMEOUT_MS— bersama default, menetapkan batas atas yang membatasi apa pun yang diminta Claude: batas atas efektif adalah yang lebih besar dari keduanya, sepuluh menit secara bawaan
timeout pada perintah yang dimulai Claude di latar belakang justru menetapkan berapa lama perintah tersebut boleh berjalan di sana, dengan default dan maksimum tersendiri dari batas tersebut. Tool PowerShell mengikuti aturan timeout yang sama dan membaca dua variabel yang sama.
Batas output
Claude Code mengalirkan output perintah ke file kerja selama perintah berjalan; perintah yang outputnya melebihi 5 GB akan dihentikan paksa. Ketika perintah selesai, Claude Code membaca kembali output dari file tersebut, hingga jendela pembacaan kembali yang dijelaskan di bawah. Seberapa banyak output yang sampai ke Claude secara inline bergantung pada apakah Claude Code memperlakukan hasilnya sebagai kegagalan:
Perintah yang keluar dengan 1 dihitung sebagai hasil valid untuk tool Bash hanya jika Claude Code mengenali exit code 1 sebagai hasil yang wajar untuk perintah tersebut:
grep, rg, egrep, fgrep, find, diff, test, dan [, ditambah git diff dan git grep. Setiap perintah lain yang keluar dengan 1 dihitung sebagai kegagalan, bahkan ketika exit 1 merupakan hasil informasional yang wajar: tidak ada kecocokan untuk pgrep dan jq -e, file yang berbeda untuk cmp.
BASH_MAX_OUTPUT_LENGTH menetapkan berapa banyak karakter output yang dibaca kembali Claude Code dari file kerja ke dalam hasil perintah: 30.000 secara default, hingga batas mutlak 150.000. Naikkan nilainya ketika perintah Anda secara rutin melampaui jendela tersebut, seperti build yang verbose atau log test suite lengkap. Menaikkannya memperbesar jendela pembacaan kembali, yang juga merupakan jendela tempat cuplikan perintah yang gagal diambil. Variabel ini tidak menaikkan batas inline: hasil valid yang melebihi batas inline tetap tiba sebagai path file ditambah pratinjau, terlepas dari variabel ini.
Untuk mengubah seberapa banyak hasil valid yang diterima Claude secara inline, atur pengaturan bashOutputMaxChars sebagai gantinya, hingga 128.000 karakter. Pengaturan ini menentukan ukuran batas inline dan jendela pembacaan kembali sekaligus, dan Claude Code kemudian mengabaikan BASH_MAX_OUTPUT_LENGTH. Memerlukan Claude Code v2.1.261 atau lebih baru.
Perintah latar belakang
Untuk proses yang berjalan lama seperti dev server atau watch build, Claude dapat mengaturrun_in_background: true untuk memulai perintah sebagai tugas latar belakang dan terus bekerja selama perintah tersebut berjalan. Tampilkan daftar dan hentikan tugas latar belakang dengan /tasks. Setelah Anda menghentikan salah satunya di sana, atau dari klien yang terhubung seperti aplikasi desktop, Claude melanjutkan pekerjaan alih-alih menunggunya. Jika subagent yang memulai perintah tersebut, subagent itulah yang melanjutkan pekerjaan.
Kapan perintah latar belakang berhenti
Perintah yang dimulai oleh subagent latar depan berhenti ketika run subagent tersebut berakhir, baik karena selesai, gagal, maupun diinterupsi. Perintah yang dimulai oleh percakapan utama atau subagent latar belakang tetap berjalan setelah respons akhir, hingga perintah tersebut keluar, dihentikan, atau mencapai batas waktunya. Selama perintah yang dimulai oleh percakapan utama masih berjalan, run dalam mode non-interaktif dengan flag-p tetap terbuka setelah hasilnya hingga perintah tersebut keluar atau mencapai batas waktunya. Perintah yang dimulai oleh subagent latar belakang dihentikan ketika run tersebut keluar.
Batas waktu untuk perintah latar belakang
Dalam sesi yang berjalan tanpa pengawasan, seperti run dengan flag-p, aplikasi Agent SDK, job CI, atau sesi cloud, perintah Bash dan PowerShell latar belakang memiliki batas waktu. Sesi lokal yang Anda gunakan dari terminal, aplikasi desktop, atau ekstensi VS Code tidak memiliki batas waktu untuk perintah latar belakang.
Batas waktu ini memerlukan Claude Code v2.1.285 atau lebih baru. Sebelum v2.1.288, batas waktu ini berlaku di setiap sesi.
Batas waktu dihitung sejak perintah masuk ke latar belakang:
- Perintah yang dimulai Claude di latar belakang mendapatkan 30 menit, atau
timeoutyang diteruskan Claude bersamarun_in_background, hingga maksimum 2 jam - Perintah yang dimulai di latar depan lalu berpindah ke latar belakang, misalnya saat mencapai timeout-nya, mendapatkan 30 menit sejak perpindahan tersebut
-p yang prompt-nya Anda berikan sebagai teks alih-alih dengan --input-format stream-json, kedua default tersebut adalah 10 menit, bukan 30, karena run tersebut menunggu perintah latar belakang setelah hasilnya.
Ketika perintah latar belakang mencapai batas waktunya, Claude Code menghentikannya dan memberi tahu Claude alasannya, dan Claude dapat memulai perintah tersebut lagi dengan timeout yang lebih lama jika pekerjaan masih membutuhkannya. Pemberitahuan penghentian berbunyi Background command "<description>" was stopped after reaching its background time limit.
Menaikkan batas waktu untuk perintah latar belakang
Dua environment variable menaikkan batas-batas ini, untuk perintah Bash maupun PowerShell. Keduanya menggunakan milidetik, dan tidak satu pun dapat memperpendek batas: nilai yang lebih rendah membiarkan default dan maksimum 2 jam tetap berlaku.- Atur
BASH_DEFAULT_TIMEOUT_MSdi atas1800000untuk mengganti default 30 menit dengan nilai tersebut, baik untuk perintah yang dimulai Claude tanpatimeoutmaupun untuk perintah yang dipindahkan. Dalam run-pyang prompt-nya Anda berikan sebagai teks, nilai apa pun di atas600000menggantikan default 10 menitnya - Atur
BASH_MAX_TIMEOUT_MSdi atas7200000untuk menaikkan maksimum 2 jam ke nilai tersebut. MengaturBASH_DEFAULT_TIMEOUT_MSdi atas7200000menaikkan maksimum dengan cara yang sama
Perintah latar depan yang berpindah ke latar belakang
Ketika perintah latar depan mencapai timeout-nya tanpa selesai, Claude Code memindahkannya ke latar belakang alih-alih menghentikannya, kecuali perintah tersebut dimulai dengansleep. Batas waktu perintah yang dipindahkan dihitung sejak perpindahan, dan perintah yang dipindahkan milik subagent latar depan tetap berhenti ketika run subagent tersebut berakhir.
Mengatur CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 atau menjalankan dalam bare mode menonaktifkan pemindahan otomatis ke latar belakang, sehingga perintah yang mencapai timeout-nya akan berhenti.
Hasil dari perintah yang dipindahkan ke latar belakang menyatakan apa yang terjadi:
- Ketika timeout memicu perpindahan, hasilnya melaporkannya secara eksplisit:
Command did not complete within its 120s timeout and was moved to the background, dengan jumlah detik yang sesuai dengan timeout yang berlaku, diikuti ID tugas dan path file tempat output sedang ditulis. cd,pushd,popd, atauchdirdi dalam perintah yang dipindahkan ke latar belakang tidak pernah terbawa: hasilnya menyatakanSession cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands., sehingga Claude tidak bertindak berdasarkan perubahan direktori yang tidak terjadi.
Batas memori di Linux dan WSL
Di Linux dan WSL, aturCLAUDE_CODE_TOOL_MEMORY_LIMIT ke suatu ukuran seperti 4G untuk membatasi memori yang dapat digunakan oleh perintah tool Bash, PowerShell, dan Monitor, sehingga satu build yang tidak terkendali tidak dapat menghabiskan memori yang dibutuhkan bagian sesi lainnya. Memerlukan Claude Code v2.1.233 atau lebih baru. Sebelum v2.1.246, perintah tool Monitor berjalan di luar batas tersebut.
- Tulis ukuran sebagai jumlah byte atau dengan akhiran
K,M,G, atauT. Atur0,off,false,no, ataunoneuntuk mematikan batas. Claude Code mengabaikan nilai lain yang tidak dapat dibacanya sebagai ukuran, seperti4e9. - Claude Code menghitung semua perintah Bash, PowerShell, dan Monitor dalam satu sesi terhadap satu batas tersebut, bukan setiap perintah secara terpisah.
- Claude Code menerapkan batas dengan cgroup memori. Ketika tidak dapat menyiapkan cgroup, perintah berjalan tanpa batas, dan log debug dari
claude --debugmenjelaskan alasannya. - Setelah proses pertama yang dimulai Claude Code telah mengaktifkan batas, atau telah mematikannya karena nilai off atau penyiapan cgroup yang gagal, Claude Code mempertahankan hasil tersebut hingga Anda menjalankan ulang. Untuk menerapkan nilai yang diubah atau dihapus, atau penyiapan yang sudah diperbaiki, jalankan
claudelagi. - Ketika perintah tidak dapat tetap berada di bawah batas, kernel menghentikan paksa sebuah perintah, dan tidak ada apa pun dalam hasilnya yang menyebutkan batas tersebut.
CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE ke daftar jenis yang dipisahkan koma untuk dikecualikan dari batas; Claude Code menerapkan batas ke setiap jenis yang tidak ada dalam daftar Anda. Atur ke none untuk membatasi setiap jenis, atau ke all-new untuk hanya membatasi perintah tool Bash, PowerShell, dan Monitor. Memerlukan Claude Code v2.1.246 atau lebih baru. Jenis yang dapat Anda sebutkan:
mcp: server MCP lokallsp: language serverhooks: perintah hookplugin: perintah yang dijalankan pluginhelper: perintah pembantu milik Claude Code sendiri, sepertigitagent: proses Claude Code turunan, seperti rekan tim agent
- Nama tidak dikenal: Claude Code mengabaikan nama yang tidak dikenalinya
- Variabel tidak diatur: Claude Code mengambil kumpulan jenis lain yang dibatasi dari konfigurasi yang dikirimkan Anthropic dari server, dan kumpulan tersebut dapat berubah seiring waktu, jadi atur variabel ini ketika Anda membutuhkan kumpulan yang tidak berubah
- Hook yang mengontrol izin: bahkan ketika setiap jenis dibatasi, Claude Code mengecualikan dari batas hook yang dapat memblokir atau mengubah hasil suatu tindakan, serta server MCP mana pun yang dipanggil oleh hook tersebut, sehingga penghentian paksa hook pengontrol izin oleh kernel tidak dapat mengakibatkan tindakan yang sedang diblokir oleh hook tersebut menjadi diizinkan
Perilaku alat Edit
Alat Edit melakukan penggantian string yang tepat. Alat ini mengambilold_string dan new_string dan mengganti yang pertama dengan yang kedua. Alat ini tidak menggunakan regex atau fuzzy matching.
Pemeriksaan berikut harus lulus agar edit dapat diterapkan. Sebelum salah satu dari mereka, jalur yang cocok dengan aturan deny Read ditolak, termasuk membuat file baru di sana.
- Read-before-edit: Claude membaca file dalam percakapan saat ini sebelum mengeditnya, dan pembacaan yang terpotong dengan pemberitahuan
PARTIAL viewtidak dihitung. Claude Opus 4.6, Claude Haiku 4.5, dan model yang lebih lama selalu memerlukan pembacaan. Model yang lebih baru dapat mengedit file yang belum dibaca ketika membacanya tidak memerlukan prompt izin dan alat Read tersedia. - Match:
old_stringharus muncul dalam file persis seperti yang ditulis. Perbedaan spasi atau indentasi satu karakter saja sudah cukup untuk tidak cocok. - Uniqueness:
old_stringharus muncul tepat satu kali. Ketika muncul lebih dari sekali, Claude baik menyediakan string yang lebih panjang dengan konteks sekitar yang cukup untuk menentukan satu kemunculan, atau menetapkanreplace_all: trueuntuk mengganti semuanya.
old_string cocok dengan konten saat ini dengan tepat dan jelas serta Claude Code dapat membaca file tanpa meminta. Pencocokan terhadap konten file saat ini menjaga keamanan ini, dan hasilnya mencatat bahwa file membawa perubahan lain sehingga Claude membacanya kembali sebelum edit yang bergantung pada konten sekitar. Dalam kasus lain, seperti old_string yang sudah usang atau yang cocok lebih dari sekali tanpa replace_all, Claude membaca file lagi sebelum mengedit.
Claude juga dapat mengedit file tanpa Read terpisah setelah melihat file tersebut dengan perintah Bash seperti cat atau grep. Perintah-perintah tersebut adalah cat, nl, bat, batcat, head, tail, sed -n 'X,Yp', grep, egrep, fgrep, dan rg, masing-masing dijalankan pada satu file tanpa pipa atau pengalihan. Jika perintah tidak menampilkan teks apa pun dari file tersebut, seperti ketika pencarian tidak menemukan kecocokan, pemeriksaan read-before-edit tetap berlaku.
Ketika Claude melihat file dengan cara ini, Claude Code juga memuat CLAUDE.md subdirektori dan aturan dengan cakupan jalur apa pun yang berlaku untuk file tersebut. Lihat Aturan izin Read dan Edit untuk perintah Bash mana yang dicakup oleh aturan deny Read dan Edit Anda.
File non-UTF-8
Claude tidak dapat menggunakan NotebookEdit pada file yang bukan UTF-8 yang valid. Hal yang sama berlaku untuk Edit, kecuali file diawali dengan byte-order mark UTF-16 little-endian. Ketika Claude mencoba, tool tersebut menolak perubahan dan membiarkan file tidak tersentuh. File yang ditolak mencakup teks non-ASCII yang disimpan dalam encoding lama seperti Windows-1252 atau Shift-JIS, file biner, dan UTF-8 dengan urutan byte yang tidak valid. Tool tersebut menolak karena mereka menyimpan kembali seluruh file sebagai UTF-8, yang akan mengganti setiap byte yang tidak dapat didekode dengan karakter penggantiU+FFFD. Sebagai gantinya, error yang diterima Claude memintanya untuk melakukan perubahan dengan perintah shell yang mempertahankan encoding file, atau menanyakan kepada Anda tentang mengonversinya ke UTF-8 terlebih dahulu.
Claude masih dapat mengganti file semacam itu dengan Write, kecuali konten baru mengandung U+FFFD, karakter yang ditampilkan Read kepada Claude sebagai pengganti byte yang tidak dapat didekodenya. Pengaman tersebut mencegah Claude menulis kembali teks rusak yang dibacanya. Ketika Write memang mengganti file, Write menyimpan konten baru sebagai UTF-8, sehingga encoding asli file tersebut hilang.
Perilaku tool EndConversation
Tool EndConversation mengakhiri sesi saat ini. Claude menggunakannya hanya dalam dua situasi:- Ketika Anda terus mengirim pesan yang kasar setelah Claude memberikan peringatan yang jelas dan gagal mengalihkan percakapan
- Ketika Anda secara eksplisit meminta Claude untuk mengakhiri sesi, lalu mengonfirmasi saat Claude menanyakan apakah Anda masih ingin melanjutkan
Claude ended this conversation. Start a new session (or /clear) to continue., dan hanya /clear, /resume, /help, /exit, dan /feedback yang masih berjalan. Claude Code mencatat pengakhiran tersebut di transkrip sesi, sehingga melanjutkan sesi yang telah diakhiri akan memulihkan kunci tersebut; riwayat sesi tidak dihapus.
Melanjutkan sesi yang telah diakhiri dalam mode non-interaktif dengan flag -p akan menghasilkan error dan keluar dengan kode 1, sehingga skrip tidak membaca proses yang telah diakhiri sebagai keberhasilan.
Tool ini tidak pernah meminta izin, dan hook PreToolUse tidak berjalan untuknya. Selama masih ada tool lain, Anda juga tidak dapat memblokirnya: aturan deny dan ask yang menyebut EndConversation tidak berpengaruh, dan baik --disallowedTools maupun daftar --tools tidak dapat menghapusnya. Pengecualian ini disengaja: tool ini tidak melakukan apa pun selain mengakhiri percakapan, tidak pernah membaca atau memodifikasi file atau data, dan perlindungan semacam ini hanya efektif jika sesi yang dikenainya tidak dapat mematikannya. Ketika aturan deny Anda menghapus semua tool lain dan juga cocok dengan EndConversation, seperti "*", Claude Code juga menghapusnya alih-alih membiarkannya sebagai satu-satunya tool, kecuali ada aturan allow yang menyebut EndConversation secara eksplisit. Daftar deny yang menghapus semua tool lain tanpa cocok dengan EndConversation akan membiarkannya tetap ada.
Subagent tidak pernah mendapatkan tool ini. Tugas latar belakang yang berbagi daftar tool dengan percakapan utama dapat melihatnya, tetapi memanggilnya di sana tidak mengakhiri apa pun.
Tool ini hanya muncul ketika semua kondisi berikut terpenuhi:
- Model: model sesi adalah Claude Opus 4.8, Claude Sonnet 5, Claude Fable 5, atau versi yang lebih baru dari salah satu keluarga tersebut.
- Surface: sesi terminal interaktif, termasuk sesi
claudedi terminal terintegrasi IDE, yang merupakan cara plugin JetBrains menjalankannya. Surface lain tidak menyertakan tool ini, seperti:- proses
-pnon-interaktif - sesi melalui paket TypeScript dan Python Agent SDK
- panel ekstensi VS Code, yang membundel CLI-nya sendiri
- GitHub Actions
- sesi cloud
- proses
- Mode startup: bukan sesi
--bare. Bare mode hanya memuat tool shell dan file, sehingga tool ini tidak pernah didaftarkan di sana. - Penyedia: tidak tersedia di Amazon Bedrock, Claude Platform on AWS, Google Cloud’s Agent Platform, atau Microsoft Foundry, maupun pada sesi yang masuk melalui gateway cloud.
Perilaku tool EnterWorktree
Tool EnterWorktree membuat git worktree yang terisolasi dan beralih ke dalamnya. Jika diberikanpath, tool ini beralih ke worktree yang sudah ada alih-alih membuat worktree baru.
- Worktree mana yang dapat dirujuk oleh
path: pada saat masuk pertama kali, target dapat berupa worktree dari repositori saat ini. Dalam repositori yang menampung repositori lain, target juga dapat berupa worktree dari repositori yang bersarang di dalamnya. - Kapan Anda diminta persetujuan:
pathdi luar.claude/worktrees/meminta persetujuan Anda sebelum masuk, karena hal ini memindahkan direktori kerja sesi dan akses tulis ke lokasi tersebut. Pembuatan worktree baru dan path di bawah.claude/worktrees/tidak memunculkan permintaan. Sebelum v2.1.206, Claude masuk ke path di luar.claude/worktrees/tanpa permintaan persetujuan. - Dari dalam worktree: dari dalam sesi worktree, hanya bentuk
pathyang tersedia dan target harus berada di bawah.claude/worktrees/dari repositori sesi tersebut. Hal yang sama berlaku untuk subagent dengan direktori kerja yang disematkan, sepertiisolation: worktree. - Saat tool tidak tersedia: setelah
permissions.blockWritesOutsideWorkingDirectoriesdiaktifkan, Claude Code menghapusEnterWorktreedanExitWorktreeatau menolak panggilan ke keduanya. Untuk tetap bekerja di worktree, lihat Claude tidak memiliki toolEnterWorktree.
Perilaku Glob tool
Glob tool menemukan file berdasarkan pola nama. Di Windows, ini adalah bagian dari set tool default. Di macOS, Linux, dan WSL, Claude Code mengeluarkan Glob dan Grep dari set tool default, dan Claude mencari denganfind dan grep melalui Bash tool sebagai gantinya. Di shell Claude, kedua perintah tersebut menjalankan versi embedded dari bfs dan ugrep, dan pencarian mencapai hook dan aturan izin Anda sebagai panggilan Bash.
Di macOS, Linux, dan WSL, Anda mendapatkan kembali Glob dan Grep tools dalam kasus-kasus ini:
- Anda menyebutkan
GlobatauGrepdalam--toolsatau--allowedToolsketika Anda memulai sesi, atau dalam opsi Agent SDK yang setara. Dengan--toolsAnda mendapatkan yang Anda daftarkan, dan menyebutkan salah satu tool dalam--allowedToolsmengembalikan keduanya. Aturan allow dalam file settings tidak memiliki efek ini. - Aturan deny izin, flag
--disallowedTools, atau--restrictedmenghapusBashdari sesi. - Subagent mencantumkan
GlobatauGrepdalam fieldtoolsdan mengeluarkanBash. Tool yang tercantum kembali untuk subagent itu saja, atau untuk seluruh sesi ketika berjalan sebagai agent sesi utama melalui--agentatau pengaturanagent.
** untuk pencocokan direktori rekursif:
**/*.jscocok dengan semua file.jspada kedalaman apa punsrc/**/*.tscocok dengan semua file.tsdi bawahsrc/*.{json,yaml}cocok dengan file.jsondan.yamldalam direktori saat ini
.gitignore secara default, jadi menemukan file gitignored bersama yang dilacak. Ini berbeda dari Grep, yang melewati file gitignored. Untuk membuat Glob menghormati .gitignore, atur CLAUDE_CODE_GLOB_NO_IGNORE=false sebelum meluncurkan Claude Code.
Claude Code memutuskan izin untuk panggilan Glob sebelum memeriksa apakah direktori pencarian ada. Ini masih menjalankan pemeriksaan izin baca untuk path yang hilang di luar direktori kerja, jadi permintaan izin untuk path tidak berarti path tersebut ada.
Nilai pattern atau path yang berisi byte null mengembalikan kesalahan yang meminta Claude untuk menghapusnya.
Perilaku Grep tool
Grep tool mencari konten file untuk pola. Di mana Glob menemukan file berdasarkan nama, Grep menemukan baris di dalamnya. Pada macOS, Linux, dan WSL, Grep tidak ada secara default dalam kondisi yang sama dengan Glob. Lihat Perilaku Glob tool untuk mengetahui kapan kedua tool tersedia. Grep dibangun di atas ripgrep dan menggunakan sintaks regex ripgrep, bukan POSIX grep. Pola yang mencakup karakter metacharacter regex perlu escape. Misalnya, menemukaninterface{} dalam kode Go memerlukan pola interface\{\}.
Pola, glob, atau tipe file yang ditolak oleh ripgrep mengembalikan kesalahan yang mencakup diagnostik ripgrep, sehingga Claude dapat memperbaiki input dan mencari lagi. Sebelum v2.1.208, Claude Code melaporkan input yang ditolak sebagai No files found alih-alih kesalahan, bahkan ketika teks yang dicari ada di file target.
Tiga mode output mengontrol apa yang kembali:
files_with_matches: jalur file saja, tidak ada konten baris. Ini adalah default.content: baris yang cocok dengan file dan nomor baris. Ketika parameteroffsettool menunjuk melampaui kecocokan terakhir untuk pola yang memiliki kecocokan, Grep mengembalikanNo entries at this offset, sehingga Claude memperluas atau mengatur ulang offset alih-alih menyimpulkan pola tidak cocok.count: jumlah kecocokan per file, diikuti dengan total di semua file yang cocok. Total mencakup setiap kecocokan bahkan ketika parameterhead_limitatauoffsettool memotong entri per-file yang terdaftar.
glob, seperti **/*.tsx, atau berdasarkan bahasa dengan parameter type, seperti py atau rust. Secara default, pola cocok dalam satu baris. Claude dapat mengatur multiline: true untuk cocok di seluruh batas baris.
Grep menghormati .gitignore, jadi file gitignored dilewati. Untuk mencari file gitignored, Claude meneruskan jalurnya secara langsung.
Claude Code memutuskan izin untuk panggilan Grep sebelum memeriksa apakah path pencarian ada. Masih menjalankan pemeriksaan izin baca untuk path yang hilang di luar direktori kerja, jadi prompt izin untuk path tidak berarti path ada.
Perilaku LSP tool
LSP tool memberikan Claude intelijen kode dari language server yang sedang berjalan. Setelah setiap pengeditan file, secara otomatis melaporkan kesalahan tipe dan peringatan sehingga Claude dapat memperbaiki masalah tanpa langkah build terpisah. Claude juga dapat memanggilnya secara langsung untuk menavigasi kode:- Lompat ke definisi simbol
- Temukan semua referensi ke simbol
- Dapatkan informasi tipe pada posisi
- Daftar simbol dalam file
- Cari simbol berdasarkan nama di seluruh workspace
- Temukan implementasi antarmuka
- Lacak hierarki panggilan
Monitor tool
Monitor tool memungkinkan Claude mengawasi sesuatu di latar belakang dan bereaksi ketika berubah, tanpa menghentikan percakapan. Minta Claude untuk:- Tail file log dan tandai kesalahan saat muncul
- Poll PR atau CI job dan laporkan ketika statusnya berubah
- Pantau direktori untuk perubahan file
- Lacak output dari skrip yang sedang berjalan lama yang Anda tunjukkan
- Terhubung ke feed WebSocket dan laporkan setiap pesan saat tiba
-p.
Pada tenggat waktu, watch berakhir. Claude mendapat satu pemberitahuan, sehingga dapat memulai watch lagi jika masih diperlukan.
Hentikan monitor dengan meminta Claude untuk membatalkannya atau dengan mengakhiri sesi. Ketika Anda menghentikan subagent yang memulai monitors, misalnya dari /tasks, monitors tersebut berhenti bersamanya.
Ketika Monitor menjalankan perintah, ia menggunakan aturan izin yang sama seperti Bash, jadi pola allow dan deny yang Anda tetapkan untuk Bash berlaku di sini juga. Sementara auto mode aktif, Claude Code menyisihkan aturan allow yang menyebutkan Monitor itu sendiri, bersama dengan aturan allow luas lainnya yang dihapusnya, sehingga pengklasifikasi meninjau perintah Monitor dengan cara yang sama seperti meninjau perintah Bash.
Monitor memerlukan versi minimum atau Git Bash dalam kasus-kasus berikut:
- Versi minimum: di Amazon Bedrock, Claude Platform on AWS, Google Cloud’s Agent Platform, atau Microsoft Foundry, atau ketika
DISABLE_TELEMETRYatauCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICdiatur, Monitor memerlukan Claude Code v2.1.310 atau yang lebih baru. Persyaratan ini berlaku ketika pengambilan feature flag dinonaktifkan - Windows: tool ini hanya tersedia ketika Git Bash terinstal
WebSocket source
Ketika server sudah mendorong peristiwa melalui WebSocket, Claude dapat terhubung langsung ke dalamnya daripada menulis skrip polling. Setiap jenis aktivitas soket menjadi peristiwa atau mengakhiri watch:- Pesan teks: masing-masing menjadi satu peristiwa, bahkan ketika pesan mencakup beberapa baris.
- Pesan biner: tidak dilewatkan. Claude menerima baris placeholder seperti
[binary frame, 512 bytes]sebagai gantinya. - Pesan lebih besar dari 1 MiB: watch berakhir, jadi berlangganan feed yang disaring jika ada.
- Penutupan soket: watch berakhir dan Claude menerima kode penutupan.
ws sebagai pengganti command, dan satu panggilan Monitor tidak dapat menggabungkan keduanya. Input ws memiliki dua bidang:
Tenggat waktu
timeout_ms berlaku untuk watch WebSocket juga: watch berakhir pada tenggat waktu, dan TaskStop membatalkannya lebih awal.
Tanpa aturan allow Monitor, Anda akan dimintai persetujuan sebelum Claude membuka WebSocket; dalam auto mode pengklasifikasi memutuskan sebagai gantinya, kecuali jika aturan ask berlaku. Prompt tidak menawarkan opsi untuk melewati prompt di masa depan untuk host yang sama.
Alamat dan host yang ditolak untuk watch WebSocket
Claude Code menolak URL yang menunjuk ke alamat pribadi, link-local, atau cloud-metadata, termasuk nama host yang di-resolve oleh mesin Anda ke salah satunya. Di balik proxy, watch dapat menjangkau alamat pribadi, link-local, atau cloud-metadata kecuali proxy memblokirnya, karena Claude Code tidak memeriksa alamat yang ditemukan oleh proxy. Claude Code juga menolak host disandbox.network.deniedDomains, dan ketika allowManagedDomainsOnly diatur dalam pengaturan terkelola, host apa pun di luar allowlist terkelola.
Jika watch di balik proxy gagal dengan could not resolve <host>, mulai ulang Claude Code v2.1.319 atau yang lebih baru dengan CLAUDE_CODE_PROXY_RESOLVES_HOSTS diatur ke 1 sehingga proxy yang mencari nama host tersebut.
Aturan Bash yang menolak atau meminta persetujuan untuk watch WebSocket
Jika Claude Code menolak panggilanMonitor yang membuka WebSocket, cari aturan deny atau ask yang ditulis Bash atau Bash(*). Lakukan hal yang sama jika Claude Code meminta persetujuan untuk panggilan tersebut meskipun ada aturan allow Monitor Anda. Aturan yang berlaku untuk setiap perintah Bash juga mencakup watch WebSocket ini:
- Aturan deny: jika aturan sudah ada saat sesi dimulai, Claude tidak memiliki Monitor tool, sehingga tidak dapat memulai watch. Jika Anda menambahkan aturan selama sesi, panggilan
Monitorberikutnya dari Claude akan ditolak. Penolakan tersebut berbunyiPermission to use Monitor has been denied: it runs code as Bash does, and a rule denies Bash. - Aturan ask: Anda diminta untuk menyetujui watch. Aturan allow, hook
PreToolUse, modebypassPermissions, maupun pengklasifikasi auto mode tidak dapat menyetujuinya untuk Anda. Anda dapat menyetujuinya dari hookPermissionRequest. Ketika tidak ada yang dapat menjawab, seperti dalam modedontAsk, Claude Code menolak watch tersebut.
Bash(rm *).
Aturan ask, dan aturan deny yang Anda tambahkan selama sesi, mencakup watch ini di Claude Code v2.1.319 atau yang lebih baru.
Perilaku NotebookEdit tool
NotebookEdit memodifikasi notebook Jupyter satu sel pada satu waktu, menargetkan sel berdasarkancell_id mereka. Ini tidak melakukan penggantian string di seluruh notebook seperti yang dilakukan Edit pada file biasa.
Tiga mode edit mengontrol apa yang terjadi pada sel target:
replace: timpa sumber sel. Ini adalah default.insert: tambahkan sel baru setelah target. Tanpacell_id, sel baru masuk di awal notebook. Memerlukancell_typediatur kecodeataumarkdown.delete: hapus sel target.
Edit(...). Aturan seperti Edit(notebooks/**) mencakup panggilan NotebookEdit pada file dalam direktori itu.
Alat PowerShell
Alat PowerShell memungkinkan Claude menjalankan perintah PowerShell secara native. Di Windows, ini berarti perintah berjalan di PowerShell alih-alih melalui Git Bash. Bagaimana alat menjadi tersedia tergantung pada platform Anda:- Windows tanpa Git Bash: alat diaktifkan secara otomatis.
- Windows dengan Git Bash terinstal: alat aktif secara default untuk akun claude.ai dan Console; atur
CLAUDE_CODE_USE_POWERSHELL_TOOL=1untuk mengaktifkannya di sesi Amazon Bedrock, Google Cloud’s Agent Platform, dan Microsoft Foundry, atau0untuk mematikannya. - Linux, macOS, dan WSL: alat bersifat opt-in.
tool_input.command, dengan bidang yang sama seperti alat Bash.
Cocokkan Bash|PowerShell dalam hooks yang memeriksa perintah shell; bagian input hook PowerShell menjelaskan mengapa mencocokkan Bash saja tidak cukup.
Aktifkan alat PowerShell
AturCLAUDE_CODE_USE_POWERSHELL_TOOL=1 di lingkungan Anda atau di settings.json:
0 untuk mematikan alat. Di Linux, macOS, dan WSL, alat memerlukan PowerShell 7 atau lebih baru: instal pwsh dan pastikan itu ada di PATH Anda.
Di Windows, Claude Code secara otomatis mendeteksi pwsh.exe untuk PowerShell 7+ dengan fallback ke powershell.exe untuk PowerShell 5.1. Ketika alat diaktifkan, Claude memperlakukan PowerShell sebagai shell utama. Alat Bash tetap tersedia untuk skrip POSIX ketika Git Bash terinstal.
Claude Code menjalankan PowerShell dengan -ExecutionPolicy Bypass pada cakupan proses saja, sehingga skrip .ps1 dan impor modul bekerja pada instalasi Windows default tanpa mengubah kebijakan mesin. Bypass cakupan proses tidak mengganti Group Policy MachinePolicy atau UserPolicy, sehingga kebijakan perusahaan tetap berlaku. Untuk menghormati kebijakan eksekusi efektif mesin sebagai gantinya, atur CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1.
Aturan deny Bash juga mematikan tool PowerShell
Di Windows dengan Git Bash terinstal, menolak Bash juga mematikan tool PowerShell untuk sesi tersebut. Ini berlaku untuk aturan bercakupan sepertiBash(git push *) maupun Bash tanpa argumen, dan untuk aturan dari salah satu file pengaturan Anda atau --disallowedTools. Claude Code melakukan ini karena aturan Bash tidak membatasi tool PowerShell, yang memiliki aturan izinnya sendiri. Jika PowerShell dibiarkan aktif, Claude dapat menjalankan di sana apa yang ditolak oleh aturan Anda di Bash.
Untuk tetap mengaktifkan tool PowerShell bersama aturan deny Bash, lakukan salah satu dari berikut ini:
- Atur
CLAUDE_CODE_USE_POWERSHELL_TOOL=1di lingkungan Anda atau di blokenvdari file pengaturan, seperti yang ditunjukkan di Aktifkan tool PowerShell. - Tambahkan aturan izin
PowerShellbercakupan ke file pengaturan, seperti aturan denyPowerShell(git push *).
Pemilihan shell dalam pengaturan, hooks, dan skills
Tiga pengaturan tambahan mengontrol di mana PowerShell digunakan:"defaultShell": "powershell"dalamsettings.json: merutekan perintah!interaktif melalui PowerShell. Memerlukan alat PowerShell untuk diaktifkan."shell": "powershell"pada command hooks individual: menjalankan hook tersebut di PowerShell. Hooks menjalankan PowerShell secara langsung, sehingga ini bekerja terlepas dariCLAUDE_CODE_USE_POWERSHELL_TOOL.shell: powershelldalam skill frontmatter: menjalankan blok!`command`di PowerShell. Memerlukan alat PowerShell untuk diaktifkan.
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR.
Perintah PowerShell juga menerima variabel yang dipertahankan oleh hook melalui CLAUDE_ENV_FILE, dengan ketentuan yang dijelaskan di Variabel yang dipertahankan dalam perintah PowerShell. Memerlukan Claude Code v2.1.296 atau lebih baru.
Kode keluar 1 dari pencarian dan git diff di PowerShell
Jika pencarian grep atau rg yang tidak menemukan kecocokan menampilkan Error: Exit code 1 saat Claude menjalankannya di alat PowerShell, pencarian tersebut tidak gagal. Anda tidak perlu melakukan apa pun. Kesalahan ini dapat muncul ketika pencarian merupakan bagian dari perintah yang lebih panjang. Misalnya, ketika rg keluar dengan kode 1, rg foo | Out-Null menampilkan kesalahan tersebut sedangkan rg foo tidak.
Alat PowerShell dapat menghitung kode keluar 1 sebagai hasil normal dari grep, rg, egrep, fgrep, findstr, git grep, dan git diff. Pencarian menggunakan kode keluar 1 untuk melaporkan bahwa tidak ada kecocokan. Dari git diff, kode keluar 1 berarti file berbeda. Perintah yang menampilkan kesalahan saat Claude menjalankannya dihitung sebagai gagal dalam skill dengan shell: powershell.
Pengkodean Windows dan kode keluar
- Pengalihan dengan
>dan>>menulis file UTF-8 di PowerShell 5.1 - Claude Code mengkodekan teks yang disalurkan ke input standar perintah native sebagai UTF-8
- Claude Code menangkap output kesalahan tanpa urutan pelarian ANSI
- Perintah yang proses anak-anaknya menunggu input standar menerima end-of-file alih-alih hang
- Jika
where.exetidak menemukan kecocokan, ataufc.exeataudiff.exemendapati bahwa file berbeda, hasilnya dapat menampilkanError: Exit code 1meskipun perintah tidak gagal. Anda tidak perlu melakukan apa pun. - Jika kode keluar
robocopydari 1 hingga 7 ditampilkan sebagai kesalahan, penyalinan tidak gagal dan Anda tidak perlu melakukan apa pun.robocopykeluar dengan kode 0 hingga 7 untuk melaporkan hasil, seperti file yang disalin, dan dengan 8 atau lebih tinggi ketika gagal.
Keterbatasan pratinjau
Alat PowerShell memiliki keterbatasan yang diketahui berikut selama pratinjau:- Profil PowerShell tidak dimuat
- Di Windows, sandboxing tidak didukung
Perilaku alat Read
Alat Read mengambil jalur file dan mengembalikan isinya dengan nomor baris. Claude diinstruksikan untuk selalu melewatkan jalur absolut. Membaca file kosong mengembalikan pemberitahuan bahwa file ada tetapi isinya kosong, danoffset melampaui baris terakhir mengembalikan pemberitahuan yang memberikan jumlah baris file.
Read menangani beberapa jenis file di luar teks biasa:
- Gambar: File PNG, JPEG, GIF, dan WebP dikembalikan sebagai konten visual yang dapat dilihat Claude, bukan sebagai byte mentah. Claude Code mengubah ukuran dan mengompresi ulang gambar besar agar sesuai dengan batas ukuran gambar model sebelum mengirimkannya, jadi Claude mungkin melihat versi yang diperkecil dari tangkapan layar besar. Jika Claude melewatkan detail tingkat piksel halus dalam gambar besar, minta Claude untuk memotong wilayah yang Anda perlukan, misalnya dengan ImageMagick melalui Bash, lalu membaca hasil potongan tersebut. Read menolak file gambar yang lebih besar dari 128 MB dengan kesalahan yang memberi tahu Claude untuk mengubah ukuran gambar atau mengekspor salinan yang lebih kecil, lalu membaca salinan tersebut. Jika Claude berhenti pada kesalahan tersebut alih-alih melakukannya, lihat File is too large to read as an image.
-
PDFs: Claude membaca file
.pdfpendek secara keseluruhan. Untuk PDF yang lebih panjang dari 10 halaman, file tersebut dibaca dalam rentang dengan parameterpages, seperti"1-5", hingga 20 halaman sekaligus. Pembacaan rentang halaman merender halaman denganpdftoppmdari poppler-utils, jadi instal denganbrew install popplerdi macOS atauapt-get install poppler-utilsdi Debian dan Ubuntu. Di Windows dan platform lainnya, instal build poppler yang menempatkanpdftoppmdiPATHAnda. Tanpa itu, pembacaan rentang halaman gagal denganpdftoppm is not installed. -
Jupyter notebooks: File
.ipynbmengembalikan semua sel dengan keluarannya, termasuk kode, markdown, dan visualisasi. Notebook yang sel-selnya berjumlah lebih dari 256 KB, atau lebih dari batas token, mengembalikan kesalahan sebagai gantinya. Claude Code menolak untuk membaca file notebook di atas 100 MB; kesalahan memberi tahu Claude cara membaca sebagian dari notebook sebagai gantinya, seperti irisan sel, dengan perintah shell.
ls.
Read menolak file yang ekstensinya dianggap biner, seperti .xlsx, .parquet, .heic, atau .zip. Claude tetap melanjutkan pekerjaan setelah penolakan: kesalahan tersebut menyarankan skill untuk jenis file itu jika tersedia, atau jika tidak, perintah shell atau skrip yang dapat membaca format tersebut. Jika Anda menyebut dengan @ file yang ditolak oleh Read, Claude menerima jalur file tersebut tetapi tidak menerima isinya.
File besar
Claude dapat membaca file teks yang lebih besar dari yang dikembalikan oleh satu panggilan Read. Secara default, satu panggilan mengembalikan paling banyak 25.000 token, atau nilai yang Anda tetapkan diCLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS, dan menolak seluruh file di atas 256 KB, sehingga Claude membaca file yang lebih besar per halaman dengan offset dan limit. Di Claude Code v2.1.296 atau lebih baru, Claude dapat membaca seluruh file, atau rentang baris yang panjang, dalam satu panggilan dengan mengatur allow_large: true saat diperlukan, misalnya karena Anda meminta seluruh file. Pembacaan tersebut diukur berdasarkan ruang yang tersisa di context window sesi, bukan batas default. Gambar, PDF, dan notebook tetap mempertahankan batasnya.
Apa yang diterima Claude ketika pembacaan melebihi batas default:
- Seluruh file melebihi batas token: halaman pertama file, dengan pemberitahuan
PARTIAL viewyang menyebutkan berapa banyak file yang diterima dan cara membaca lebih lanjut denganoffsetdanlimit - Seluruh file di atas 256 KB, atau pembacaan dengan
offsetataulimityang melebihi batas token: kesalahan yang memberi tahu Claude untuk membaca sebagian denganoffsetdanlimit, atau untuk mencari konten spesifik dengan Grep sebagai gantinya
Perilaku alat SendFeedback
Umpan balik yang disusun Claude adalah laporan umpan balik tentang Claude Code yang ditulis Claude untuk Anda. Ini memerlukan Claude Code v2.1.238 atau lebih baru. Claude Code menyimpan setiap draf di mesin Anda di bawah~/.claude/feedback/drafts/, dan tidak ada yang sampai ke Anthropic sampai Anda mengirimnya. Claude menyusun satu dengan alat SendFeedback ketika:
- Alat atau perintah terus gagal
- Tidak dapat membantu dengan sesuatu yang Anda minta
- Anda menunjukkan kesalahan yang dibuat, atau itu menyadarinya
- Anda memintanya untuk mengajukan umpan balik
Apa yang Anda lihat ketika Claude menyusun
Setelah Claude mengantrekan draf, Anda melihat kartu di atas prompt Anda dengan judul draf. Tekan1 untuk meninjau draf, tekan 2 dua kali untuk mengirimnya seperti yang ditulis, atau tekan 0 untuk menutupnya. Draf yang ditutup tetap berada dalam antrian Anda. Setelah Anda menutup kartu, Claude Code menanyakan apakah akan mematikan umpan balik yang disusun Claude. Itu berhenti bertanya setelah Anda menolak dua kali.
Secara default, Anda melihat paling banyak tiga kartu dalam sesi; Anthropic dapat menyesuaikan batas itu dari server tanpa rilis. Setelah batas, dan kapan pun Anda menetapkan feedbackDrafts ke quiet, Anda hanya melihat hitungan draf yang antri di footer prompt.
Tinjau dan edit draf
Jalankan/feedback tanpa argumen untuk membuka antrian Anda. Ini mencantumkan setiap draf yang antri dari semua sesi Anda, termasuk draf yang kartunya Anda tutup atau tidak pernah lihat. Pilih draf untuk membukanya untuk ditinjau, di mana Anda dapat:
- Edit judul, area, dan detail
- Atur Send transcript ke
yesatauno. Ketika transkrip dari sesi tempat Claude mengantrekan draf masih tersedia, itu dimulai padayes, yang mengirim percakapan itu ke Anthropic;nomengirim laporan saja - Kirim draf, buang, atau biarkan di antrian untuk nanti
w untuk dialog umpan balik standar. /feedback dengan teks setelahnya, dan /bug, buka dialog itu secara langsung.
Kirim draf
Ketika Anda mengirim draf, Claude Code mengirimkannya dengan cara yang sama seperti laporan/feedback, dengan retensi yang sama, dan menghapus draf dari mesin Anda. Ketika Anda mengirim dari kartu, itu menunjukkan ✓ Sent; ketika Anda mengirim dari antrian, itu ditutup dengan ID tanda terima.
Laporan membawa:
- Judul, area, dan detail Anda
- Info lingkungan, seperti versi Claude Code Anda, sistem operasi, dan model
- ID permintaan API terbaru
- Transkrip percakapan, ketika Anda meninggalkan Send transcript pada
yesdi layar tinjauan. Mengirim dari kartu tidak pernah menyertakan transkrip
Feedback collection is not available for organizations with custom data retention policies.
Buang atau simpan draf
Ketika Anda membuang draf, Claude Code menghapusnya dari mesin Anda. Draf yang Anda tinggalkan di antrian kedaluwarsa setelah 30 hari, atau setelahcleanupPeriodDays ketika itu lebih pendek. Antrian menyimpan 10 draf di semua sesi Anda, dan ketika Claude mengantrekan yang kesebelas, Claude Code menghapus yang tertua. Ketika Anda menjalankan /exit dengan draf dari sesi masih di antrian, Claude Code menanyakan apakah akan meninjau atau membuang sebelum keluar.
Matikan umpan balik yang disusun Claude
Atur Claude-drafted feedback keoff di /config, yang menulis pengaturan feedbackDrafts, atau atur CLAUDE_CODE_SEND_FEEDBACK=0 untuk satu sesi. Dengan salah satu, Claude tidak dapat mengantrekan draf. Untuk terus menyusun tanpa kartu, atur feedbackDrafts ke quiet sebagai gantinya. Administrator dapat mengatur feedbackDrafts dalam pengaturan terkelola, yang mengambil alih pengaturan Anda sendiri.
Sesi tanpa umpan balik yang disusun Claude
Claude Code menyertakan alat dalam sesi terminal interaktif di mesin Anda sendiri yang menggunakan Claude API daripada penyedia cloud. Itu meninggalkan alat dari:- Berjalan
-pnon-interaktif dan sesi Agent SDK, yang tidak memiliki layar untuk meninjau antrian - Sesi cloud, yang tidak dapat menulis ke antrian di mesin Anda
- Sesi di Amazon Bedrock, Claude Platform on AWS, Google Cloud’s Agent Platform, atau Microsoft Foundry
- Sesi yang menjangkau Claude melalui LLM gateway dengan kunci atau token milik gateway itu sendiri
- Sesi di mana Anda menetapkan
CLAUDE_CODE_SEND_FEEDBACK=0atauDISABLE_FEEDBACK_COMMAND=1, aturCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICke nilai non-kosong apa pun, atau matikan pengambilan bendera fitur - Organisasi yang telah mematikan umpan balik produk, organisasi dengan retensi data nol, dan organisasi yang menerapkan konfigurasi HIPAA
- Sesi di mana Claude Code telah berhenti menawarkan umpan balik setelah laporan ditolak
Ketersediaan alat Task
Tool pelacakan tugas,TaskCreate, TaskGet, TaskUpdate, TaskList, dan TodoWrite, tersedia secara default hanya pada Opus 4.7, Sonnet 4.6, Haiku 4.5, dan model-model sebelumnya. Di mana pun tool tersebut tersedia, Anda mendapatkan empat tool Task, atau TodoWrite saja ketika Anda menetapkan CLAUDE_CODE_ENABLE_TASKS=0.
Pada setiap model lainnya, Claude Code menghilangkan alat-alat tersebut kecuali Anda memilih untuk menggunakannya. Hal yang sama berlaku untuk ID model yang Claude Code tidak kenali, seperti nama model khusus yang disajikan melalui gateway LLM. Pada model yang lebih baru, Claude melacak pekerjaan multi-langkah tanpa daftar periksa tertulis, dan definisi alat serta pengingat menggunakan konteks. Tanpa alat-alat tersebut, Claude tidak menambahkan apa pun ke daftar tugas saat bekerja.
Jika Anda ingin menggunakan alat-alat ini pada model yang tidak memilikinya secara default, lakukan salah satu hal berikut:
- Ekspor
CLAUDE_CODE_ENABLE_TODO_TOOLS=1sebelum Anda memulai Claude Code, misalnyaCLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude. Claude Code kemudian menyediakan alat yang sama pada setiap model dan setiap penyedia - Sebutkan salah satu alat dalam
--allowedTools, misalnyaclaude --allowedTools TaskCreate - Daftarkan alat-alat dalam
--tools, yang membatasi alat bawaan sesi ke yang disebutkannya. Sertakan alat yang Anda inginkan bersama dengan alat bawaan lain yang Anda gunakan - Dalam Agent SDK, opsi
allowedToolsdantoolsbekerja dengan cara yang sama seperti dua flag
Tool pelacakan tugas dalam subagent dan tim agent
Subagent memiliki tool pelacakan tugas hanya ketika sesi Anda memilikinya, apa pun model yang dijalankan subagent tersebut. Anggota tim agent dalam proses memiliki tool pelacakan tugas ketika sesi Anda memilikinya. Anggota tim panel terpisah adalah proses Claude Code terpisah yang mewarisi daftar--tools dan aturan penolakan Anda, bukan --allowedTools, jadi periksa apa yang Anda tetapkan:
- Tidak ada daftar
--toolsatau aturan penolakan, danCLAUDE_CODE_ENABLE_TODO_TOOLStidak ditetapkan untuk anggota tim: anggota tim memiliki tool pelacakan tugas yang dimiliki model miliknya sendiri secara default. CLAUDE_CODE_ENABLE_TODO_TOOLSdiekspor di shell Anda: Claude Code meneruskan kepada anggota tim serangkaian environment variable tetap yang tidak menyertakan variabel yang Anda ekspor. Untuk menetapkannya juga bagi anggota tim, mulai sesi Anda dengan menjalankanclaude --settings '{"env":{"CLAUDE_CODE_ENABLE_TODO_TOOLS":"1"}}'di shell Anda. Anggota tim juga mendapatkan nilai--settingsAnda.--toolsyang menyebutkan tool pelacakan tugas: anggota tim memilikinya pada model apa pun.- Tool pelacakan tugas yang tidak ada dalam
--toolsatau disebutkan dalam aturan penolakan: anggota tim tidak memiliki tool tersebut.
Perilaku tool WebFetch
WebFetch menerima URL dan prompt yang menjelaskan apa yang harus diekstrak. Tool ini mengambil halaman dan mengonversi respons ke Markdown ketika server mengembalikan HTML. Untuk sebagian besar pengambilan, tool ini kemudian menjalankan prompt terhadap konten dalam panggilan model terpisah, dan Claude menerima hasil panggilan tersebut, bukan halaman mentahnya. Langkah konversi ini tidak dapat dikonfigurasi. Hal ini membuat WebFetch secara desain bersifat lossy. Prompt ekstraksi menentukan apa yang sampai ke Claude, sehingga hasil yang menyatakan bahwa suatu halaman tidak menyebutkan sesuatu mungkin hanya berarti prompt tersebut tidak menanyakannya. Minta Claude untuk mengambil ulang dengan prompt yang lebih spesifik, atau gunakancurl melalui Bash untuk mendapatkan halaman yang belum diproses.
Beberapa perilaku membentuk respons yang diterima Claude:
- WebFetch menolak
localhostdan hostname lain tanpa titik, seperti nama intranet tanpa domain, sebelum membuat permintaan. Error yang dikembalikannya memberi tahu Claude untuk menjangkau server lokal dengancurlmelalui Bash sebagai gantinya. - URL HTTP secara otomatis ditingkatkan ke HTTPS.
- WebFetch membaca hingga 100.000 karakter konten halaman per panggilan. Pada Claude Code v2.1.290 atau yang lebih baru, hasil untuk halaman yang lebih panjang memberi tahu Claude berapa banyak yang belum terbaca, sehingga Claude dapat mengambil bagian berikutnya.
- WebFetch menyimpan setiap respons dalam cache selama 15 menit secara default, sehingga pengambilan berulang atas URL yang sama kembali dengan cepat. Pada Claude Code v2.1.233 atau yang lebih baru, atur
CLAUDE_CODE_WEBFETCH_CACHE_TTL_MSuntuk mengubah berapa lama WebFetch menyimpan setiap respons. - Halaman yang belum selesai diunduh dalam lima menit, termasuk pengalihan apa pun yang diikuti WebFetch, gagal dengan error tenggat waktu. Pada Claude Code v2.1.268 atau yang lebih baru, atur
CLAUDE_CODE_WEBFETCH_DEADLINE_MSuntuk mengubah batasnya, atau ke0untuk menghapusnya. - Ketika URL dialihkan ke host yang berbeda, WebFetch mengembalikan hasil teks yang menyebutkan URL asli dan target pengalihan alih-alih mengikutinya. Claude kemudian mengambil URL baru tersebut dengan panggilan WebFetch kedua.
- Ketika langkah ekstraksi menemui API yang kelebihan beban, Claude Code mencoba ulang dengan backoff; pengambilan yang tetap gagal mengembalikan hasil error.
acceptEdits, WebFetch meminta persetujuan sebelum mengambil, kecuali untuk domain yang sudah diizinkan atau ditolak oleh aturan izin Anda serta sekumpulan domain dokumentasi bawaan yang telah disetujui sebelumnya yang diambil tanpa permintaan izin. Apa pun yang diizinkan aturan Anda, pengambilan juga harus lolos pemeriksaan keamanan domain WebFetch terlebih dahulu; bagian tersebut menjelaskan apa yang dikirim pemeriksaan itu dan pengaturan yang melewatinya. Permintaan izin menawarkan tiga opsi:
- Yes: menyetujui pengambilan ini saja. Panggilan WebFetch berikutnya akan meminta persetujuan lagi, bahkan untuk domain yang sama.
- Yes, and don’t ask again for
<domain>: menyetujui pengambilan dan menyimpan aturan allowWebFetch(domain:...)untuk domain tersebut ke.claude/settings.local.jsonuntuk repositori tersebut. Lihat bagaimana persetujuan yang disimpan bertahan. Ketika organisasi Anda menetapkanallowManagedPermissionRulesOnly, Claude Code menyembunyikan opsi ini. - No, and tell Claude what to do differently: menolak pengambilan.
WebFetch(domain:example.com); WebFetch(domain:*) mengizinkan setiap domain. Mode izin auto dan bypassPermissions melewati permintaan izin, kecuali untuk domain yang cocok dengan aturan ask eksplisit.
Aturan WebFetch(domain:...) eksplisit dalam deny, ask, atau allow diutamakan daripada kumpulan domain yang telah disetujui sebelumnya, sehingga Anda dapat memblokir domain yang telah disetujui sebelumnya atau mewajibkan permintaan izin untuknya.
Ketika URL adalah tautan artifact claude.ai, Claude Code juga dapat meminta persetujuan untuk membaca artifact itu sendiri. Untuk kasus-kasus saat ia meminta persetujuan, lihat Membaca artifact yang dibagikan kepada Anda.
WebFetch menetapkan header User-Agent yang diawali dengan Claude-User, dan header Accept yang lebih mengutamakan Markdown daripada HTML sehingga server yang mendukung negosiasi konten dapat mengembalikan Markdown secara langsung.
Perintah yang berjalan di sandbox tidak mewarisi kumpulan domain dokumentasi bawaan WebFetch yang telah disetujui sebelumnya. Agar perintah di sandbox dapat menjangkau suatu domain tanpa permintaan izin, tambahkan domain tersebut ke allowedDomains atau izinkan dengan aturan WebFetch(domain:...), yang juga dihormati oleh sandbox. Sebaliknya, WebFetch tidak pernah membaca allowlist sandbox, sehingga menambahkan domain ke allowlist jaringan sandbox atau organisasi tidak menghentikan WebFetch dari meminta persetujuan untuknya.
Ketersediaan WebFetch
Pada Claude Code v2.1.285 atau yang lebih baru, aturCLAUDE_CODE_DISABLE_WEB_FETCH ke 1 untuk mematikan WebFetch.
Jika Anda masuk dengan akun claude.ai Team atau Enterprise dan tidak terhubung melalui LLM gateway, WebFetch juga bergantung pada kebijakan organisasi Anda, yang diminta Claude Code dari api.anthropic.com saat sesi dimulai. Hal yang sama berlaku untuk sesi yang paketnya tidak dapat ditentukan oleh Claude Code, seperti sesi yang berjalan dengan token claude.ai yang disediakan oleh aplikasi lain.
Jika WebFetch tidak ada dalam sesi, jalankan /status di sesi tersebut. Jika baris Organization policy melaporkan bahwa kebijakan tidak dimuat dan menyebutkan web fetch di antara fitur yang menunggunya, Claude Code menahan WebFetch hingga dapat memastikan bahwa organisasi Anda mengizinkannya. Di luar sesi, claude doctor membuat permintaannya sendiri dan mencetak baris yang sama. Setelah kebijakan yang mengizinkan WebFetch dimuat, tool tersebut kembali tersedia tanpa perlu memulai ulang.
Perilaku alat WebSearch
WebSearch menjalankan kueri terhadap backend web search Anthropic dan mengembalikan judul hasil dan URL. Alat ini tidak mengambil halaman hasil. Untuk membaca halaman yang Claude temukan dalam hasil pencarian, alat ini diikuti dengan WebFetch. Alat ini dapat mengeluarkan hingga delapan pencarian backend per panggilan, menyempurnakan pencarian secara internal sebelum mengembalikan hasil. Claude dapat membatasi hasil denganallowed_domains untuk menyertakan hanya host tertentu, atau blocked_domains untuk mengecualikannya. Kedua daftar tidak dapat digabungkan dalam satu panggilan.
Ketika permintaan pencarian mengenai API yang kelebihan beban, Claude Code mencoba ulang dengan backoff; panggilan yang masih gagal mengembalikan hasil kesalahan.
Aturan izin WebSearch tidak memerlukan spesifier. Entri WebSearch kosong dalam allow atau deny adalah satu-satunya bentuk.
Backend pencarian tidak dapat dikonfigurasi. Untuk mencari dengan penyedia yang berbeda, tambahkan server MCP yang mengekspos alat pencarian.
WebSearch tersedia di Claude API, Claude Platform on AWS, dan Microsoft Foundry. Di Agent Platform Google Cloud, tool ini bekerja dengan Opus 4, Sonnet 4, Haiku 4.5, dan model yang lebih baru. Amazon Bedrock tidak mengekspos tool web search sisi server.
Batas pencarian sesi
Sesi terminal interaktif memiliki batas 200 panggilan WebSearch. Pencarian dari percakapan utama dan dari subagent, seperti fan-out penelitian paralel, dihitung terhadap batas yang sama. Selama sesi berada pada batas, pencarian muncul dalam percakapan sebagai panggilan yang tidak melakukan apa pun. Claude menerima pemberitahuan yang memberi tahu Claude untuk melanjutkan dengan informasi yang telah dikumpulkannya, menyampaikan hal tersebut dalam jawabannya, dan, jika memerlukan lebih banyak pencarian, meminta Anda menaikkan batas. Untuk mendapatkan lebih banyak pencarian, naikkan batas maksimum, tunggu hingga batas terisi ulang, atau mulai percakapan baru:- Naikkan batas maksimum: atur environment variable
CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSIONke angka bulat positif, seperti500. Batas maksimum dapat dinaikkan tetapi tidak dapat dimatikan. - Tunggu pengisian ulang: pada Claude Code v2.1.290 atau lebih baru, batas sesi terminal interaktif terisi ulang sekitar 100 panggilan per jam. Untuk mengubah lajunya, atur
CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOURke jumlah panggilan per jam, seperti50. - Mulai percakapan baru: menjalankan
/clearpada prompt Claude Code juga mengatur ulang hitungan. Jika pekerjaan yang masih dapat menghasilkan subagent bertahan setelah pembersihan, seperti alur kerja yang sedang berjalan, hitungan akan dibawa ke depan.
-p dan dalam Agent SDK, batas berlaku per giliran, bukan per sesi. Satu giliran berlangsung sejak pesan yang Anda kirim hingga Claude selesai merespons. Batas diatur ulang ketika Anda mengirim pesan berikutnya setelah itu atau memulai eksekusi claude -p baru, bahkan dengan --continue atau --resume. Untuk lebih banyak pencarian, naikkan CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION atau atur laju pengisian ulang dengan CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR.
Perilaku tool Write
Tool Write membuat file baru atau menimpa file yang sudah ada dengan konten lengkap yang disediakan. Tool ini tidak menambahkan atau menggabungkan. Write juga menimpa file yang sudah ada yang byte-nya tidak dapat didekode dan menyimpan konten baru sebagai UTF-8, seperti yang dijelaskan di file non-UTF-8. Apakah Claude harus membaca file yang sudah ada dalam percakapan saat ini sebelum menimpanya tergantung pada model dan file:- Claude Opus 4.6, Claude Haiku 4.5, dan model yang lebih lama selalu memerlukan pembacaan, jadi Write ke file yang sudah ada yang belum dibaca gagal dengan kesalahan.
- Model yang lebih baru dapat menimpa file yang tidak pernah mereka baca dalam sesi ini di bawah kondisi yang sama seperti read-before-edit: membacanya tidak akan memerlukan prompt izin dan tool Read tersedia.
- Jupyter notebooks, dan file yang Claude baca hanya sebagian dengan pemberitahuan
PARTIAL view, memerlukan pembacaan pada setiap model.
Periksa tools mana yang tersedia
Set tools yang tepat bergantung pada penyedia, platform, dan pengaturan Anda. Untuk memeriksa apa yang dimuat dalam sesi yang sedang berjalan, tanyakan Claude secara langsung:/mcp.
advisor tool adalah server tool yang dijalankan API, bukan tool yang diimplementasikan Claude Code. Tool ini tidak memiliki nama yang dapat Anda referensikan dalam aturan izin atau pencocokan hook.
Lihat juga
- MCP servers: tambahkan tools kustom dengan menghubungkan server eksternal
- Permissions: sistem izin, sintaks aturan, dan pola khusus tool
- Subagents: konfigurasi akses tool untuk subagent
- Hooks: jalankan perintah kustom sebelum atau sesudah eksekusi tool
