> ## Documentation Index
> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Referensi Tools

> Referensi lengkap untuk tools yang dapat digunakan Claude Code, termasuk persyaratan izin dan perilaku per-tool.

Claude Code memiliki akses ke serangkaian tools bawaan yang membantu memahami dan memodifikasi codebase Anda. Nama tools adalah string yang tepat yang Anda gunakan dalam [aturan izin](/id/permissions#tool-specific-permission-rules), [daftar tools subagent](/id/sub-agents), dan [pencocokan hook](/id/hooks). Untuk menonaktifkan tool sepenuhnya, tambahkan namanya ke array `deny` dalam [pengaturan izin](/id/permissions#tool-specific-permission-rules) Anda.

Untuk menambahkan tools kustom, hubungkan [server MCP](/id/mcp). Untuk memperluas Claude dengan alur kerja berbasis prompt yang dapat digunakan kembali, tulis [skill](/id/skills), yang berjalan melalui tool `Skill` yang ada daripada menambahkan entri tool baru.

| Tool                   | Deskripsi                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | Izin Diperlukan |
| :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------- |
| `Agent`                | Menjalankan [subagent](/id/sub-agents) dengan jendela konteks sendiri untuk menangani tugas. Lihat [perilaku Agent tool](#agent-tool-behavior)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Tidak           |
| `Artifact`             | Menerbitkan file HTML atau Markdown sebagai [artifact](/id/artifacts): halaman interaktif pribadi di claude.ai yang dapat Anda bagikan dalam organisasi Anda. {/* plan-availability: feature=artifacts plans=team,enterprise providers=anthropic */}Memerlukan paket Team atau Enterprise dan autentikasi `/login`; lihat [Ketersediaan](/id/artifacts#availability)                                                                                                                                                                                                                                                                                                                                                                                                                                                   | Ya              |
| `AskUserQuestion`      | Mengajukan pertanyaan pilihan ganda untuk mengumpulkan persyaratan atau memperjelas ambiguitas                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Tidak           |
| `Bash`                 | Menjalankan perintah shell di lingkungan Anda. Lihat [perilaku Bash tool](#bash-tool-behavior)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Ya              |
| `CronCreate`           | Menjadwalkan prompt berulang atau satu kali dalam sesi saat ini. Tugas bersifat session-scoped dan dipulihkan pada `--resume` atau `--continue` jika belum kadaluarsa. Lihat [tugas terjadwal](/id/scheduled-tasks)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Tidak           |
| `CronDelete`           | Membatalkan tugas terjadwal berdasarkan ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Tidak           |
| `CronList`             | Mencantumkan semua tugas terjadwal dalam sesi                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Tidak           |
| `Edit`                 | Membuat pengeditan tertarget ke file tertentu. Lihat [perilaku Edit tool](#edit-tool-behavior)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Ya              |
| `EnterPlanMode`        | Beralih ke plan mode untuk merancang pendekatan sebelum coding                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Tidak           |
| `EnterWorktree`        | Membuat [git worktree](/id/worktrees) terisolasi dan beralih ke dalamnya. Lewatkan `path` untuk beralih ke worktree yang ada dari repositori saat ini daripada membuat yang baru. Dari dalam sesi worktree, atau dari subagent dengan direktori kerja yang disematkan seperti [`isolation: worktree`](/id/sub-agents#supported-frontmatter-fields), hanya bentuk `path` yang tersedia dan target harus berada di bawah `.claude/worktrees/`                                                                                                                                                                                                                                                                                                                                                                            | Tidak           |
| `ExitPlanMode`         | Menyajikan rencana untuk persetujuan dan keluar dari plan mode                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Ya              |
| `ExitWorktree`         | Keluar dari sesi worktree dan kembali ke direktori asli. Tidak tersedia untuk subagent yang sudah berjalan di direktori kerja mereka sendiri, seperti dengan [`isolation: worktree`](/id/sub-agents#supported-frontmatter-fields)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Tidak           |
| `Glob`                 | Menemukan file berdasarkan pencocokan pola. Lihat [perilaku Glob tool](#glob-tool-behavior)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Tidak           |
| `Grep`                 | Mencari pola dalam konten file. Lihat [perilaku Grep tool](#grep-tool-behavior)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Tidak           |
| `ListMcpResourcesTool` | Mencantumkan resources yang diekspos oleh [server MCP](/id/mcp) yang terhubung                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Tidak           |
| `LSP`                  | Intelijen kode melalui language servers: lompat ke definisi, temukan referensi, laporkan kesalahan tipe dan peringatan. Lihat [perilaku LSP tool](#lsp-tool-behavior)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Tidak           |
| `Monitor`              | Menjalankan perintah di latar belakang dan mengirimkan setiap baris output kembali ke Claude, sehingga dapat bereaksi terhadap entri log, perubahan file, atau status yang dipolling di tengah percakapan. Dapat juga membuka WebSocket dan memperlakukan setiap pesan masuk sebagai acara. Lihat [Monitor tool](#monitor-tool)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Ya              |
| `NotebookEdit`         | Memodifikasi sel notebook Jupyter. Lihat [perilaku NotebookEdit tool](#notebookedit-tool-behavior)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Ya              |
| `PowerShell`           | Menjalankan perintah PowerShell secara native. Lihat [PowerShell tool](#powershell-tool) untuk ketersediaan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Ya              |
| `PushNotification`     | Mengirim notifikasi desktop, dan push phone ketika [Remote Control](/id/remote-control) terhubung, sehingga tugas yang berjalan lama atau [tugas terjadwal](/id/scheduled-tasks) dapat menjangkau Anda ketika Anda pergi. {/* plan-availability: feature=push-notifications providers=anthropic */}Pengiriman push berjalan melalui infrastruktur yang dihosting Anthropic, yang tidak dapat diakses dari Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry                                                                                                                                                                                                                                                                                                                                                     | Tidak           |
| `Read`                 | Membaca konten file. Lihat [perilaku Read tool](#read-tool-behavior)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | Tidak           |
| `ReadMcpResourceTool`  | Membaca resource MCP tertentu berdasarkan URI                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Tidak           |
| `RemoteTrigger`        | Membuat, memperbarui, menjalankan, dan mencantumkan [Routines](/id/routines) di claude.ai. Mendukung perintah `/schedule`. {/* plan-availability: feature=routines plans=pro,max,team,enterprise providers=anthropic */}Routines berada di claude.ai dan memerlukan paket Pro, Max, Team, atau Enterprise, jadi tool ini tidak dapat diakses dari Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry                                                                                                                                                                                                                                                                                                                                                                                                             | Tidak           |
| `ReportFindings`       | Melaporkan temuan code-review sebagai daftar terstruktur, dengan file, ringkasan, dan skenario kegagalan per temuan, sehingga Claude Code dapat merender mereka daripada mencetaknya sebagai teks. Claude memanggilnya ketika instruksi code-review aktif memberitahunya untuk melakukannya. {/* min-version: 2.1.196 */}Memerlukan Claude Code v2.1.196 atau lebih baru                                                                                                                                                                                                                                                                                                                                                                                                                                               | Tidak           |
| `ScheduleWakeup`       | Menjadwalkan ulang iterasi berikutnya dari [self-paced `/loop`](/id/scheduled-tasks#let-claude-choose-the-interval). Claude memanggil ini di akhir setiap iterasi untuk memilih kapan iterasi berikutnya berjalan, antara satu menit dan satu jam ke depan; Anda tidak memanggilnya secara langsung. Wakeup yang tertunda muncul dalam `session_crons` dalam [Stop hook input](/id/hooks#stop-input). {/* plan-availability: feature=loop-dynamic providers=anthropic */}Tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry, di mana prompt `/loop` tanpa interval berjalan pada jadwal tetap                                                                                                                                                                                                  | Tidak           |
| `SendMessage`          | Mengirim pesan ke anggota [agent team](/id/agent-teams), atau [melanjutkan subagent](/id/sub-agents#resume-subagents) berdasarkan ID agennya. Subagent yang dihentikan secara otomatis melanjutkan di latar belakang. Pesan protokol tim terstruktur memerlukan agent teams                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Tidak           |
| `SendUserFile`         | Mengirim file dari sesi kepada Anda dengan keterangan opsional, sehingga laporan yang dihasilkan, diagram, tangkapan layar, atau artefak yang dibangun mencapai perangkat Anda daripada hanya disebutkan dalam transkrip. {/* min-version: 2.1.196 */}Sejak v2.1.196, input `display` opsional mengontrol presentasi: `render` membuka file secara inline di klien, `attach` menampilkan kartu unduhan saja, dan ketika tidak diatur klien memutuskan berdasarkan jenis file. Tersedia ketika klien [Remote Control](/id/remote-control) terhubung atau sesi berjalan di lingkungan cloud terkelola seperti [Claude Code di web](/id/claude-code-on-the-web). Pengiriman berjalan melalui infrastruktur yang dihosting Anthropic, jadi tool tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry | Tidak           |
| `ShareOnboardingGuide` | {/* plan-availability: feature=onboarding-guide-share plans=pro,max,team,enterprise providers=anthropic */}Mengunggah `ONBOARDING.md` dan mengembalikan tautan berbagi yang dapat dibuka rekan tim di Claude Code. Dipanggil dari `/team-onboarding` setelah panduan ditulis. Tersedia untuk pelanggan claude.ai pada paket Pro, Max, Team, dan Enterprise                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Ya              |
| `Skill`                | Menjalankan [skill](/id/skills#control-who-invokes-a-skill) dalam percakapan utama                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Ya              |
| `TaskCreate`           | Membuat tugas baru dalam daftar tugas                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Tidak           |
| `TaskGet`              | Mengambil detail lengkap untuk tugas tertentu                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Tidak           |
| `TaskList`             | Mencantumkan semua tugas dengan status saat ini mereka                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Tidak           |
| `TaskOutput`           | (Tidak digunakan lagi) Mengambil output dari tugas latar belakang. Lebih suka `Read` pada jalur file output tugas                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Tidak           |
| `TaskStop`             | Membunuh tugas latar belakang yang sedang berjalan berdasarkan ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Tidak           |
| `TaskUpdate`           | Memperbarui status tugas, dependensi, detail, atau menghapus tugas                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Tidak           |
| `TodoWrite`            | {/* min-version: 2.1.142 */}Mengelola daftar periksa tugas sesi. Dinonaktifkan secara default sejak v2.1.142 mendukung `TaskCreate`, `TaskGet`, `TaskList`, dan `TaskUpdate`. Atur `CLAUDE_CODE_ENABLE_TASKS=0` untuk mengaktifkan kembali                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Tidak           |
| `ToolSearch`           | Mencari dan memuat tools tertunda saat [pencarian tool](/id/mcp#scale-with-mcp-tool-search) diaktifkan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Tidak           |
| `WaitForMcpServers`    | {/* min-version: 2.1.142 */}Menunggu satu atau lebih [server MCP](/id/mcp) yang masih terhubung di latar belakang, sehingga permintaan dapat menggunakan tools mereka tanpa memulai ulang sesi. Claude memanggilnya ketika server yang diperlukan belum terhubung. Hanya muncul saat [pencarian tool](/id/mcp#scale-with-mcp-tool-search) dinonaktifkan, karena `ToolSearch` menangani penundaan saat diaktifkan                                                                                                                                                                                                                                                                                                                                                                                                       | Tidak           |
| `WebFetch`             | Mengambil konten dari URL yang ditentukan. Lihat [perilaku WebFetch tool](#webfetch-tool-behavior)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Ya              |
| `WebSearch`            | Melakukan pencarian web. Lihat [perilaku WebSearch tool](#websearch-tool-behavior)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Ya              |
| `Workflow`             | Menjalankan [dynamic workflow](/id/workflows): skrip yang mengorkestra banyak subagent di latar belakang dan mengembalikan satu hasil yang dikonsolidasikan                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Ya              |
| `Write`                | Membuat atau menimpa file. Lihat [perilaku Write tool](#write-tool-behavior)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | Ya              |

<h2 id="configure-tools-with-permission-rules-and-hooks">
  Konfigurasi tools dengan aturan izin dan hooks
</h2>

Sebagian besar, Claude memutuskan kapan menggunakan tools ini dan Anda tidak perlu menyebutkannya sendiri saat berinteraksi dengan Claude. Anda mereferensikan nama tools secara langsung saat menentukan izin dan konfigurasi lainnya:

* dalam [`permissions.allow` dan `permissions.deny`](/id/settings#available-settings) dalam pengaturan, dan antarmuka `/permissions`
* dalam flag CLI [`--allowedTools` dan `--disallowedTools`](/id/cli-reference)
* dalam opsi [`allowedTools` dan `disallowedTools`](/id/agent-sdk/permissions#allow-and-deny-rules) Agent SDK
* dalam [frontmatter `tools` atau `disallowedTools`](/id/sub-agents#supported-frontmatter-fields) subagent
* dalam [frontmatter `allowed-tools`](/id/skills#frontmatter-reference) skill
* dalam kondisi [`if`](/id/hooks-guide#filter-by-tool-name-and-arguments-with-the-if-field) hook

Semua ini menerima format aturan yang sama, `ToolName(specifier)`. Specifier bergantung pada tool, dan beberapa tools berbagi format:

| Format Aturan                  | Berlaku untuk             | Detail                                                                     |
| :----------------------------- | :------------------------ | :------------------------------------------------------------------------- |
| `Bash(npm run *)`              | Bash, Monitor             | [Pencocokan pola perintah](/id/permissions#bash)                           |
| `PowerShell(Get-ChildItem *)`  | PowerShell                | [Pencocokan pola perintah](/id/permissions#powershell)                     |
| `Read(~/secrets/**)`           | Read, Grep, Glob, LSP     | [Pencocokan pola path](/id/permissions#read-and-edit)                      |
| `Edit(/src/**)`                | Edit, Write, NotebookEdit | [Pencocokan pola path](/id/permissions#read-and-edit)                      |
| `Skill(deploy *)`              | Skill                     | [Pencocokan nama skill](/id/skills#restrict-claude%E2%80%99s-skill-access) |
| `Agent(Explore)`               | Agent                     | [Pencocokan tipe subagent](/id/permissions#agent-subagents)                |
| `WebFetch(domain:example.com)` | WebFetch                  | [Pencocokan domain](/id/permissions#webfetch)                              |
| `WebSearch`                    | WebSearch                 | Tidak ada specifier; izinkan atau tolak tool secara keseluruhan            |

Tools yang tidak tercantum di sini, seperti `ExitPlanMode` atau `ShareOnboardingGuide`, hanya menerima nama tool tanpa specifier.

Aturan izin `Edit(...)` juga memberikan akses baca ke path yang sama, jadi Anda tidak perlu aturan `Read(...)` yang cocok.

Field `matcher` hook menggunakan nama tools tanpa format dengan tanda kurung. Lihat [pola matcher](/id/hooks#matcher-patterns) untuk aturan pencocokan. Untuk nama field yang setiap tool lewatkan ke `tool_input` dalam hooks, lihat [referensi input PreToolUse](/id/hooks#pretooluse-input).

<h2 id="agent-tool-behavior">
  Perilaku Agent tool
</h2>

Agent tool menjalankan subagent dalam jendela konteks terpisah. Subagent bekerja melalui tugasnya secara otonom, kemudian mengembalikan hasil teks tunggal ke percakapan induk. Induk tidak melihat panggilan tool atau output perantara subagent, hanya hasil akhir itu. Untuk membatasi berapa banyak turn subagent berjalan, atur `maxTurns` dalam [definisi subagent](/id/sub-agents#supported-frontmatter-fields).

Agent tool yang sama juga meluncurkan [subagent yang di-fork](/id/sub-agents#fork-the-current-conversation) ketika mode fork diaktifkan. Fork mewarisi percakapan induk penuh daripada memulai segar, selalu berjalan di latar belakang, dan masih menampilkan prompt izin di terminal Anda. Sisa bagian ini menjelaskan subagent bernama.

Tools mana yang dapat digunakan subagent bernama bergantung pada field `tools` dan `disallowedTools` dalam [definisi subagent](/id/sub-agents):

* **Tidak ada field yang diatur**: subagent mewarisi setiap tool yang tersedia untuk induk.
* **Hanya `tools`**: subagent mendapatkan hanya tools yang tercantum.
* **Hanya `disallowedTools`**: subagent mendapatkan setiap tool induk kecuali yang tercantum.
* **Keduanya diatur**: `disallowedTools` mengambil alih. Tool yang tercantum di keduanya dihapus.

Meluncurkan subagent tidak sendiri meminta izin. Panggilan tool subagent sendiri diperiksa terhadap aturan izin Anda saat berjalan:

* **Subagent foreground** menampilkan prompt izin yang sama yang akan Anda lihat dalam percakapan utama, pada saat setiap panggilan tool terjadi.
* **Subagent background** {/* min-version: 2.1.186 */}menampilkan prompt izin dalam sesi utama Anda sejak v2.1.186. Prompt menunjukkan subagent mana yang meminta, dan menekan Esc menolak panggilan tool itu saja tanpa menghentikan subagent. Sebelum v2.1.186, subagent background secara otomatis menolak panggilan tool apa pun yang sebaliknya akan meminta dan melanjutkan tanpa tool itu.

Untuk membatasi apa yang dapat dijangkau subagent sejak awal, persempit field `tools` nya, tinggalkan Bash dari daftar, atau atur aturan deny dalam pengaturan Anda, seperti yang dijelaskan dalam [Kontrol kemampuan subagent](/id/sub-agents#control-subagent-capabilities). Untuk lebih lanjut tentang memilih antara foreground dan background, lihat [Jalankan subagent di foreground atau background](/id/sub-agents#run-subagents-in-foreground-or-background).

<h2 id="bash-tool-behavior">
  Perilaku Bash tool
</h2>

Bash tool menjalankan setiap perintah dalam proses terpisah dengan perilaku persistensi berikut:

* Ketika Claude menjalankan `cd` dalam sesi utama, direktori kerja baru berlanjut ke perintah Bash yang lebih baru selama tetap berada di dalam direktori proyek atau [direktori kerja tambahan](/id/permissions#working-directories) yang Anda tambahkan dengan `--add-dir`, `/add-dir`, atau `additionalDirectories` dalam pengaturan. Sesi subagent tidak pernah membawa perubahan direktori kerja.
  * Jika `cd` mendarat di luar direktori tersebut, Claude Code mengatur ulang ke direktori proyek dan menambahkan `Shell cwd was reset to <dir>` ke hasil tool.
  * Untuk menonaktifkan carry-over ini sehingga setiap perintah Bash dimulai di direktori proyek, atur `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.
* Variabel lingkungan tidak persisten. `export` dalam satu perintah tidak akan tersedia di perintah berikutnya.
* Alias dan fungsi shell yang ditentukan dalam file startup shell Anda tersedia. Pada awal sesi, Claude Code bersumber dari `~/.zshrc`, `~/.bashrc`, atau `~/.profile` tergantung pada shell Anda, menangkap alias, fungsi, dan opsi shell yang dihasilkan, dan menerapkannya ke setiap perintah Bash.

Aktifkan virtualenv atau conda environment Anda sebelum meluncurkan Claude Code. Untuk membuat variabel lingkungan persisten di seluruh perintah Bash, atur [`CLAUDE_ENV_FILE`](/id/env-vars) ke skrip shell sebelum meluncurkan Claude Code, atau gunakan [hook SessionStart](/id/hooks#persist-environment-variables) untuk mengisinya secara dinamis.

Dua batas mengikat setiap perintah:

* **Timeout**: dua menit secara default. Claude dapat meminta hingga 10 menit per perintah dengan parameter `timeout`. Ganti default dan ceiling dengan [`BASH_DEFAULT_TIMEOUT_MS` dan `BASH_MAX_TIMEOUT_MS`](/id/env-vars).
* **Panjang output**: 30.000 karakter secara default. Ketika perintah menghasilkan lebih dari itu, Claude Code menyimpan output penuh ke file dalam direktori sesi dan memberikan Claude jalur file ditambah pratinjau singkat dari awal. Claude membaca atau mencari file itu ketika membutuhkan sisanya. Naikkan batas dengan [`BASH_MAX_OUTPUT_LENGTH`](/id/env-vars), hingga ceiling keras 150.000 karakter.

Untuk proses yang berjalan lama seperti dev server atau watch build, Claude dapat mengatur `run_in_background: true` untuk memulai perintah sebagai tugas latar belakang dan terus bekerja saat berjalan. Daftar dan hentikan tugas latar belakang dengan `/tasks`.

<h2 id="edit-tool-behavior">
  Perilaku Edit tool
</h2>

Edit tool melakukan penggantian string yang tepat. Ini mengambil `old_string` dan `new_string` dan mengganti yang pertama dengan yang kedua. Ini tidak menggunakan regex atau fuzzy matching.

Tiga pemeriksaan harus lulus agar edit diterapkan:

* **Read-before-edit**: Claude harus telah membaca file dalam percakapan saat ini, dan file tidak boleh berubah di disk sejak pembacaan itu. Pemeriksaan ini berjalan pertama, sebelum pencocokan string apa pun.
* **Match**: `old_string` harus muncul dalam file persis seperti yang ditulis. Satu karakter perbedaan whitespace atau indentasi sudah cukup untuk melewatkan.
* **Uniqueness**: `old_string` harus muncul persis sekali. Ketika muncul lebih dari sekali, Claude baik menyediakan string yang lebih panjang dengan konteks sekitar yang cukup untuk menyematkan satu kemunculan, atau mengatur `replace_all: true` untuk mengganti semuanya.

Melihat file dengan Bash juga memenuhi persyaratan read-before-edit ketika perintahnya adalah `cat`, `head`, `tail`, `sed -n 'X,Yp'`, `grep`, `egrep`, atau `fgrep` pada file tunggal tanpa pipe atau redirect. Output yang di-pipe dan perintah Bash lainnya tidak dihitung, dan Claude harus menggunakan Read sebelum mengedit dalam kasus tersebut.

Ini mempengaruhi kelayakan edit saja, bukan izin. [Aturan deny Read dan Edit](/id/permissions#tool-specific-permission-rules) juga berlaku untuk perintah file yang Claude Code kenali dalam Bash, seperti `cat`, `head`, `tail`, `sed`, dan `grep`, tetapi bukan untuk subprocess arbitrer yang membaca atau menulis file secara tidak langsung, seperti skrip Python atau Node yang membuka file sendiri. Himpunan perintah yang dikenali untuk aturan deny tidak sama dengan daftar read-before-edit di atas: misalnya, `egrep` dan `fgrep` dihitung untuk read-before-edit tetapi tidak diperiksa terhadap aturan deny Read. Untuk penegakan tingkat OS yang mencakup setiap proses, [aktifkan sandbox](/id/sandboxing).

<h2 id="glob-tool-behavior">
  Perilaku Glob tool
</h2>

Glob tool menemukan file berdasarkan pola nama. Ini mendukung sintaks glob standar termasuk `**` untuk pencocokan direktori rekursif:

* `**/*.js` cocok dengan semua file `.js` pada kedalaman apa pun
* `src/**/*.ts` cocok dengan semua file `.ts` di bawah `src/`
* `*.{json,yaml}` cocok dengan file `.json` dan `.yaml` dalam direktori saat ini

Hasil diurutkan berdasarkan waktu modifikasi dan dibatasi pada 100 file. Jika batas tercapai, Claude melihat flag truncation dalam hasil dan dapat mempersempit pola.

Glob tidak menghormati `.gitignore` secara default, jadi menemukan file gitignored bersama yang dilacak. Ini berbeda dari [Grep](#grep-tool-behavior), yang melewati file gitignored. Untuk membuat Glob menghormati `.gitignore`, atur `CLAUDE_CODE_GLOB_NO_IGNORE=false` sebelum meluncurkan Claude Code.

<h2 id="grep-tool-behavior">
  Perilaku Grep tool
</h2>

Grep tool mencari konten file untuk pola. Di mana [Glob](#glob-tool-behavior) menemukan file berdasarkan nama, Grep menemukan baris di dalamnya.

Grep dibangun di atas [ripgrep](https://github.com/BurntSushi/ripgrep) dan menggunakan sintaks regex ripgrep, bukan POSIX grep. Pola yang mencakup karakter metacharacter regex perlu escape. Misalnya, menemukan `interface{}` dalam kode Go memerlukan pola `interface\{\}`.

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.
* `count`: jumlah kecocokan per file.

Claude dapat membatasi hasil berdasarkan file dengan parameter `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.

<h2 id="lsp-tool-behavior">
  Perilaku LSP tool
</h2>

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

Tool ini tidak aktif sampai Anda menginstal [plugin intelijen kode](/id/discover-plugins#code-intelligence) untuk bahasa Anda. Plugin menggabungkan konfigurasi language server, dan Anda menginstal binary server secara terpisah.

<h2 id="monitor-tool">
  Monitor tool
</h2>

<Note>
  Monitor tool memerlukan Claude Code v2.1.98 atau lebih baru.
</Note>

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

Untuk sebagian besar watch, Claude menulis skrip kecil, menjalankannya di latar belakang, dan menerima setiap baris output saat tiba. Untuk server yang sudah mendorong peristiwa, Claude dapat membuka [WebSocket](#websocket-source) daripada menjalankan skrip.

Anda terus bekerja dalam sesi yang sama dan Claude menyela ketika peristiwa tiba. Hentikan monitor dengan meminta Claude untuk membatalkannya atau dengan mengakhiri sesi.

Ketika Monitor menjalankan perintah, ia menggunakan [aturan izin yang sama seperti Bash](/id/permissions#tool-specific-permission-rules), jadi pola `allow` dan `deny` yang Anda tetapkan untuk Bash berlaku di sini juga. [Sumber WebSocket](#websocket-source) memiliki prompt persetujuan tersendiri.

Tool ini tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry. Ini juga tidak tersedia ketika `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur.

Plugin dapat mendeklarasikan monitors yang dimulai secara otomatis ketika plugin aktif, daripada meminta Claude untuk memulainya. Lihat [plugin monitors](/id/plugins-reference#monitors).

<h3 id="websocket-source">
  WebSocket source
</h3>

<Note>
  Sumber WebSocket memerlukan Claude Code v2.1.195 atau lebih baru.
</Note>

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.

Watch WebSocket mengambil input `ws` sebagai pengganti `command`, dan satu panggilan Monitor tidak dapat menggabungkan keduanya. Input `ws` memiliki dua bidang:

| Field       | Required | Description                                                                                                                                                  |
| :---------- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `url`       | Yes      | Endpoint untuk terhubung. Harus berupa URL `ws://` atau `wss://` tanpa kredensial tertanam atau spasi, hanya menggunakan karakter ASCII                      |
| `protocols` | No       | Nama subprotokol WebSocket untuk ditawarkan selama handshake. Setiap entri harus berupa token subprotokol yang valid, dan daftar tidak dapat berisi duplikat |

Input `timeout_ms` dan `persistent` berperilaku sama seperti untuk perintah: watch berakhir pada tenggat waktu kecuali `persistent` diatur, dan `TaskStop` membatalkannya lebih awal.

Membuka WebSocket meminta persetujuan, dan prompt tidak menawarkan opsi untuk melewati prompt di masa depan untuk host yang sama.

Claude Code menolak URL yang menunjuk ke alamat pribadi, link-local, atau cloud-metadata, termasuk nama host yang menyelesaikan ke salah satu. Ini juga menolak host di `sandbox.network.deniedDomains`, dan ketika [`allowManagedDomainsOnly`](/id/settings#sandbox-settings) diatur dalam pengaturan terkelola, host apa pun di luar daftar izin terkelola.

<h2 id="notebookedit-tool-behavior">
  Perilaku NotebookEdit tool
</h2>

NotebookEdit memodifikasi notebook Jupyter satu sel pada satu waktu, menargetkan sel berdasarkan `cell_id` mereka. Ini tidak melakukan penggantian string di seluruh notebook seperti yang dilakukan [Edit](#edit-tool-behavior) 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. Tanpa `cell_id`, sel baru masuk di awal notebook. Memerlukan `cell_type` diatur ke `code` atau `markdown`.
* `delete`: hapus sel target.

Aturan izin menggunakan format path `Edit(...)`. Aturan seperti `Edit(notebooks/**)` mencakup panggilan NotebookEdit pada file dalam direktori itu.

<h2 id="powershell-tool">
  PowerShell tool
</h2>

PowerShell tool memungkinkan Claude menjalankan perintah PowerShell secara native. Di Windows, ini berarti perintah berjalan di PowerShell daripada merutekan melalui Git Bash. Di Windows tanpa Git Bash, tool diaktifkan secara otomatis. Di Windows dengan Git Bash terinstal, tool sedang diluncurkan secara progresif. Di Linux, macOS, dan WSL, tool bersifat opt-in.

<h3 id="enable-the-powershell-tool">
  Aktifkan PowerShell tool
</h3>

Atur `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` di lingkungan Anda atau dalam `settings.json`:

```json theme={null}
{
  "env": {
    "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1"
  }
}
```

Di Windows, atur variabel ke `0` untuk opt out dari peluncuran. Di Linux, macOS, dan WSL, tool 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 tool diaktifkan, Claude memperlakukan PowerShell sebagai shell utama. Bash tool 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 berfungsi pada instalasi Windows default tanpa mengubah kebijakan mesin. Bypass cakupan proses tidak mengganti Group Policy `MachinePolicy` atau `UserPolicy`, sehingga lockdown perusahaan masih berlaku. Untuk menghormati kebijakan eksekusi efektif mesin sebagai gantinya, atur `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1`.

<h3 id="shell-selection-in-settings-hooks-and-skills">
  Pemilihan shell dalam pengaturan, hooks, dan skills
</h3>

Tiga pengaturan tambahan mengontrol di mana PowerShell digunakan:

* `"defaultShell": "powershell"` dalam [`settings.json`](/id/settings#available-settings): merutekan perintah `!` interaktif melalui PowerShell. Memerlukan PowerShell tool untuk diaktifkan.
* `"shell": "powershell"` pada [command hooks](/id/hooks#command-hook-fields) individual: menjalankan hook tersebut dalam PowerShell. Hooks menjalankan PowerShell secara langsung, jadi ini berfungsi terlepas dari `CLAUDE_CODE_USE_POWERSHELL_TOOL`.
* `shell: powershell` dalam [skill frontmatter](/id/skills#frontmatter-reference): menjalankan blok `` !`command` `` dalam PowerShell. Memerlukan PowerShell tool untuk diaktifkan.

Perilaku reset direktori kerja sesi utama yang sama yang dijelaskan di bagian Bash tool berlaku untuk perintah PowerShell, termasuk variabel lingkungan `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.

{/* min-version: 2.1.196 */}Mulai dari v2.1.196, PowerShell tool mencocokkan penanganan Bash tool terhadap kode keluar pencarian dan diff. Kode keluar 1 dari `grep`, `egrep`, `fgrep`, dan `git grep` berarti tidak ada kecocokan, dan kode keluar 1 dari `git diff` berarti perbedaan ada, sehingga hasil ini tidak dilaporkan ke Claude sebagai kegagalan perintah.

<h3 id="preview-limitations">
  Batasan pratinjau
</h3>

PowerShell tool memiliki batasan yang diketahui berikut selama pratinjau:

* Profil PowerShell tidak dimuat
* Di Windows, sandboxing tidak didukung

<h2 id="read-tool-behavior">
  Perilaku Read tool
</h2>

Read tool mengambil jalur file dan mengembalikan konten dengan nomor baris. Claude diinstruksikan untuk selalu meneruskan jalur absolut.

Secara default, Read mengembalikan file dari awal. Ketika pembacaan seluruh file melebihi batas token, Read mengembalikan halaman pertama dengan pemberitahuan `PARTIAL view` yang memberi tahu Claude berapa banyak file yang diterima dan cara membaca lebih lanjut dengan `offset` dan `limit`. Pembacaan yang meneruskan `offset` atau `limit` eksplisit dan masih melebihi batas token mengembalikan kesalahan.

Read menangani beberapa tipe file di luar teks biasa:

* **Gambar**: PNG, JPG, dan format gambar lainnya 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 mengirimnya, jadi Claude mungkin melihat versi downscaled dari screenshot besar. Mulai dari v2.1.196, gambar yang masih lebih besar dari 500KB setelah pengubahan ukuran tersebut dikodekan ulang sebagai JPEG dengan kualitas berkurang dengan dimensi pikselnya tetap tidak berubah. Jika Claude melewatkan detail tingkat piksel halus dalam gambar besar, minta untuk memotong wilayah minat terlebih dahulu, misalnya dengan ImageMagick melalui Bash.
* **PDF**: Claude membaca file `.pdf` pendek secara keseluruhan. Untuk PDF lebih panjang dari 10 halaman, membaca dalam rentang dengan parameter `pages`, seperti `"1-5"`, hingga 20 halaman sekaligus.
* **Notebook Jupyter**: file `.ipynb` mengembalikan semua sel dengan output mereka, termasuk kode, markdown, dan visualisasi.

Read hanya membaca file, bukan direktori. Claude menggunakan `ls` melalui Bash tool untuk mencantumkan konten direktori.

<h2 id="webfetch-tool-behavior">
  Perilaku WebFetch tool
</h2>

WebFetch mengambil URL dan prompt yang menjelaskan apa yang akan diekstrak. Ini mengambil halaman, mengonversi respons ke Markdown ketika server mengembalikan HTML, dan menjalankan prompt terhadap konten menggunakan model kecil dan cepat. Untuk sebagian besar fetch, Claude menerima jawaban model itu, bukan halaman mentah. Langkah konversi tidak dapat dikonfigurasi.

Ini membuat WebFetch lossy secara desain. Prompt ekstraksi menentukan apa yang mencapai Claude, jadi hasil yang mengatakan halaman tidak menyebutkan sesuatu mungkin hanya berarti prompt tidak menanyakannya. Minta Claude untuk mengambil lagi dengan prompt yang lebih spesifik, atau gunakan `curl` melalui Bash untuk halaman yang tidak diproses.

Beberapa perilaku membentuk respons yang Claude terima:

* URL HTTP secara otomatis ditingkatkan ke HTTPS.
* Halaman besar dipotong ke batas karakter tetap sebelum pemrosesan.
* Respons di-cache selama 15 menit, jadi fetch berulang dari URL yang sama kembali dengan cepat.
* Ketika URL mengalihkan ke host yang berbeda, WebFetch mengembalikan hasil teks yang menyebutkan URL asli dan target pengalihan daripada mengikutinya. Claude kemudian mengambil URL baru dengan panggilan WebFetch kedua.

Dalam mode izin default dan `acceptEdits`, WebFetch meminta pertama kali mencapai domain baru, kecuali untuk set bawaan domain dokumentasi yang telah disetujui sebelumnya yang fetch tanpa prompt. Untuk mengizinkan domain lain sebelumnya tanpa prompt, tambahkan aturan izin seperti `WebFetch(domain:example.com)`. Mode izin `auto` dan `bypassPermissions` [permission modes](/id/permissions#permission-modes) melewati prompt sepenuhnya.

Aturan `WebFetch(domain:...)` eksplisit dalam `deny`, `ask`, atau `allow` mengambil alih set yang telah disetujui sebelumnya, jadi Anda dapat memblokir domain yang telah disetujui sebelumnya atau memerlukan prompt untuknya.

WebFetch menetapkan header `User-Agent` yang dimulai dengan `Claude-User`, dan header `Accept` yang lebih suka Markdown daripada HTML sehingga server yang mendukung negosiasi konten dapat mengembalikan Markdown secara langsung. Aturan jaringan [Sandbox](/id/sandboxing) dikonfigurasi secara terpisah, jadi domain yang ingin dijangkau proses sandboxed masih memerlukan aturan izin sandbox eksplisit.

<h2 id="websearch-tool-behavior">
  Perilaku WebSearch tool
</h2>

WebSearch menjalankan query terhadap backend [web search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool) Anthropic dan mengembalikan judul dan URL hasil. Ini tidak mengambil halaman hasil. Untuk membaca halaman yang Claude temukan dalam hasil pencarian, diikuti dengan [WebFetch](#webfetch-tool-behavior).

Tool dapat mengeluarkan hingga delapan pencarian backend per panggilan, menyempurnakan pencarian secara internal sebelum mengembalikan hasil. Claude dapat membatasi hasil dengan `allowed_domains` untuk menyertakan hanya host tertentu, atau `blocked_domains` untuk mengecualikannya. Dua daftar tidak dapat digabungkan dalam satu panggilan.

Backend pencarian tidak dapat dikonfigurasi. Untuk mencari dengan penyedia berbeda, tambahkan [server MCP](/id/mcp) yang mengekspos tool pencarian.

Aturan izin WebSearch tidak mengambil specifier. Entri `WebSearch` telanjang dalam `allow` atau `deny` adalah satu-satunya bentuk.

<Note>
  WebSearch tersedia di Claude API dan Microsoft Foundry. Di Google Cloud Vertex AI berfungsi dengan model Claude 4, termasuk Opus, Sonnet, dan Haiku. Amazon Bedrock tidak mengekspos tool web search sisi server.
</Note>

<h2 id="write-tool-behavior">
  Perilaku Write tool
</h2>

Write tool membuat file baru atau menimpa yang ada dengan konten penuh yang disediakan. Ini tidak menambahkan atau menggabungkan.

Jika jalur target sudah ada, Claude harus telah membaca file itu setidaknya sekali dalam percakapan saat ini sebelum menimpanya. Write ke file yang ada yang tidak dibaca gagal dengan kesalahan. Batasan ini tidak berlaku untuk file baru.

Melihat file dengan Bash juga memenuhi persyaratan ini sesuai dengan aturan yang sama yang dijelaskan dalam [Edit tool behavior](#edit-tool-behavior).

Untuk perubahan sebagian pada file yang ada, Claude menggunakan Edit daripada Write.

<h2 id="check-which-tools-are-available">
  Periksa tools mana yang tersedia
</h2>

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:

```text theme={null}
What tools do you have access to?
```

Claude memberikan ringkasan percakapan. Untuk nama tool MCP yang tepat, jalankan `/mcp`.

<Note>
  [advisor tool](/id/advisor) adalah [server tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-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.
</Note>

<h2 id="see-also">
  Lihat juga
</h2>

* [MCP servers](/id/mcp): tambahkan tools kustom dengan menghubungkan server eksternal
* [Permissions](/id/permissions): sistem izin, sintaks aturan, dan pola khusus tool
* [Subagents](/id/sub-agents): konfigurasi akses tool untuk subagent
* [Hooks](/id/hooks-guide): jalankan perintah kustom sebelum atau sesudah eksekusi tool
