SpyBara
Go Premium

Documentation 2026-06-16 21:57 UTC to 2026-06-17 17:02 UTC

109 files changed +6,498 −1,160. View all changes and history on the product overview
2026
Thu 18 02:02 Wed 17 17:02 Tue 16 21:57 Mon 15 23:02 Sat 13 21:59 Fri 12 22:00 Thu 11 23:01 Wed 10 23:57 Tue 9 06:34 Mon 8 06:52 Sat 6 06:24 Fri 5 06:45 Thu 4 06:52 Wed 3 06:53 Tue 2 06:51

admin-setup.md +34 −17

Details

15</Note>15</Note>

16 16 

17| Keputusan | Yang Anda pilih | Referensi |17| Keputusan | Yang Anda pilih | Referensi |

18| :------------------------------------------------------------------------------------------ | :---------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |18| :-------------------------------------------------------------------------------- | :---------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

19| [Pilih penyedia API Anda](#pilih-penyedia-api-anda) | Tempat Claude Code melakukan autentikasi dan cara penagihan | [Authentication](/id/authentication), [Bedrock](/id/amazon-bedrock), [Vertex AI](/id/google-vertex-ai), [Foundry](/id/microsoft-foundry) |19| [Pilih penyedia API Anda](#choose-your-api-provider) | Tempat Claude Code melakukan autentikasi dan cara penagihan | [Authentication](/id/authentication), [Bedrock](/id/amazon-bedrock), [Vertex AI](/id/google-vertex-ai), [Foundry](/id/microsoft-foundry) |

20| [Tentukan cara pengaturan mencapai perangkat](#tentukan-cara-pengaturan-mencapai-perangkat) | Bagaimana kebijakan terkelola mencapai mesin pengembang | [Server-managed settings](/id/server-managed-settings), [Settings files](/id/settings#settings-files) |20| [Tentukan cara pengaturan mencapai perangkat](#decide-how-settings-reach-devices) | Bagaimana kebijakan terkelola mencapai mesin pengembang | [Server-managed settings](/id/server-managed-settings), [Settings files](/id/settings#settings-files) |

21| [Tentukan apa yang akan diberlakukan](#tentukan-apa-yang-akan-diberlakukan) | Alat, perintah, dan integrasi mana yang diizinkan | [Permissions](/id/permissions), [Sandboxing](/id/sandboxing) |21| [Tentukan apa yang akan diberlakukan](#decide-what-to-enforce) | Alat, perintah, dan integrasi mana yang diizinkan | [Permissions](/id/permissions), [Sandboxing](/id/sandboxing) |

22| [Siapkan visibilitas penggunaan](#siapkan-visibilitas-penggunaan) | Cara Anda melacak pengeluaran dan adopsi | [Analytics](/id/analytics), [Monitoring](/id/monitoring-usage), [Costs](/id/costs) |22| [Siapkan visibilitas penggunaan](#set-up-usage-visibility) | Cara Anda melacak pengeluaran dan adopsi | [Analytics](/id/analytics), [Monitoring](/id/monitoring-usage), [Costs](/id/costs) |

23| [Tinjau penanganan data](#tinjau-penanganan-data) | Retensi data dan postur kepatuhan | [Data usage](/id/data-usage), [Security](/id/security) |23| [Tinjau penanganan data](#review-data-handling) | Retensi data dan postur kepatuhan | [Data usage](/id/data-usage), [Security](/id/security) |

24 24 

25## Pilih penyedia API Anda25<h2 id="choose-your-api-provider">

26 Pilih penyedia API Anda

27</h2>

26 28 

27Claude Code terhubung ke Claude melalui salah satu dari beberapa penyedia API. Pilihan Anda mempengaruhi penagihan, autentikasi, postur kepatuhan mana yang Anda warisi, dan fitur Claude Code mana yang dapat digunakan pengembang Anda.29Claude Code terhubung ke Claude melalui salah satu dari beberapa penyedia API. Pilihan Anda mempengaruhi penagihan, autentikasi, postur kepatuhan mana yang Anda warisi, dan fitur Claude Code mana yang dapat digunakan pengembang Anda.

28 30 


40 42 

41Persyaratan proxy dan firewall di [Network configuration](/id/network-config) berlaku terlepas dari penyedia. Jika Anda menginginkan satu titik akhir di depan beberapa penyedia atau pencatatan permintaan terpusat, lihat [LLM gateway](/id/llm-gateway).43Persyaratan proxy dan firewall di [Network configuration](/id/network-config) berlaku terlepas dari penyedia. Jika Anda menginginkan satu titik akhir di depan beberapa penyedia atau pencatatan permintaan terpusat, lihat [LLM gateway](/id/llm-gateway).

42 44 

43## Tentukan cara pengaturan mencapai perangkat45<h2 id="decide-how-settings-reach-devices">

46 Tentukan cara pengaturan mencapai perangkat

47</h2>

44 48 

45Pengaturan terkelola mendefinisikan kebijakan yang mengambil alih konfigurasi pengembang lokal. Claude Code mencarinya di empat tempat dan menggunakan yang pertama ditemukannya di perangkat tertentu.49Pengaturan terkelola mendefinisikan kebijakan yang mengambil alih konfigurasi pengembang lokal. Claude Code memeriksa empat sumber di bawah ini dalam urutan prioritas dan menerapkan yang pertama yang mengembalikan konfigurasi non-kosong.

46 50 

47| Mekanisme | Pengiriman | Prioritas | Platform |51| Mekanisme | Pengiriman | Prioritas | Platform |

48| :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- | :------------- |52| :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- | :------------- |


57 61 

58Lokasi plist dan HKLM registry bekerja dengan penyedia apa pun dan tahan terhadap gangguan karena memerlukan hak istimewa admin untuk menulis. Registry pengguna Windows di HKCU dapat ditulis tanpa elevasi, jadi perlakukan sebagai default kenyamanan daripada saluran penegakan.62Lokasi plist dan HKLM registry bekerja dengan penyedia apa pun dan tahan terhadap gangguan karena memerlukan hak istimewa admin untuk menulis. Registry pengguna Windows di HKCU dapat ditulis tanpa elevasi, jadi perlakukan sebagai default kenyamanan daripada saluran penegakan.

59 63 

60Dengan cara apa pun yang Anda pilih, nilai terkelola mengambil alih pengaturan pengguna dan proyek. Pengaturan array seperti `permissions.allow` dan `permissions.deny` menggabungkan entri dari semua sumber, jadi pengembang dapat memperluas daftar terkelola tetapi tidak menghapusnya.64Secara default WSL hanya membaca jalur file Linux di `/etc/claude-code`. Untuk memperluas kebijakan registry Windows dan `C:\Program Files\ClaudeCode` Anda ke WSL pada mesin yang sama, atur [`wslInheritsWindowsSettings: true`](/id/settings#available-settings) di salah satu sumber Windows yang hanya admin.

65 

66Mekanisme apa pun yang Anda pilih, nilai terkelola mengambil alih pengaturan pengguna dan proyek. Pengaturan array seperti `permissions.allow` dan `permissions.deny` menggabungkan entri dari semua sumber, jadi pengembang dapat memperluas daftar terkelola tetapi tidak menghapusnya.

61 67 

62Lihat [Server-managed settings](/id/server-managed-settings) dan [Settings files and precedence](/id/settings#settings-files).68Lihat [Server-managed settings](/id/server-managed-settings) dan [Settings files and precedence](/id/settings#settings-files).

63 69 

64## Tentukan apa yang akan diberlakukan70<h2 id="decide-what-to-enforce">

71 Tentukan apa yang akan diberlakukan

72</h2>

65 73 

66Pengaturan terkelola dapat mengunci alat, eksekusi sandbox, membatasi server MCP dan sumber plugin, dan mengontrol hook mana yang berjalan. Setiap baris adalah permukaan kontrol dengan kunci pengaturan yang mendorong.74Pengaturan terkelola dapat mengunci alat, eksekusi sandbox, membatasi server MCP dan sumber plugin, dan mengontrol hook mana yang berjalan. Setiap baris adalah permukaan kontrol dengan kunci pengaturan yang mendorong.

67 75 

68| Kontrol | Apa yang dilakukan | Pengaturan kunci |76| Kontrol | Apa yang dilakukan | Pengaturan kunci |

69| :------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------ |77| :------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------ |

70| [Permission rules](/id/permissions) | Izinkan, tanyakan, atau tolak alat dan perintah tertentu | `permissions.allow`, `permissions.deny` |78| [Permission rules](/id/permissions) | Izinkan, tanyakan, atau tolak alat dan perintah tertentu | `permissions.allow`, `permissions.deny` |

71| [Permission lockdown](/id/permissions#managed-only-settings) | Hanya aturan izin terkelola yang berlaku; nonaktifkan `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |79| [Permission lockdown](/id/permissions#managed-only-settings) | Hanya aturan izin terkelola yang berlaku; nonaktifkan `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |

72| [Sandboxing](/id/sandboxing) | Isolasi filesystem dan jaringan tingkat OS dengan daftar allowlist domain | `sandbox.enabled`, `sandbox.network.allowedDomains` |80| [Sandboxing](/id/sandboxing) | Isolasi filesystem dan jaringan tingkat OS dengan daftar allowlist domain | `sandbox.enabled`, `sandbox.network.allowedDomains` |


77| [Hook restrictions](/id/settings#hook-configuration) | Hanya hook terkelola yang dimuat; batasi URL hook HTTP | `allowManagedHooksOnly`, `allowedHttpHookUrls` |85| [Hook restrictions](/id/settings#hook-configuration) | Hanya hook terkelola yang dimuat; batasi URL hook HTTP | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

78| [Disable agent view](/id/agent-view#how-background-sessions-are-hosted) | Matikan `claude agents`, `--bg`, `/background`, dan supervisor on-demand | `disableAgentView` |86| [Disable agent view](/id/agent-view#how-background-sessions-are-hosted) | Matikan `claude agents`, `--bg`, `/background`, dan supervisor on-demand | `disableAgentView` |

79| [Version floor](/id/settings) | Cegah auto-update dari penginstalan di bawah minimum di seluruh organisasi | `minimumVersion` |87| [Version floor](/id/settings) | Cegah auto-update dari penginstalan di bawah minimum di seluruh organisasi | `minimumVersion` |

88| [Required version range](/id/settings) | Tolak untuk memulai sama sekali ketika versi yang berjalan berada di luar rentang yang disetujui organisasi. Lebih kuat daripada `minimumVersion`, yang hanya memblokir downgrade | `requiredMinimumVersion`, `requiredMaximumVersion` |

80 89 

81Aturan izin dan sandboxing mencakup lapisan berbeda. Menolak WebFetch memblokir alat fetch Claude, tetapi jika Bash diizinkan, `curl` dan `wget` masih dapat menjangkau URL apa pun. Sandboxing menutup celah itu dengan daftar allowlist domain jaringan yang diberlakukan di tingkat OS.90Aturan izin dan sandboxing mencakup lapisan berbeda. Menolak WebFetch memblokir alat fetch Claude, tetapi jika Bash diizinkan, `curl` dan `wget` masih dapat menjangkau URL apa pun. Sandboxing menutup celah itu dengan daftar allowlist domain jaringan yang diberlakukan di tingkat OS.

82 91 

83Untuk model ancaman yang dilindungi kontrol ini, lihat [Security](/id/security).92Untuk model ancaman yang dilindungi kontrol ini, lihat [Security](/id/security).

84 93 

85## Siapkan visibilitas penggunaan94<h2 id="set-up-usage-visibility">

95 Siapkan visibilitas penggunaan

96</h2>

86 97 

87Pilih pemantauan berdasarkan apa yang perlu Anda laporkan.98Pilih pemantauan berdasarkan apa yang perlu Anda laporkan.

88 99 


94 105 

95Penyedia cloud mengekspos pengeluaran melalui AWS Cost Explorer, GCP Billing, atau Azure Cost Management. Rencana Claude for Teams dan Enterprise mencakup dasbor penggunaan di [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code).106Penyedia cloud mengekspos pengeluaran melalui AWS Cost Explorer, GCP Billing, atau Azure Cost Management. Rencana Claude for Teams dan Enterprise mencakup dasbor penggunaan di [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code).

96 107 

97## Tinjau penanganan data108<h2 id="review-data-handling">

109 Tinjau penanganan data

110</h2>

98 111 

99Pada rencana Team, Enterprise, Claude API, dan penyedia cloud, Anthropic tidak melatih model pada kode atau prompt Anda. Penyedia API Anda menentukan retensi dan postur kepatuhan.112Pada rencana Team, Enterprise, Claude API, dan penyedia cloud, Anthropic tidak melatih model pada kode atau prompt Anda. Penyedia API Anda menentukan retensi dan postur kepatuhan.

100 113 


106 119 

107Jika Anda memerlukan pencatatan audit tingkat permintaan atau untuk merutekan lalu lintas berdasarkan sensitivitas data, tempatkan [LLM gateway](/id/llm-gateway) antara pengembang dan penyedia Anda. Untuk persyaratan peraturan dan sertifikasi, lihat [Legal and compliance](/id/legal-and-compliance).120Jika Anda memerlukan pencatatan audit tingkat permintaan atau untuk merutekan lalu lintas berdasarkan sensitivitas data, tempatkan [LLM gateway](/id/llm-gateway) antara pengembang dan penyedia Anda. Untuk persyaratan peraturan dan sertifikasi, lihat [Legal and compliance](/id/legal-and-compliance).

108 121 

109## Verifikasi dan onboard122<h2 id="verify-and-onboard">

123 Verifikasi dan onboard

124</h2>

110 125 

111Setelah mengonfigurasi pengaturan terkelola, minta pengembang menjalankan `/status` di dalam Claude Code. Output mencakup baris yang dimulai dengan `Enterprise managed settings` diikuti oleh sumber dalam tanda kurung, salah satu dari `(remote)`, `(plist)`, `(HKLM)`, `(HKCU)`, atau `(file)`. Lihat [Verify active settings](/id/settings#verify-active-settings).126Setelah mengonfigurasi pengaturan terkelola, minta pengembang menjalankan `/status` di dalam Claude Code. Pada tab **Status**, baris `Setting sources` menunjukkan `Enterprise managed settings` diikuti oleh sumber dalam tanda kurung, salah satu dari `(remote)`, `(plist)`, `(HKLM)`, `(HKCU)`, atau `(file)`. Lihat [Verify active settings](/id/settings#verify-active-settings).

112 127 

113Bagikan sumber daya ini untuk membantu pengembang memulai:128Bagikan sumber daya ini untuk membantu pengembang memulai:

114 129 


124 139 

125Jika pengembang melihat "You haven't been added to your organization yet," kursi mereka tidak termasuk akses Claude Code dan perlu diperbarui di konsol admin.140Jika pengembang melihat "You haven't been added to your organization yet," kursi mereka tidak termasuk akses Claude Code dan perlu diperbarui di konsol admin.

126 141 

127## Langkah berikutnya142<h2 id="next-steps">

143 Langkah berikutnya

144</h2>

128 145 

129Dengan penyedia dan mekanisme pengiriman dipilih, lanjutkan ke konfigurasi terperinci:146Dengan penyedia dan mekanisme pengiriman dipilih, lanjutkan ke konfigurasi terperinci:

130 147 

advisor.md +198 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Eskalasi keputusan sulit dengan alat advisor

6 

7> Pasangkan model utama Anda dengan model advisor yang lebih kuat yang dikonsultasikan Claude pada momen-momen kunci selama tugas.

8 

9{/* plan-availability: feature=advisor providers=anthropic */}

10 

11<Note>

12 Alat advisor bersifat eksperimental dan memerlukan Claude Code v2.1.98 atau lebih baru dengan API Anthropic. Alat ini tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry. Perilaku, harga, dan ketersediaan dapat berubah.

13</Note>

14 

15Alat advisor memungkinkan Claude untuk berkonsultasi dengan model kedua yang biasanya lebih kuat pada momen-momen kunci selama tugas, seperti sebelum berkomitmen pada pendekatan, ketika terjebak pada kesalahan berulang, atau sebelum menyatakan tugas selesai. Advisor menerima percakapan lengkap, termasuk setiap pemanggilan alat dan hasilnya, dan mengembalikan panduan yang diterapkan Claude sebelum melanjutkan.

16 

17Advisor berjalan di sisi server pada infrastruktur Anthropic sebagai [server tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool), tersedia untuk akun berlangganan dan berbasis API. Anda memilih model mana yang bertindak sebagai advisor, dan Claude memutuskan kapan memanggilnya.

18 

19Halaman ini mencakup cara mengaktifkan advisor, pasangan model mana yang diterima, apa yang ditampilkan Claude selama konsultasi, dan bagaimana penggunaan advisor ditagih.

20 

21<h2 id="when-to-use-the-advisor">

22 Kapan menggunakan advisor

23</h2>

24 

25Advisor cocok untuk tugas multi-langkah yang panjang di mana sebagian besar giliran bersifat rutin tetapi kualitas rencana menentukan hasilnya. Contohnya termasuk refaktor besar, sesi debugging di mana kesalahan terus berulang, dan tugas yang ingin Anda periksa secara independen sebelum Claude menyatakan selesai.

26 

27Ini menambah nilai lebih sedikit pada tugas pendek di mana ada sedikit untuk direncanakan, atau pada pekerjaan di mana setiap giliran memerlukan model terkuat. Untuk itu, [ubah model utama](/id/model-config#setting-your-model) sebagai gantinya, atau lihat [bagaimana advisor dibandingkan dengan opusplan dan subagents](#compare-with-related-features) untuk cara lain mendapatkan pendapat kedua.

28 

29<h2 id="enable-the-advisor">

30 Aktifkan advisor

31</h2>

32 

33Anda dapat mengatur model advisor dengan tiga cara:

34 

35* **Perintah `/advisor`**: atur atau ubah advisor di tengah sesi dan simpan sebagai default Anda

36* **Pengaturan `advisorModel`**: konfigurasi default persisten di [file pengaturan](/id/settings) Anda

37* **Bendera `--advisor`**: atur advisor untuk sesi tunggal saat peluncuran

38 

39Jika salah satu dari ini mengatur model advisor, advisor diaktifkan untuk sesi yang model utamanya [mendukungnya](#choose-an-advisor-model). Untuk berhenti menggunakannya, lihat [Matikan advisor](#turn-the-advisor-off).

40 

41<Note>

42 Untuk menggunakan Fable 5 sebagai advisor, Anda memerlukan Claude Code v2.1.170 atau lebih baru dan [akses Fable 5](/id/model-config#work-with-fable-5) untuk organisasi Anda.

43</Note>

44 

45<h3 id="use-the-/advisor-command">

46 Gunakan perintah `/advisor`

47</h3>

48 

49Jalankan `/advisor` tanpa argumen untuk membuka pemilih yang mencantumkan model advisor yang tersedia, atau teruskan model secara langsung:

50 

51```

52/advisor opus

53```

54 

55Pilihan Anda disimpan ke `advisorModel` dalam pengaturan pengguna Anda dan bertahan di seluruh sesi. Jika model utama Anda saat ini tidak mendukung advisor, pilihan masih disimpan dan diaktifkan ketika Anda beralih ke [model utama yang kompatibel](#choose-an-advisor-model) dengan [`/model`](/id/model-config#setting-your-model).

56 

57<h3 id="set-advisormodel-in-settings">

58 Atur `advisorModel` dalam pengaturan

59</h3>

60 

61Untuk mengonfigurasi advisor sebagai default tanpa membuka sesi, aturnya di file pengaturan Anda:

62 

63```json theme={null}

64{

65 "advisorModel": "opus"

66}

67```

68 

69<h3 id="use-the-advisor-flag">

70 Gunakan bendera `--advisor`

71</h3>

72 

73Untuk mengatur advisor untuk sesi tunggal tanpa mengubah pengaturan yang disimpan, luncurkan dengan bendera:

74 

75```bash theme={null}

76claude --advisor opus

77```

78 

79Bendera ini mengambil alih pengaturan `advisorModel` untuk sesi itu. Tidak seperti `/advisor`, yang menyimpan pilihan tidak aktif, bendera keluar dengan kesalahan jika model utama sesi tidak mendukung advisor.

80 

81<h2 id="choose-an-advisor-model">

82 Pilih model advisor

83</h2>

84 

85Advisor harus setidaknya sama mampu dengan model utama. Advisor yang diterima untuk setiap model utama adalah:

86 

87| Model utama | Advisor yang diterima | Catatan |

88| ----------------------------------------------- | ----------------------------------------------- | -------------------------------------------------------------------------- |

89| Haiku 4.5 | Fable, Opus, Sonnet | Haiku dapat memanggil advisor tetapi tidak dapat bertindak sebagai advisor |

90| Sonnet 4.6 | Fable, Opus, Sonnet | |

91| Opus 4.6 atau lebih baru | Fable, Opus pada atau di atas versi model utama | Opus 4.7 utama dengan advisor Opus 4.6 ditolak |

92| Fable 5 ({/* min-version: 2.1.170 */}v2.1.170+) | Fable | Advisor Opus atau Sonnet ditolak |

93 

94Fable 5 memerlukan Claude Code v2.1.170 atau lebih baru dan akses Fable 5, baik bertindak sebagai model utama atau advisor.

95 

96Atur advisor sebagai `opus`, `sonnet`, atau `fable`. Alias ini diselesaikan ke versi terbaru dari setiap model. Anda juga dapat melewatkan ID model lengkap seperti `claude-opus-4-8`.

97 

98Subagent mewarisi advisor yang dikonfigurasi dan menerapkan pemeriksaan pasangan yang sama terhadap model mereka sendiri.

99 

100Claude Code memvalidasi pasangan sebelum mengirim permintaan:

101 

102* Jika advisor kurang mampu daripada model utama, advisor tidak dilampirkan ke permintaan model utama. Output perintah `/advisor` dan notifikasi menunjukkan hal ini. Subagent yang model mereka sendiri memenuhi pasangan mungkin masih menggunakan advisor.

103* Jika model utama atau advisor adalah model yang Claude Code tidak kenali, advisor tidak dilampirkan.

104 

105<h3 id="common-model-pairings">

106 Pasangan model umum

107</h3>

108 

109Pasangan apa pun yang diterima berfungsi. Kombinasi ini menyeimbangkan biaya terhadap kemampuan dengan cara yang berbeda:

110 

111| Pasangan | Kapan menggunakan |

112| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

113| Sonnet utama + advisor Opus | Sonnet menangani pekerjaan rutin dan eskalasi perencanaan, kegagalan ambigu, dan pemeriksaan penyelesaian ke Opus |

114| Sonnet utama + advisor Fable | Panduan Fable 5 pada titik keputusan tanpa menjalankan Fable 5 di seluruh. Memerlukan v2.1.170 atau lebih baru dan akses Fable 5 |

115| Haiku utama + advisor Opus | Model utama dengan biaya terendah dengan perencanaan yang kuat. Harapkan biaya lebih tinggi daripada Haiku saja tetapi lebih rendah daripada beralih model utama ke Sonnet atau Opus |

116| Opus utama + advisor Opus | Opus kedua meninjau yang pertama. Berguna untuk tugas berisiko tinggi di mana pemeriksaan independen lebih penting daripada biaya |

117| Fable utama + advisor Fable | Pasangan kemampuan tertinggi ketika Fable 5 tersedia (v2.1.170+). Fable adalah tingkat yang lebih tinggi daripada Opus dan Sonnet, jadi ini adalah satu-satunya advisor yang diterima untuk model utama Fable |

118| Sonnet utama + advisor Sonnet | Pendapat kedua dengan biaya lebih rendah untuk menangkap pengawasan rutin |

119 

120<h2 id="when-claude-consults-the-advisor">

121 Kapan Claude berkonsultasi dengan advisor

122</h2>

123 

124Claude memutuskan kapan memanggil advisor. Cenderung berkonsultasi sebelum berkomitmen pada pendekatan, ketika kesalahan terus berulang, dan sebelum menyatakan tugas selesai, tetapi waktu didorong oleh model daripada berbasis aturan.

125 

126Anda dapat meminta konsultasi dalam prompt Anda dengan cara yang sama seperti Anda meminta alat apa pun, misalnya `consult the advisor before you continue`. Tidak ada pengaturan untuk membatasi atau memaksa panggilan advisor; jika Anda ingin Claude berkonsultasi lebih atau kurang sering selama tugas, katakan dalam instruksi Anda.

127 

128<h2 id="what-you-see-during-a-session">

129 Apa yang Anda lihat selama sesi

130</h2>

131 

132Ketika Claude memanggil advisor, transkrip menampilkan baris `Advising` dengan nama model advisor saat panggilan sedang berlangsung. Ketika hasilnya kembali, baris mengkonfirmasi bahwa advisor telah meninjau percakapan. Tekan `Ctrl+O` untuk memperluas dan membaca panduan lengkap advisor.

133 

134Claude umumnya mengikuti panduan advisor, tetapi beradaptasi ketika bukti miliknya bertentangan dengan klaim spesifik: jika langkah yang direkomendasikan gagal saat dicoba, atau isi file bertentangan dengan saran, Claude menampilkan konflik daripada mengikuti panduan secara tidak terbatas.

135 

136Advisor selalu menerima percakapan lengkap, dan Claude mengontrol waktu. Untuk kontrol lebih atau konfigurasi berbeda, lihat [bagaimana advisor dibandingkan dengan subagents dan opusplan](#compare-with-related-features).

137 

138<h2 id="cost">

139 Biaya

140</h2>

141 

142Setiap panggilan advisor mengirim percakapan ke model advisor, jadi mengonsumsi token pada tarif model advisor sebagai tambahan dari penggunaan model utama Anda. Dengan penagihan API, token advisor ditagih pada tarif input dan output model advisor. Pada paket berlangganan, penggunaan advisor dihitung terhadap batas penggunaan paket Anda.

143 

144Claude memanggil advisor pada titik keputusan daripada pada setiap giliran, jadi memasangkan model utama yang lebih cepat dengan advisor yang lebih kuat biasanya biaya lebih rendah daripada menjalankan model yang lebih kuat di seluruh. Penggunaan advisor dihitung terhadap total sesi yang ditampilkan oleh [`/usage`](/id/costs#track-your-costs).

145 

146Untuk bagaimana token advisor dilaporkan dalam respons API, lihat [Usage and billing](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool#usage-and-billing) dalam dokumentasi Claude API.

147 

148<h2 id="impact-on-prompt-caching">

149 Dampak pada prompt caching

150</h2>

151 

152Mengaktifkan atau menonaktifkan advisor di tengah sesi tidak membatalkan [prompt cache](/id/prompt-caching) model utama Anda. Tidak seperti [mengubah model atau tingkat upaya](/id/prompt-caching#actions-that-invalidate-the-cache), mengalihkan `/advisor` menjaga awalan yang di-cache tetap utuh, dan panduan yang dikembalikan advisor di-cache sebagai bagian dari transkrip pada giliran berikutnya.

153 

154Pembacaan percakapan model advisor sendiri tidak di-cache. Setiap panggilan advisor memproses transkrip lengkap baru, tanpa penggunaan kembali di antara panggilan.

155 

156<h2 id="requirements">

157 Persyaratan

158</h2>

159 

160Alat advisor memerlukan semua hal berikut:

161 

162* **Claude Code v2.1.98 atau lebih baru**: jalankan `claude update` untuk upgrade.

163* **Hanya API Anthropic**: advisor adalah alat yang dieksekusi server. Alat ini tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry. Melalui [LLM gateway](/id/llm-gateway) yang dikonfigurasi dengan `ANTHROPIC_BASE_URL`, ketersediaan tergantung pada apakah gateway meneruskan permintaan utuh ke API Anthropic.

164* **Model utama yang didukung**: Opus 4.6 atau lebih baru, Sonnet 4.6, atau Haiku 4.5. {/* min-version: 2.1.170 */}Fable 5 juga memenuhi syarat di Claude Code v2.1.170 atau lebih baru.

165 

166<h2 id="turn-the-advisor-off">

167 Matikan advisor

168</h2>

169 

170Untuk berhenti menggunakan advisor dan menghapus `advisorModel` yang disimpan, jalankan `/advisor off` atau pilih **No advisor** di pemilih `/advisor`:

171 

172```

173/advisor off

174```

175 

176Untuk menonaktifkan alat advisor sepenuhnya, termasuk perintah `/advisor` dan bendera `--advisor`, atur `CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`. Lihat [Environment variables](/id/env-vars).

177 

178<h2 id="compare-with-related-features">

179 Bandingkan dengan fitur terkait

180</h2>

181 

182Advisor adalah salah satu dari beberapa cara untuk menggabungkan kekuatan model. Pilih berdasarkan kapan Anda ingin model kedua terlibat.

183 

184| Pendekatan | Kapan model yang lebih kuat berjalan | Bagaimana dimulai |

185| ---------------------------------------------------------------- | -------------------------------------------------------------- | --------------------------------------------------- |

186| Alat advisor | Pada titik keputusan di tengah tugas | Claude memanggilnya ketika memerlukan panduan |

187| [`opusplan`](/id/model-config#opusplan-model-setting) | Selama mode rencana, kemudian beralih ke Sonnet untuk eksekusi | Anda memasuki mode rencana |

188| [Subagents](/id/sub-agents#choose-a-model) dengan `model` diatur | Untuk seluruh subtask yang didelegasikan | Claude mendelegasikan, atau Anda memanggil subagent |

189| [`/model`](/id/model-config#setting-your-model) | Untuk semua giliran berikutnya | Anda beralih model |

190 

191<h2 id="see-also">

192 Lihat juga

193</h2>

194 

195* [Model configuration](/id/model-config): ubah model, atur tingkat upaya, dan gunakan `opusplan`

196* [Manage costs effectively](/id/costs): lacak penggunaan token di seluruh model

197* [Advisor tool in the Claude API](https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool): pahami alat server yang mendasar, atau gunakan langsung dari Messages API

198* [The advisor strategy](https://claude.com/blog/the-advisor-strategy): mengapa memasangkan model utama yang cepat dengan advisor yang lebih kuat berfungsi

Details

10 10 

11Ketika Anda memulai agent, SDK menjalankan [execution loop yang sama yang menggerakkan Claude Code](/id/how-claude-code-works#the-agentic-loop): Claude mengevaluasi prompt Anda, memanggil tools untuk mengambil tindakan, menerima hasilnya, dan mengulangi sampai tugas selesai. Halaman ini menjelaskan apa yang terjadi di dalam loop tersebut sehingga Anda dapat membangun, debug, dan mengoptimalkan agent Anda secara efektif.11Ketika Anda memulai agent, SDK menjalankan [execution loop yang sama yang menggerakkan Claude Code](/id/how-claude-code-works#the-agentic-loop): Claude mengevaluasi prompt Anda, memanggil tools untuk mengambil tindakan, menerima hasilnya, dan mengulangi sampai tugas selesai. Halaman ini menjelaskan apa yang terjadi di dalam loop tersebut sehingga Anda dapat membangun, debug, dan mengoptimalkan agent Anda secara efektif.

12 12 

13## Loop sekilas13<h2 id="the-loop-at-a-glance">

14 Loop sekilas

15</h2>

14 16 

15Setiap sesi agent mengikuti siklus yang sama:17Setiap sesi agent mengikuti siklus yang sama:

16 18 

17<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agent-loop-diagram.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=1c6e8f28d80dba14a7287419656f1237" alt="Agent loop: prompt masuk, Claude mengevaluasi, cabang ke tool calls atau final answer" width="720" height="212" data-path="images/agent-loop-diagram.svg" />19<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agent-loop-diagram.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=1c6e8f28d80dba14a7287419656f1237" alt="Diagram agent loop: prompt Anda memasuki agentic loop, di mana Claude mengevaluasi dan baik meminta tool calls, yang hasilnya umpan balik ke evaluasi lain, atau mengembalikan jawaban final" width="720" height="212" data-path="images/agent-loop-diagram.svg" />

18 20 

191. **Terima prompt.** Claude menerima prompt Anda, bersama dengan system prompt, tool definitions, dan conversation history. SDK menghasilkan [`SystemMessage`](#message-types) dengan subtype `"init"` yang berisi session metadata.211. **Terima prompt.** Claude menerima prompt Anda, bersama dengan system prompt, tool definitions, dan conversation history. SDK menghasilkan [`SystemMessage`](#message-types) dengan subtype `"init"` yang berisi session metadata.

202. **Evaluasi dan respons.** Claude mengevaluasi state saat ini dan menentukan cara melanjutkan. Ini dapat merespons dengan teks, meminta satu atau lebih tool calls, atau keduanya. SDK menghasilkan [`AssistantMessage`](#message-types) yang berisi teks dan permintaan tool call apa pun.222. **Evaluasi dan respons.** Claude mengevaluasi state saat ini dan menentukan cara melanjutkan. Ini dapat merespons dengan teks, meminta satu atau lebih tool calls, atau keduanya. SDK menghasilkan [`AssistantMessage`](#message-types) yang berisi teks dan permintaan tool call apa pun.


24 26 

25Pertanyaan cepat ("file apa yang ada di sini?") mungkin membutuhkan satu atau dua turn memanggil `Glob` dan merespons dengan hasilnya. Tugas kompleks ("refactor modul auth dan perbarui tests") dapat merantai puluhan tool calls di banyak turn, membaca file, mengedit kode, dan menjalankan tests, dengan Claude menyesuaikan pendekatannya berdasarkan setiap hasil.27Pertanyaan cepat ("file apa yang ada di sini?") mungkin membutuhkan satu atau dua turn memanggil `Glob` dan merespons dengan hasilnya. Tugas kompleks ("refactor modul auth dan perbarui tests") dapat merantai puluhan tool calls di banyak turn, membaca file, mengedit kode, dan menjalankan tests, dengan Claude menyesuaikan pendekatannya berdasarkan setiap hasil.

26 28 

27## Turns dan messages29<h2 id="turns-and-messages">

30 Turns dan messages

31</h2>

28 32 

29Turn adalah satu round trip di dalam loop: Claude menghasilkan output yang mencakup tool calls, SDK menjalankan tools tersebut, dan hasilnya umpan balik ke Claude secara otomatis. Ini terjadi tanpa menghasilkan kontrol kembali ke kode Anda. Turns berlanjut sampai Claude menghasilkan output tanpa tool calls, di mana titik loop berakhir dan hasil final dikirimkan.33Turn adalah satu round trip di dalam loop: Claude menghasilkan output yang mencakup tool calls, SDK menjalankan tools tersebut, dan hasilnya umpan balik ke Claude secara otomatis. Ini terjadi tanpa menghasilkan kontrol kembali ke kode Anda. Turns berlanjut sampai Claude menghasilkan output tanpa tool calls, di mana titik loop berakhir dan hasil final dikirimkan.

30 34 


41 45 

42Anda dapat membatasi loop dengan `max_turns` / `maxTurns`, yang menghitung tool-use turns saja. Misalnya, `max_turns=2` dalam loop di atas akan berhenti sebelum langkah edit. Anda juga dapat menggunakan `max_budget_usd` / `maxBudgetUsd` untuk membatasi turns berdasarkan threshold pengeluaran.46Anda dapat membatasi loop dengan `max_turns` / `maxTurns`, yang menghitung tool-use turns saja. Misalnya, `max_turns=2` dalam loop di atas akan berhenti sebelum langkah edit. Anda juga dapat menggunakan `max_budget_usd` / `maxBudgetUsd` untuk membatasi turns berdasarkan threshold pengeluaran.

43 47 

44Tanpa batas, loop berjalan sampai Claude selesai sendiri, yang baik untuk tugas yang well-scoped tetapi dapat berjalan lama pada prompts open-ended ("improve this codebase"). Menetapkan budget adalah default yang baik untuk production agents. Lihat [Turns dan budget](#turns-dan-budget) di bawah untuk referensi opsi.48Tanpa batas, loop berjalan sampai Claude selesai sendiri, yang baik untuk tugas yang well-scoped tetapi dapat berjalan lama pada prompts open-ended ("improve this codebase"). Menetapkan budget adalah default yang baik untuk production agents. Lihat [Turns dan budget](#turns-and-budget) di bawah untuk referensi opsi.

45 49 

46## Message types50<h2 id="message-types">

51 Tipe Message

52</h2>

47 53 

48Saat loop berjalan, SDK menghasilkan aliran messages. Setiap message membawa tipe yang memberi tahu Anda tahap loop mana yang berasal darinya. Lima tipe inti adalah:54Saat loop berjalan, SDK menghasilkan aliran messages. Setiap message membawa tipe yang memberi tahu Anda tahap loop mana yang berasal darinya. Lima tipe inti adalah:

49 55 

50* **`SystemMessage`:** session lifecycle events. Field `subtype` membedakannya: `"init"` adalah message pertama (session metadata), dan `"compact_boundary"` menyala setelah [compaction](#automatic-compaction). Di TypeScript, compact boundary adalah tipe [`SDKCompactBoundaryMessage`](/id/agent-sdk/typescript#sdkcompactboundarymessage) tersendiri daripada subtype dari `SDKSystemMessage`.56* **`SystemMessage`:** session lifecycle events. Field `subtype` membedakannya:

57 

58 * `"init"`: message pertama dengan session metadata

59 * `"compact_boundary"`: menyala setelah [compaction](#automatic-compaction)

60 * `"informational"`: plain-text status banners dari loop

61 * `"worker_shutting_down"`: loop akan berakhir setelah turn saat ini karena host sedang keluar atau Remote Control terputus

62 

63 Di TypeScript, setiap subtype selain `"init"` adalah tipenya sendiri dalam union [`SDKMessage`](/id/agent-sdk/typescript#sdkmessage) daripada subtype dari `SDKSystemMessage`.

51* **`AssistantMessage`:** dipancarkan setelah setiap respons Claude, termasuk yang hanya teks final. Berisi text content blocks dan tool call blocks dari turn itu.64* **`AssistantMessage`:** dipancarkan setelah setiap respons Claude, termasuk yang hanya teks final. Berisi text content blocks dan tool call blocks dari turn itu.

52* **`UserMessage`:** dipancarkan setelah setiap eksekusi tool dengan tool result content yang dikirim kembali ke Claude. Juga dipancarkan untuk input pengguna apa pun yang Anda stream mid-loop.65* **`UserMessage`:** dipancarkan setelah setiap eksekusi tool dengan tool result content yang dikirim kembali ke Claude. Juga dipancarkan untuk input pengguna apa pun yang Anda stream mid-loop.

53* **`StreamEvent`:** hanya dipancarkan ketika partial messages diaktifkan. Berisi raw API streaming events (text deltas, tool input chunks). Lihat [Stream responses](/id/agent-sdk/streaming-output).66* **`StreamEvent`:** hanya dipancarkan ketika partial messages diaktifkan. Berisi raw API streaming events (text deltas, tool input chunks). Lihat [Stream responses](/id/agent-sdk/streaming-output).


55 68 

56Lima tipe ini mencakup lifecycle agent loop penuh di kedua SDK. TypeScript SDK juga menghasilkan additional observability events (hook events, tool progress, rate limits, task notifications) yang memberikan detail ekstra tetapi tidak diperlukan untuk menjalankan loop. Lihat [Python message types reference](/id/agent-sdk/python#message-types) dan [TypeScript message types reference](/id/agent-sdk/typescript#message-types) untuk daftar lengkap.69Lima tipe ini mencakup lifecycle agent loop penuh di kedua SDK. TypeScript SDK juga menghasilkan additional observability events (hook events, tool progress, rate limits, task notifications) yang memberikan detail ekstra tetapi tidak diperlukan untuk menjalankan loop. Lihat [Python message types reference](/id/agent-sdk/python#message-types) dan [TypeScript message types reference](/id/agent-sdk/typescript#message-types) untuk daftar lengkap.

57 70 

58### Handle messages71<h3 id="handle-messages">

72 Handle messages

73</h3>

59 74 

60Messages mana yang Anda handle tergantung pada apa yang Anda bangun:75Messages mana yang Anda handle tergantung pada apa yang Anda bangun:

61 76 


102 </CodeGroup>117 </CodeGroup>

103</Accordion>118</Accordion>

104 119 

105## Eksekusi tool120<h2 id="tool-execution">

121 Eksekusi tool

122</h2>

106 123 

107Tools memberikan agent Anda kemampuan untuk mengambil tindakan. Tanpa tools, Claude hanya dapat merespons dengan teks. Dengan tools, Claude dapat membaca file, menjalankan perintah, mencari kode, dan berinteraksi dengan layanan eksternal.124Tools memberikan agent Anda kemampuan untuk mengambil tindakan. Tanpa tools, Claude hanya dapat merespons dengan teks. Dengan tools, Claude dapat membaca file, menjalankan perintah, mencari kode, dan berinteraksi dengan layanan eksternal.

108 125 

109### Built-in tools126<h3 id="built-in-tools">

127 Built-in tools

128</h3>

110 129 

111SDK mencakup tools yang sama yang menggerakkan Claude Code:130SDK mencakup tools yang sama yang menggerakkan Claude Code:

112 131 


125* **Tentukan custom tools** dengan [custom tool handlers](/id/agent-sdk/custom-tools)144* **Tentukan custom tools** dengan [custom tool handlers](/id/agent-sdk/custom-tools)

126* **Muat project skills** melalui [setting sources](/id/agent-sdk/claude-code-features) untuk reusable workflows145* **Muat project skills** melalui [setting sources](/id/agent-sdk/claude-code-features) untuk reusable workflows

127 146 

128### Tool permissions147<h3 id="tool-permissions">

148 Tool permissions

149</h3>

129 150 

130Claude menentukan tools mana yang akan dipanggil berdasarkan tugas, tetapi Anda mengontrol apakah panggilan tersebut diizinkan untuk dieksekusi. Anda dapat auto-approve tools spesifik, memblokir yang lain sepenuhnya, atau memerlukan approval untuk semuanya. Tiga opsi bekerja bersama untuk menentukan apa yang berjalan:151Claude menentukan tools mana yang akan dipanggil berdasarkan tugas, tetapi Anda mengontrol apakah panggilan tersebut diizinkan untuk dieksekusi. Anda dapat auto-approve tools spesifik, memblokir yang lain sepenuhnya, atau memerlukan approval untuk semuanya. Tiga opsi bekerja bersama untuk menentukan apa yang berjalan:

131 152 


137 158 

138Ketika tool ditolak, Claude menerima rejection message sebagai tool result dan biasanya mencoba pendekatan berbeda atau melaporkan bahwa tidak dapat melanjutkan.159Ketika tool ditolak, Claude menerima rejection message sebagai tool result dan biasanya mencoba pendekatan berbeda atau melaporkan bahwa tidak dapat melanjutkan.

139 160 

140### Parallel tool execution161<h3 id="parallel-tool-execution">

162 Parallel tool execution

163</h3>

141 164 

142Ketika Claude meminta multiple tool calls dalam satu turn, kedua SDK dapat menjalankannya secara concurrent atau sequential tergantung pada tool. Read-only tools (seperti `Read`, `Glob`, `Grep`, dan MCP tools yang ditandai sebagai read-only) dapat berjalan secara concurrent. Tools yang memodifikasi state (seperti `Edit`, `Write`, dan `Bash`) berjalan secara sequential untuk menghindari conflicts.165Ketika Claude meminta multiple tool calls dalam satu turn, kedua SDK dapat menjalankannya secara concurrent atau sequential tergantung pada tool. Read-only tools (seperti `Read`, `Glob`, `Grep`, dan MCP tools yang ditandai sebagai read-only) dapat berjalan secara concurrent. Tools yang memodifikasi state (seperti `Edit`, `Write`, dan `Bash`) berjalan secara sequential untuk menghindari conflicts.

143 166 

144Custom tools default ke sequential execution. Untuk mengaktifkan parallel execution untuk custom tool, set `readOnlyHint` dalam annotationsnya. Kedua [TypeScript](/id/agent-sdk/typescript#tool) dan [Python](/id/agent-sdk/python#tool) SDKs menggunakan field name ini dari MCP SDK.167Custom tools default ke sequential execution. Untuk mengaktifkan parallel execution untuk custom tool, set `readOnlyHint` dalam annotationsnya. Kedua [TypeScript](/id/agent-sdk/typescript#tool) dan [Python](/id/agent-sdk/python#tool) SDKs menggunakan field name ini dari MCP SDK.

145 168 

146## Control how the loop runs169<h2 id="control-how-the-loop-runs">

170 Kontrol cara loop berjalan

171</h2>

147 172 

148Anda dapat membatasi berapa banyak turns yang diambil loop, berapa banyak biayanya, seberapa dalam Claude bernalar, dan apakah tools memerlukan approval sebelum berjalan. Semua ini adalah fields pada [`ClaudeAgentOptions`](/id/agent-sdk/python#claudeagentoptions) (Python) / [`Options`](/id/agent-sdk/typescript#options) (TypeScript).173Anda dapat membatasi berapa banyak turns yang diambil loop, berapa banyak biayanya, seberapa dalam Claude bernalar, dan apakah tools memerlukan approval sebelum berjalan. Semua ini adalah fields pada [`ClaudeAgentOptions`](/id/agent-sdk/python#claudeagentoptions) (Python) / [`Options`](/id/agent-sdk/typescript#options) (TypeScript).

149 174 

150### Turns dan budget175<h3 id="turns-and-budget">

176 Turns dan budget

177</h3>

151 178 

152| Opsi | Apa yang dikontrolnya | Default |179| Opsi | Apa yang dikontrolnya | Default |

153| :--------------------------------------------- | :---------------------------- | :-------------- |180| :--------------------------------------------- | :---------------------------- | :-------------- |


156 183 

157Ketika salah satu batas tercapai, SDK mengembalikan `ResultMessage` dengan error subtype yang sesuai (`error_max_turns` atau `error_max_budget_usd`). Lihat [Handle the result](#handle-the-result) untuk cara memeriksa subtypes ini dan [`ClaudeAgentOptions`](/id/agent-sdk/python#claudeagentoptions) / [`Options`](/id/agent-sdk/typescript#options) untuk syntax.184Ketika salah satu batas tercapai, SDK mengembalikan `ResultMessage` dengan error subtype yang sesuai (`error_max_turns` atau `error_max_budget_usd`). Lihat [Handle the result](#handle-the-result) untuk cara memeriksa subtypes ini dan [`ClaudeAgentOptions`](/id/agent-sdk/python#claudeagentoptions) / [`Options`](/id/agent-sdk/typescript#options) untuk syntax.

158 185 

159### Effort level186<h3 id="effort-level">

187 Effort level

188</h3>

160 189 

161Opsi `effort` mengontrol berapa banyak reasoning yang diterapkan Claude. Lower effort levels menggunakan fewer tokens per turn dan mengurangi cost. Tidak semua models mendukung effort parameter. Lihat [Effort](https://platform.claude.com/docs/en/build-with-claude/effort) untuk models mana yang mendukungnya.190Opsi `effort` mengontrol berapa banyak reasoning yang diterapkan Claude. Lower effort levels menggunakan fewer tokens per turn dan mengurangi cost. Tidak semua models mendukung effort parameter. Lihat [Effort](https://platform.claude.com/docs/en/build-with-claude/effort) untuk models mana yang mendukungnya.

162 191 

163| Level | Behavior | Baik untuk |192| Level | Behavior | Baik untuk |

164| :--------- | :-------------------------------- | :-------------------------------------------------- |193| :--------- | :-------------------------------- | :--------------------------------------------------------------- |

165| `"low"` | Minimal reasoning, fast responses | File lookups, listing directories |194| `"low"` | Minimal reasoning, fast responses | File lookups, listing directories |

166| `"medium"` | Balanced reasoning | Routine edits, standard tasks |195| `"medium"` | Balanced reasoning | Routine edits, standard tasks |

167| `"high"` | Thorough analysis | Refactors, debugging |196| `"high"` | Thorough analysis | Refactors, debugging |

168| `"xhigh"` | Extended reasoning depth | Coding dan agentic tasks; recommended pada Opus 4.7 |197| `"xhigh"` | Extended reasoning depth | Coding dan agentic tasks; recommended pada Fable 5 dan Opus 4.7+ |

169| `"max"` | Maximum reasoning depth | Multi-step problems memerlukan deep analysis |198| `"max"` | Maximum reasoning depth | Multi-step problems memerlukan deep analysis |

170 199 

171Jika Anda tidak set `effort`, Python SDK membiarkan parameter unset dan menunda ke model's default behavior. TypeScript SDK defaults ke `"high"`.200Jika Anda tidak set `effort`, kedua SDKs membiarkan parameter unset dan menunda ke model's default behavior.

172 201 

173<Note>202<Note>

174 `effort` trades latency dan token cost untuk reasoning depth dalam setiap respons. [Extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) adalah fitur terpisah yang menghasilkan visible chain-of-thought blocks dalam output. Mereka independen: Anda dapat set `effort: "low"` dengan extended thinking diaktifkan, atau `effort: "max"` tanpanya.203 `effort` trades latency dan token cost untuk reasoning depth dalam setiap respons. [Extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) adalah fitur terpisah yang menghasilkan visible chain-of-thought blocks dalam output. Mereka independen: Anda dapat set `effort: "low"` dengan extended thinking diaktifkan, atau `effort: "max"` tanpanya.


176 205 

177Gunakan lower effort untuk agents yang melakukan simple, well-scoped tasks (seperti listing files atau menjalankan single grep) untuk mengurangi cost dan latency. Set `effort` dalam top-level `query()` options untuk seluruh sesi, atau per subagent dengan field `effort` pada [`AgentDefinition`](/id/agent-sdk/subagents#agentdefinition-configuration) untuk override session level.206Gunakan lower effort untuk agents yang melakukan simple, well-scoped tasks (seperti listing files atau menjalankan single grep) untuk mengurangi cost dan latency. Set `effort` dalam top-level `query()` options untuk seluruh sesi, atau per subagent dengan field `effort` pada [`AgentDefinition`](/id/agent-sdk/subagents#agentdefinition-configuration) untuk override session level.

178 207 

179### Permission mode208<h3 id="permission-mode">

209 Permission mode

210</h3>

180 211 

181Opsi permission mode (`permission_mode` di Python, `permissionMode` di TypeScript) mengontrol apakah agent meminta approval sebelum menggunakan tools:212Opsi permission mode (`permission_mode` di Python, `permissionMode` di TypeScript) mengontrol apakah agent meminta approval sebelum menggunakan tools:

182 213 

183| Mode | Behavior |214| Mode | Behavior |

184| :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |215| :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

185| `"default"` | Tools yang tidak tercakup oleh allow rules memicu approval callback Anda; tidak ada callback berarti deny |216| `"default"` | Tools yang tidak tercakup oleh allow rules memicu approval callback Anda; tidak ada callback berarti deny |

186| `"acceptEdits"` | Auto-approves file edits dan common filesystem commands (`mkdir`, `touch`, `mv`, `cp`, dll.); Bash commands lainnya mengikuti default rules |217| `"acceptEdits"` | Auto-approves file edits dan common filesystem commands (`mkdir`, `touch`, `mv`, `cp`, dll.); Bash commands lainnya mengikuti default rules |

187| `"plan"` | Read-only tools berjalan; Claude mengeksplorasi dan menghasilkan plan tanpa mengedit source files Anda |218| `"plan"` | Claude mengeksplorasi dan merencanakan tanpa mengedit source files Anda; file edits tidak pernah auto-approved dan prompt melalui `canUseTool` callback Anda |

188| `"dontAsk"` | Tidak pernah prompt. Tools pre-approved oleh [permission rules](/id/settings#permission-settings) berjalan, semuanya lainnya ditolak |219| `"dontAsk"` | Tidak pernah prompt. Tools pre-approved oleh [permission rules](/id/settings#permission-settings) berjalan, semuanya lainnya ditolak |

189| `"auto"` (TypeScript only) | Menggunakan model classifier untuk approve atau deny setiap tool call. Lihat [Auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) untuk availability dan behavior |220| `"auto"` (TypeScript only) | Menggunakan model classifier untuk approve atau deny setiap tool call. Lihat [Auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) untuk availability dan behavior |

190| `"bypassPermissions"` | Menjalankan semua allowed tools tanpa bertanya. Tidak dapat digunakan saat berjalan sebagai root pada Unix. Gunakan hanya dalam isolated environments di mana tindakan agent tidak dapat mempengaruhi systems yang Anda pedulikan |221| `"bypassPermissions"` | Menjalankan semua allowed tools tanpa bertanya, kecuali explicit [`ask` rule](/id/settings#permission-settings) cocok; lihat [How permissions are evaluated](/id/agent-sdk/permissions#how-permissions-are-evaluated) untuk di mana ask rules berada dalam urutan precedence. Tidak dapat digunakan saat berjalan sebagai root pada Unix. Gunakan hanya dalam isolated environments di mana tindakan agent tidak dapat mempengaruhi systems yang Anda pedulikan |

191 222 

192Untuk interactive applications, gunakan `"default"` dengan tool approval callback untuk surface approval prompts. Untuk autonomous agents pada dev machine, `"acceptEdits"` auto-approves file edits dan common filesystem commands (`mkdir`, `touch`, `mv`, `cp`, dll.) sambil masih gating Bash commands lainnya di belakang allow rules. Reserve `"bypassPermissions"` untuk CI, containers, atau isolated environments lainnya. Lihat [Permissions](/id/agent-sdk/permissions) untuk full details.223Untuk interactive applications, gunakan `"default"` dengan tool approval callback untuk surface approval prompts. Untuk autonomous agents pada dev machine, `"acceptEdits"` auto-approves file edits dan common filesystem commands (`mkdir`, `touch`, `mv`, `cp`, dll.) sambil masih gating `Bash` commands lainnya di belakang allow rules. Reserve `"bypassPermissions"` untuk CI, containers, atau isolated environments lainnya. Lihat [Permissions](/id/agent-sdk/permissions) untuk full details.

193 224 

194### Model225<h3 id="model">

226 Model

227</h3>

195 228 

196Jika Anda tidak set `model`, SDK menggunakan Claude Code's default, yang tergantung pada authentication method dan subscription Anda. Set secara eksplisit (misalnya, `model="claude-sonnet-4-6"`) untuk pin model spesifik atau untuk menggunakan smaller model untuk faster, cheaper agents. Lihat [models](https://platform.claude.com/docs/en/about-claude/models) untuk available IDs.229Jika Anda tidak set `model`, SDK menggunakan Claude Code's default, yang tergantung pada authentication method dan subscription Anda. Set secara eksplisit (misalnya, `model="claude-sonnet-4-6"`) untuk pin model spesifik atau untuk menggunakan smaller model untuk faster, cheaper agents. Lihat [models](https://platform.claude.com/docs/en/about-claude/models) untuk available IDs.

197 230 

198## Jendela konteks231<h2 id="the-context-window">

232 Jendela konteks

233</h2>

199 234 

200Jendela konteks adalah total jumlah informasi yang tersedia untuk Claude selama sesi. Ini tidak reset antara turns dalam sesi. Semuanya terakumulasi: system prompt, tool definitions, conversation history, tool inputs, dan tool outputs. Konten yang tetap sama di seluruh turns (system prompt, tool definitions, CLAUDE.md) secara otomatis [prompt cached](https://platform.claude.com/docs/id/build-with-claude/prompt-caching), yang mengurangi cost dan latency untuk repeated prefixes.235Jendela konteks adalah total jumlah informasi yang tersedia untuk Claude selama sesi. Ini tidak reset antara turns dalam sesi. Semuanya terakumulasi: system prompt, tool definitions, conversation history, tool inputs, dan tool outputs. Konten yang tetap sama di seluruh turns (system prompt, tool definitions, CLAUDE.md) secara otomatis [prompt cached](https://platform.claude.com/docs/id/build-with-claude/prompt-caching), yang mengurangi cost dan latency untuk repeated prefixes.

201 236 

202### Apa yang mengkonsumsi konteks237<h3 id="what-consumes-context">

238 Apa yang mengkonsumsi konteks

239</h3>

203 240 

204Berikut adalah cara setiap komponen mempengaruhi konteks dalam SDK:241Berikut adalah cara setiap komponen mempengaruhi konteks dalam SDK:

205 242 


213 250 

214Large tool outputs mengkonsumsi significant context. Membaca file besar atau menjalankan command dengan verbose output dapat menggunakan ribuan tokens dalam satu turn. Konteks terakumulasi di seluruh turns, jadi longer sessions dengan banyak tool calls membangun significantly lebih banyak konteks daripada short ones.251Large tool outputs mengkonsumsi significant context. Membaca file besar atau menjalankan command dengan verbose output dapat menggunakan ribuan tokens dalam satu turn. Konteks terakumulasi di seluruh turns, jadi longer sessions dengan banyak tool calls membangun significantly lebih banyak konteks daripada short ones.

215 252 

216### Automatic compaction253<h3 id="automatic-compaction">

254 Automatic compaction

255</h3>

217 256 

218Ketika jendela konteks mendekati limitnya, SDK secara otomatis compacts conversation: ini merangkum older history untuk membebaskan space, menjaga most recent exchanges dan key decisions Anda tetap intact. SDK memancarkan message dengan `type: "system"` dan `subtype: "compact_boundary"` dalam stream ketika ini terjadi (di Python ini adalah `SystemMessage`; di TypeScript ini adalah tipe `SDKCompactBoundaryMessage` terpisah).257Ketika jendela konteks mendekati limitnya, SDK secara otomatis compacts conversation: ini merangkum older history untuk membebaskan space, menjaga most recent exchanges dan key decisions Anda tetap intact. SDK memancarkan message dengan `type: "system"` dan `subtype: "compact_boundary"` dalam stream ketika ini terjadi (di Python ini adalah `SystemMessage`; di TypeScript ini adalah tipe `SDKCompactBoundaryMessage` terpisah).

219 258 


239 ```278 ```

240</Accordion>279</Accordion>

241 280 

242### Jaga konteks tetap efisien281<h3 id="keep-context-efficient">

282 Jaga konteks tetap efisien

283</h3>

243 284 

244Beberapa strategi untuk long-running agents:285Beberapa strategi untuk long-running agents:

245 286 


250 291 

251Untuk detailed breakdown dari per-feature context costs, lihat [Understand context costs](/id/features-overview#understand-context-costs).292Untuk detailed breakdown dari per-feature context costs, lihat [Understand context costs](/id/features-overview#understand-context-costs).

252 293 

253## Sessions dan continuity294<h2 id="sessions-and-continuity">

295 Sessions dan continuity

296</h2>

254 297 

255Setiap interaksi dengan SDK membuat atau melanjutkan sesi. Capture session ID dari `ResultMessage.session_id` (tersedia di kedua SDKs) untuk resume nanti. TypeScript SDK juga mengeksposnya sebagai direct field pada init `SystemMessage`; di Python ini nested dalam `SystemMessage.data`.298Setiap interaksi dengan SDK membuat atau melanjutkan sesi. Capture session ID dari `ResultMessage.session_id` (tersedia di kedua SDKs) untuk resume nanti. TypeScript SDK juga mengeksposnya sebagai direct field pada init `SystemMessage`; di Python ini nested dalam `SystemMessage.data`.

256 299 


262 Di Python, `ClaudeSDKClient` menangani session IDs secara otomatis di seluruh multiple calls. Lihat [Python SDK reference](/id/agent-sdk/python#choosing-between-query-and-claudesdkclient) untuk details.305 Di Python, `ClaudeSDKClient` menangani session IDs secara otomatis di seluruh multiple calls. Lihat [Python SDK reference](/id/agent-sdk/python#choosing-between-query-and-claudesdkclient) untuk details.

263</Note>306</Note>

264 307 

265## Handle the result308<h2 id="handle-the-result">

309 Handle the result

310</h2>

266 311 

267Ketika loop berakhir, `ResultMessage` memberi tahu Anda apa yang terjadi dan memberikan output. Field `subtype` (tersedia di kedua SDKs) adalah cara utama untuk memeriksa termination state.312Ketika loop berakhir, `ResultMessage` memberi tahu Anda apa yang terjadi dan memberikan output. Field `subtype` (tersedia di kedua SDKs) adalah cara utama untuk memeriksa termination state.

268 313 

269| Result subtype | Apa yang terjadi | Field `result` tersedia? |314| Result subtype | Apa yang terjadi | Field `result` tersedia? |

270| :------------------------------------ | :------------------------------------------------------------------- | :----------------------: |315| :------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------: |

271| `success` | Claude menyelesaikan tugas secara normal | Ya |316| `success` | Claude menyelesaikan tugas secara normal | Ya |

272| `error_max_turns` | Mencapai batas `maxTurns` sebelum selesai | Tidak |317| `error_max_turns` | Mencapai batas `maxTurns` sebelum selesai | Tidak |

273| `error_max_budget_usd` | Mencapai batas `maxBudgetUsd` sebelum selesai | Tidak |318| `error_max_budget_usd` | Mencapai batas `maxBudgetUsd` sebelum selesai | Tidak |

274| `error_during_execution` | Error mengganggu loop (misalnya, API failure atau cancelled request) | Tidak |319| `error_during_execution` | Error mengganggu loop (misalnya, API failure atau cancelled request) | Tidak |

275| `error_max_structured_output_retries` | Structured output validation gagal setelah configured retry limit | Tidak |320| `error_max_structured_output_retries` | Tidak ada structured output yang valid diproduksi dalam configured retry limit: setiap upaya gagal validation, atau model fallback mencabut output yang sudah selesai tanpa successful retry | Tidak |

276 321 

277Field `result` (final text output) hanya present pada variant `success`, jadi selalu periksa subtype sebelum membacanya. Semua result subtypes membawa `total_cost_usd`, `usage`, `num_turns`, dan `session_id` sehingga Anda dapat track cost dan resume bahkan setelah errors. Di Python, `total_cost_usd` dan `usage` diketik sebagai optional dan mungkin `None` pada beberapa error paths, jadi guard sebelum formatting mereka. Lihat [Tracking costs dan usage](/id/agent-sdk/cost-tracking) untuk details tentang interpreting `usage` fields.322Field `result` (final text output) hanya present pada variant `success`, jadi selalu periksa subtype sebelum membacanya. Semua result subtypes membawa `total_cost_usd`, `usage`, `num_turns`, dan `session_id` sehingga Anda dapat track cost dan resume bahkan setelah errors. Di Python, `total_cost_usd` dan `usage` diketik sebagai optional dan mungkin `None` pada beberapa error paths, jadi guard sebelum formatting mereka. Lihat [Tracking costs dan usage](/id/agent-sdk/cost-tracking) untuk details tentang interpreting `usage` fields.

278 323 

279Hasil juga mencakup field `stop_reason` (`string | null` di TypeScript, `str | None` di Python) yang menunjukkan mengapa model berhenti generating pada final turn-nya. Common values adalah `end_turn` (model selesai secara normal), `max_tokens` (mencapai output token limit), dan `refusal` (model menolak request). Pada error result subtypes, `stop_reason` membawa value dari last assistant response sebelum loop berakhir. Untuk mendeteksi refusals, periksa `stop_reason === "refusal"` (TypeScript) atau `stop_reason == "refusal"` (Python). Lihat [`SDKResultMessage`](/id/agent-sdk/typescript#sdkresultmessage) (TypeScript) atau [`ResultMessage`](/id/agent-sdk/python#resultmessage) (Python) untuk full type.324Hasil juga mencakup field `stop_reason` (`string | null` di TypeScript, `str | None` di Python) yang menunjukkan mengapa model berhenti generating pada final turn-nya. Common values adalah `end_turn` (model selesai secara normal), `max_tokens` (mencapai output token limit), dan `refusal` (model menolak request). Pada error result subtypes, `stop_reason` membawa value dari last assistant response sebelum loop berakhir. Untuk mendeteksi refusals, periksa `stop_reason === "refusal"` (TypeScript) atau `stop_reason == "refusal"` (Python). Lihat [`SDKResultMessage`](/id/agent-sdk/typescript#sdkresultmessage) (TypeScript) atau [`ResultMessage`](/id/agent-sdk/python#resultmessage) (Python) untuk full type.

280 325 

281## Hooks326<h2 id="hooks">

327 Hooks

328</h2>

282 329 

283[Hooks](/id/agent-sdk/hooks) adalah callbacks yang menyala pada points spesifik dalam loop: sebelum tool berjalan, setelah dikembalikan, ketika agent selesai, dan sebagainya. Beberapa commonly used hooks adalah:330[Hooks](/id/agent-sdk/hooks) adalah callbacks yang menyala pada titik-titik spesifik dalam loop: sebelum tool berjalan, setelah dikembalikan, ketika agent selesai, dan sebagainya. Beberapa hooks yang umum digunakan adalah:

284 331 

285| Hook | Ketika menyala | Common uses |332| Hook | Ketika menyala | Penggunaan umum |

286| :------------------------------- | :------------------------------------- | :---------------------------------------- |333| :------------------------------- | :---------------------------------- | :------------------------------------------- |

287| `PreToolUse` | Sebelum tool dieksekusi | Validate inputs, block dangerous commands |334| `PreToolUse` | Sebelum tool dieksekusi | Validasi input, blokir perintah berbahaya |

288| `PostToolUse` | Setelah tool dikembalikan | Audit outputs, trigger side effects |335| `PostToolUse` | Setelah tool dikembalikan | Audit output, picu efek samping |

289| `UserPromptSubmit` | Ketika prompt dikirim | Inject additional context ke prompts |336| `UserPromptSubmit` | Ketika prompt dikirim | Injeksi konteks tambahan ke dalam prompt |

290| `Stop` | Ketika agent selesai | Validate hasil, save session state |337| `Stop` | Ketika agent selesai | Validasi hasil, simpan status sesi |

291| `SubagentStart` / `SubagentStop` | Ketika subagent spawned atau completed | Track dan aggregate parallel task results |338| `SubagentStart` / `SubagentStop` | Ketika subagent muncul atau selesai | Lacak dan agregasi hasil tugas paralel |

292| `PreCompact` | Sebelum context compaction | Archive full transcript sebelum merangkum |339| `PreCompact` | Sebelum pemadatan konteks | Arsipkan transkrip lengkap sebelum merangkum |

293 340 

294Hooks berjalan dalam application process Anda, bukan di dalam agent's context window, jadi mereka tidak mengkonsumsi context. Hooks juga dapat short-circuit loop: `PreToolUse` hook yang menolak tool call mencegahnya dari executing, dan Claude menerima rejection message sebagai gantinya.341Hooks berjalan dalam proses aplikasi Anda, bukan di dalam jendela konteks agent, jadi mereka tidak mengkonsumsi konteks. Hooks juga dapat memutus loop: hook `PreToolUse` yang menolak panggilan tool mencegahnya dari eksekusi, dan Claude menerima pesan penolakan sebagai gantinya.

295 342 

296Kedua SDKs mendukung semua events di atas. TypeScript SDK mencakup additional events yang Python belum dukung. Lihat [Control execution dengan hooks](/id/agent-sdk/hooks) untuk complete event list, per-SDK availability, dan full callback API.343Kedua SDK mendukung semua peristiwa di atas. SDK TypeScript mencakup peristiwa tambahan yang Python belum dukung. Lihat [Kontrol eksekusi dengan hooks](/id/agent-sdk/hooks) untuk daftar peristiwa lengkap, ketersediaan per-SDK, dan API callback lengkap.

297 344 

298## Put it all together345<h2 id="put-it-all-together">

346 Satukan semuanya

347</h2>

299 348 

300Contoh ini menggabungkan key concepts dari halaman ini ke dalam single agent yang memperbaiki failing tests. Ini mengkonfigurasi agent dengan allowed tools (auto-approved sehingga agent berjalan secara autonomous), project settings, dan safety limits pada turns dan reasoning effort. Saat loop berjalan, ini menangkap session ID untuk potential resumption, handles final result, dan prints total cost.349Contoh ini menggabungkan konsep-konsep kunci dari halaman ini ke dalam satu agent yang memperbaiki tes yang gagal. Ini mengkonfigurasi agent dengan tools yang diizinkan (auto-approved sehingga agent berjalan secara otonom), pengaturan proyek, dan batas keamanan pada turns dan effort reasoning. Saat loop berjalan, ini menangkap session ID untuk potensi resumption, menangani hasil akhir, dan mencetak total biaya.

301 350 

302<CodeGroup>351<CodeGroup>

303 ```python Python theme={null}352 ```python Python theme={null}


382 ```431 ```

383</CodeGroup>432</CodeGroup>

384 433 

385## Next steps434<h2 id="next-steps">

435 Langkah selanjutnya

436</h2>

386 437 

387Sekarang Anda memahami loop, berikut adalah tempat untuk pergi tergantung pada apa yang Anda bangun:438Sekarang Anda memahami loop, berikut adalah tempat untuk pergi tergantung pada apa yang Anda bangun:

388 439 

Details

257 257 

258<CodeGroup>258<CodeGroup>

259 ```python Python theme={null}259 ```python Python theme={null}

260 from claude_agent_sdk import ClaudeAgentOptions, query

261 import asyncio

262 

263 

264 async def main():

260 options = ClaudeAgentOptions(265 options = ClaudeAgentOptions(

261 env={266 env={

262 "CLAUDE_CODE_USE_BEDROCK": "1",267 "CLAUDE_CODE_USE_BEDROCK": "1",

263 "ENABLE_PROMPT_CACHING_1H": "1",268 "ENABLE_PROMPT_CACHING_1H": "1",

264 },269 },

265 )270 )

271 

272 async for message in query(prompt="Summarize this project", options=options):

273 print(message)

274 

275 

276 asyncio.run(main())

266 ```277 ```

267 278 

268 ```typescript TypeScript theme={null}279 ```typescript TypeScript theme={null}

280 import { query } from "@anthropic-ai/claude-agent-sdk";

281 

269 const options = {282 const options = {

270 env: {283 env: {

271 ...process.env,284 ...process.env,


273 ENABLE_PROMPT_CACHING_1H: "1",286 ENABLE_PROMPT_CACHING_1H: "1",

274 },287 },

275 };288 };

289 

290 for await (const message of query({ prompt: "Summarize this project", options })) {

291 console.log(message);

292 }

276 ```293 ```

277</CodeGroup>294</CodeGroup>

278 295 

Details

36* **Deskripsi:** apa yang dilakukan alat. Claude membaca ini untuk memutuskan kapan memanggilnya.36* **Deskripsi:** apa yang dilakukan alat. Claude membaca ini untuk memutuskan kapan memanggilnya.

37* **Skema input:** argumen yang harus disediakan Claude. Di TypeScript ini selalu [skema Zod](https://zod.dev/), dan `args` penangan diketik darinya secara otomatis. Di Python ini adalah dict yang memetakan nama ke tipe, seperti `{"latitude": float}`, yang dikonversi SDK ke JSON Schema untuk Anda. Dekorator Python juga menerima dict [JSON Schema](https://json-schema.org/understanding-json-schema/about) lengkap secara langsung ketika Anda membutuhkan enum, rentang, bidang opsional, atau objek bersarang.37* **Skema input:** argumen yang harus disediakan Claude. Di TypeScript ini selalu [skema Zod](https://zod.dev/), dan `args` penangan diketik darinya secara otomatis. Di Python ini adalah dict yang memetakan nama ke tipe, seperti `{"latitude": float}`, yang dikonversi SDK ke JSON Schema untuk Anda. Dekorator Python juga menerima dict [JSON Schema](https://json-schema.org/understanding-json-schema/about) lengkap secara langsung ketika Anda membutuhkan enum, rentang, bidang opsional, atau objek bersarang.

38* **Penangan:** fungsi async yang berjalan ketika Claude memanggil alat. Ini menerima argumen yang divalidasi dan harus mengembalikan objek dengan:38* **Penangan:** fungsi async yang berjalan ketika Claude memanggil alat. Ini menerima argumen yang divalidasi dan harus mengembalikan objek dengan:

39 * `content` (diperlukan): array blok hasil, masing-masing dengan `type` dari `"text"`, `"image"`, atau `"resource"`. Lihat [Kembalikan gambar dan sumber daya](#return-images-and-resources) untuk blok non-teks.39 * `content` (diperlukan): array blok hasil, masing-masing dengan `type` dari `"text"`, `"image"`, `"audio"`, `"resource"`, atau `"resource_link"`. Lihat [Kembalikan gambar dan sumber daya](#return-images-and-resources) untuk blok non-teks.

40 * `structuredContent` (opsional): objek JSON yang menyimpan hasil sebagai data yang dapat dibaca mesin, dikembalikan bersama `content`. Lihat [Kembalikan data terstruktur](#return-structured-data).40 * `structuredContent` (opsional): objek JSON yang menyimpan hasil sebagai data yang dapat dibaca mesin, dikembalikan bersama `content`. Lihat [Kembalikan data terstruktur](#return-structured-data).

41 * `isError` (opsional): atur ke `true` untuk menandakan kegagalan alat sehingga Claude dapat bereaksi terhadapnya. Lihat [Tangani kesalahan](#handle-errors).41 * `isError` (opsional): atur ke `true` untuk menandakan kegagalan alat sehingga Claude dapat bereaksi terhadapnya. Lihat [Tangani kesalahan](#handle-errors).

42 42 


461 Kembalikan gambar dan sumber daya461 Kembalikan gambar dan sumber daya

462</h2>462</h2>

463 463 

464Array `content` dalam hasil alat menerima blok `text`, `image`, dan `resource`. Anda dapat mencampurnya dalam respons yang sama.464Array `content` dalam hasil alat menerima blok `text`, `image`, `audio`, `resource`, dan `resource_link`. Anda dapat mencampurnya dalam respons yang sama. Blok audio disimpan ke disk dan Claude menerima blok teks dengan jalur file yang disimpan. Blok tautan sumber daya dikonversi menjadi blok teks yang berisi nama tautan, URI, dan deskripsi.

465 465 

466<h3 id="images">466<h3 id="images">

467 Gambar467 Gambar

Details

729* **Python**: `pip install --upgrade claude-agent-sdk`729* **Python**: `pip install --upgrade claude-agent-sdk`

730* **TypeScript**: `npm install @anthropic-ai/claude-agent-sdk@latest`730* **TypeScript**: `npm install @anthropic-ai/claude-agent-sdk@latest`

731 731 

732<h3 id="user-messages-don-t-have-uuids">732<h3 id="user-messages-dont-have-uuids">

733 Pesan pengguna tidak memiliki UUID733 Pesan pengguna tidak memiliki UUID

734</h3>734</h3>

735 735 

agent-sdk/mcp.md +80 −28

Details

14 Halaman ini mencakup konfigurasi MCP untuk Agent SDK. Untuk menambahkan server MCP ke Claude Code CLI sehingga dimuat di setiap proyek, lihat [Cakupan instalasi MCP](/id/mcp#mcp-installation-scopes).14 Halaman ini mencakup konfigurasi MCP untuk Agent SDK. Untuk menambahkan server MCP ke Claude Code CLI sehingga dimuat di setiap proyek, lihat [Cakupan instalasi MCP](/id/mcp#mcp-installation-scopes).

15</Note>15</Note>

16 16 

17## Quickstart17<h2 id="quickstart">

18 Quickstart

19</h2>

18 20 

19Contoh ini terhubung ke server MCP [dokumentasi Claude Code](https://code.claude.com/docs) menggunakan [transport HTTP](#httpsse-servers) dan menggunakan [`allowedTools`](#allow-mcp-tools) dengan wildcard untuk mengizinkan semua alat dari server.21Contoh ini terhubung ke server MCP [dokumentasi Claude Code](https://code.claude.com/docs) menggunakan [transport HTTP](#http%2Fsse-servers) dan menggunakan [`allowedTools`](#allow-mcp-tools) dengan wildcard untuk mengizinkan semua alat dari server.

20 22 

21<CodeGroup>23<CodeGroup>

22 ```typescript TypeScript theme={null}24 ```typescript TypeScript theme={null}


70 72 

71Agen terhubung ke server dokumentasi, mencari informasi tentang hooks, dan mengembalikan hasilnya.73Agen terhubung ke server dokumentasi, mencari informasi tentang hooks, dan mengembalikan hasilnya.

72 74 

73## Tambahkan server MCP75<h2 id="add-an-mcp-server">

76 Tambahkan server MCP

77</h2>

74 78 

75Anda dapat mengonfigurasi server MCP dalam kode saat memanggil `query()`, atau dalam file `.mcp.json` yang dimuat melalui [`settingSources`](#from-a-config-file).79Anda dapat mengonfigurasi server MCP dalam kode saat memanggil `query()`, atau dalam file `.mcp.json` yang dimuat melalui [`settingSources`](#from-a-config-file).

76 80 

77### Dalam kode81<h3 id="in-code">

82 Dalam kode

83</h3>

78 84 

79Teruskan server MCP langsung dalam opsi `mcpServers`:85Teruskan server MCP langsung dalam opsi `mcpServers`:

80 86 


129 ```135 ```

130</CodeGroup>136</CodeGroup>

131 137 

132### Dari file konfigurasi138<h3 id="from-a-config-file">

139 Dari file konfigurasi

140</h3>

133 141 

134Buat file `.mcp.json` di root proyek Anda. File ini diambil ketika sumber pengaturan `project` diaktifkan, yang merupakan default untuk opsi `query()`. Jika Anda menetapkan `settingSources` secara eksplisit, sertakan `"project"` agar file ini dimuat:142Buat file `.mcp.json` di root proyek Anda. File ini diambil ketika sumber pengaturan `project` diaktifkan, yang merupakan default untuk opsi `query()`. Jika Anda menetapkan `settingSources` secara eksplisit, sertakan `"project"` agar file ini dimuat:

135 143 


144}152}

145```153```

146 154 

147## Izinkan alat MCP155<h2 id="allow-mcp-tools">

156 Izinkan alat MCP

157</h2>

148 158 

149Alat MCP memerlukan izin eksplisit sebelum Claude dapat menggunakannya. Tanpa izin, Claude akan melihat bahwa alat tersedia tetapi tidak akan dapat memanggilnya.159Alat MCP memerlukan izin eksplisit sebelum Claude dapat menggunakannya. Tanpa izin, Claude akan melihat bahwa alat tersedia tetapi tidak akan dapat memanggilnya.

150 160 

151### Konvensi penamaan alat161<h3 id="tool-naming-convention">

162 Konvensi penamaan alat

163</h3>

152 164 

153Alat MCP mengikuti pola penamaan `mcp__<server-name>__<tool-name>`. Misalnya, server GitHub bernama `"github"` dengan alat `list_issues` menjadi `mcp__github__list_issues`.165Alat MCP mengikuti pola penamaan `mcp__<server-name>__<tool-name>`. Misalnya, server GitHub bernama `"github"` dengan alat `list_issues` menjadi `mcp__github__list_issues`.

154 166 

155### Persetujuan otomatis dengan allowedTools167<h3 id="auto-approve-with-allowedtools">

168 Persetujuan otomatis dengan allowedTools

169</h3>

156 170 

157Gunakan `allowedTools` untuk secara otomatis menyetujui alat MCP tertentu sehingga Claude dapat menggunakannya tanpa permintaan izin:171Gunakan `allowedTools` untuk secara otomatis menyetujui alat MCP tertentu sehingga Claude dapat menggunakannya tanpa permintaan izin:

158 172 


174Wildcard (`*`) memungkinkan Anda mengizinkan semua alat dari server tanpa mencantumkan masing-masing secara individual.188Wildcard (`*`) memungkinkan Anda mengizinkan semua alat dari server tanpa mencantumkan masing-masing secara individual.

175 189 

176<Note>190<Note>

177 **Lebih suka `allowedTools` daripada mode izin untuk akses MCP.** `permissionMode: "acceptEdits"` tidak secara otomatis menyetujui alat MCP (hanya edit file dan perintah Bash filesystem). `permissionMode: "bypassPermissions"` secara otomatis menyetujui alat MCP tetapi juga menonaktifkan semua prompt keamanan lainnya, yang lebih luas dari yang diperlukan. Wildcard dalam `allowedTools` memberikan akses ke server MCP yang Anda inginkan dan tidak lebih. Lihat [Mode izin](/id/agent-sdk/permissions#permission-modes) untuk perbandingan lengkap.191 **Lebih suka `allowedTools` daripada mode izin untuk akses MCP.** `permissionMode: "acceptEdits"` tidak secara otomatis menyetujui alat MCP (hanya edit file dan perintah Bash filesystem). `permissionMode: "bypassPermissions"` secara otomatis menyetujui alat MCP tetapi juga menonaktifkan semua prompt keamanan lainnya kecuali aturan [`ask`](/id/agent-sdk/permissions#how-permissions-are-evaluated) eksplisit cocok, yang lebih luas dari yang diperlukan. Wildcard dalam `allowedTools` memberikan akses ke server MCP yang Anda inginkan dan tidak lebih. Lihat [Mode izin](/id/agent-sdk/permissions#permission-modes) untuk perbandingan lengkap.

178</Note>192</Note>

179 193 

180### Temukan alat yang tersedia194<h3 id="discover-available-tools">

195 Temukan alat yang tersedia

196</h3>

181 197 

182Untuk melihat alat apa yang disediakan server MCP, periksa dokumentasi server atau terhubung ke server dan periksa pesan init `system`:198Untuk melihat alat apa yang disediakan server MCP, periksa dokumentasi server atau terhubung ke server dan periksa pesan init `system`:

183 199 


189}205}

190```206```

191 207 

192## Jenis transport208<h2 id="transport-types">

209 Jenis transport

210</h2>

193 211 

194Server MCP berkomunikasi dengan agen Anda menggunakan protokol transport yang berbeda. Periksa dokumentasi server untuk melihat transport mana yang didukungnya:212Server MCP berkomunikasi dengan agen Anda menggunakan protokol transport yang berbeda. Periksa dokumentasi server untuk melihat transport mana yang didukungnya:

195 213 


197* Jika dokumen memberi Anda **URL**, gunakan HTTP atau SSE215* Jika dokumen memberi Anda **URL**, gunakan HTTP atau SSE

198* Jika Anda membangun alat Anda sendiri dalam kode, gunakan server MCP SDK216* Jika Anda membangun alat Anda sendiri dalam kode, gunakan server MCP SDK

199 217 

200### Server stdio218<h3 id="stdio-servers">

219 Server stdio

220</h3>

201 221 

202Proses lokal yang berkomunikasi melalui stdin/stdout. Gunakan ini untuk server MCP yang Anda jalankan di mesin yang sama:222Proses lokal yang berkomunikasi melalui stdin/stdout. Gunakan ini untuk server MCP yang Anda jalankan di mesin yang sama:

203 223 


253 </Tab>273 </Tab>

254</Tabs>274</Tabs>

255 275 

256### Server HTTP/SSE276<h3 id="http/sse-servers">

277 Server HTTP/SSE

278</h3>

257 279 

258Gunakan HTTP atau SSE untuk server MCP yang dihosting cloud dan API jarak jauh:280Gunakan HTTP atau SSE untuk server MCP yang dihosting cloud dan API jarak jauh:

259 281 


311 333 

312Untuk transport HTTP yang dapat dialirkan, gunakan `"type": "http"` sebagai gantinya. Dalam file konfigurasi `.mcp.json` dan JSON lainnya, `"streamable-http"` diterima sebagai alias untuk `"http"`. Opsi `mcpServers` pemrograman hanya menerima `"http"`.334Untuk transport HTTP yang dapat dialirkan, gunakan `"type": "http"` sebagai gantinya. Dalam file konfigurasi `.mcp.json` dan JSON lainnya, `"streamable-http"` diterima sebagai alias untuk `"http"`. Opsi `mcpServers` pemrograman hanya menerima `"http"`.

313 335 

314### Server MCP SDK336<h3 id="sdk-mcp-servers">

337 Server MCP SDK

338</h3>

315 339 

316Tentukan alat khusus langsung dalam kode aplikasi Anda daripada menjalankan proses server terpisah. Lihat [panduan alat khusus](/id/agent-sdk/custom-tools) untuk detail implementasi.340Tentukan alat khusus langsung dalam kode aplikasi Anda daripada menjalankan proses server terpisah. Lihat [panduan alat khusus](/id/agent-sdk/custom-tools) untuk detail implementasi.

317 341 

318## Pencarian alat MCP342<h2 id="mcp-tool-search">

343 Pencarian alat MCP

344</h2>

319 345 

320Ketika Anda memiliki banyak alat MCP yang dikonfigurasi, definisi alat dapat mengonsumsi bagian signifikan dari jendela konteks Anda. Pencarian alat mengatasi ini dengan menahan definisi alat dari konteks dan memuat hanya yang Claude butuhkan untuk setiap giliran.346Ketika Anda memiliki banyak alat MCP yang dikonfigurasi, definisi alat dapat mengonsumsi bagian signifikan dari jendela konteks Anda. Pencarian alat mengatasi ini dengan menahan definisi alat dari konteks dan memuat hanya yang Claude butuhkan untuk setiap giliran.

321 347 


323 349 

324Untuk detail lebih lanjut, termasuk praktik terbaik dan menggunakan pencarian alat dengan alat SDK khusus, lihat [panduan pencarian alat](/id/agent-sdk/tool-search).350Untuk detail lebih lanjut, termasuk praktik terbaik dan menggunakan pencarian alat dengan alat SDK khusus, lihat [panduan pencarian alat](/id/agent-sdk/tool-search).

325 351 

326## Autentikasi352<h2 id="authentication">

353 Autentikasi

354</h2>

327 355 

328Sebagian besar server MCP memerlukan autentikasi untuk mengakses layanan eksternal. Teruskan kredensial melalui variabel lingkungan dalam konfigurasi server.356Sebagian besar server MCP memerlukan autentikasi untuk mengakses layanan eksternal. Teruskan kredensial melalui variabel lingkungan dalam konfigurasi server.

329 357 

330### Teruskan kredensial melalui variabel lingkungan358<h3 id="pass-credentials-via-environment-variables">

359 Teruskan kredensial melalui variabel lingkungan

360</h3>

331 361 

332Gunakan bidang `env` untuk meneruskan kunci API, token, dan kredensial lainnya ke server MCP:362Gunakan bidang `env` untuk meneruskan kunci API, token, dan kredensial lainnya ke server MCP:

333 363 


387 417 

388Lihat [Daftar masalah dari repositori](#list-issues-from-a-repository) untuk contoh kerja lengkap dengan logging debug.418Lihat [Daftar masalah dari repositori](#list-issues-from-a-repository) untuk contoh kerja lengkap dengan logging debug.

389 419 

390### Header HTTP untuk server jarak jauh420<h3 id="http-headers-for-remote-servers">

421 Header HTTP untuk server jarak jauh

422</h3>

391 423 

392Untuk server HTTP dan SSE, teruskan header autentikasi langsung dalam konfigurasi server:424Untuk server HTTP dan SSE, teruskan header autentikasi langsung dalam konfigurasi server:

393 425 


445 </Tab>477 </Tab>

446</Tabs>478</Tabs>

447 479 

448### Autentikasi OAuth2480<h3 id="oauth2-authentication">

481 Autentikasi OAuth2

482</h3>

449 483 

450[Spesifikasi MCP mendukung OAuth 2.1](https://modelcontextprotocol.io/specification/2025-03-26/basic/authorization) untuk otorisasi. SDK tidak menangani alur OAuth secara otomatis, tetapi Anda dapat meneruskan token akses melalui header setelah menyelesaikan alur OAuth dalam aplikasi Anda:484[Spesifikasi MCP mendukung OAuth 2.1](https://modelcontextprotocol.io/specification/2025-03-26/basic/authorization) untuk otorisasi. SDK tidak menangani alur OAuth secara otomatis, tetapi Anda dapat meneruskan token akses melalui header setelah menyelesaikan alur OAuth dalam aplikasi Anda:

451 485 


485 ```519 ```

486</CodeGroup>520</CodeGroup>

487 521 

488## Contoh522<h2 id="examples">

523 Contoh

524</h2>

489 525 

490### Daftar masalah dari repositori526<h3 id="list-issues-from-a-repository">

527 Daftar masalah dari repositori

528</h3>

491 529 

492Contoh ini terhubung ke [server MCP GitHub](https://github.com/modelcontextprotocol/servers/tree/main/src/github) untuk mencantumkan masalah terbaru. Contoh ini mencakup logging debug untuk memverifikasi koneksi MCP dan panggilan alat.530Contoh ini terhubung ke [server MCP GitHub](https://github.com/modelcontextprotocol/servers/tree/main/src/github) untuk mencantumkan masalah terbaru. Contoh ini mencakup logging debug untuk memverifikasi koneksi MCP dan panggilan alat.

493 531 


584 ```622 ```

585</CodeGroup>623</CodeGroup>

586 624 

587### Tanyakan database625<h3 id="query-a-database">

626 Tanyakan database

627</h3>

588 628 

589Contoh ini menggunakan [server MCP Postgres](https://github.com/modelcontextprotocol/servers/tree/main/src/postgres) untuk menanyakan database. String koneksi diteruskan sebagai argumen ke server. Agen secara otomatis menemukan skema database, menulis kueri SQL, dan mengembalikan hasilnya:629Contoh ini menggunakan [server MCP Postgres](https://github.com/modelcontextprotocol/servers/tree/main/src/postgres) untuk menanyakan database. String koneksi diteruskan sebagai argumen ke server. Agen secara otomatis menemukan skema database, menulis kueri SQL, dan mengembalikan hasilnya:

590 630 


655 ```695 ```

656</CodeGroup>696</CodeGroup>

657 697 

658## Penanganan kesalahan698<h2 id="error-handling">

699 Penanganan kesalahan

700</h2>

659 701 

660Server MCP dapat gagal terhubung karena berbagai alasan: proses server mungkin tidak terinstal, kredensial mungkin tidak valid, atau server jarak jauh mungkin tidak dapat dijangkau.702Server MCP dapat gagal terhubung karena berbagai alasan: proses server mungkin tidak terinstal, kredensial mungkin tidak valid, atau server jarak jauh mungkin tidak dapat dijangkau.

661 703 


717 ```759 ```

718</CodeGroup>760</CodeGroup>

719 761 

720## Troubleshooting762<h2 id="troubleshooting">

763 Troubleshooting

764</h2>

721 765 

722### Server menunjukkan status "failed"766<h3 id="server-shows-failed-status">

767 Server menunjukkan status "failed"

768</h3>

723 769 

724Periksa pesan `init` untuk melihat server mana yang gagal terhubung:770Periksa pesan `init` untuk melihat server mana yang gagal terhubung:

725 771 


740* **String koneksi tidak valid**: Untuk server database, verifikasi format string koneksi dan bahwa database dapat diakses.786* **String koneksi tidak valid**: Untuk server database, verifikasi format string koneksi dan bahwa database dapat diakses.

741* **Masalah jaringan**: Untuk server HTTP/SSE jarak jauh, periksa URL dapat dijangkau dan firewall apa pun memungkinkan koneksi.787* **Masalah jaringan**: Untuk server HTTP/SSE jarak jauh, periksa URL dapat dijangkau dan firewall apa pun memungkinkan koneksi.

742 788 

743### Alat tidak dipanggil789<h3 id="tools-not-being-called">

790 Alat tidak dipanggil

791</h3>

744 792 

745Jika Claude melihat alat tetapi tidak menggunakannya, periksa bahwa Anda telah memberikan izin dengan `allowedTools`:793Jika Claude melihat alat tetapi tidak menggunakannya, periksa bahwa Anda telah memberikan izin dengan `allowedTools`:

746 794 


755};803};

756```804```

757 805 

758### Timeout koneksi806<h3 id="connection-timeouts">

807 Timeout koneksi

808</h3>

759 809 

760SDK MCP memiliki timeout default 60 detik untuk koneksi server. Jika server Anda membutuhkan waktu lebih lama untuk memulai, koneksi akan gagal. Untuk server yang memerlukan waktu startup lebih lama, pertimbangkan:810SDK MCP memiliki timeout default 60 detik untuk koneksi server. Jika server Anda membutuhkan waktu lebih lama untuk memulai, koneksi akan gagal. Untuk server yang memerlukan waktu startup lebih lama, pertimbangkan:

761 811 


763* Pre-warming server sebelum memulai agen Anda813* Pre-warming server sebelum memulai agen Anda

764* Memeriksa log server untuk penyebab inisialisasi lambat814* Memeriksa log server untuk penyebab inisialisasi lambat

765 815 

766## Sumber daya terkait816<h2 id="related-resources">

817 Sumber daya terkait

818</h2>

767 819 

768* **[Panduan alat khusus](/id/agent-sdk/custom-tools)**: Bangun server MCP Anda sendiri yang berjalan in-process dengan aplikasi SDK Anda820* **[Panduan alat khusus](/id/agent-sdk/custom-tools)**: Bangun server MCP Anda sendiri yang berjalan in-process dengan aplikasi SDK Anda

769* **[Izin](/id/agent-sdk/permissions)**: Kontrol alat MCP mana yang dapat digunakan agen Anda dengan `allowedTools` dan `disallowedTools`821* **[Izin](/id/agent-sdk/permissions)**: Kontrol alat MCP mana yang dapat digunakan agen Anda dengan `allowedTools` dan `disallowedTools`

Details

12 12 

13Claude Code SDK telah diubah namanya menjadi **Claude Agent SDK** dan dokumentasinya telah diorganisir ulang. Perubahan ini mencerminkan kemampuan SDK yang lebih luas untuk membangun agen AI di luar sekadar tugas pengkodean.13Claude Code SDK telah diubah namanya menjadi **Claude Agent SDK** dan dokumentasinya telah diorganisir ulang. Perubahan ini mencerminkan kemampuan SDK yang lebih luas untuk membangun agen AI di luar sekadar tugas pengkodean.

14 14 

15<h2 id="what-s-changed">15<h2 id="whats-changed">

16 Apa yang Berubah16 Apa yang Berubah

17</h2>17</h2>

18 18 


82}82}

83```83```

84 84 

85Itu saja! Tidak ada perubahan kode lain yang diperlukan.85**5. Tinjau [perubahan yang merusak](#breaking-changes)**

86 

87Buat perubahan kode apa pun yang diperlukan untuk menyelesaikan migrasi.

86 88 

87<h3 id="for-python-projects">89<h3 id="for-python-projects">

88 Untuk Proyek Python90 Untuk Proyek Python


172 174 

173<CodeGroup>175<CodeGroup>

174 ```typescript TypeScript theme={null}176 ```typescript TypeScript theme={null}

177 import { query } from "@anthropic-ai/claude-agent-sdk";

178 

175 // SEBELUMNYA (v0.0.x) - Menggunakan prompt sistem Claude Code secara default179 // SEBELUMNYA (v0.0.x) - Menggunakan prompt sistem Claude Code secara default

176 const result = query({ prompt: "Hello" });180 const before = query({ prompt: "Hello" });

177 181 

178 // SESUDAHNYA (v0.1.0) - Menggunakan prompt sistem minimal secara default182 // SESUDAHNYA (v0.1.0) - Menggunakan prompt sistem minimal secara default

179 // Untuk mendapatkan perilaku lama, secara eksplisit minta preset Claude Code:183 // Untuk mendapatkan perilaku lama, secara eksplisit minta preset Claude Code:

180 const result = query({184 const presetResult = query({

181 prompt: "Hello",185 prompt: "Hello",

182 options: {186 options: {

183 systemPrompt: { type: "preset", preset: "claude_code" }187 systemPrompt: { type: "preset", preset: "claude_code" }


185 });189 });

186 190 

187 // Atau gunakan prompt sistem kustom:191 // Atau gunakan prompt sistem kustom:

188 const result = query({192 const customResult = query({

189 prompt: "Hello",193 prompt: "Hello",

190 options: {194 options: {

191 systemPrompt: "You are a helpful coding assistant"195 systemPrompt: "You are a helpful coding assistant"


227 231 

228Default ini secara singkat diubah di v0.1.0 dan kemudian dikembalikan, jadi tidak ada tindakan migrasi yang diperlukan.232Default ini secara singkat diubah di v0.1.0 dan kemudian dikembalikan, jadi tidak ada tindakan migrasi yang diperlukan.

229 233 

230**Perilaku saat ini:** Menghilangkan `settingSources` pada `query()` memuat pengaturan pengguna, proyek, dan sistem file lokal, cocok dengan CLI. Ini termasuk file `~/.claude/settings.json`, `.claude/settings.json`, `.claude/settings.local.json`, file CLAUDE.md, dan perintah kustom.234**Perilaku saat ini:** Menghilangkan `settingSources` pada `query()` memuat pengaturan pengguna, proyek, dan sistem file lokal, cocok dengan CLI. Ini termasuk `~/.claude/settings.json`, `.claude/settings.json`, `.claude/settings.local.json`, file CLAUDE.md, dan perintah kustom.

231 235 

232Untuk menjalankan terisolasi dari pengaturan sistem file, teruskan array kosong:236Untuk menjalankan terisolasi dari pengaturan sistem file, teruskan array kosong:

233 237 

234<CodeGroup>238<CodeGroup>

235 ```typescript TypeScript theme={null}239 ```typescript TypeScript theme={null}

236 const result = query({240 import { query } from "@anthropic-ai/claude-agent-sdk";

241 

242 const isolatedResult = query({

237 prompt: "Hello",243 prompt: "Hello",

238 options: {244 options: {

239 settingSources: [] // Tidak ada pengaturan sistem file yang dimuat245 settingSources: [] // Tidak ada pengaturan sistem file yang dimuat


241 });247 });

242 248 

243 // Atau muat hanya sumber tertentu:249 // Atau muat hanya sumber tertentu:

244 const result = query({250 const projectOnlyResult = query({

245 prompt: "Hello",251 prompt: "Hello",

246 options: {252 options: {

247 settingSources: ["project"] // Hanya pengaturan proyek253 settingSources: ["project"] // Hanya pengaturan proyek

Details

195 ...process.env,195 ...process.env,

196 // ... exporter configuration ...196 // ... exporter configuration ...

197 OTEL_SERVICE_NAME: "support-triage-agent",197 OTEL_SERVICE_NAME: "support-triage-agent",

198 OTEL_RESOURCE_ATTRIBUTES:198 OTEL_RESOURCE_ATTRIBUTES":

199 "service.version=1.4.0,deployment.environment=production",199 "service.version=1.4.0,deployment.environment=production",

200 },200 },

201 };201 };

Details

27 Periksa aturan `deny` (dari `disallowed_tools` dan [settings.json](/id/settings#permission-settings)). Jika aturan deny cocok, alat diblokir, bahkan dalam mode `bypassPermissions`. Aturan deny dengan nama bare seperti `Bash` menghapus alat dari konteks Claude sebelum evaluasi ini dimulai, jadi hanya aturan berscopе seperti `Bash(rm *)` yang diperiksa pada langkah ini.27 Periksa aturan `deny` (dari `disallowed_tools` dan [settings.json](/id/settings#permission-settings)). Jika aturan deny cocok, alat diblokir, bahkan dalam mode `bypassPermissions`. Aturan deny dengan nama bare seperti `Bash` menghapus alat dari konteks Claude sebelum evaluasi ini dimulai, jadi hanya aturan berscopе seperti `Bash(rm *)` yang diperiksa pada langkah ini.

28 </Step>28 </Step>

29 29 

30 <Step title="Ask rules">

31 Periksa aturan `ask` dari [settings.json](/id/settings#permission-settings). Jika aturan ask cocok, panggilan jatuh melalui callback [`canUseTool`](/id/agent-sdk/user-input) Anda untuk konfirmasi, bahkan dalam mode `bypassPermissions`. Dalam mode `dontAsk` aturan ask yang cocok ditolak sebagai gantinya, karena mode itu tidak pernah meminta.

32 </Step>

33 

30 <Step title="Permission mode">34 <Step title="Permission mode">

31 Terapkan [mode izin](#permission-modes) yang aktif. `bypassPermissions` menyetujui semua yang mencapai langkah ini. `acceptEdits` menyetujui operasi file. Mode lain jatuh melalui.35 Terapkan [mode izin](#permission-modes) yang aktif. `bypassPermissions` menyetujui semua yang mencapai langkah ini. `acceptEdits` menyetujui operasi file. `plan` merutekan alat file-edit dan shell-write ke callback `canUseTool` Anda terlepas dari aturan allow, jadi operasi write tidak dapat disetujui secara otomatis saat merencanakan. Mode lain jatuh melalui.

32 </Step>36 </Step>

33 37 

34 <Step title="Allow rules">38 <Step title="Allow rules">


40 </Step>44 </Step>

41</Steps>45</Steps>

42 46 

43<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=cc94220087262cd48c9b64a14c4e1c2c" alt="Diagram alur evaluasi izin" width="1024" height="260" data-path="images/agent-sdk/permissions-flow.svg" />47<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=cc94220087262cd48c9b64a14c4e1c2c" alt="Diagram alur evaluasi izin lima langkah yang sesuai dengan langkah-langkah di atas: permintaan alat melewati hooks, aturan deny, mode izin, aturan allow, dan canUseTool. Hooks, aturan deny, dan canUseTool dapat merutekan ke Blocked; bypass mode izin, aturan allow, dan canUseTool dapat merutekan ke Execute." width="1024" height="260" data-path="images/agent-sdk/permissions-flow.svg" />

44 48 

45Halaman ini berfokus pada **aturan allow dan deny** serta **mode izin**. Untuk langkah lainnya:49Halaman ini berfokus pada **aturan allow dan deny** serta **mode izin**. Untuk langkah lainnya:

46 50 


54`allowed_tools` dan `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) menambahkan entri ke daftar aturan allow dan deny dalam alur evaluasi di atas. Aturan allow hanya mempengaruhi persetujuan: alat yang tidak tercantum dalam `allowed_tools` masih tersedia untuk Claude dan jatuh melalui mode izin. Aturan deny berperilaku berbeda tergantung pada apakah mereka menamai alat atau membatasi pola dalam satu alat.58`allowed_tools` dan `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) menambahkan entri ke daftar aturan allow dan deny dalam alur evaluasi di atas. Aturan allow hanya mempengaruhi persetujuan: alat yang tidak tercantum dalam `allowed_tools` masih tersedia untuk Claude dan jatuh melalui mode izin. Aturan deny berperilaku berbeda tergantung pada apakah mereka menamai alat atau membatasi pola dalam satu alat.

55 59 

56| Opsi | Efek |60| Opsi | Efek |

57| :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |61| :-------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

58| `allowed_tools=["Read", "Grep"]` | `Read` dan `Grep` disetujui secara otomatis. Alat yang tidak tercantum di sini masih ada dan jatuh melalui mode izin dan `canUseTool`. |62| `allowed_tools=["Read", "Grep"]` | `Read` dan `Grep` disetujui secara otomatis. Alat yang tidak tercantum di sini masih ada dan jatuh melalui mode izin dan `canUseTool`. |

59| `disallowed_tools=["Bash"]` | Definisi alat `Bash` dihapus dari permintaan. Claude tidak melihat alat dan tidak dapat mencobanya. |63| `disallowed_tools=["Bash"]` | Definisi alat `Bash` dihapus dari permintaan. Claude tidak melihat alat dan tidak dapat mencobanya. |

60| `disallowed_tools=["Bash(rm *)"]` | `Bash` tetap tersedia. Panggilan yang cocok dengan `rm *` ditolak di setiap mode izin, termasuk `bypassPermissions`. Panggilan `Bash` lainnya jatuh melalui mode izin. |64| `disallowed_tools=["Bash(rm *)"]` | `Bash` tetap tersedia. Panggilan yang cocok dengan `rm *` ditolak di setiap mode izin, termasuk `bypassPermissions`. Panggilan `Bash` lainnya jatuh melalui mode izin. |

65| `disallowed_tools=["*"]` | Setiap definisi alat dihapus dari permintaan. Glob nama-alat didukung dalam aturan deny: `"*"` cocok dengan setiap alat dan `"mcp__*"` cocok dengan setiap alat MCP di semua server. |

66 

67Aturan allow menerima glob nama-alat hanya setelah awalan literal `mcp__<server>__`. Segmen server harus bebas glob sehingga aturan menamai server spesifik yang Anda konfigurasi: `mcp__puppeteer__*` cocok dengan setiap alat dari server `puppeteer`, dan `mcp__github__get_*` cocok dengan alat `get_` miliknya. Entri yang tidak berlabuh seperti `allowed_tools=["*"]` atau `allowed_tools=["mcp__*"]` diabaikan dengan peringatan startup dan tidak menyetujui apa pun secara otomatis.

61 68 

62Untuk agen yang terkunci, pasangkan `allowedTools` dengan `permissionMode: "dontAsk"`. Alat yang tercantum disetujui; apa pun yang lain ditolak sepenuhnya daripada meminta:69Untuk agen yang terkunci, pasangkan `allowedTools` dengan `permissionMode: "dontAsk"`. Alat yang tercantum disetujui; apa pun yang lain ditolak sepenuhnya daripada meminta:

63 70 


87SDK mendukung mode izin ini:94SDK mendukung mode izin ini:

88 95 

89| Mode | Deskripsi | Perilaku alat |96| Mode | Deskripsi | Perilaku alat |

90| :----------------------- | :-------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- |97| :----------------------- | :-------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

91| `default` | Perilaku izin standar | Tidak ada persetujuan otomatis; alat yang tidak cocok memicu callback `canUseTool` Anda |98| `default` | Perilaku izin standar | Tidak ada persetujuan otomatis; alat yang tidak cocok memicu callback `canUseTool` Anda |

92| `dontAsk` | Tolak daripada meminta | Apa pun yang tidak pra-disetujui oleh `allowed_tools` atau aturan ditolak; `canUseTool` tidak pernah dipanggil |99| `dontAsk` | Tolak daripada meminta | Apa pun yang tidak pra-disetujui oleh `allowed_tools` atau aturan ditolak; `canUseTool` tidak pernah dipanggil |

93| `acceptEdits` | Terima otomatis edit file | Edit file dan [operasi sistem file](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, dll.) disetujui secara otomatis |100| `acceptEdits` | Terima otomatis edit file | Edit file dan [operasi sistem file](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, dll.) disetujui secara otomatis |

94| `bypassPermissions` | Lewati semua pemeriksaan izin | Semua alat berjalan tanpa prompt izin (gunakan dengan hati-hati) |101| `bypassPermissions` | Lewati pemeriksaan izin | Alat berjalan tanpa prompt izin, kecuali aturan [`ask`](#how-permissions-are-evaluated) eksplisit cocok (gunakan dengan hati-hati) |

95| `plan` | Mode perencanaan | Alat baca saja berjalan; Claude menganalisis dan merencanakan tanpa mengedit file sumber Anda |102| `plan` | Mode perencanaan | Claude menjelajahi dan merencanakan tanpa mengedit file sumber Anda; edit file tidak pernah disetujui secara otomatis dan diminta melalui callback `canUseTool` Anda |

96| `auto` (TypeScript saja) | Persetujuan yang diklasifikasikan model | Pengklasifikasi model menyetujui atau menolak setiap panggilan alat. Lihat [Mode Auto](/id/permission-modes#eliminate-prompts-with-auto-mode) untuk ketersediaan |103| `auto` (TypeScript saja) | Persetujuan yang diklasifikasikan model | Pengklasifikasi model menyetujui atau menolak setiap panggilan alat. Lihat [Mode Auto](/id/permission-modes#eliminate-prompts-with-auto-mode) untuk ketersediaan |

97 104 

98<Warning>105<Warning>

99 **Warisan subagen:** Ketika induk menggunakan `bypassPermissions`, `acceptEdits`, atau `auto`, semua subagen mewarisi mode tersebut dan tidak dapat ditimpa per subagen. Subagen mungkin memiliki prompt sistem yang berbeda dan perilaku yang kurang terbatas daripada agen utama Anda, jadi mewarisi `bypassPermissions` memberikan mereka akses sistem penuh dan otonom tanpa prompt persetujuan apa pun.106 **Warisan subagen:** Ketika induk menggunakan `bypassPermissions`, `acceptEdits`, atau `auto`, semua subagen mewarisi mode tersebut dan tidak dapat ditimpa per subagen. Subagen mungkin memiliki prompt sistem yang berbeda dan perilaku yang kurang terbatas daripada agen utama Anda, jadi mewarisi `bypassPermissions` memberikan mereka akses sistem penuh dan otonom. Aturan [`ask`](#how-permissions-are-evaluated) eksplisit masih memaksa prompt.

100</Warning>107</Warning>

101 108 

102<h3 id="set-permission-mode">109<h3 id="set-permission-mode">


226 233 

227**Gunakan ketika:** Anda mempercayai edit Claude dan menginginkan iterasi yang lebih cepat, seperti selama prototyping atau saat bekerja di direktori terisolasi.234**Gunakan ketika:** Anda mempercayai edit Claude dan menginginkan iterasi yang lebih cepat, seperti selama prototyping atau saat bekerja di direktori terisolasi.

228 235 

229<h4 id="don-t-ask-mode-dontask">236<h4 id="dont-ask-mode-dontask">

230 Mode jangan tanya (`dontAsk`)237 Mode jangan tanya (`dontAsk`)

231</h4>238</h4>

232 239 


250 Mode rencana (`plan`)257 Mode rencana (`plan`)

251</h4>258</h4>

252 259 

253Membatasi Claude ke alat baca saja. Claude dapat membaca file dan menjalankan perintah shell baca saja untuk menjelajahi basis kode tetapi tidak mengedit file sumber Anda. Claude dapat menggunakan `AskUserQuestion` untuk mengklarifikasi persyaratan sebelum menyelesaikan rencana. Lihat [Tangani persetujuan dan input pengguna](/id/agent-sdk/user-input#handle-clarifying-questions) untuk menangani prompt ini.260Claude menjelajahi basis kode dan menghasilkan rencana tanpa mengedit file sumber Anda. Alat baca saja berjalan seperti dalam mode default. Edit file tidak pernah disetujui secara otomatis dalam mode rencana, bahkan ketika aturan allow cocok. Mereka diminta melalui callback `canUseTool` Anda sebagai gantinya. Claude dapat menggunakan `AskUserQuestion` untuk mengklarifikasi persyaratan sebelum menyelesaikan rencana. Lihat [Tangani persetujuan dan input pengguna](/id/agent-sdk/user-input#handle-clarifying-questions) untuk menangani prompt ini.

254 261 

255**Gunakan ketika:** Anda ingin Claude mengusulkan perubahan tanpa menjalankannya, seperti selama tinjauan kode atau ketika Anda perlu menyetujui perubahan sebelum dibuat.262**Gunakan ketika:** Anda ingin Claude mengusulkan perubahan tanpa menjalankannya, seperti selama tinjauan kode atau ketika Anda perlu menyetujui perubahan sebelum dibuat.

256 263 

Details

132) -> Callable[[Callable[[Any], Awaitable[dict[str, Any]]]], SdkMcpTool[Any]]132) -> Callable[[Callable[[Any], Awaitable[dict[str, Any]]]], SdkMcpTool[Any]]

133```133```

134 134 

135<h4 id="parameters">135<h4 id="parameters-1">

136 Parameter136 Parameter

137</h4>137</h4>

138 138 


165 }165 }

166 ```166 ```

167 167 

168<h4 id="returns">168<h4 id="returns-1">

169 Pengembalian169 Pengembalian

170</h4>170</h4>

171 171 


228) -> McpSdkServerConfig228) -> McpSdkServerConfig

229```229```

230 230 

231<h4 id="parameters">231<h4 id="parameters-2">

232 Parameter232 Parameter

233</h4>233</h4>

234 234 


238| `version` | `str` | `"1.0.0"` | String versi server |238| `version` | `str` | `"1.0.0"` | String versi server |

239| `tools` | `list[SdkMcpTool[Any]] \| None` | `None` | Daftar fungsi tool yang dibuat dengan dekorator `@tool` |239| `tools` | `list[SdkMcpTool[Any]] \| None` | `None` | Daftar fungsi tool yang dibuat dengan dekorator `@tool` |

240 240 

241<h4 id="returns">241<h4 id="returns-2">

242 Pengembalian242 Pengembalian

243</h4>243</h4>

244 244 

245Mengembalikan objek `McpSdkServerConfig` yang dapat diteruskan ke `ClaudeAgentOptions.mcp_servers`.245Mengembalikan objek `McpSdkServerConfig` yang dapat diteruskan ke `ClaudeAgentOptions.mcp_servers`.

246 246 

247<h4 id="example">247<h4 id="example-1">

248 Contoh248 Contoh

249</h4>249</h4>

250 250 


289) -> list[SDKSessionInfo]289) -> list[SDKSessionInfo]

290```290```

291 291 

292<h4 id="parameters">292<h4 id="parameters-3">

293 Parameter293 Parameter

294</h4>294</h4>

295 295 


316| `tag` | `str \| None` | Tag sesi yang ditetapkan pengguna (lihat [`tag_session()`](#tag_session)) |316| `tag` | `str \| None` | Tag sesi yang ditetapkan pengguna (lihat [`tag_session()`](#tag_session)) |

317| `created_at` | `int \| None` | Waktu pembuatan sesi dalam milidetik sejak epoch |317| `created_at` | `int \| None` | Waktu pembuatan sesi dalam milidetik sejak epoch |

318 318 

319<h4 id="example">319<h4 id="example-2">

320 Contoh320 Contoh

321</h4>321</h4>

322 322 


344) -> list[SessionMessage]344) -> list[SessionMessage]

345```345```

346 346 

347<h4 id="parameters">347<h4 id="parameters-4">

348 Parameter348 Parameter

349</h4>349</h4>

350 350 


367| `message` | `Any` | Konten pesan mentah |367| `message` | `Any` | Konten pesan mentah |

368| `parent_tool_use_id` | `None` | Dicadangkan untuk penggunaan di masa depan |368| `parent_tool_use_id` | `None` | Dicadangkan untuk penggunaan di masa depan |

369 369 

370<h4 id="example">370<h4 id="example-3">

371 Contoh371 Contoh

372</h4>372</h4>

373 373 


394) -> SDKSessionInfo | None394) -> SDKSessionInfo | None

395```395```

396 396 

397<h4 id="parameters">397<h4 id="parameters-5">

398 Parameter398 Parameter

399</h4>399</h4>

400 400 


405 405 

406Mengembalikan [`SDKSessionInfo`](#return-type-sdksessioninfo), atau `None` jika sesi tidak ditemukan.406Mengembalikan [`SDKSessionInfo`](#return-type-sdksessioninfo), atau `None` jika sesi tidak ditemukan.

407 407 

408<h4 id="example">408<h4 id="example-4">

409 Contoh409 Contoh

410</h4>410</h4>

411 411 


433) -> None433) -> None

434```434```

435 435 

436<h4 id="parameters">436<h4 id="parameters-6">

437 Parameter437 Parameter

438</h4>438</h4>

439 439 


445 445 

446Menimbulkan `ValueError` jika `session_id` bukan UUID yang valid atau `title` kosong; `FileNotFoundError` jika sesi tidak dapat ditemukan.446Menimbulkan `ValueError` jika `session_id` bukan UUID yang valid atau `title` kosong; `FileNotFoundError` jika sesi tidak dapat ditemukan.

447 447 

448<h4 id="example">448<h4 id="example-5">

449 Contoh449 Contoh

450</h4>450</h4>

451 451 


473) -> None473) -> None

474```474```

475 475 

476<h4 id="parameters">476<h4 id="parameters-7">

477 Parameter477 Parameter

478</h4>478</h4>

479 479 


485 485 

486Menimbulkan `ValueError` jika `session_id` bukan UUID yang valid atau `tag` kosong setelah sanitasi; `FileNotFoundError` jika sesi tidak dapat ditemukan.486Menimbulkan `ValueError` jika `session_id` bukan UUID yang valid atau `tag` kosong setelah sanitasi; `FileNotFoundError` jika sesi tidak dapat ditemukan.

487 487 

488<h4 id="example">488<h4 id="example-6">

489 Contoh489 Contoh

490</h4>490</h4>

491 491 


910| `max_budget_usd` | `float \| None` | `None` | Hentikan query ketika estimasi biaya sisi klien mencapai nilai USD ini. Dibandingkan dengan estimasi yang sama seperti `total_cost_usd`; lihat [Track cost and usage](/id/agent-sdk/cost-tracking) untuk peringatan akurasi |910| `max_budget_usd` | `float \| None` | `None` | Hentikan query ketika estimasi biaya sisi klien mencapai nilai USD ini. Dibandingkan dengan estimasi yang sama seperti `total_cost_usd`; lihat [Track cost and usage](/id/agent-sdk/cost-tracking) untuk peringatan akurasi |

911| `disallowed_tools` | `list[str]` | `[]` | Tools untuk ditolak. Nama bare seperti `"Bash"` menghapus tool dari konteks Claude. Aturan scoped seperti `"Bash(rm *)"` membiarkan tool tersedia dan menolak panggilan yang cocok di setiap mode izin, termasuk `bypassPermissions`. Lihat [Permissions](/id/agent-sdk/permissions#allow-and-deny-rules) |911| `disallowed_tools` | `list[str]` | `[]` | Tools untuk ditolak. Nama bare seperti `"Bash"` menghapus tool dari konteks Claude. Aturan scoped seperti `"Bash(rm *)"` membiarkan tool tersedia dan menolak panggilan yang cocok di setiap mode izin, termasuk `bypassPermissions`. Lihat [Permissions](/id/agent-sdk/permissions#allow-and-deny-rules) |

912| `enable_file_checkpointing` | `bool` | `False` | Aktifkan pelacakan perubahan file untuk rewinding. Lihat [File checkpointing](/id/agent-sdk/file-checkpointing) |912| `enable_file_checkpointing` | `bool` | `False` | Aktifkan pelacakan perubahan file untuk rewinding. Lihat [File checkpointing](/id/agent-sdk/file-checkpointing) |

913| `model` | `str \| None` | `None` | Model Claude yang akan digunakan |913| `model` | `str \| None` | `None` | Alias model Claude atau nama model lengkap. Lihat [nilai yang diterima dan ID khusus penyedia](/id/model-config#available-models) |

914| `fallback_model` | `str \| None` | `None` | Model fallback yang akan digunakan jika model utama gagal |914| `fallback_model` | `str \| None` | `None` | Model fallback yang akan digunakan jika model utama gagal |

915| `betas` | `list[SdkBeta]` | `[]` | Fitur beta untuk diaktifkan. Lihat [`SdkBeta`](#sdkbeta) untuk opsi yang tersedia |915| `betas` | `list[SdkBeta]` | `[]` | Fitur beta untuk diaktifkan. Lihat [`SdkBeta`](#sdkbeta) untuk opsi yang tersedia |

916| `output_format` | `dict[str, Any] \| None` | `None` | Format output untuk respons terstruktur (misalnya, `{"type": "json_schema", "schema": {...}}`). Lihat [Structured outputs](/id/agent-sdk/structured-outputs) untuk detail |916| `output_format` | `dict[str, Any] \| None` | `None` | Format output untuk respons terstruktur (misalnya, `{"type": "json_schema", "schema": {...}}`). Lihat [Structured outputs](/id/agent-sdk/structured-outputs) untuk detail |


937| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Skills yang tersedia untuk sesi. Teruskan `"all"` untuk mengaktifkan setiap skill yang ditemukan, atau daftar nama skill. Ketika diatur, SDK secara otomatis menambahkan tool Skill ke `allowed_tools`. Jika Anda juga meneruskan `tools`, sertakan `"Skill"` dalam daftar itu. Lihat [Skills](/id/agent-sdk/skills) |937| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Skills yang tersedia untuk sesi. Teruskan `"all"` untuk mengaktifkan setiap skill yang ditemukan, atau daftar nama skill. Ketika diatur, SDK secara otomatis menambahkan tool Skill ke `allowed_tools`. Jika Anda juga meneruskan `tools`, sertakan `"Skill"` dalam daftar itu. Lihat [Skills](/id/agent-sdk/skills) |

938| `max_thinking_tokens` | `int \| None` | `None` | *Deprecated* - Token maksimal untuk blok thinking. Gunakan `thinking` sebagai gantinya |938| `max_thinking_tokens` | `int \| None` | `None` | *Deprecated* - Token maksimal untuk blok thinking. Gunakan `thinking` sebagai gantinya |

939| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Mengontrol perilaku extended thinking. Mengambil prioritas atas `max_thinking_tokens` |939| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Mengontrol perilaku extended thinking. Mengambil prioritas atas `max_thinking_tokens` |

940| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Tingkat usaha untuk kedalaman thinking |940| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Tingkat usaha untuk kedalaman thinking. Lihat [adjust the effort level](/id/model-config#adjust-effort-level) |

941| `session_store` | [`SessionStore`](/id/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Cerminkan transkrip sesi ke backend eksternal sehingga host apa pun dapat melanjutkannya. Lihat [Persist sessions to external storage](/id/agent-sdk/session-storage) |941| `session_store` | [`SessionStore`](/id/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Cerminkan transkrip sesi ke backend eksternal sehingga host apa pun dapat melanjutkannya. Lihat [Persist sessions to external storage](/id/agent-sdk/session-storage) |

942| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | Kapan membuang entri transkrip yang dicerminkan ke `session_store`. `"batched"` membuang sekali per putaran atau ketika buffer penuh; `"eager"` memicu pembilasan latar belakang setelah setiap frame. Diabaikan ketika `session_store` adalah `None` |942| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | Kapan membuang entri transkrip yang dicerminkan ke `session_store`. `"batched"` membuang sekali per putaran atau ketika buffer penuh; `"eager"` memicu pembilasan latar belakang setelah setiap frame. Diabaikan ketika `session_store` adalah `None` |

943 943 


960* `API_TIMEOUT_MS`: timeout per-permintaan pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagent.960* `API_TIMEOUT_MS`: timeout per-permintaan pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagent.

961* `CLAUDE_CODE_MAX_RETRIES`: maksimal retry API. Default `10`. Setiap retry mendapat jendela `API_TIMEOUT_MS` sendiri, jadi waktu dinding terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff.961* `CLAUDE_CODE_MAX_RETRIES`: maksimal retry API. Default `10`. Setiap retry mendapat jendela `API_TIMEOUT_MS` sendiri, jadi waktu dinding terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff.

962* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog stall untuk subagent yang diluncurkan dengan `run_in_background`. Default `600000`. Direset pada setiap event stream; pada stall itu membatalkan subagent, menandai tugas gagal, dan menampilkan error ke parent dengan hasil parsial apa pun. Tidak berlaku untuk subagent sinkron.962* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog stall untuk subagent yang diluncurkan dengan `run_in_background`. Default `600000`. Direset pada setiap event stream; pada stall itu membatalkan subagent, menandai tugas gagal, dan menampilkan error ke parent dengan hasil parsial apa pun. Tidak berlaku untuk subagent sinkron.

963* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: membatalkan permintaan ketika header telah tiba tetapi badan respons berhenti streaming. Dimatikan secara default. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Permintaan yang dibatalkan melalui jalur retry normal.963* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: membatalkan permintaan ketika header telah tiba tetapi badan respons berhenti streaming. Ketika `CLAUDE_ENABLE_STREAM_WATCHDOG` tidak diatur, default adalah server-controlled pada Anthropic API langsung dan off pada penyedia lain. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Permintaan yang dibatalkan melalui jalur retry normal.

964 964 

965<h3 id="outputformat">965<h3 id="outputformat">

966 `OutputFormat`966 `OutputFormat`


1013```1013```

1014 1014 

1015| Nilai | Deskripsi | Lokasi |1015| Nilai | Deskripsi | Lokasi |

1016| :---------- | :--------------------------------------------- | :---------------------------- |1016| :---------- | :------------------------------------------------- | :---------------------------- |

1017| `"user"` | Pengaturan pengguna global | `~/.claude/settings.json` |1017| `"user"` | Pengaturan pengguna global | `~/.claude/settings.json` |

1018| `"project"` | Pengaturan proyek bersama (version controlled) | `.claude/settings.json` |1018| `"project"` | Pengaturan proyek bersama (version controlled) | `.claude/settings.json` |

1019| `"local"` | Pengaturan proyek lokal (gitignored) | `.claude/settings.local.json` |1019| `"local"` | Pengaturan proyek lokal (tidak version controlled) | `.claude/settings.local.json` |

1020 1020 

1021<h4 id="default-behavior">1021<h4 id="default-behavior">

1022 Perilaku default1022 Perilaku default


1160```1160```

1161 1161 

1162| Field | Diperlukan | Deskripsi |1162| Field | Diperlukan | Deskripsi |

1163| :---------------- | :--------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1163| :---------------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1164| `description` | Ya | Deskripsi bahasa alami tentang kapan menggunakan agent ini |1164| `description` | Ya | Deskripsi bahasa alami tentang kapan menggunakan agent ini |

1165| `prompt` | Ya | System prompt agent |1165| `prompt` | Ya | System prompt agent |

1166| `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi semua tools |1166| `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi semua tools |

1167| `disallowedTools` | Tidak | Array nama tool untuk dihapus dari set tool agent |1167| `disallowedTools` | Tidak | Array nama tool untuk dihapus dari set tool agent. Pola tingkat server MCP juga diterima: `mcp__server` atau `mcp__server__*` menghapus setiap tool dari server itu, dan `mcp__*` menghapus setiap tool MCP dari server apa pun |

1168| `model` | Tidak | Penggantian model untuk agent ini. Menerima alias seperti `"sonnet"`, `"opus"`, `"haiku"`, atau `"inherit"`, atau ID model lengkap. Jika dihilangkan, menggunakan model utama |1168| `model` | Tidak | Penggantian model untuk agent ini. Menerima alias seperti `"sonnet"`, `"opus"`, `"haiku"`, atau `"inherit"`, atau ID model lengkap. Jika dihilangkan, menggunakan model utama |

1169| `skills` | Tidak | Daftar nama skill untuk preload ke dalam konteks agent saat startup. Skill yang tidak terdaftar tetap dapat dipanggil melalui tool Skill |1169| `skills` | Tidak | Daftar nama skill untuk preload ke dalam konteks agent saat startup. Skill yang tidak terdaftar tetap dapat dipanggil melalui tool Skill |

1170| `memory` | Tidak | Sumber memori untuk agent ini: `"user"`, `"project"`, atau `"local"` |1170| `memory` | Tidak | Sumber memori untuk agent ini: `"user"`, `"project"`, atau `"local"` |


1189PermissionMode = Literal[1189PermissionMode = Literal[

1190 "default", # Standard permission behavior1190 "default", # Standard permission behavior

1191 "acceptEdits", # Auto-accept file edits1191 "acceptEdits", # Auto-accept file edits

1192 "plan", # Planning mode - read-only tools only1192 "plan", # Planning mode - explore without editing

1193 "dontAsk", # Deny anything not pre-approved instead of prompting1193 "dontAsk", # Deny anything not pre-approved instead of prompting

1194 "bypassPermissions", # Bypass all permission checks (use with caution)1194 "bypassPermissions", # Bypass permission checks; explicit ask rules still prompt (use with caution)

1195]1195]

1196```1196```

1197 1197 


1206 "low", # Minimal thinking, fastest responses1206 "low", # Minimal thinking, fastest responses

1207 "medium", # Moderate thinking1207 "medium", # Moderate thinking

1208 "high", # Deep reasoning1208 "high", # Deep reasoning

1209 "xhigh", # Extended reasoning (Opus 4.7 only; falls back to "high" on other models)1209 "xhigh", # Extended reasoning (Opus 4.8 and Opus 4.7; falls back to "high" on other models)

1210 "max", # Maximum effort1210 "max", # Maximum effort

1211]1211]

1212```1212```


1432Gunakan dengan field `betas` dalam `ClaudeAgentOptions` untuk mengaktifkan fitur beta.1432Gunakan dengan field `betas` dalam `ClaudeAgentOptions` untuk mengaktifkan fitur beta.

1433 1433 

1434<Warning>1434<Warning>

1435 Beta `context-1m-2025-08-07` sudah pensiun sejak 30 April 2026. Melewatkan header ini dengan Claude Sonnet 4.5 atau Sonnet 4 tidak berpengaruh, dan permintaan yang melebihi jendela konteks standar 200k-token mengembalikan error. Untuk menggunakan jendela konteks 1M-token, migrasikan ke [Claude Sonnet 4.6, Claude Opus 4.6, atau Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/overview), yang mencakup konteks 1M pada harga standar tanpa header beta yang diperlukan.1435 Beta `context-1m-2025-08-07` sudah pensiun sejak 30 April 2026. Melewatkan header ini dengan Claude Sonnet 4.5 atau Sonnet 4 tidak berpengaruh, dan permintaan yang melebihi jendela konteks standar 200k-token mengembalikan error. Untuk menggunakan jendela konteks 1M-token, migrasikan ke [Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, atau Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), yang mencakup konteks 1M pada harga standar tanpa header beta yang diperlukan.

1436</Warning>1436</Warning>

1437 1437 

1438<h3 id="mcpsdkserverconfig">1438<h3 id="mcpsdkserverconfig">


1706 uuid: str | None = None1706 uuid: str | None = None

1707```1707```

1708 1708 

1709Field `subtype` menentukan field mana yang lainnya diisi. Ini adalah salah satu dari `"success"`, `"error_during_execution"`, `"error_max_turns"`, `"error_max_budget_usd"`, atau `"error_max_structured_output_retries"`. Dataclass Python meratakan semua varian menjadi satu bentuk, jadi field yang tidak berlaku untuk subtype yang dikembalikan adalah `None`.

1710 

1711Beberapa field membawa detail diagnostik ketika percakapan berakhir dengan error:

1712 

1713* `is_error`: `True` ketika percakapan berakhir dalam status error. Selalu `True` pada subtype `error_*`. Pada `subtype="success"` ini adalah `True` ketika permintaan model terakhir gagal, berarti loop agen selesai tetapi panggilan API terakhir mengembalikan error.

1714* `api_error_status`: kode status HTTP dari error API yang mengakhiri. `None` ketika putaran berakhir tanpa satu. Diisi hanya pada `subtype="success"`.

1715* `result`: teks pesan asisten terakhir pada `subtype="success"`, atau `None` pada subtype `error_*`. Ketika `subtype="success"` dan `is_error=True`, ini menyimpan string error API jika tersedia tetapi dapat kosong, jadi periksa `api_error_status` dan konten `AssistantMessage` sebelumnya untuk detail.

1716* `errors`: string error tingkat loop seperti pesan max-turns. Diisi hanya pada subtype `error_*`.

1717 

1709Dict `usage` berisi kunci berikut ketika ada:1718Dict `usage` berisi kunci berikut ketika ada:

1710 1719 

1711| Kunci | Tipe | Deskripsi |1720| Kunci | Tipe | Deskripsi |


3625 Atur `"failIfUnavailable": True` dalam pengaturan sandbox Anda untuk berhenti sebagai gantinya. Kunci belum dideklarasikan pada `SandboxSettings` namun, tetapi SDK meneruskannya ke Claude Code, yang menghormatinya. `query()` kemudian melaporkan `ResultMessage` dengan `subtype="error_during_execution"` dan alasannya dalam `errors`. Perhatikan subtype itu daripada mengharapkan `query()` untuk menaikkan sebelum menghasilkan pesan.3634 Atur `"failIfUnavailable": True` dalam pengaturan sandbox Anda untuk berhenti sebagai gantinya. Kunci belum dideklarasikan pada `SandboxSettings` namun, tetapi SDK meneruskannya ke Claude Code, yang menghormatinya. `query()` kemudian melaporkan `ResultMessage` dengan `subtype="error_during_execution"` dan alasannya dalam `errors`. Perhatikan subtype itu daripada mengharapkan `query()` untuk menaikkan sebelum menghasilkan pesan.

3626</Note>3635</Note>

3627 3636 

3628<h4 id="example-usage">3637<h4 id="example-usage-1">

3629 Contoh penggunaan3638 Contoh penggunaan

3630</h4>3639</h4>

3631 3640 

Details

340**Permission modes** mengontrol berapa banyak pengawasan manusia yang Anda inginkan:340**Permission modes** mengontrol berapa banyak pengawasan manusia yang Anda inginkan:

341 341 

342| Mode | Perilaku | Kasus penggunaan |342| Mode | Perilaku | Kasus penggunaan |

343| ------------------------ | ------------------------------------------------------------------------------------- | --------------------------------------------------- |343| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |

344| `acceptEdits` | Auto-persetujuan pengeditan file dan perintah sistem file umum, meminta tindakan lain | Alur kerja pengembangan terpercaya |344| `acceptEdits` | Auto-persetujuan pengeditan file dan perintah sistem file umum, meminta tindakan lain | Alur kerja pengembangan terpercaya |

345| `dontAsk` | Menolak apa pun yang tidak ada di `allowedTools` | Agen headless terkunci |345| `dontAsk` | Menolak apa pun yang tidak ada di `allowedTools` | Agen headless terkunci |

346| `auto` (TypeScript only) | Pengklasifikasi model menyetujui atau menolak setiap panggilan alat | Agen otonom dengan penjaga keamanan |346| `auto` (TypeScript only) | Pengklasifikasi model menyetujui atau menolak setiap panggilan alat | Agen otonom dengan penjaga keamanan |

347| `bypassPermissions` | Menjalankan setiap alat tanpa prompt | CI sandboxed, lingkungan yang sepenuhnya terpercaya |347| `bypassPermissions` | Menjalankan setiap alat tanpa prompt, kecuali aturan [`ask`](/id/agent-sdk/permissions#how-permissions-are-evaluated) eksplisit cocok | CI sandboxed, lingkungan yang sepenuhnya terpercaya |

348| `default` | Memerlukan callback `canUseTool` untuk menangani persetujuan | Alur persetujuan kustom |348| `default` | Memerlukan callback `canUseTool` untuk menangani persetujuan | Alur persetujuan kustom |

349 349 

350Contoh di atas menggunakan mode `acceptEdits`, yang auto-persetujuan operasi file sehingga agen dapat berjalan tanpa prompt interaktif. Jika Anda ingin meminta pengguna untuk persetujuan, gunakan mode `default` dan sediakan callback [`canUseTool`](/id/agent-sdk/user-input) yang mengumpulkan input pengguna. Untuk kontrol lebih lanjut, lihat [Permissions](/id/agent-sdk/permissions).350Contoh di atas menggunakan mode `acceptEdits`, yang auto-persetujuan operasi file sehingga agen dapat berjalan tanpa prompt interaktif. Jika Anda ingin meminta pengguna untuk persetujuan, gunakan mode `default` dan sediakan callback [`canUseTool`](/id/agent-sdk/user-input) yang mengumpulkan input pengguna. Untuk kontrol lebih lanjut, lihat [Permissions](/id/agent-sdk/permissions).

Details

150 ```150 ```

151</CodeGroup>151</CodeGroup>

152 152 

153Kueri kedua mencetak ringkasan file dari kueri pertama, yang menunjukkan bahwa agen melanjutkan dengan konteks penuh dari penyimpanan.

154 

153<h2 id="write-your-own-adapter">155<h2 id="write-your-own-adapter">

154 Tulis adaptor Anda sendiri156 Tulis adaptor Anda sendiri

155</h2>157</h2>

Details

230 ```230 ```

231 231 

232 ```typescript TypeScript theme={null}232 ```typescript TypeScript theme={null}

233 import { query } from "@anthropic-ai/claude-agent-sdk";

234 

235 const sessionId = "..."; // The ID you captured in the previous example

236 

233 // Earlier session analyzed the code; now build on that analysis237 // Earlier session analyzed the code; now build on that analysis

234 for await (const message of query({238 for await (const message of query({

235 prompt: "Now implement the refactoring you suggested",239 prompt: "Now implement the refactoring you suggested",


245 ```249 ```

246</CodeGroup>250</CodeGroup>

247 251 

252Anda seharusnya melihat respons yang dibangun atas analisis sebelumnya alih-alih memulai dari awal. Itu mengkonfirmasi bahwa agen melanjutkan sesi dengan konteks sebelumnya tetap utuh.

253 

248<Tip>254<Tip>

249 Jika panggilan `resume` mengembalikan sesi segar alih-alih riwayat yang diharapkan, penyebab paling umum adalah `cwd` yang tidak cocok. Sesi disimpan di bawah `~/.claude/projects/<encoded-cwd>/*.jsonl`, di mana `<encoded-cwd>` adalah direktori kerja absolut dengan setiap karakter non-alfanumerik diganti dengan `-` (jadi `/Users/me/proj` menjadi `-Users-me-proj`). Jika panggilan resume Anda berjalan dari direktori berbeda, SDK mencari di tempat yang salah. File sesi juga perlu ada di mesin saat ini.255 Jika panggilan `resume` mengembalikan sesi segar alih-alih riwayat yang diharapkan, penyebab paling umum adalah `cwd` yang tidak cocok. Sesi disimpan di bawah `~/.claude/projects/<encoded-cwd>/*.jsonl`, atau di bawah `$CLAUDE_CONFIG_DIR/projects/<encoded-cwd>/*.jsonl` jika Anda menetapkan variabel lingkungan `CLAUDE_CONFIG_DIR`, di mana `<encoded-cwd>` adalah direktori kerja absolut dengan setiap karakter non-alfanumerik diganti dengan `-` (jadi `/Users/me/proj` menjadi `-Users-me-proj`). Jika panggilan resume Anda berjalan dari direktori berbeda, SDK mencari di tempat yang salah. File sesi juga perlu ada di mesin saat ini.

250</Tip>256</Tip>

251 257 

252Untuk melanjutkan sesi di seluruh mesin atau di lingkungan serverless, cerminkan transkrip ke penyimpanan bersama dengan adaptor [`SessionStore`](/id/agent-sdk/session-storage).258Untuk melanjutkan sesi di seluruh mesin atau di lingkungan serverless, cerminkan transkrip ke penyimpanan bersama dengan adaptor [`SessionStore`](/id/agent-sdk/session-storage).


268 # Fork: branch from session_id into a new session274 # Fork: branch from session_id into a new session

269 forked_id = None275 forked_id = None

270 async for message in query(276 async for message in query(

271 prompt="Instead of JWT, implement OAuth2 for the auth module",277 prompt="Instead of JWT, outline how OAuth2 would work for the auth module",

272 options=ClaudeAgentOptions(278 options=ClaudeAgentOptions(

273 resume=session_id,279 resume=session_id,

274 fork_session=True,280 fork_session=True,

281 max_turns=5,

275 ),282 ),

276 ):283 ):

277 if isinstance(message, ResultMessage):284 if isinstance(message, ResultMessage):


291 ```298 ```

292 299 

293 ```typescript TypeScript theme={null}300 ```typescript TypeScript theme={null}

301 import { query } from "@anthropic-ai/claude-agent-sdk";

302 

303 const sessionId = "..."; // The ID you captured in the previous example

304 

294 // Fork: branch from sessionId into a new session305 // Fork: branch from sessionId into a new session

295 let forkedId: string | undefined;306 let forkedId: string | undefined;

296 307 

297 for await (const message of query({308 for await (const message of query({

298 prompt: "Instead of JWT, implement OAuth2 for the auth module",309 prompt: "Instead of JWT, outline how OAuth2 would work for the auth module",

299 options: {310 options: {

300 resume: sessionId,311 resume: sessionId,

301 forkSession: true312 forkSession: true,

313 maxTurns: 5

302 }314 }

303 })) {315 })) {

304 if (message.type === "system" && message.subtype === "init") {316 if (message.type === "system" && message.subtype === "init") {


323 ```335 ```

324</CodeGroup>336</CodeGroup>

325 337 

338Anda seharusnya melihat bahwa `forkedId` berbeda dari ID sesi asli. Melanjutkan sesi asli masih melanjutkan utas JWT, yang mengkonfirmasi bahwa fork tidak memodifikasi riwayat asli.

339 

326<h2 id="resume-across-hosts">340<h2 id="resume-across-hosts">

327 Lanjutkan di seluruh host341 Lanjutkan di seluruh host

328</h2>342</h2>

Details

9Secara default, Agent SDK menghasilkan objek `AssistantMessage` lengkap setelah Claude selesai menghasilkan setiap respons. Untuk menerima pembaruan inkremental saat teks dan tool calls dihasilkan, aktifkan partial message streaming dengan mengatur `include_partial_messages` (Python) atau `includePartialMessages` (TypeScript) ke `true` dalam opsi Anda.9Secara default, Agent SDK menghasilkan objek `AssistantMessage` lengkap setelah Claude selesai menghasilkan setiap respons. Untuk menerima pembaruan inkremental saat teks dan tool calls dihasilkan, aktifkan partial message streaming dengan mengatur `include_partial_messages` (Python) atau `includePartialMessages` (TypeScript) ke `true` dalam opsi Anda.

10 10 

11<Tip>11<Tip>

12 Halaman ini mencakup output streaming (menerima token secara real-time). Untuk input modes (cara Anda mengirim pesan), lihat [Send messages to agents](/id/agent-sdk/streaming-vs-single-mode). Anda juga dapat [stream responses using the Agent SDK via the CLI](/id/headless).12 Halaman ini mencakup output streaming (menerima token secara real-time). Untuk input modes (cara Anda mengirim pesan), lihat [Kirim pesan ke agents](/id/agent-sdk/streaming-vs-single-mode). Anda juga dapat [stream responses using the Agent SDK via the CLI](/id/headless).

13</Tip>13</Tip>

14 14 

15<h2 id="enable-streaming-output">15<h2 id="enable-streaming-output">


101 parent_tool_use_id: string | null;101 parent_tool_use_id: string | null;

102 uuid: UUID;102 uuid: UUID;

103 session_id: string;103 session_id: string;

104 ttft_ms?: number; // Time to first token in ms, present only on message_start events

104 };105 };

105 ```106 ```

106</CodeGroup>107</CodeGroup>


117| `message_stop` | Akhir pesan |118| `message_stop` | Akhir pesan |

118 119 

119<h2 id="message-flow">120<h2 id="message-flow">

120 Message flow121 Alur pesan

121</h2>122</h2>

122 123 

123Dengan partial messages diaktifkan, Anda menerima pesan dalam urutan ini:124Dengan partial messages diaktifkan, Anda menerima pesan dalam urutan ini:


399* **Structured output**: hasil JSON muncul hanya di `ResultMessage.structured_output` akhir, bukan sebagai streaming deltas. Lihat [structured outputs](/id/agent-sdk/structured-outputs) untuk detail.400* **Structured output**: hasil JSON muncul hanya di `ResultMessage.structured_output` akhir, bukan sebagai streaming deltas. Lihat [structured outputs](/id/agent-sdk/structured-outputs) untuk detail.

400 401 

401<h2 id="next-steps">402<h2 id="next-steps">

402 Next steps403 Langkah selanjutnya

403</h2>404</h2>

404 405 

405Sekarang bahwa Anda dapat stream teks dan tool calls secara real-time, jelajahi topik terkait ini:406Sekarang bahwa Anda dapat stream teks dan tool calls secara real-time, jelajahi topik terkait ini:

Details

218 ```218 ```

219</CodeGroup>219</CodeGroup>

220 220 

221<Note>

222 Dalam TypeScript SDK, jika generator pesan Anda melempar kesalahan, misalnya ketika file yang dibacanya hilang, aliran berakhir dengan kesalahan yang berbunyi `Claude Code process aborted by user` alih-alih kesalahan asli, jadi periksa kode di dalam generator Anda terlebih dahulu ketika Anda melihat pesan itu. Kesalahan juga dapat didahului oleh baris minified panjang dari sumber SDK bundel, jadi baca hingga akhir output untuk teks kesalahan.

223 

224 Dalam Python SDK, pengecualian generator dicatat pada tingkat debug dan sesi macet tanpa menaikkan, jadi jika sesi streaming tergantung tanpa output, aktifkan logging debug dan periksa generator Anda.

225</Note>

226 

221<h2 id="single-message-input">227<h2 id="single-message-input">

222 Single Message Input228 Single Message Input

223</h2>229</h2>


247 * Percakapan multi-turn alami253 * Percakapan multi-turn alami

248</Warning>254</Warning>

249 255 

250<h3 id="implementation-example">256Jika kueri berakhir dengan hasil kesalahan, seperti `error_max_turns`, panggilan `query()` pesan tunggal akan memunculkan kesalahan yang mencakup teks kegagalan setelah menghasilkan pesan hasil akhir, jadi bungkus loop dalam blok try jika kode Anda perlu melanjutkan. Lihat [Handle the result](/id/agent-sdk/agent-loop#handle-the-result) untuk subtipe hasil.

257 

258<h3 id="implementation-example-1">

251 Contoh Implementasi259 Contoh Implementasi

252</h3>260</h3>

253 261 

Details

98 import asyncio98 import asyncio

99 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage99 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

100 100 

101 # Tentukan bentuk data yang ingin Anda kembalikan101 // Tentukan bentuk data yang ingin Anda kembalikan

102 schema = {102 schema = {

103 "type": "object",103 "type": "object",

104 "properties": {104 "properties": {


117 output_format={"type": "json_schema", "schema": schema}117 output_format={"type": "json_schema", "schema": schema}

118 ),118 ),

119 ):119 ):

120 # Pesan hasil berisi structured_output dengan data yang divalidasi120 // Pesan hasil berisi structured_output dengan data yang divalidasi

121 if isinstance(message, ResultMessage) and message.structured_output:121 if isinstance(message, ResultMessage) and message.structured_output:

122 print(message.structured_output)122 print(message.structured_output)

123 # {'company_name': 'Anthropic', 'founded_year': 2021, 'headquarters': 'San Francisco, CA'}123 // {'company_name': 'Anthropic', 'founded_year': 2021, 'headquarters': 'San Francisco, CA'}

124 124 

125 125 

126 asyncio.run(main())126 asyncio.run(main())


245* `type`: Atur ke `"json_schema"` untuk output terstruktur245* `type`: Atur ke `"json_schema"` untuk output terstruktur

246* `schema`: Objek [JSON Schema](https://json-schema.org/understanding-json-schema/about) yang menentukan struktur output Anda. Anda dapat menghasilkan ini dari skema Zod dengan `z.toJSONSchema()` atau model Pydantic dengan `.model_json_schema()`246* `schema`: Objek [JSON Schema](https://json-schema.org/understanding-json-schema/about) yang menentukan struktur output Anda. Anda dapat menghasilkan ini dari skema Zod dengan `z.toJSONSchema()` atau model Pydantic dengan `.model_json_schema()`

247 247 

248SDK mendukung fitur JSON Schema standar termasuk semua tipe dasar (object, array, string, number, boolean, null), `enum`, `const`, `required`, objek bersarang, dan definisi `$ref`. Untuk daftar lengkap fitur yang didukung dan batasan, lihat [Batasan JSON Schema](https://platform.claude.com/docs/en/build-with-claude/structured-outputs#json-schema-limitations).248SDK mendukung fitur JSON Schema standar termasuk semua tipe dasar (object, array, string, number, boolean, null), `enum`, `const`, `required`, objek bersarang, dan definisi `$ref`. Untuk daftar lengkap fitur yang didukung dan batasan, lihat [Batasan JSON Schema](https://platform.claude.com/docs/id/build-with-claude/structured-outputs#json-schema-limitations).

249 249 

250<h2 id="example-todo-tracking-agent">250<h2 id="example-todo-tracking-agent">

251 Contoh: agen pelacakan TODO251 Contoh: agen pelacakan TODO


358 Penanganan kesalahan358 Penanganan kesalahan

359</h2>359</h2>

360 360 

361Pembuatan output terstruktur dapat gagal ketika agen tidak dapat menghasilkan JSON yang valid sesuai dengan skema Anda. Ini biasanya terjadi ketika skema terlalu kompleks untuk tugas, tugas itu sendiri ambigu, atau agen mencapai batas percobaan ulangnya mencoba memperbaiki kesalahan validasi.361Pembuatan output terstruktur dapat gagal ketika agen tidak dapat menghasilkan JSON yang valid sesuai dengan skema Anda. Ini biasanya terjadi ketika skema terlalu kompleks untuk tugas, tugas itu sendiri ambigu, atau agen mencapai batas percobaan ulangnya mencoba memperbaiki kesalahan validasi. Ini juga dapat terjadi tanpa ada kegagalan validasi: [fallback model](/id/model-config#automatic-model-fallback) dapat menarik kembali output yang sudah selesai di tengah aliran, dan jika tidak ada percobaan ulang yang menggantinya, jalannya berakhir dengan kesalahan yang sama. Periksa bidang `errors` pada pesan hasil untuk membedakan dua penyebab sebelum men-debug skema Anda.

362 362 

363Ketika kesalahan terjadi, pesan hasil memiliki `subtype` yang menunjukkan apa yang salah:363Ketika kesalahan terjadi, pesan hasil memiliki `subtype` yang menunjukkan apa yang salah:

364 364 

365| Subtype | Arti |365| Subtype | Arti |

366| ------------------------------------- | -------------------------------------------------------------------------- |366| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |

367| `success` | Output dihasilkan dan divalidasi dengan berhasil |367| `success` | Output dihasilkan dan divalidasi dengan berhasil |

368| `error_max_structured_output_retries` | Agen tidak dapat menghasilkan output yang valid setelah beberapa percobaan |368| `error_max_structured_output_retries` | Tidak ada output yang valid yang bertahan setelah beberapa percobaan (kegagalan validasi, atau penarikan fallback model tanpa percobaan ulang yang berhasil) |

369 369 

370Contoh di bawah ini memeriksa bidang `subtype` untuk menentukan apakah output dihasilkan dengan berhasil atau jika Anda perlu menangani kegagalan:370Contoh di bawah ini memeriksa bidang `subtype` untuk menentukan apakah output dihasilkan dengan berhasil atau jika Anda perlu menangani kegagalan:

371 371 

372<CodeGroup>372<CodeGroup>

373 ```typescript TypeScript theme={null}373 ```typescript TypeScript theme={null}

374 for await (const msg of query({374 for await (const msg of query({

375 prompt: "Ekstrak informasi kontak dari dokumen",375 prompt: "Extract contact info from the document",

376 options: {376 options: {

377 outputFormat: {377 outputFormat: {

378 type: "json_schema",378 type: "json_schema",


394 394 

395 ```python Python theme={null}395 ```python Python theme={null}

396 async for message in query(396 async for message in query(

397 prompt="Ekstrak informasi kontak dari dokumen",397 prompt="Extract contact info from the document",

398 options=ClaudeAgentOptions(398 options=ClaudeAgentOptions(

399 output_format={"type": "json_schema", "schema": contact_schema}399 output_format={"type": "json_schema", "schema": contact_schema}

400 ),400 ),

Details

41 Paralelisasi41 Paralelisasi

42</h3>42</h3>

43 43 

44Beberapa subagents dapat berjalan secara bersamaan, secara dramatis mempercepat alur kerja yang kompleks.44Beberapa subagents dapat berjalan secara bersamaan, sehingga subtask independen selesai dalam waktu yang paling lambat daripada jumlah dari semuanya.

45 45 

46**Contoh:** selama tinjauan kode, Anda dapat menjalankan subagents `style-checker`, `security-scanner`, dan `test-coverage` secara bersamaan, mengurangi waktu tinjauan dari menit menjadi detik.46**Contoh:** selama tinjauan kode, Anda dapat menjalankan subagents `style-checker`, `security-scanner`, dan `test-coverage` secara bersamaan, bukan secara berurutan.

47 47 

48<h3 id="specialized-instructions-and-knowledge">48<h3 id="specialized-instructions-and-knowledge">

49 Instruksi dan pengetahuan khusus49 Instruksi dan pengetahuan khusus


178</h3>178</h3>

179 179 

180| Field | Type | Required | Description |180| Field | Type | Required | Description |

181| :---------------- | :---------------------------------------------------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- |181| :---------------- | :---------------------------------------------------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

182| `description` | `string` | Yes | Deskripsi bahasa alami tentang kapan menggunakan agen ini |182| `description` | `string` | Yes | Deskripsi bahasa alami tentang kapan menggunakan agen ini |

183| `prompt` | `string` | Yes | Prompt sistem agen yang mendefinisikan peran dan perilakunya |183| `prompt` | `string` | Yes | Prompt sistem agen yang mendefinisikan peran dan perilakunya |

184| `tools` | `string[]` | No | Array nama alat yang diizinkan. Jika dihilangkan, mewarisi semua alat |184| `tools` | `string[]` | No | Array nama alat yang diizinkan. Jika dihilangkan, mewarisi semua alat |

185| `disallowedTools` | `string[]` | No | Array nama alat yang akan dihapus dari set alat agen |185| `disallowedTools` | `string[]` | No | Array nama alat yang akan dihapus dari set alat agen. Pola tingkat server MCP juga diterima: `mcp__server` atau `mcp__server__*` menghapus setiap alat dari server tersebut, dan `mcp__*` menghapus setiap alat MCP dari server apa pun |

186| `model` | `string` | No | Penggantian model untuk agen ini. Menerima alias seperti `'sonnet'`, `'opus'`, `'haiku'`, `'inherit'`, atau ID model lengkap. Default ke model utama jika dihilangkan |186| `model` | `string` | No | Penggantian model untuk agen ini. Menerima alias seperti `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'`, atau ID model lengkap. Default ke model utama jika dihilangkan |

187| `skills` | `string[]` | No | Daftar nama skill untuk dimuat sebelumnya ke dalam konteks agen saat startup. Skill yang tidak terdaftar tetap dapat dipanggil melalui alat Skill |187| `skills` | `string[]` | No | Daftar nama skill untuk dimuat sebelumnya ke dalam konteks agen saat startup. Skill yang tidak terdaftar tetap dapat dipanggil melalui alat Skill |

188| `memory` | `'user' \| 'project' \| 'local'` | No | Sumber memori untuk agen ini |188| `memory` | `'user' \| 'project' \| 'local'` | No | Sumber memori untuk agen ini |

189| `mcpServers` | `(string \| object)[]` | No | Server MCP yang tersedia untuk agen ini, berdasarkan nama atau konfigurasi inline |189| `mcpServers` | `(string \| object)[]` | No | Server MCP yang tersedia untuk agen ini, berdasarkan nama atau konfigurasi inline |

190| `initialPrompt` | `string` | No | Auto-submitted sebagai putaran pengguna pertama saat agen ini berjalan sebagai agen thread utama. Diabaikan saat agen dipanggil sebagai subagent |

190| `maxTurns` | `number` | No | Jumlah maksimum putaran agentic sebelum agen berhenti |191| `maxTurns` | `number` | No | Jumlah maksimum putaran agentic sebelum agen berhenti |

191| `background` | `boolean` | No | Jalankan agen ini sebagai tugas latar belakang non-blocking saat dipanggil |192| `background` | `boolean` | No | Jalankan agen ini sebagai tugas latar belakang non-blocking saat dipanggil |

192| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | No | Tingkat upaya penalaran untuk agen ini |193| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | No | Tingkat upaya penalaran untuk agen ini |


195Dalam Python SDK, nama field ini menggunakan camelCase untuk mencocokkan format wire. Lihat referensi [`AgentDefinition`](/id/agent-sdk/python#agentdefinition) untuk detail.196Dalam Python SDK, nama field ini menggunakan camelCase untuk mencocokkan format wire. Lihat referensi [`AgentDefinition`](/id/agent-sdk/python#agentdefinition) untuk detail.

196 197 

197<Note>198<Note>

198 Subagents tidak dapat menghasilkan subagents mereka sendiri. Jangan sertakan `Agent` dalam array `tools` subagent.199 {/* min-version: 2.1.172 */}Sejak Claude Code v2.1.172, subagents dapat menghasilkan subagents mereka sendiri. Subagent latar belakang lima level di bawah agen utama tidak dapat menghasilkan subagents lebih lanjut; subagents foreground dapat menghasilkan pada kedalaman apa pun. Untuk mencegah subagent menghasilkan yang lain, hilangkan `Agent` dari array `tools` atau tambahkan ke `disallowedTools`. Lihat [subagents bersarang](/id/sub-agents#spawn-nested-subagents) untuk aturan kedalaman lengkap.

199</Note>200</Note>

200 201 

201<h3 id="filesystem-based-definition-alternative">202<h3 id="filesystem-based-definition-alternative">


215Jendela konteks subagent dimulai segar (tidak ada percakapan parent) tetapi tidak kosong. Satu-satunya saluran dari parent ke subagent adalah string prompt alat Agent, jadi sertakan jalur file, pesan kesalahan, atau keputusan apa pun yang dibutuhkan subagent langsung dalam prompt itu.216Jendela konteks subagent dimulai segar (tidak ada percakapan parent) tetapi tidak kosong. Satu-satunya saluran dari parent ke subagent adalah string prompt alat Agent, jadi sertakan jalur file, pesan kesalahan, atau keputusan apa pun yang dibutuhkan subagent langsung dalam prompt itu.

216 217 

217| Subagent menerima | Subagent tidak menerima |218| Subagent menerima | Subagent tidak menerima |

218| :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------ |219| :---------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------ |

219| Prompt sistem sendiri (`AgentDefinition.prompt`) dan prompt alat Agent | Riwayat percakapan parent atau hasil alat |220| Prompt sistem sendiri (`AgentDefinition.prompt`) dan prompt alat Agent | Riwayat percakapan parent atau hasil alat |

220| Project CLAUDE.md (dimuat melalui `settingSources`) | Konten skill yang dimuat sebelumnya, kecuali terdaftar dalam `AgentDefinition.skills` |221| Project CLAUDE.md (dimuat melalui [`settingSources`](/id/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources)) | Konten skill yang dimuat sebelumnya, kecuali terdaftar dalam `AgentDefinition.skills` |

221| Definisi alat (diwarisi dari parent, atau subset dalam `tools`) | Prompt sistem parent |222| Definisi alat (diwarisi dari parent, atau subset dalam `tools`) | Prompt sistem parent |

222 223 

223<Note>224<Note>


336 Nama alat diubah dari `"Task"` menjadi `"Agent"` dalam Claude Code v2.1.63. Rilis SDK saat ini memancarkan `"Agent"` dalam blok `tool_use` tetapi masih menggunakan `"Task"` dalam daftar alat `system:init` dan dalam `result.permission_denials[].tool_name`. Memeriksa kedua nilai dalam `block.name` memastikan kompatibilitas di seluruh versi SDK.337 Nama alat diubah dari `"Task"` menjadi `"Agent"` dalam Claude Code v2.1.63. Rilis SDK saat ini memancarkan `"Agent"` dalam blok `tool_use` tetapi masih menggunakan `"Task"` dalam daftar alat `system:init` dan dalam `result.permission_denials[].tool_name`. Memeriksa kedua nilai dalam `block.name` memastikan kompatibilitas di seluruh versi SDK.

337</Note>338</Note>

338 339 

339Contoh ini mengulangi pesan yang dialirkan, mencatat ketika subagent dipanggil dan ketika pesan berikutnya berasal dari dalam konteks eksekusi subagent itu.340Struktur pesan berbeda antara SDK. Dalam Python, blok konten diakses langsung melalui `message.content`. Dalam TypeScript, `SDKAssistantMessage` membungkus pesan Claude API, jadi konten diakses melalui `message.message.content`.

340 341 

341<Note>342Contoh ini mengulangi pesan yang dialirkan, mencatat ketika subagent dipanggil dan ketika pesan berikutnya berasal dari dalam konteks eksekusi subagent itu.

342 Struktur pesan berbeda antara SDK. Dalam Python, blok konten diakses langsung melalui `message.content`. Dalam TypeScript, `SDKAssistantMessage` membungkus pesan Claude API, jadi konten diakses melalui `message.message.content`.

343</Note>

344 343 

345<CodeGroup>344<CodeGroup>

346 ```python Python theme={null}345 ```python Python theme={null}


427 426 

428Subagents dapat dilanjutkan untuk melanjutkan dari mana mereka berhenti. Subagents yang dilanjutkan mempertahankan riwayat percakapan lengkap mereka, termasuk semua panggilan alat sebelumnya, hasil, dan penalaran. Subagent melanjutkan tepat di mana ia berhenti daripada memulai segar.427Subagents dapat dilanjutkan untuk melanjutkan dari mana mereka berhenti. Subagents yang dilanjutkan mempertahankan riwayat percakapan lengkap mereka, termasuk semua panggilan alat sebelumnya, hasil, dan penalaran. Subagent melanjutkan tepat di mana ia berhenti daripada memulai segar.

429 428 

430Ketika subagent selesai, Claude menerima ID agennya dalam hasil alat Agent. Untuk melanjutkan subagent secara programatis:429Ketika subagent selesai, hasil alat Agent mencakup blok teks yang berisi `agentId: <id>`. Agen bawaan [`Explore` dan `Plan`](/id/sub-agents#built-in-subagents) adalah one-shot dan tidak mengembalikan `agentId`, jadi gunakan agen khusus atau `general-purpose` ketika Anda perlu melanjutkan. Untuk melanjutkan subagent secara programatis:

431 430 

4321. **Tangkap ID sesi**: Ekstrak `session_id` dari pesan selama query pertama4311. **Tangkap ID sesi**: Ekstrak `session_id` dari pesan selama query pertama

4332. **Ekstrak ID agen**: Parsing `agentId` dari konten pesan4322. **Ekstrak ID agen**: Parse `agentId` dari teks hasil alat Agent

4343. **Lanjutkan sesi**: Berikan `resume: sessionId` dalam opsi query kedua, dan sertakan ID agen dalam prompt Anda4333. **Lanjutkan sesi**: Berikan `resume: sessionId` dalam opsi query kedua, dan sertakan ID agen dalam prompt Anda

435 434 

436<Note>435<Note>

437 Anda harus melanjutkan sesi yang sama untuk mengakses transkrip subagent. Setiap panggilan `query()` memulai sesi baru secara default, jadi berikan `resume: sessionId` untuk melanjutkan dalam sesi yang sama.436 Anda harus melanjutkan sesi yang sama untuk mengakses transkrip subagent. Setiap panggilan `query()` memulai sesi baru secara default, jadi berikan `resume: sessionId` untuk melanjutkan dalam sesi yang sama.

438 437 

439 Jika Anda menggunakan agen khusus (bukan yang bawaan), Anda juga perlu memberikan definisi agen yang sama dalam parameter `agents` untuk kedua query.438 Ketika menggunakan agen khusus, berikan definisi agen yang sama dalam parameter `agents` untuk kedua query.

440</Note>439</Note>

441 440 

442Contoh di bawah mendemonstrasikan alur ini: query pertama menjalankan subagent dan menangkap ID sesi dan ID agen, kemudian query kedua melanjutkan sesi untuk mengajukan pertanyaan tindak lanjut yang memerlukan konteks dari analisis pertama.441Contoh di bawah mendefinisikan agen khusus `endpoint-finder`. Query pertama menjalankannya dan menangkap ID sesi dan ID agen dari hasil alat Agent, kemudian query kedua melanjutkan sesi untuk mengajukan pertanyaan tindak lanjut yang memerlukan konteks dari analisis pertama.

443 442 

444<CodeGroup>443<CodeGroup>

445 ```typescript TypeScript theme={null}

446 import { query, type SDKMessage } from "@anthropic-ai/claude-agent-sdk";

447 

448 // Helper to extract agentId from message content

449 // Stringify to avoid traversing different block types (TextBlock, ToolResultBlock, etc.)

450 function extractAgentId(message: SDKMessage): string | undefined {

451 if (message.type !== "assistant" && message.type !== "user") return undefined;

452 // Stringify the content so we can search it without traversing nested blocks

453 const content = JSON.stringify(message.message.content);

454 const match = content.match(/agentId:\s*([a-f0-9-]+)/);

455 return match?.[1];

456 }

457 

458 let agentId: string | undefined;

459 let sessionId: string | undefined;

460 

461 // First invocation - use the Explore agent to find API endpoints

462 for await (const message of query({

463 prompt: "Use the Explore agent to find all API endpoints in this codebase",

464 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"] }

465 })) {

466 // Capture session_id from ResultMessage (needed to resume this session)

467 if ("session_id" in message) sessionId = message.session_id;

468 // Search message content for the agentId (appears in Agent tool results)

469 const extractedId = extractAgentId(message);

470 if (extractedId) agentId = extractedId;

471 // Print the final result

472 if ("result" in message) console.log(message.result);

473 }

474 

475 // Second invocation - resume and ask follow-up

476 if (agentId && sessionId) {

477 for await (const message of query({

478 prompt: `Resume agent ${agentId} and list the top 3 most complex endpoints`,

479 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"], resume: sessionId }

480 })) {

481 if ("result" in message) console.log(message.result);

482 }

483 }

484 ```

485 

486 ```python Python theme={null}444 ```python Python theme={null}

487 import asyncio445 import asyncio

488 import json

489 import re446 import re

490 from claude_agent_sdk import query, ClaudeAgentOptions447 from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition, ToolResultBlock

448 

449 AGENTS = {

450 "endpoint-finder": AgentDefinition(

451 description="Locates and catalogs API endpoints in a codebase.",

452 prompt="You find and document API endpoints. Report each endpoint's path, method, and handler.",

453 tools=["Read", "Grep", "Glob"],

454 )

455 }

491 456 

492 457 

493 def extract_agent_id(text: str) -> str | None:458 def extract_agent_id(block: ToolResultBlock) -> str | None:

494 """Extract agentId from Agent tool result text."""459 """Extract agentId from an Agent tool result's text content."""

495 match = re.search(r"agentId:\s*([a-f0-9-]+)", text)460 parts = block.content if isinstance(block.content, list) else [{"text": block.content}]

496 return match.group(1) if match else None461 for part in parts:

462 if match := re.search(r"agentId:\s*([\w-]+)", part.get("text") or ""):

463 return match.group(1)

464 return None

497 465 

498 466 

499 async def main():467 async def main():

500 agent_id = None468 agent_id = None

501 session_id = None469 session_id = None

502 470 

503 # First invocation - use the Explore agent to find API endpoints471 # First invocation - run the endpoint-finder subagent

504 async for message in query(472 async for message in query(

505 prompt="Use the Explore agent to find all API endpoints in this codebase",473 prompt="Use the endpoint-finder agent to find all API endpoints in this codebase",

506 options=ClaudeAgentOptions(allowed_tools=["Read", "Grep", "Glob", "Agent"]),474 options=ClaudeAgentOptions(allowed_tools=["Read", "Grep", "Glob", "Agent"], agents=AGENTS),

507 ):475 ):

508 # Capture session_id from ResultMessage (needed to resume this session)476 # Capture session_id from ResultMessage (needed to resume this session)

509 if hasattr(message, "session_id"):477 if hasattr(message, "session_id"):

510 session_id = message.session_id478 session_id = message.session_id

511 # Search message content for the agentId (appears in Agent tool results)479 # Search tool results for the agentId trailer

512 if hasattr(message, "content"):480 for block in getattr(message, "content", None) or []:

513 # Stringify the content so we can search it without traversing nested blocks481 if isinstance(block, ToolResultBlock):

514 content_str = json.dumps(message.content, default=str)482 agent_id = extract_agent_id(block) or agent_id

515 extracted = extract_agent_id(content_str)

516 if extracted:

517 agent_id = extracted

518 # Print the final result483 # Print the final result

519 if hasattr(message, "result"):484 if hasattr(message, "result"):

520 print(message.result)485 print(message.result)


524 async for message in query(489 async for message in query(

525 prompt=f"Resume agent {agent_id} and list the top 3 most complex endpoints",490 prompt=f"Resume agent {agent_id} and list the top 3 most complex endpoints",

526 options=ClaudeAgentOptions(491 options=ClaudeAgentOptions(

527 allowed_tools=["Read", "Grep", "Glob", "Agent"], resume=session_id492 allowed_tools=["Read", "Grep", "Glob", "Agent"], agents=AGENTS, resume=session_id

528 ),493 ),

529 ):494 ):

530 if hasattr(message, "result"):495 if hasattr(message, "result"):


533 498 

534 asyncio.run(main())499 asyncio.run(main())

535 ```500 ```

501 

502 ```typescript TypeScript theme={null}

503 import { query, type SDKMessage } from "@anthropic-ai/claude-agent-sdk";

504 

505 const agents = {

506 "endpoint-finder": {

507 description: "Locates and catalogs API endpoints in a codebase.",

508 prompt: "You find and document API endpoints. Report each endpoint's path, method, and handler.",

509 tools: ["Read", "Grep", "Glob"]

510 }

511 };

512 

513 // Stringify content to search for agentId without traversing nested block types

514 function extractAgentId(message: SDKMessage): string | undefined {

515 if (message.type !== "assistant" && message.type !== "user") return undefined;

516 const content = JSON.stringify(message.message.content);

517 const match = content.match(/agentId:\s*([\w-]+)/);

518 return match?.[1];

519 }

520 

521 let agentId: string | undefined;

522 let sessionId: string | undefined;

523 

524 // First invocation - run the endpoint-finder subagent

525 for await (const message of query({

526 prompt: "Use the endpoint-finder agent to find all API endpoints in this codebase",

527 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"], agents }

528 })) {

529 // Capture session_id from ResultMessage (needed to resume this session)

530 if ("session_id" in message) sessionId = message.session_id;

531 // Search message content for the agentId (appears in Agent tool results)

532 const extractedId = extractAgentId(message);

533 if (extractedId) agentId = extractedId;

534 // Print the final result

535 if ("result" in message) console.log(message.result);

536 }

537 

538 // Second invocation - resume and ask follow-up

539 if (agentId && sessionId) {

540 for await (const message of query({

541 prompt: `Resume agent ${agentId} and list the top 3 most complex endpoints`,

542 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"], agents, resume: sessionId }

543 })) {

544 if ("result" in message) console.log(message.result);

545 }

546 }

547 ```

536</CodeGroup>548</CodeGroup>

537 549 

538Transkrip subagent bertahan secara independen dari percakapan utama:550Transkrip subagent bertahan secara independen dari percakapan utama:


541* **Persistensi sesi**: Transkrip subagent bertahan dalam sesi mereka. Anda dapat melanjutkan subagent setelah memulai ulang Claude Code dengan melanjutkan sesi yang sama.553* **Persistensi sesi**: Transkrip subagent bertahan dalam sesi mereka. Anda dapat melanjutkan subagent setelah memulai ulang Claude Code dengan melanjutkan sesi yang sama.

542* **Pembersihan otomatis**: Transkrip dibersihkan berdasarkan pengaturan `cleanupPeriodDays` (default: 30 hari).554* **Pembersihan otomatis**: Transkrip dibersihkan berdasarkan pengaturan `cleanupPeriodDays` (default: 30 hari).

543 555 

544<h2 id="tool-restrictions">556<h2 id="tool-restrictions-1">

545 Pembatasan alat557 Pembatasan alat

546</h2>558</h2>

547 559 

Details

217| Bentuk item: `{ content, status, activeForm }` | Input `TaskCreate`: `{ subject, description, activeForm?, metadata? }`. Input `TaskUpdate`: `{ taskId, status?, subject?, description?, activeForm?, addBlocks?, addBlockedBy?, owner?, metadata? }`. `status` adalah `"pending"`, `"in_progress"`, atau `"completed"`; atur `status: "deleted"` untuk menghapus |217| Bentuk item: `{ content, status, activeForm }` | Input `TaskCreate`: `{ subject, description, activeForm?, metadata? }`. Input `TaskUpdate`: `{ taskId, status?, subject?, description?, activeForm?, addBlocks?, addBlockedBy?, owner?, metadata? }`. `status` adalah `"pending"`, `"in_progress"`, atau `"completed"`; atur `status: "deleted"` untuk menghapus |

218| Render `block.input.todos` secara langsung | Akumulasi item di seluruh panggilan, atau baca snapshot dari hasil alat `TaskList` |218| Render `block.input.todos` secara langsung | Akumulasi item di seluruh panggilan, atau baca snapshot dari hasil alat `TaskList` |

219 219 

220ID tugas yang ditugaskan tidak ada dalam input `TaskCreate`. Ini kembali dalam `tool_result` yang cocok sebagai `{ task: { id, subject } }`, jadi tangkap dari blok hasil untuk mengunci peta Anda. Contoh berikut menunjukkan perubahan minimal ke loop [Memantau Perubahan Todo](#monitoring-todo-changes). Untuk merender daftar lengkap, pantau hasil alat `TaskList` dalam aliran atau akumulasi hasil `TaskCreate` dan input `TaskUpdate` ke dalam peta:220ID tugas yang ditugaskan tidak ada dalam input `TaskCreate`. Ini kembali dalam `tool_result` yang cocok sebagai `{ task: { id, subject } }`, jadi tangkap dari blok hasil untuk mengunci peta Anda. Contoh berikut menunjukkan perubahan minimal ke loop [Memantau Perubahan Todo](#monitoring-todo-changes). Untuk merender daftar lengkap, pantau hasil alat `TaskList` dalam aliran atau akumulasi hasil `TaskCreate` dan input `TaskUpdate` ke dalam peta.

221 

222Input `tool_use` yang dialirkan adalah bentuk mentah yang dipancarkan model. Claude Code memperbaiki beberapa nama kunci yang hampir-tetapi-tidak-benar sebelum eksekusi, memetakan `id` atau `task_id` ke `taskId` dan `active_form` ke `activeForm`, tetapi perbaikan itu tidak tercermin dalam aliran. Baca bidang input `TaskUpdate` secara defensif, seperti yang dilakukan sampel di bawah ini, daripada mengasumsikan nama kanonik selalu ada.

221 223 

222<CodeGroup>224<CodeGroup>

223 ```typescript TypeScript theme={null}225 ```typescript TypeScript theme={null}


233 const input = block.input as { subject: string };235 const input = block.input as { subject: string };

234 console.log(`+ ${input.subject}`);236 console.log(`+ ${input.subject}`);

235 } else if (block.name === "TaskUpdate") {237 } else if (block.name === "TaskUpdate") {

236 const input = block.input as { taskId: string; status?: string };238 const input = block.input as {

237 if (input.status) console.log(` ${input.taskId} -> ${input.status}`);239 taskId?: string;

240 id?: string;

241 task_id?: string;

242 status?: string;

243 };

244 const taskId = input.taskId ?? input.id ?? input.task_id;

245 if (taskId && input.status) console.log(` ${taskId} -> ${input.status}`);

238 }246 }

239 }247 }

240 }248 }


254 if block.name == "TaskCreate":262 if block.name == "TaskCreate":

255 print(f"+ {block.input['subject']}")263 print(f"+ {block.input['subject']}")

256 elif block.name == "TaskUpdate" and block.input.get("status"):264 elif block.name == "TaskUpdate" and block.input.get("status"):

257 print(f" {block.input['taskId']} -> {block.input['status']}")265 task_id = (

266 block.input.get("taskId")

267 or block.input.get("id")

268 or block.input.get("task_id")

269 )

270 if task_id:

271 print(f" {task_id} -> {block.input['status']}")

258 ```272 ```

259</CodeGroup>273</CodeGroup>

260 274 

Details

100}): Promise<WarmQuery>;100}): Promise<WarmQuery>;

101```101```

102 102 

103<h4 id="parameters">103<h4 id="parameters-1">

104 Parameter104 Parameter

105</h4>105</h4>

106 106 


109| `options` | [`Options`](#options) | Objek konfigurasi opsional. Sama dengan parameter `options` ke `query()` |109| `options` | [`Options`](#options) | Objek konfigurasi opsional. Sama dengan parameter `options` ke `query()` |

110| `initializeTimeoutMs` | `number` | Waktu maksimum dalam milidetik untuk menunggu inisialisasi subprocess. Default ke `60000`. Jika inisialisasi tidak selesai tepat waktu, promise ditolak dengan error timeout |110| `initializeTimeoutMs` | `number` | Waktu maksimum dalam milidetik untuk menunggu inisialisasi subprocess. Default ke `60000`. Jika inisialisasi tidak selesai tepat waktu, promise ditolak dengan error timeout |

111 111 

112<h4 id="returns">112<h4 id="returns-1">

113 Pengembalian113 Pengembalian

114</h4>114</h4>

115 115 


149): SdkMcpToolDefinition<Schema>;149): SdkMcpToolDefinition<Schema>;

150```150```

151 151 

152<h4 id="parameters">152<h4 id="parameters-2">

153 Parameter153 Parameter

154</h4>154</h4>

155 155 


204}): McpSdkServerConfigWithInstance;204}): McpSdkServerConfigWithInstance;

205```205```

206 206 

207<h4 id="parameters">207<h4 id="parameters-3">

208 Parameter208 Parameter

209</h4>209</h4>

210 210 


224function listSessions(options?: ListSessionsOptions): Promise<SDKSessionInfo[]>;224function listSessions(options?: ListSessionsOptions): Promise<SDKSessionInfo[]>;

225```225```

226 226 

227<h4 id="parameters">227<h4 id="parameters-4">

228 Parameter228 Parameter

229</h4>229</h4>

230 230 


251| `tag` | `string \| undefined` | Tag sesi yang ditetapkan pengguna (lihat [`tagSession()`](#tagsession)) |251| `tag` | `string \| undefined` | Tag sesi yang ditetapkan pengguna (lihat [`tagSession()`](#tagsession)) |

252| `createdAt` | `number \| undefined` | Waktu pembuatan dalam milidetik sejak epoch, dari timestamp entri pertama |252| `createdAt` | `number \| undefined` | Waktu pembuatan dalam milidetik sejak epoch, dari timestamp entri pertama |

253 253 

254<h4 id="example">254<h4 id="example-1">

255 Contoh255 Contoh

256</h4>256</h4>

257 257 


280): Promise<SessionMessage[]>;280): Promise<SessionMessage[]>;

281```281```

282 282 

283<h4 id="parameters">283<h4 id="parameters-5">

284 Parameter284 Parameter

285</h4>285</h4>

286 286 


303| `message` | `unknown` | Payload pesan mentah dari transkrip |303| `message` | `unknown` | Payload pesan mentah dari transkrip |

304| `parent_tool_use_id` | `string \| null` | Untuk pesan subagent, `tool_use_id` dari panggilan tool `Agent` yang memicu. `null` untuk pesan sesi utama dan sesi yang lebih lama |304| `parent_tool_use_id` | `string \| null` | Untuk pesan subagent, `tool_use_id` dari panggilan tool `Agent` yang memicu. `null` untuk pesan sesi utama dan sesi yang lebih lama |

305 305 

306<h4 id="example">306<h4 id="example-2">

307 Contoh307 Contoh

308</h4>308</h4>

309 309 


337): Promise<SDKSessionInfo | undefined>;337): Promise<SDKSessionInfo | undefined>;

338```338```

339 339 

340<h4 id="parameters">340<h4 id="parameters-6">

341 Parameter341 Parameter

342</h4>342</h4>

343 343 


362): Promise<void>;362): Promise<void>;

363```363```

364 364 

365<h4 id="parameters">365<h4 id="parameters-7">

366 Parameter366 Parameter

367</h4>367</h4>

368 368 


386): Promise<void>;386): Promise<void>;

387```387```

388 388 

389<h4 id="parameters">389<h4 id="parameters-8">

390 Parameter390 Parameter

391</h4>391</h4>

392 392 


412): Promise<ResolvedSettings>;412): Promise<ResolvedSettings>;

413```413```

414 414 

415<h4 id="parameters">415<h4 id="parameters-9">

416 Parameter416 Parameter

417</h4>417</h4>

418 418 


437| `provenance` | `Partial<Record<keyof Settings, ProvenanceEntry>>` | Untuk setiap kunci tingkat atas dalam `effective`, sumber mana yang memasok nilai |437| `provenance` | `Partial<Record<keyof Settings, ProvenanceEntry>>` | Untuk setiap kunci tingkat atas dalam `effective`, sumber mana yang memasok nilai |

438| `sources` | `Array<{ source, settings, path?, policyOrigin? }>` | Pengaturan mentah per-sumber, diurutkan dari preseden terendah hingga tertinggi |438| `sources` | `Array<{ source, settings, path?, policyOrigin? }>` | Pengaturan mentah per-sumber, diurutkan dari preseden terendah hingga tertinggi |

439 439 

440<h4 id="example">440<h4 id="example-3">

441 Contoh441 Contoh

442</h4>442</h4>

443 443 


481| `debug` | `boolean` | `false` | Aktifkan mode debug untuk proses Claude Code |481| `debug` | `boolean` | `false` | Aktifkan mode debug untuk proses Claude Code |

482| `debugFile` | `string` | `undefined` | Tulis log debug ke jalur file tertentu. Secara implisit mengaktifkan mode debug |482| `debugFile` | `string` | `undefined` | Tulis log debug ke jalur file tertentu. Secara implisit mengaktifkan mode debug |

483| `disallowedTools` | `string[]` | `[]` | Tool untuk tolak. Nama bare seperti `"Bash"` menghapus tool dari konteks Claude. Aturan scoped seperti `"Bash(rm *)"` membiarkan tool tersedia dan menolak panggilan yang cocok dalam setiap mode izin, termasuk `bypassPermissions`. Lihat [Izin](/id/agent-sdk/permissions#allow-and-deny-rules) |483| `disallowedTools` | `string[]` | `[]` | Tool untuk tolak. Nama bare seperti `"Bash"` menghapus tool dari konteks Claude. Aturan scoped seperti `"Bash(rm *)"` membiarkan tool tersedia dan menolak panggilan yang cocok dalam setiap mode izin, termasuk `bypassPermissions`. Lihat [Izin](/id/agent-sdk/permissions#allow-and-deny-rules) |

484| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `'high'` | Mengontrol seberapa banyak usaha yang Claude masukkan ke dalam responsnya. Bekerja dengan pemikiran adaptif untuk memandu kedalaman pemikiran |484| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | Model default | Mengontrol seberapa banyak usaha yang Claude masukkan ke dalam responsnya. Bekerja dengan pemikiran adaptif untuk memandu kedalaman pemikiran. Lihat [sesuaikan tingkat usaha](/id/model-config#adjust-effort-level) |

485| `enableFileCheckpointing` | `boolean` | `false` | Aktifkan pelacakan perubahan file untuk rewinding. Lihat [File checkpointing](/id/agent-sdk/file-checkpointing) |485| `enableFileCheckpointing` | `boolean` | `false` | Aktifkan pelacakan perubahan file untuk rewinding. Lihat [File checkpointing](/id/agent-sdk/file-checkpointing) |

486| `env` | `Record<string, string \| undefined>` | `process.env` | Variabel lingkungan. Ketika diatur, ini mengganti lingkungan subprocess alih-alih menggabungkan dengan `process.env`, jadi lewatkan `{ ...process.env, YOUR_VAR: 'value' }` untuk menyimpan variabel yang diwariskan seperti `PATH`. Lihat [Tangani respons API yang lambat atau terhenti](#handle-slow-or-stalled-api-responses) untuk contoh pola ini, dan [Variabel lingkungan](/id/env-vars) untuk variabel yang dibaca CLI yang mendasarinya. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |486| `env` | `Record<string, string \| undefined>` | `process.env` | Variabel lingkungan. Ketika diatur, ini mengganti lingkungan subprocess alih-alih menggabungkan dengan `process.env`, jadi lewatkan `{ ...process.env, YOUR_VAR: 'value' }` untuk menyimpan variabel yang diwariskan seperti `PATH`. Lihat [Tangani respons API yang lambat atau terhenti](#handle-slow-or-stalled-api-responses) untuk contoh pola ini, dan [Variabel lingkungan](/id/env-vars) untuk variabel yang dibaca CLI yang mendasarinya. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |

487| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detected | Runtime JavaScript yang akan digunakan |487| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detected | Runtime JavaScript yang akan digunakan |


499| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan `thinking` sebagai gantinya. Token maksimum untuk proses pemikiran |499| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan `thinking` sebagai gantinya. Token maksimum untuk proses pemikiran |

500| `maxTurns` | `number` | `undefined` | Putaran agen maksimum (perjalanan round-trip penggunaan tool) |500| `maxTurns` | `number` | `undefined` | Putaran agen maksimum (perjalanan round-trip penggunaan tool) |

501| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Konfigurasi server MCP |501| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Konfigurasi server MCP |

502| `model` | `string` | Default dari CLI | Model Claude yang akan digunakan |502| `model` | `string` | Default dari CLI | Alias model Claude atau nama model lengkap. Lihat [nilai yang diterima dan ID khusus penyedia](/id/model-config#available-models) |

503| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback untuk menangani permintaan elicitation MCP. Dipanggil ketika server MCP meminta input pengguna dan tidak ada hook yang menanganinya terlebih dahulu. Ketika tidak disediakan, permintaan elicitation yang tidak ditangani secara otomatis ditolak |503| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback untuk menangani permintaan elicitation MCP. Dipanggil ketika server MCP meminta input pengguna dan tidak ada hook yang menanganinya terlebih dahulu. Ketika tidak disediakan, permintaan elicitation yang tidak ditangani secara otomatis ditolak |

504| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Tentukan format output untuk hasil agen. Lihat [Output terstruktur](/id/agent-sdk/structured-outputs) untuk detail |504| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Tentukan format output untuk hasil agen. Lihat [Output terstruktur](/id/agent-sdk/structured-outputs) untuk detail |

505| `outputStyle` | `string` | `undefined` | Bukan field `Options`. Atur `outputStyle` dalam objek [`settings`](/id/settings) inline atau file pengaturan sebagai gantinya. Lihat [Aktifkan output style](/id/agent-sdk/modifying-system-prompts#activate-an-output-style) |505| `outputStyle` | `string` | `undefined` | Bukan field `Options`. Atur `outputStyle` dalam objek [`settings`](/id/settings) inline atau file pengaturan sebagai gantinya. Lihat [Aktifkan output style](/id/agent-sdk/modifying-system-prompts#activate-an-output-style) |


553* `API_TIMEOUT_MS`: timeout per-request pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagen.553* `API_TIMEOUT_MS`: timeout per-request pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagen.

554* `CLAUDE_CODE_MAX_RETRIES`: maksimum retry API. Default `10`. Setiap retry mendapatkan jendela `API_TIMEOUT_MS` sendiri, jadi waktu dinding terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff.554* `CLAUDE_CODE_MAX_RETRIES`: maksimum retry API. Default `10`. Setiap retry mendapatkan jendela `API_TIMEOUT_MS` sendiri, jadi waktu dinding terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff.

555* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: stall watchdog untuk subagen yang diluncurkan dengan `run_in_background`. Default `600000`. Reset pada setiap event stream; pada stall itu membatalkan subagen, menandai tugas gagal, dan menampilkan error ke parent dengan hasil parsial apa pun. Tidak berlaku untuk subagen sinkron.555* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: stall watchdog untuk subagen yang diluncurkan dengan `run_in_background`. Default `600000`. Reset pada setiap event stream; pada stall itu membatalkan subagen, menandai tugas gagal, dan menampilkan error ke parent dengan hasil parsial apa pun. Tidak berlaku untuk subagen sinkron.

556* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: membatalkan request ketika header telah tiba tetapi body respons berhenti streaming. Dimatikan secara default. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Request yang dibatalkan melalui jalur retry normal.556* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: membatalkan request ketika header telah tiba tetapi body respons berhenti streaming. Ketika `CLAUDE_ENABLE_STREAM_WATCHDOG` tidak diatur, default adalah server-controlled pada API Anthropic langsung dan off pada penyedia lain. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Request yang dibatalkan melalui jalur retry normal.

557 557 

558<h3 id="query-object">558<h3 id="query-object">

559 Objek `Query`559 Objek `Query`


658}658}

659```659```

660 660 

661<h4 id="methods">661<h4 id="methods-1">

662 Metode662 Metode

663</h4>663</h4>

664 664 


717```717```

718 718 

719| Field | Diperlukan | Deskripsi |719| Field | Diperlukan | Deskripsi |

720| :------------------------------------ | :--------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |720| :------------------------------------ | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

721| `description` | Ya | Deskripsi bahasa alami tentang kapan menggunakan agen ini |721| `description` | Ya | Deskripsi bahasa alami tentang kapan menggunakan agen ini |

722| `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi semua tool dari parent. Untuk preload Skills ke dalam konteks agen, gunakan field `skills` daripada mencantumkan `'Skill'` di sini |722| `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi semua tool dari parent. Untuk preload Skills ke dalam konteks agen, gunakan field `skills` daripada mencantumkan `'Skill'` di sini |

723| `disallowedTools` | Tidak | Array nama tool untuk secara eksplisit tidak izinkan untuk agen ini |723| `disallowedTools` | Tidak | Array nama tool untuk secara eksplisit tidak izinkan untuk agen ini. Pola tingkat server MCP juga diterima: `mcp__server` atau `mcp__server__*` menghapus setiap tool dari server itu, dan `mcp__*` menghapus setiap tool MCP dari server apa pun |

724| `prompt` | Ya | Prompt sistem agen |724| `prompt` | Ya | Prompt sistem agen |

725| `model` | Tidak | Penggantian model untuk agen ini. Menerima alias seperti `'sonnet'`, `'opus'`, `'haiku'`, `'inherit'`, atau ID model lengkap. Jika dihilangkan atau `'inherit'`, menggunakan model utama |725| `model` | Tidak | Penggantian model untuk agen ini. Menerima alias seperti `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'`, atau ID model lengkap. Jika dihilangkan atau `'inherit'`, menggunakan model utama |

726| `mcpServers` | Tidak | Spesifikasi server MCP untuk agen ini |726| `mcpServers` | Tidak | Spesifikasi server MCP untuk agen ini |

727| `skills` | Tidak | Array nama skill untuk preload ke konteks agen |727| `skills` | Tidak | Array nama skill untuk preload ke konteks agen |

728| `initialPrompt` | Tidak | Auto-submitted sebagai putaran pengguna pertama ketika agen ini berjalan sebagai agen thread utama |728| `initialPrompt` | Tidak | Auto-submitted sebagai putaran pengguna pertama ketika agen ini berjalan sebagai agen thread utama |


756```756```

757 757 

758| Nilai | Deskripsi | Lokasi |758| Nilai | Deskripsi | Lokasi |

759| :---------- | :--------------------------------------------- | :---------------------------- |759| :---------- | :------------------------------------------------- | :---------------------------- |

760| `'user'` | Pengaturan pengguna global | `~/.claude/settings.json` |760| `'user'` | Pengaturan pengguna global | `~/.claude/settings.json` |

761| `'project'` | Pengaturan proyek bersama (version controlled) | `.claude/settings.json` |761| `'project'` | Pengaturan proyek bersama (version controlled) | `.claude/settings.json` |

762| `'local'` | Pengaturan proyek lokal (gitignored) | `.claude/settings.local.json` |762| `'local'` | Pengaturan proyek lokal (tidak version controlled) | `.claude/settings.local.json` |

763 763 

764<h4 id="default-behavior">764<h4 id="default-behavior">

765 Perilaku default765 Perilaku default


874type PermissionMode =874type PermissionMode =

875 | "default" // Perilaku izin standar875 | "default" // Perilaku izin standar

876 | "acceptEdits" // Auto-accept edit file876 | "acceptEdits" // Auto-accept edit file

877 | "bypassPermissions" // Bypass semua pemeriksaan izin877 | "bypassPermissions" // Bypass pemeriksaan izin; aturan ask eksplisit masih prompt

878 | "plan" // Mode perencanaan - tool read-only saja878 | "plan" // Mode perencanaan - jelajahi tanpa mengedit

879 | "dontAsk" // Jangan prompt untuk izin, tolak jika tidak pre-approved879 | "dontAsk" // Jangan prompt untuk izin, tolak jika tidak pre-approved

880 | "auto"; // Gunakan classifier model untuk approve atau deny setiap tool call880 | "auto"; // Gunakan classifier model untuk approve atau deny setiap tool call

881```881```


1035type SdkPluginConfig = {1035type SdkPluginConfig = {

1036 type: "local";1036 type: "local";

1037 path: string;1037 path: string;

1038 skipMcpDiscovery?: boolean;

1038};1039};

1039```1040```

1040 1041 

1041| Field | Tipe | Deskripsi |1042| Field | Tipe | Deskripsi |

1042| :----- | :-------- | :---------------------------------------------------------- |1043| :----------------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1043| `type` | `'local'` | Harus `'local'` (hanya plugin lokal yang saat ini didukung) |1044| `type` | `'local'` | Harus `'local'` (hanya plugin lokal yang saat ini didukung) |

1044| `path` | `string` | Jalur absolut atau relatif ke direktori plugin |1045| `path` | `string` | Jalur absolut atau relatif ke direktori plugin |

1046| `skipMcpDiscovery` | `boolean` | Ketika `true`, SDK memuat skills, hooks, agen, dan perintah dari plugin ini tetapi tidak membaca `.mcp.json` atau manifest `mcpServers` miliknya. Atur ini ketika aplikasi Anda memiliki koneksi MCP plugin. |

1045 1047 

1046**Contoh:**1048**Contoh:**

1047 1049 


1086 | SDKTaskProgressMessage1088 | SDKTaskProgressMessage

1087 | SDKTaskUpdatedMessage1089 | SDKTaskUpdatedMessage

1088 | SDKSessionStateChangedMessage1090 | SDKSessionStateChangedMessage

1091 | SDKWorkerShuttingDownMessage

1089 | SDKCommandsChangedMessage1092 | SDKCommandsChangedMessage

1090 | SDKNotificationMessage1093 | SDKNotificationMessage

1091 | SDKFilesPersistedEvent1094 | SDKFilesPersistedEvent


1096 | SDKPermissionDeniedMessage1099 | SDKPermissionDeniedMessage

1097 | SDKPromptSuggestionMessage1100 | SDKPromptSuggestionMessage

1098 | SDKAPIRetryMessage1101 | SDKAPIRetryMessage

1099 | SDKMirrorErrorMessage;1102 | SDKMirrorErrorMessage

1103 | SDKInformationalMessage;

1100```1104```

1101 1105 

1102<h3 id="sdkassistantmessage">1106<h3 id="sdkassistantmessage">


1183 result: string;1187 result: string;

1184 stop_reason: string | null;1188 stop_reason: string | null;

1185 ttft_ms?: number;1189 ttft_ms?: number;

1190 ttft_stream_ms?: number;

1186 total_cost_usd: number;1191 total_cost_usd: number;

1187 usage: NonNullableUsage;1192 usage: NonNullableUsage;

1188 modelUsage: { [modelName: string]: ModelUsage };1193 modelUsage: { [modelName: string]: ModelUsage };


1221Beberapa field pada hasil membawa detail diagnostik di luar `subtype`:1226Beberapa field pada hasil membawa detail diagnostik di luar `subtype`:

1222 1227 

1223* `api_error_status`: kode status HTTP dari kesalahan API yang mengakhiri percakapan. Tidak ada atau `null` ketika putaran berakhir tanpa kesalahan API.1228* `api_error_status`: kode status HTTP dari kesalahan API yang mengakhiri percakapan. Tidak ada atau `null` ketika putaran berakhir tanpa kesalahan API.

1224* `ttft_ms`: waktu ke token pertama dalam milidetik. Hadir hanya pada cabang kesuksesan.1229* `ttft_ms`: waktu ke token pertama dalam milidetik, diukur ketika pesan asisten pertama yang lengkap tiba. Hadir hanya pada cabang kesuksesan.

1230* `ttft_stream_ms`: waktu dalam milidetik hingga event aliran `message_start` pertama, ketika aliran respons dibuka. Lebih rendah dari `ttft_ms`; celah antara keduanya adalah waktu yang dihabiskan untuk streaming pesan pertama. Hadir hanya pada cabang kesuksesan.

1225* `terminal_reason`: mengapa loop berakhir. Salah satu dari `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, atau `"model_error"`.1231* `terminal_reason`: mengapa loop berakhir. Salah satu dari `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, atau `"model_error"`.

1226* `fast_mode_state`: salah satu dari `"on"`, `"off"`, atau `"cooldown"`.1232* `fast_mode_state`: salah satu dari `"on"`, `"off"`, atau `"cooldown"`.

1227 1233 


1273 parent_tool_use_id: string | null;1279 parent_tool_use_id: string | null;

1274 uuid: UUID;1280 uuid: UUID;

1275 session_id: string;1281 session_id: string;

1282 ttft_ms?: number; // Waktu ke token pertama dalam ms, hadir hanya pada event message_start

1276};1283};

1277```1284```

1278 1285 


1295};1302};

1296```1303```

1297 1304 

1305<h3 id="sdkinformationalmessage">

1306 `SDKInformationalMessage`

1307</h3>

1308 

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

1310 

1311```typescript theme={null}

1312type SDKInformationalMessage = {

1313 type: "system";

1314 subtype: "informational";

1315 content: string;

1316 level: "info" | "notice" | "suggestion" | "warning";

1317 tool_use_id?: string;

1318 prevent_continuation?: boolean;

1319 uuid: UUID;

1320 session_id: string;

1321};

1322```

1323 

1324<h3 id="sdkworkershuttingdownmessage">

1325 `SDKWorkerShuttingDownMessage`

1326</h3>

1327 

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

1329 

1330```typescript theme={null}

1331type SDKWorkerShuttingDownMessage = {

1332 type: "system";

1333 subtype: "worker_shutting_down";

1334 reason: string;

1335 uuid: UUID;

1336 session_id: string;

1337};

1338```

1339 

1298<h3 id="sdkplugininstallmessage">1340<h3 id="sdkplugininstallmessage">

1299 `SDKPluginInstallMessage`1341 `SDKPluginInstallMessage`

1300</h3>1342</h3>


1369type SDKMessageOrigin =1411type SDKMessageOrigin =

1370 | { kind: "human" }1412 | { kind: "human" }

1371 | { kind: "channel"; server: string }1413 | { kind: "channel"; server: string }

1372 | { kind: "peer"; from: string; name?: string }1414 | { kind: "peer"; from: string; name?: string; senderTaskId?: string }

1373 | { kind: "task-notification" }1415 | { kind: "task-notification" }

1374 | { kind: "coordinator" };1416 | { kind: "coordinator" }

1417 | { kind: "auto-continuation" };

1375```1418```

1376 1419 

1377| `kind` | Arti |1420| `kind` | Arti |

1378| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |1421| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1379| `human` | Input langsung dari pengguna akhir. Pada pesan pengguna, `origin` yang tidak ada juga berarti input manusia. |1422| `human` | Input langsung dari pengguna akhir. Pada pesan pengguna, `origin` yang tidak ada juga berarti input manusia. |

1380| `channel` | Pesan yang tiba di [channel](/id/channels). `server` adalah nama server MCP sumber. |1423| `channel` | Pesan yang tiba di [channel](/id/channels). `server` adalah nama server MCP sumber. |

1381| `peer` | Pesan dari sesi agen lain melalui `SendMessage`. `from` adalah alamat pengirim; `name` adalah nama tampilan pengirim ketika tersedia. |1424| `peer` | Dicadangkan untuk pesan dari sesi agen lain. `from` adalah alamat pengirim dan `name` adalah nama tampilan pengirim ketika tersedia. `senderTaskId` adalah ID tugas dari subagent latar belakang dalam proses yang mengirim pesan; tidak ada untuk peer lintas sesi. Agent SDK tidak memancarkan asal ini; perlakukan sebagai asal yang tidak diketahui. |

1382| `task-notification` | Putaran sintetis yang disuntikkan setelah tugas latar belakang selesai. Lihat [`SDKTaskNotificationMessage`](#sdktasknotificationmessage). |1425| `task-notification` | Putaran sintetis yang disuntikkan setelah tugas latar belakang selesai. Lihat [`SDKTaskNotificationMessage`](#sdktasknotificationmessage). |

1383| `coordinator` | Pesan dari koordinator tim dalam [tim agen](/id/agent-teams). |1426| `coordinator` | Pesan dari koordinator tim dalam [tim agen](/id/agent-teams). |

1427| `auto-continuation` | Putaran sintetis yang disuntikkan ketika sesi berlanjut tanpa input pengguna baru, seperti hasil perintah yang memicu prompt lanjutan. |

1384 1428 

1385<h2 id="hook-types">1429<h2 id="hook-types">

1386 Tipe Hook1430 Tipe Hook


1712type TeammateIdleHookInput = BaseHookInput & {1756type TeammateIdleHookInput = BaseHookInput & {

1713 hook_event_name: "TeammateIdle";1757 hook_event_name: "TeammateIdle";

1714 teammate_name: string;1758 teammate_name: string;

1759 /** @deprecated sejak v2.1.178. Membawa nama tim yang diturunkan dari sesi; akan dihapus. */

1715 team_name: string;1760 team_name: string;

1716};1761};

1717```1762```


1727 task_subject: string;1772 task_subject: string;

1728 task_description?: string;1773 task_description?: string;

1729 teammate_name?: string;1774 teammate_name?: string;

1775 /** @deprecated sejak v2.1.178. Membawa nama tim yang diturunkan dari sesi; akan dihapus. */

1730 team_name?: string;1776 team_name?: string;

1731};1777};

1732```1778```


1934 description: string;1980 description: string;

1935 prompt: string;1981 prompt: string;

1936 subagent_type: string;1982 subagent_type: string;

1937 model?: "sonnet" | "opus" | "haiku";1983 model?: "sonnet" | "opus" | "haiku" | "fable";

1938 resume?: string;1984 resume?: string;

1939 run_in_background?: boolean;1985 run_in_background?: boolean;

1940 max_turns?: number;1986 max_turns?: number;

1941 name?: string;1987 name?: string;

1942 team_name?: string;

1943 mode?: "acceptEdits" | "bypassPermissions" | "default" | "dontAsk" | "plan";1988 mode?: "acceptEdits" | "bypassPermissions" | "default" | "dontAsk" | "plan";

1944 isolation?: "worktree";1989 isolation?: "worktree";

1945};1990};


2385 | WorkflowOutput;2430 | WorkflowOutput;

2386```2431```

2387 2432 

2388<h3 id="agent">2433<h3 id="agent-1">

2389 Agent2434 Agent

2390</h3>2435</h3>

2391 2436 


2397 status: "completed";2442 status: "completed";

2398 agentId: string;2443 agentId: string;

2399 content: Array<{ type: "text"; text: string }>;2444 content: Array<{ type: "text"; text: string }>;

2445 resolvedModel?: string;

2400 totalToolUseCount: number;2446 totalToolUseCount: number;

2401 totalDurationMs: number;2447 totalDurationMs: number;

2402 totalTokens: number;2448 totalTokens: number;


2421 status: "async_launched";2467 status: "async_launched";

2422 agentId: string;2468 agentId: string;

2423 description: string;2469 description: string;

2470 resolvedModel?: string;

2424 prompt: string;2471 prompt: string;

2425 outputFile: string;2472 outputFile: string;

2426 canReadOutputFile?: boolean;2473 canReadOutputFile?: boolean;


2434 2481 

2435Mengembalikan hasil dari subagen. Didiskriminasikan pada field `status`: `"completed"` untuk tugas yang selesai, `"async_launched"` untuk tugas latar belakang, dan `"sub_agent_entered"` untuk subagen interaktif.2482Mengembalikan hasil dari subagen. Didiskriminasikan pada field `status`: `"completed"` untuk tugas yang selesai, `"async_launched"` untuk tugas latar belakang, dan `"sub_agent_entered"` untuk subagen interaktif.

2436 2483 

2437<h3 id="askuserquestion">2484Field `resolvedModel` pada varian `completed` dan `async_launched` menamai model yang sebenarnya dijalankan oleh subagen, yang dapat berbeda dari input `model` yang diminta ketika [`availableModels`](/id/model-config#restrict-model-selection) atau override lainnya berlaku. {/* min-version: 2.1.174 */}Field ini memerlukan Claude Code v2.1.174 atau lebih baru.

2485 

2486<h3 id="askuserquestion-1">

2438 AskUserQuestion2487 AskUserQuestion

2439</h3>2488</h3>

2440 2489 


2455 2504 

2456Mengembalikan pertanyaan yang diajukan dan jawaban pengguna. `response` diatur ketika pengguna mengetik balasan bentuk bebas alih-alih menjawab pertanyaan terstruktur; ketika ada, Claude menerima "Pengguna merespons: …" alih-alih daftar jawaban per-pertanyaan.2505Mengembalikan pertanyaan yang diajukan dan jawaban pengguna. `response` diatur ketika pengguna mengetik balasan bentuk bebas alih-alih menjawab pertanyaan terstruktur; ketika ada, Claude menerima "Pengguna merespons: …" alih-alih daftar jawaban per-pertanyaan.

2457 2506 

2458<h3 id="bash">2507<h3 id="bash-1">

2459 Bash2508 Bash

2460</h3>2509</h3>

2461 2510 


2480 2529 

2481Mengembalikan output perintah dengan stdout/stderr terpisah. Perintah latar belakang menyertakan `backgroundTaskId`.2530Mengembalikan output perintah dengan stdout/stderr terpisah. Perintah latar belakang menyertakan `backgroundTaskId`.

2482 2531 

2483<h3 id="monitor">2532<h3 id="monitor-1">

2484 Monitor2533 Monitor

2485</h3>2534</h3>

2486 2535 


2496 2545 

2497Mengembalikan ID tugas latar belakang untuk monitor yang sedang berjalan. Gunakan ID ini dengan `TaskStop` untuk membatalkan watch lebih awal.2546Mengembalikan ID tugas latar belakang untuk monitor yang sedang berjalan. Gunakan ID ini dengan `TaskStop` untuk membatalkan watch lebih awal.

2498 2547 

2499<h3 id="edit">2548<h3 id="edit-1">

2500 Edit2549 Edit

2501</h3>2550</h3>

2502 2551 


2530 2579 

2531Mengembalikan diff terstruktur dari operasi edit.2580Mengembalikan diff terstruktur dari operasi edit.

2532 2581 

2533<h3 id="read">2582<h3 id="read-1">

2534 Read2583 Read

2535</h3>2584</h3>

2536 2585 


2590 2639 

2591Mengembalikan konten file dalam format yang sesuai dengan tipe file. Didiskriminasikan pada field `type`.2640Mengembalikan konten file dalam format yang sesuai dengan tipe file. Didiskriminasikan pada field `type`.

2592 2641 

2593<h3 id="write">2642<h3 id="write-1">

2594 Write2643 Write

2595</h3>2644</h3>

2596 2645 


2622 2671 

2623Mengembalikan hasil write dengan informasi diff terstruktur.2672Mengembalikan hasil write dengan informasi diff terstruktur.

2624 2673 

2625<h3 id="glob">2674<h3 id="glob-1">

2626 Glob2675 Glob

2627</h3>2676</h3>

2628 2677 


2639 2688 

2640Mengembalikan jalur file yang cocok dengan pola glob, diurutkan berdasarkan waktu modifikasi.2689Mengembalikan jalur file yang cocok dengan pola glob, diurutkan berdasarkan waktu modifikasi.

2641 2690 

2642<h3 id="grep">2691<h3 id="grep-1">

2643 Grep2692 Grep

2644</h3>2693</h3>

2645 2694 


2660 2709 

2661Mengembalikan hasil pencarian. Bentuknya bervariasi menurut `mode`: daftar file, konten dengan kecocokan, atau hitungan kecocokan.2710Mengembalikan hasil pencarian. Bentuknya bervariasi menurut `mode`: daftar file, konten dengan kecocokan, atau hitungan kecocokan.

2662 2711 

2663<h3 id="taskstop">2712<h3 id="taskstop-1">

2664 TaskStop2713 TaskStop

2665</h3>2714</h3>

2666 2715 


2677 2726 

2678Mengembalikan konfirmasi setelah menghentikan tugas latar belakang.2727Mengembalikan konfirmasi setelah menghentikan tugas latar belakang.

2679 2728 

2680<h3 id="notebookedit">2729<h3 id="notebookedit-1">

2681 NotebookEdit2730 NotebookEdit

2682</h3>2731</h3>

2683 2732 


2699 2748 

2700Mengembalikan hasil edit notebook dengan konten file asli dan diperbarui.2749Mengembalikan hasil edit notebook dengan konten file asli dan diperbarui.

2701 2750 

2702<h3 id="webfetch">2751<h3 id="webfetch-1">

2703 WebFetch2752 WebFetch

2704</h3>2753</h3>

2705 2754 


2718 2767 

2719Mengembalikan konten yang diambil dengan status HTTP dan metadata.2768Mengembalikan konten yang diambil dengan status HTTP dan metadata.

2720 2769 

2721<h3 id="websearch">2770<h3 id="websearch-1">

2722 WebSearch2771 WebSearch

2723</h3>2772</h3>

2724 2773 


2740 2789 

2741Mengembalikan hasil pencarian dari web.2790Mengembalikan hasil pencarian dari web.

2742 2791 

2743<h3 id="workflow">2792<h3 id="workflow-1">

2744 Workflow2793 Workflow

2745</h3>2794</h3>

2746 2795 


2770| `scriptPath` | `string` | Jalur ke skrip workflow yang disimpan untuk run ini. Edit dan teruskan kembali sebagai `scriptPath` untuk menjalankan ulang tanpa mengirim ulang skrip |2819| `scriptPath` | `string` | Jalur ke skrip workflow yang disimpan untuk run ini. Edit dan teruskan kembali sebagai `scriptPath` untuk menjalankan ulang tanpa mengirim ulang skrip |

2771| `error` | `string` | Diatur ketika skrip gagal pemeriksaan sintaksnya. Ketika ada, run tidak dimulai meskipun status `async_launched` |2820| `error` | `string` | Diatur ketika skrip gagal pemeriksaan sintaksnya. Ketika ada, run tidak dimulai meskipun status `async_launched` |

2772 2821 

2773<h3 id="todowrite">2822<h3 id="todowrite-1">

2774 TodoWrite2823 TodoWrite

2775</h3>2824</h3>

2776 2825 


2797 Mulai dari TypeScript Agent SDK 0.3.142, `TodoWrite` dinonaktifkan secara default. Gunakan `TaskCreate`, `TaskGet`, `TaskUpdate`, dan `TaskList` sebagai gantinya. Lihat [Migrasi ke tool Task](/id/agent-sdk/todo-tracking#migrate-to-task-tools) untuk memperbarui kode pemantauan Anda, atau atur `CLAUDE_CODE_ENABLE_TASKS=0` untuk kembali ke `TodoWrite`.2846 Mulai dari TypeScript Agent SDK 0.3.142, `TodoWrite` dinonaktifkan secara default. Gunakan `TaskCreate`, `TaskGet`, `TaskUpdate`, dan `TaskList` sebagai gantinya. Lihat [Migrasi ke tool Task](/id/agent-sdk/todo-tracking#migrate-to-task-tools) untuk memperbarui kode pemantauan Anda, atau atur `CLAUDE_CODE_ENABLE_TASKS=0` untuk kembali ke `TodoWrite`.

2798</Note>2847</Note>

2799 2848 

2800<h3 id="taskcreate">2849<h3 id="taskcreate-1">

2801 TaskCreate2850 TaskCreate

2802</h3>2851</h3>

2803 2852 


2814 2863 

2815Mengembalikan tugas yang dibuat dengan ID yang ditetapkan.2864Mengembalikan tugas yang dibuat dengan ID yang ditetapkan.

2816 2865 

2817<h3 id="taskupdate">2866<h3 id="taskupdate-1">

2818 TaskUpdate2867 TaskUpdate

2819</h3>2868</h3>

2820 2869 


2835 2884 

2836Mengembalikan hasil pembaruan, termasuk field mana yang berubah.2885Mengembalikan hasil pembaruan, termasuk field mana yang berubah.

2837 2886 

2838<h3 id="taskget">2887<h3 id="taskget-1">

2839 TaskGet2888 TaskGet

2840</h3>2889</h3>

2841 2890 


2856 2905 

2857Mengembalikan catatan tugas lengkap, atau `null` ketika ID tidak ditemukan.2906Mengembalikan catatan tugas lengkap, atau `null` ketika ID tidak ditemukan.

2858 2907 

2859<h3 id="tasklist">2908<h3 id="tasklist-1">

2860 TaskList2909 TaskList

2861</h3>2910</h3>

2862 2911 


2876 2925 

2877Mengembalikan snapshot semua tugas dalam daftar saat ini.2926Mengembalikan snapshot semua tugas dalam daftar saat ini.

2878 2927 

2879<h3 id="exitplanmode">2928<h3 id="exitplanmode-1">

2880 ExitPlanMode2929 ExitPlanMode

2881</h3>2930</h3>

2882 2931 


2895 2944 

2896Mengembalikan status rencana setelah keluar dari mode perencanaan.2945Mengembalikan status rencana setelah keluar dari mode perencanaan.

2897 2946 

2898<h3 id="listmcpresources">2947<h3 id="listmcpresources-1">

2899 ListMcpResources2948 ListMcpResources

2900</h3>2949</h3>

2901 2950 


2913 2962 

2914Mengembalikan array sumber daya MCP yang tersedia.2963Mengembalikan array sumber daya MCP yang tersedia.

2915 2964 

2916<h3 id="readmcpresource">2965<h3 id="readmcpresource-1">

2917 ReadMcpResource2966 ReadMcpResource

2918</h3>2967</h3>

2919 2968 


2931 2980 

2932Mengembalikan konten sumber daya MCP yang diminta.2981Mengembalikan konten sumber daya MCP yang diminta.

2933 2982 

2934<h3 id="enterworktree">2983<h3 id="enterworktree-1">

2935 EnterWorktree2984 EnterWorktree

2936</h3>2985</h3>

2937 2986 


3010type PermissionUpdateDestination =3059type PermissionUpdateDestination =

3011 | "userSettings" // Pengaturan pengguna global3060 | "userSettings" // Pengaturan pengguna global

3012 | "projectSettings" // Pengaturan proyek per-direktori3061 | "projectSettings" // Pengaturan proyek per-direktori

3013 | "localSettings" // Pengaturan lokal gitignored3062 | "localSettings" // Pengaturan proyek lokal

3014 | "session" // Hanya sesi saat ini3063 | "session" // Hanya sesi saat ini

3015 | "cliArg"; // Argumen CLI3064 | "cliArg"; // Argumen CLI

3016```3065```


3049```3098```

3050 3099 

3051<Warning>3100<Warning>

3052 Beta `context-1m-2025-08-07` sudah pensiun sejak 30 April 2026. Melewatkan nilai ini dengan Claude Sonnet 4.5 atau Sonnet 4 tidak berpengaruh, dan permintaan yang melebihi jendela konteks standar 200k-token mengembalikan error. Untuk menggunakan jendela konteks 1M-token, migrasikan ke [Claude Sonnet 4.6, Claude Opus 4.6, atau Claude Opus 4.7](https://platform.claude.com/docs/id/about-claude/models/overview), yang mencakup konteks 1M dengan harga standar tanpa header beta yang diperlukan.3101 Beta `context-1m-2025-08-07` sudah pensiun sejak 30 April 2026. Melewatkan nilai ini dengan Claude Sonnet 4.5 atau Sonnet 4 tidak berpengaruh, dan permintaan yang melebihi jendela konteks standar 200k-token mengembalikan error. Untuk menggunakan jendela konteks 1M-token, migrasikan ke [Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, atau Claude Opus 4.8](https://platform.claude.com/docs/id/about-claude/models/overview), yang mencakup konteks 1M dengan harga standar tanpa header beta yang diperlukan.

3053</Warning>3102</Warning>

3054 3103 

3055<h3 id="slashcommand">3104<h3 id="slashcommand">


3241```typescript theme={null}3290```typescript theme={null}

3242type CallToolResult = {3291type CallToolResult = {

3243 content: Array<{3292 content: Array<{

3244 type: "text" | "image" | "resource";3293 type: "text" | "image" | "audio" | "resource" | "resource_link";

3245 // Field tambahan bervariasi menurut tipe3294 // Field tambahan bervariasi menurut tipe

3246 }>;3295 }>;

3247 structuredContent?: Record<string, unknown>;3296 structuredContent?: Record<string, unknown>;

Details

16 16 

17Panduan ini menunjukkan cara mendeteksi setiap jenis permintaan dan merespons dengan tepat.17Panduan ini menunjukkan cara mendeteksi setiap jenis permintaan dan merespons dengan tepat.

18 18 

19## Deteksi ketika Claude membutuhkan input19<h2 id="detect-when-claude-needs-input">

20 Deteksi ketika Claude membutuhkan input

21</h2>

20 22 

21Berikan callback `canUseTool` dalam opsi kueri Anda. Callback dipicu setiap kali Claude membutuhkan input pengguna, menerima nama alat dan input sebagai argumen:23Berikan callback `canUseTool` dalam opsi kueri Anda. Callback dipicu setiap kali Claude membutuhkan input pengguna, menerima nama alat dan input sebagai argumen:

22 24 


49 Untuk secara otomatis mengizinkan atau menolak alat tanpa meminta pengguna, gunakan [hooks](/id/agent-sdk/hooks) sebagai gantinya. Hooks dijalankan sebelum `canUseTool` dan dapat mengizinkan, menolak, atau memodifikasi permintaan berdasarkan logika Anda sendiri. Anda juga dapat menggunakan [hook `PermissionRequest`](/id/agent-sdk/hooks#available-hooks) untuk mengirim notifikasi eksternal (Slack, email, push) ketika Claude menunggu persetujuan.51 Untuk secara otomatis mengizinkan atau menolak alat tanpa meminta pengguna, gunakan [hooks](/id/agent-sdk/hooks) sebagai gantinya. Hooks dijalankan sebelum `canUseTool` dan dapat mengizinkan, menolak, atau memodifikasi permintaan berdasarkan logika Anda sendiri. Anda juga dapat menggunakan [hook `PermissionRequest`](/id/agent-sdk/hooks#available-hooks) untuk mengirim notifikasi eksternal (Slack, email, push) ketika Claude menunggu persetujuan.

50</Note>52</Note>

51 53 

52## Menangani permintaan persetujuan alat54<h2 id="handle-tool-approval-requests">

55 Menangani permintaan persetujuan alat

56</h2>

53 57 

54Setelah Anda melewatkan callback `canUseTool` dalam opsi kueri Anda, callback dipicu ketika Claude ingin menggunakan alat yang tidak disetujui secara otomatis. Callback Anda menerima tiga argumen:58Setelah Anda melewatkan callback `canUseTool` dalam opsi kueri Anda, callback dipicu ketika Claude ingin menggunakan alat yang tidak disetujui secara otomatis. Callback Anda menerima tiga argumen:

55 59 


197 201 

198Contoh ini menggunakan alur `y/n` di mana input apa pun selain `y` diperlakukan sebagai penolakan. Dalam praktik, Anda mungkin membangun UI yang lebih kaya yang memungkinkan pengguna memodifikasi permintaan, memberikan umpan balik, atau mengarahkan Claude sepenuhnya. Lihat [Merespons permintaan alat](#respond-to-tool-requests) untuk semua cara Anda dapat merespons.202Contoh ini menggunakan alur `y/n` di mana input apa pun selain `y` diperlakukan sebagai penolakan. Dalam praktik, Anda mungkin membangun UI yang lebih kaya yang memungkinkan pengguna memodifikasi permintaan, memberikan umpan balik, atau mengarahkan Claude sepenuhnya. Lihat [Merespons permintaan alat](#respond-to-tool-requests) untuk semua cara Anda dapat merespons.

199 203 

200### Merespons permintaan alat204<h3 id="respond-to-tool-requests">

205 Merespons permintaan alat

206</h3>

201 207 

202Callback Anda mengembalikan salah satu dari dua jenis respons:208Callback Anda mengembalikan salah satu dari dua jenis respons:

203 209 


407 </Tab>413 </Tab>

408</Tabs>414</Tabs>

409 415 

410## Menangani pertanyaan klarifikasi416<h2 id="handle-clarifying-questions">

417 Menangani pertanyaan klarifikasi

418</h2>

411 419 

412Ketika Claude membutuhkan lebih banyak arahan tentang tugas dengan beberapa pendekatan yang valid, Claude memanggil alat `AskUserQuestion`. Ini memicu callback `canUseTool` Anda dengan `toolName` diatur ke `AskUserQuestion`. Input berisi pertanyaan Claude sebagai opsi pilihan ganda, yang Anda tampilkan kepada pengguna dan kembalikan pilihan mereka.420Ketika Claude membutuhkan lebih banyak arahan tentang tugas dengan beberapa pendekatan yang valid, Claude memanggil alat `AskUserQuestion`. Ini memicu callback `canUseTool` Anda dengan `toolName` diatur ke `AskUserQuestion`. Input berisi pertanyaan Claude sebagai opsi pilihan ganda, yang Anda tampilkan kepada pengguna dan kembalikan pilihan mereka.

413 421 


551 </Step>559 </Step>

552</Steps>560</Steps>

553 561 

554### Format pertanyaan562<h3 id="question-format">

563 Format pertanyaan

564</h3>

555 565 

556Input berisi pertanyaan yang dihasilkan Claude dalam array `questions`. Setiap pertanyaan memiliki bidang-bidang ini:566Input berisi pertanyaan yang dihasilkan Claude dalam array `questions`. Setiap pertanyaan memiliki bidang-bidang ini:

557 567 

558| Bidang | Deskripsi |568| Bidang | Deskripsi |

559| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |569| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |

560| `question` | Teks pertanyaan lengkap untuk ditampilkan |570| `question` | Teks pertanyaan lengkap untuk ditampilkan |

561| `header` | Label pendek untuk pertanyaan (maks 12 karakter) |571| `header` | Label pendek untuk pertanyaan (maks 12 karakter) |

562| `options` | Array 2-4 pilihan, masing-masing dengan `label` dan `description`. TypeScript: secara opsional `preview` (lihat [di bawah](#option-previews-type-script)) |572| `options` | Array 2-4 pilihan, masing-masing dengan `label` dan `description`. TypeScript: secara opsional `preview` (lihat [di bawah](#option-previews-typescript)) |

563| `multiSelect` | Jika `true`, pengguna dapat memilih beberapa opsi |573| `multiSelect` | Jika `true`, pengguna dapat memilih beberapa opsi |

564 574 

565Struktur yang diterima callback Anda:575Struktur yang diterima callback Anda:


580}590}

581```591```

582 592 

583#### Pratinjau opsi (TypeScript)593<h4 id="option-previews-typescript">

594 Pratinjau opsi (TypeScript)

595</h4>

584 596 

585`toolConfig.askUserQuestion.previewFormat` menambahkan bidang `preview` ke setiap opsi sehingga aplikasi Anda dapat menampilkan mockup visual di samping label. Tanpa pengaturan ini, Claude tidak menghasilkan pratinjau dan bidang tidak ada.597`toolConfig.askUserQuestion.previewFormat` menambahkan bidang `preview` ke setiap opsi sehingga aplikasi Anda dapat menampilkan mockup visual di samping label. Tanpa pengaturan ini, Claude tidak menghasilkan pratinjau dan bidang tidak ada.

586 598 


621}633}

622```634```

623 635 

624### Format respons636<h3 id="response-format">

637 Format respons

638</h3>

625 639 

626Kembalikan objek `answers` yang memetakan bidang `question` setiap pertanyaan ke `label` opsi yang dipilih:640Kembalikan objek `answers` yang memetakan bidang `question` setiap pertanyaan ke `label` opsi yang dipilih:

627 641 


645}659}

646```660```

647 661 

648#### Dukung input teks bebas662<h4 id="support-free-text-input">

663 Dukung input teks bebas

664</h4>

649 665 

650Opsi yang telah ditentukan Claude tidak akan selalu mencakup apa yang diinginkan pengguna. Untuk memungkinkan pengguna mengetik jawaban mereka sendiri:666Opsi yang telah ditentukan Claude tidak akan selalu mencakup apa yang diinginkan pengguna. Untuk memungkinkan pengguna mengetik jawaban mereka sendiri:

651 667 


654 670 

655Lihat [contoh lengkap](#complete-example) di bawah untuk implementasi lengkap.671Lihat [contoh lengkap](#complete-example) di bawah untuk implementasi lengkap.

656 672 

657### Contoh lengkap673<h3 id="complete-example">

674 Contoh lengkap

675</h3>

658 676 

659Claude mengajukan pertanyaan klarifikasi ketika membutuhkan input pengguna untuk melanjutkan. Misalnya, ketika diminta membantu memutuskan tech stack untuk aplikasi seluler, Claude mungkin menanyakan tentang cross-platform vs native, preferensi backend, atau platform target. Pertanyaan-pertanyaan ini membantu Claude membuat keputusan yang sesuai dengan preferensi pengguna daripada menebak.677Claude mengajukan pertanyaan klarifikasi ketika membutuhkan input pengguna untuk melanjutkan. Misalnya, ketika diminta membantu memutuskan tech stack untuk aplikasi seluler, Claude mungkin menanyakan tentang cross-platform vs native, preferensi backend, atau platform target. Pertanyaan-pertanyaan ini membantu Claude membuat keputusan yang sesuai dengan preferensi pengguna daripada menebak.

660 678 


821 ```839 ```

822</CodeGroup>840</CodeGroup>

823 841 

824## Keterbatasan842<h2 id="limitations">

843 Keterbatasan

844</h2>

825 845 

826* **Subagents**: `AskUserQuestion` saat ini tidak tersedia di subagents yang dihasilkan melalui alat Agent846* **Subagents**: `AskUserQuestion` saat ini tidak tersedia di subagents yang dihasilkan melalui alat Agent

827* **Batas pertanyaan**: setiap panggilan `AskUserQuestion` mendukung 1-4 pertanyaan dengan 2-4 opsi masing-masing847* **Batas pertanyaan**: setiap panggilan `AskUserQuestion` mendukung 1-4 pertanyaan dengan 2-4 opsi masing-masing

828 848 

829## Cara lain untuk mendapatkan input pengguna849<h2 id="other-ways-to-get-user-input">

850 Cara lain untuk mendapatkan input pengguna

851</h2>

830 852 

831Callback `canUseTool` dan alat `AskUserQuestion` mencakup sebagian besar skenario persetujuan dan klarifikasi, tetapi SDK menawarkan cara lain untuk mendapatkan input dari pengguna:853Callback `canUseTool` dan alat `AskUserQuestion` mencakup sebagian besar skenario persetujuan dan klarifikasi, tetapi SDK menawarkan cara lain untuk mendapatkan input dari pengguna:

832 854 

833### Input streaming855<h3 id="streaming-input">

856 Input streaming

857</h3>

834 858 

835Gunakan [input streaming](/id/agent-sdk/streaming-vs-single-mode) ketika Anda perlu:859Gunakan [input streaming](/id/agent-sdk/streaming-vs-single-mode) ketika Anda perlu:

836 860 


840 864 

841Input streaming ideal untuk UI percakapan di mana pengguna berinteraksi dengan agen sepanjang eksekusi, bukan hanya di titik persetujuan.865Input streaming ideal untuk UI percakapan di mana pengguna berinteraksi dengan agen sepanjang eksekusi, bukan hanya di titik persetujuan.

842 866 

843### Alat kustom867<h3 id="custom-tools">

868 Alat kustom

869</h3>

844 870 

845Gunakan [alat kustom](/id/agent-sdk/custom-tools) ketika Anda perlu:871Gunakan [alat kustom](/id/agent-sdk/custom-tools) ketika Anda perlu:

846 872 


850 876 

851Alat kustom memberi Anda kontrol penuh atas interaksi, tetapi memerlukan lebih banyak pekerjaan implementasi daripada menggunakan callback `canUseTool` bawaan.877Alat kustom memberi Anda kontrol penuh atas interaksi, tetapi memerlukan lebih banyak pekerjaan implementasi daripada menggunakan callback `canUseTool` bawaan.

852 878 

853## Sumber daya terkait879<h2 id="related-resources">

880 Sumber daya terkait

881</h2>

854 882 

855* [Konfigurasi izin](/id/agent-sdk/permissions): atur mode dan aturan izin883* [Konfigurasi izin](/id/agent-sdk/permissions): atur mode dan aturan izin

856* [Kontrol eksekusi dengan hooks](/id/agent-sdk/hooks): jalankan kode kustom di titik-titik kunci dalam siklus hidup agen884* [Kontrol eksekusi dengan hooks](/id/agent-sdk/hooks): jalankan kode kustom di titik-titik kunci dalam siklus hidup agen

agent-teams.md +49 −61

Details

7> Koordinasikan beberapa instance Claude Code yang bekerja bersama sebagai tim, dengan tugas bersama, pesan antar-agent, dan manajemen terpusat.7> Koordinasikan beberapa instance Claude Code yang bekerja bersama sebagai tim, dengan tugas bersama, pesan antar-agent, dan manajemen terpusat.

8 8 

9<Warning>9<Warning>

10 Tim agent bersifat eksperimental dan dinonaktifkan secara default. Aktifkan dengan menambahkan `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` ke [settings.json](/id/settings) atau environment Anda. Tim agent memiliki [keterbatasan yang diketahui](#limitations) seputar session resumption, koordinasi tugas, dan perilaku shutdown.10 Tim agent bersifat eksperimental dan dinonaktifkan secara default. Aktifkan dengan menambahkan `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` ke [settings.json](/id/settings) atau environment Anda. Tanpa variabel tersebut, tidak ada tim yang diatur pada awal session, tidak ada direktori tim yang ditulis, dan Claude tidak menspawn atau mengusulkan rekan tim. Tim agent memiliki [keterbatasan yang diketahui](#limitations) seputar session resumption, koordinasi tugas, dan perilaku shutdown.

11</Warning>11</Warning>

12 12 

13Tim agent memungkinkan Anda mengoordinasikan beberapa instance Claude Code yang bekerja bersama. Satu session bertindak sebagai team lead, mengoordinasikan pekerjaan, menugaskan tugas, dan mensintesis hasil. Rekan tim bekerja secara independen, masing-masing dalam context window-nya sendiri, dan berkomunikasi langsung satu sama lain.13Tim agent memungkinkan Anda mengoordinasikan beberapa instance Claude Code yang bekerja bersama. Satu session bertindak sebagai team lead, mengoordinasikan pekerjaan, menugaskan tugas, dan mensintesis hasil. Rekan tim bekerja secara independen, masing-masing dalam context window-nya sendiri, dan berkomunikasi langsung satu sama lain.


15Tidak seperti [subagents](/id/sub-agents), yang berjalan dalam satu session dan hanya dapat melaporkan kembali ke agent utama, Anda juga dapat berinteraksi dengan rekan tim individual secara langsung tanpa melalui lead.15Tidak seperti [subagents](/id/sub-agents), yang berjalan dalam satu session dan hanya dapat melaporkan kembali ke agent utama, Anda juga dapat berinteraksi dengan rekan tim individual secara langsung tanpa melalui lead.

16 16 

17<Note>17<Note>

18 Tim agent memerlukan Claude Code v2.1.32 atau lebih baru. Periksa versi Anda dengan `claude --version`.18 Halaman ini menjelaskan tim agent per v2.1.178. Dengan `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` diatur, menspawn rekan tim tidak lagi memerlukan langkah setup, dan cleanup terjadi secara otomatis ketika session keluar. Sebelum v2.1.178, Anda meminta Claude untuk membuat dan memberi nama tim terlebih dahulu, dan Claude menggunakan tools `TeamCreate` dan `TeamDelete` untuk mengaturnya dan menghapusnya. Kedua tools tidak lagi ada. Input `team_name` pada tool Agent diterima tetapi diabaikan, dan field `team_name` dalam [hook payloads](/id/hooks#taskcreated) `TaskCreated`, `TaskCompleted`, dan `TeammateIdle` membawa nama yang diturunkan dari session dan sudah usang.

19</Note>19</Note>

20 20 

21Halaman ini mencakup:21Halaman ini mencakup:


78 Mulai tim agent pertama Anda78 Mulai tim agent pertama Anda

79</h2>79</h2>

80 80 

81Setelah mengaktifkan tim agent, beri tahu Claude untuk membuat tim agent dan jelaskan tugas dan struktur tim yang Anda inginkan dalam bahasa alami. Claude membuat tim, menelurkan rekan tim, dan mengoordinasikan pekerjaan berdasarkan prompt Anda.81Setelah mengaktifkan tim agent, jelaskan tugas dan rekan tim yang Anda inginkan dalam bahasa alami. Claude menelurkan mereka dan mengoordinasikan pekerjaan berdasarkan prompt Anda.

82 82 

83Contoh ini bekerja dengan baik karena tiga peran independen dan dapat mengeksplorasi masalah tanpa menunggu satu sama lain:83Contoh ini bekerja dengan baik karena tiga peran independen dan dapat mengeksplorasi masalah tanpa menunggu satu sama lain:

84 84 

85```text theme={null}85```text theme={null}

86Saya merancang alat CLI yang membantu developer melacak komentar TODO di seluruh86Saya merancang alat CLI yang membantu developer melacak komentar TODO di seluruh

87codebase mereka. Buat tim agent untuk mengeksplorasi ini dari sudut berbeda: satu87codebase mereka. Buat tiga rekan tim untuk mengeksplorasi ini dari sudut berbeda:

88rekan tim pada UX, satu pada arsitektur teknis, satu memainkan devil's advocate.88satu pada UX, satu pada arsitektur teknis, satu memainkan devil's advocate.

89```89```

90 90 

91Dari sana, Claude membuat tim dengan [daftar tugas bersama](/id/interactive-mode#task-list), menelurkan rekan tim untuk setiap perspektif, membuat mereka mengeksplorasi masalah, mensintesis temuan, dan mencoba [membersihkan tim](#clean-up-the-team) ketika selesai.91Dari sana, Claude mengisi [daftar tugas bersama](/id/interactive-mode#task-list), menelurkan rekan tim untuk setiap perspektif, membuat mereka mengeksplorasi masalah, dan mensintesis temuan ketika selesai.

92 92 

93Terminal lead mencantumkan semua rekan tim dan apa yang mereka kerjakan. Gunakan Shift+Down untuk bersiklus melalui rekan tim dan kirim pesan kepada mereka secara langsung. Setelah rekan tim terakhir, Shift+Down membungkus kembali ke lead.93Terminal lead mencantumkan semua rekan tim dan apa yang mereka kerjakan. Gunakan Shift+Down untuk bersiklus melalui rekan tim dan kirim pesan kepada mereka secara langsung. Setelah rekan tim terakhir, Shift+Down membungkus kembali ke lead.

94 94 


113 `tmux` memiliki keterbatasan yang diketahui pada sistem operasi tertentu dan secara tradisional bekerja paling baik di macOS. Menggunakan `tmux -CC` di iTerm2 adalah entrypoint yang disarankan ke `tmux`.113 `tmux` memiliki keterbatasan yang diketahui pada sistem operasi tertentu dan secara tradisional bekerja paling baik di macOS. Menggunakan `tmux -CC` di iTerm2 adalah entrypoint yang disarankan ke `tmux`.

114</Note>114</Note>

115 115 

116Default adalah `"auto"`, yang menggunakan split panes jika Anda sudah berjalan di dalam session tmux, dan in-process sebaliknya. Pengaturan `"tmux"` mengaktifkan mode split-pane dan auto-detects apakah akan menggunakan tmux atau iTerm2 berdasarkan terminal Anda. Untuk mengganti, atur [`teammateMode`](/id/settings#available-settings) di `~/.claude/settings.json`:116Default adalah `"auto"`, yang menggunakan split panes jika Anda sudah berjalan di dalam session tmux atau terminal Anda adalah iTerm2, dan in-process sebaliknya. Pengaturan `"tmux"` mengaktifkan mode split-pane dan auto-detects apakah akan menggunakan tmux atau iTerm2 berdasarkan terminal Anda. Untuk mengganti, atur [`teammateMode`](/id/settings#available-settings) di `~/.claude/settings.json`:

117 117 

118```json theme={null}118```json theme={null}

119{119{


139Claude memutuskan jumlah rekan tim untuk dihasilkan berdasarkan tugas Anda, atau Anda dapat menentukan dengan tepat apa yang Anda inginkan:139Claude memutuskan jumlah rekan tim untuk dihasilkan berdasarkan tugas Anda, atau Anda dapat menentukan dengan tepat apa yang Anda inginkan:

140 140 

141```text theme={null}141```text theme={null}

142Buat tim dengan 4 rekan tim untuk refactor modul-modul ini secara paralel.142Spawn 4 teammates to refactor these modules in parallel. Use Sonnet for

143Gunakan Sonnet untuk setiap rekan tim.143each teammate.

144```144```

145 145 

146Rekan tim tidak mewarisi pilihan `/model` lead secara default. Untuk mengubah model yang digunakan ketika prompt tidak menentukan satu, atur **Default teammate model** di `/config`. Pilih **Default (leader's model)** untuk membuat rekan tim mengikuti model saat ini lead.146Rekan tim tidak mewarisi pilihan `/model` lead secara default. Untuk mengubah model yang digunakan ketika prompt tidak menentukan satu, atur **Default teammate model** di `/config`. Pilih **Default (leader's model)** untuk membuat rekan tim mengikuti model saat ini lead.


152Untuk tugas kompleks atau berisiko, Anda dapat memerlukan rekan tim untuk merencanakan sebelum mengimplementasikan. Rekan tim bekerja dalam mode rencana read-only sampai lead menyetujui pendekatan mereka:152Untuk tugas kompleks atau berisiko, Anda dapat memerlukan rekan tim untuk merencanakan sebelum mengimplementasikan. Rekan tim bekerja dalam mode rencana read-only sampai lead menyetujui pendekatan mereka:

153 153 

154```text theme={null}154```text theme={null}

155Hasilkan rekan tim architect untuk refactor modul autentikasi.155Spawn an architect teammate to refactor the authentication module.

156Perlukan persetujuan rencana sebelum mereka membuat perubahan apa pun.156Require plan approval before they make any changes.

157```157```

158 158 

159Ketika rekan tim selesai merencanakan, mereka mengirim permintaan persetujuan rencana ke lead. Lead meninjau rencana dan baik menyetujuinya atau menolaknya dengan umpan balik. Jika ditolak, rekan tim tetap dalam mode rencana, merevisi berdasarkan umpan balik, dan mengirimkan kembali. Setelah disetujui, rekan tim keluar dari mode rencana dan mulai implementasi.159Ketika rekan tim selesai merencanakan, mereka mengirim permintaan persetujuan rencana ke lead. Lead meninjau rencana dan baik menyetujuinya atau menolaknya dengan umpan balik. Jika ditolak, rekan tim tetap dalam mode rencana, merevisi berdasarkan umpan balik, dan mengirimkan kembali. Setelah disetujui, rekan tim keluar dari mode rencana dan mulai implementasi.


186 Matikan rekan tim186 Matikan rekan tim

187</h3>187</h3>

188 188 

189Untuk mengakhiri session rekan tim dengan baik:189Untuk mengakhiri session rekan tim dengan baik, rujuk dengan nama. Misalnya, dengan rekan tim bernama researcher:

190 190 

191```text theme={null}191```text theme={null}

192Minta rekan tim peneliti untuk shutdown192Ask the researcher teammate to shut down

193```193```

194 194 

195Lead mengirim permintaan shutdown. Rekan tim dapat menyetujui, keluar dengan baik, atau menolak dengan penjelasan.195Lead mengirim permintaan shutdown. Rekan tim dapat menyetujui, keluar dengan baik, atau menolak dengan penjelasan.

196 196 

197<h3 id="clean-up-the-team">197Direktori bersama tim dibersihkan secara otomatis ketika session berakhir, jadi tidak ada langkah pembersihan terpisah. Lihat [Architecture](#architecture) untuk direktori mana yang dihapus dan mana yang bertahan untuk session yang dilanjutkan.

198 Bersihkan tim

199</h3>

200 

201Ketika Anda selesai, minta lead untuk membersihkan:

202 

203```text theme={null}

204Bersihkan tim

205```

206 

207Ini menghapus sumber daya tim bersama. Ketika lead menjalankan cleanup, ia memeriksa rekan tim aktif dan gagal jika ada yang masih berjalan, jadi matikan mereka terlebih dahulu.

208 

209<Warning>

210 Selalu gunakan lead untuk membersihkan. Rekan tim tidak boleh menjalankan cleanup karena konteks tim mereka mungkin tidak terselesaikan dengan benar, berpotensi meninggalkan sumber daya dalam keadaan tidak konsisten.

211</Warning>

212 198 

213<h3 id="enforce-quality-gates-with-hooks">199<h3 id="enforce-quality-gates-with-hooks">

214 Terapkan quality gates dengan hooks200 Terapkan quality gates dengan hooks


230 Bagaimana Claude memulai tim agent216 Bagaimana Claude memulai tim agent

231</h3>217</h3>

232 218 

233Ada dua cara tim agent dimulai:219Tim agent terbentuk ketika rekan tim pertama dihasilkan, dengan sesi utama bertindak sebagai pemimpin. Ada dua cara rekan tim dihasilkan:

234 220 

235* **Anda meminta tim**: berikan Claude tugas yang menguntungkan dari pekerjaan paralel dan secara eksplisit minta tim agent. Claude membuat satu berdasarkan instruksi Anda.221* **Anda meminta rekan tim**: berikan Claude tugas yang menguntungkan dari pekerjaan paralel dan secara eksplisit minta rekan tim. Claude menghasilkannya berdasarkan instruksi Anda.

236* **Claude mengusulkan tim**: jika Claude menentukan tugas Anda akan menguntungkan dari pekerjaan paralel, mungkin menyarankan membuat tim. Anda mengonfirmasi sebelum melanjutkan.222* **Claude mengusulkan rekan tim**: jika Claude menentukan tugas Anda akan menguntungkan dari pekerjaan paralel, mungkin menyarankan untuk menghasilkan rekan tim. Anda mengonfirmasi sebelum melanjutkan.

237 223 

238Dalam kedua kasus, Anda tetap mengendalikan. Claude tidak akan membuat tim tanpa persetujuan Anda.224Dalam kedua kasus, Anda tetap mengendalikan. Claude tidak akan menghasilkan rekan tim tanpa persetujuan Anda.

239 225 

240<h3 id="architecture">226<h3 id="architecture">

241 Arsitektur227 Arsitektur


244Tim agent terdiri dari:230Tim agent terdiri dari:

245 231 

246| Komponen | Peran |232| Komponen | Peran |

247| :--------------- | :----------------------------------------------------------------------------------------------- |233| :--------------- | :---------------------------------------------------------------------------------- |

248| **Team lead** | Session Claude Code utama yang membuat tim, menelurkan rekan tim, dan mengoordinasikan pekerjaan |234| **Team lead** | Sesi Claude Code utama yang menghasilkan rekan tim dan mengoordinasikan pekerjaan |

249| **Rekan tim** | Instance Claude Code terpisah yang masing-masing bekerja pada tugas yang ditugaskan |235| **Rekan tim** | Instance Claude Code terpisah yang masing-masing bekerja pada tugas yang ditugaskan |

250| **Daftar tugas** | Daftar item pekerjaan bersama yang diklaim dan diselesaikan rekan tim |236| **Daftar tugas** | Daftar item pekerjaan bersama yang diklaim dan diselesaikan rekan tim |

251| **Mailbox** | Sistem pesan untuk komunikasi antar agent |237| **Mailbox** | Sistem pesan untuk komunikasi antar agent |


254 240 

255Sistem mengelola dependensi tugas secara otomatis. Ketika rekan tim menyelesaikan tugas yang tugas lain bergantung padanya, tugas yang diblokir membuka tanpa intervensi manual.241Sistem mengelola dependensi tugas secara otomatis. Ketika rekan tim menyelesaikan tugas yang tugas lain bergantung padanya, tugas yang diblokir membuka tanpa intervensi manual.

256 242 

257Tim dan tugas disimpan secara lokal:243Tim dan tugas disimpan secara lokal dengan nama yang diturunkan dari sesi. Nama adalah `session-` diikuti oleh delapan karakter pertama dari session ID:

258 244 

259* **Konfigurasi tim**: `~/.claude/teams/{team-name}/config.json`245* **Konfigurasi tim**: `~/.claude/teams/{team-name}/config.json`

260* **Daftar tugas**: `~/.claude/tasks/{team-name}/`246* **Daftar tugas**: `~/.claude/tasks/{team-name}/`

261 247 

262Claude Code menghasilkan keduanya secara otomatis ketika Anda membuat tim dan memperbarui mereka saat rekan tim bergabung, idle, atau pergi. Konfigurasi tim menyimpan status runtime seperti session IDs dan tmux pane IDs, jadi jangan mengeditnya dengan tangan atau pre-author: perubahan Anda ditimpa pada update status berikutnya.248Claude Code menghasilkan keduanya secara otomatis saat startup sesi dan memperbarui mereka saat rekan tim bergabung, idle, atau pergi. Direktori konfigurasi tim dihapus ketika sesi berakhir. Direktori daftar tugas tetap ada secara lokal dan tidak pernah diunggah, jadi sesi yang dilanjutkan menyimpan tugas mereka. Retensi diatur oleh [`cleanupPeriodDays`](/id/settings#available-settings) yang sama yang sudah Anda kontrol untuk transkrip sesi.

249 

250Konfigurasi tim menyimpan status runtime seperti session IDs dan tmux pane IDs, jadi jangan mengeditnya dengan tangan atau pre-author: perubahan Anda ditimpa pada update status berikutnya.

263 251 

264Untuk mendefinisikan peran rekan tim yang dapat digunakan kembali, gunakan [subagent definitions](#use-subagent-definitions-for-teammates) sebagai gantinya.252Untuk mendefinisikan peran rekan tim yang dapat digunakan kembali, gunakan [subagent definitions](#use-subagent-definitions-for-teammates) sebagai gantinya.

265 253 


271 Gunakan subagent definitions untuk rekan tim259 Gunakan subagent definitions untuk rekan tim

272</h3>260</h3>

273 261 

274Ketika menelurkan rekan tim, Anda dapat mereferensikan tipe [subagent](/id/sub-agents) dari [subagent scope](/id/sub-agents#choose-the-subagent-scope) apa pun: proyek, pengguna, plugin, atau CLI-defined. Ini memungkinkan Anda mendefinisikan peran sekali, seperti security-reviewer atau test-runner, dan menggunakannya kembali baik sebagai subagent yang didelegasikan maupun sebagai rekan tim agent team.262Ketika menghasilkan rekan tim, Anda dapat mereferensikan tipe [subagent](/id/sub-agents) dari [subagent scope](/id/sub-agents#choose-the-subagent-scope) apa pun: proyek, pengguna, plugin, atau CLI-defined. Ini memungkinkan Anda mendefinisikan peran sekali, seperti security-reviewer atau test-runner, dan menggunakannya kembali baik sebagai subagent yang didelegasikan maupun sebagai rekan tim agent team.

275 263 

276Untuk menggunakan subagent definition, sebutkan berdasarkan nama ketika meminta Claude untuk menelurkan rekan tim:264Untuk menggunakan subagent definition, sebutkan berdasarkan nama ketika meminta Claude untuk menghasilkan rekan tim:

277 265 

278```text theme={null}266```text theme={null}

279Hasilkan rekan tim menggunakan tipe agent security-reviewer untuk mengaudit modul auth.267Hasilkan rekan tim menggunakan tipe agent security-reviewer untuk mengaudit modul auth.


304* **Daftar tugas bersama**: semua agent dapat melihat status tugas dan mengklaim pekerjaan yang tersedia.292* **Daftar tugas bersama**: semua agent dapat melihat status tugas dan mengklaim pekerjaan yang tersedia.

305* **Pesan rekan tim**: kirim pesan ke satu rekan tim spesifik berdasarkan nama. Untuk menjangkau semua orang, kirim satu pesan per penerima.293* **Pesan rekan tim**: kirim pesan ke satu rekan tim spesifik berdasarkan nama. Untuk menjangkau semua orang, kirim satu pesan per penerima.

306 294 

307Lead menugaskan setiap rekan tim nama ketika menelurkannya, dan rekan tim mana pun dapat mengirim pesan ke yang lain berdasarkan nama itu. Untuk mendapatkan nama yang dapat diprediksi yang dapat Anda referensikan dalam prompt kemudian, beri tahu lead apa yang harus dipanggil setiap rekan tim dalam instruksi spawn Anda.295Lead menugaskan setiap rekan tim nama ketika menghasilkannya, dan rekan tim mana pun dapat mengirim pesan ke yang lain berdasarkan nama itu. Untuk mendapatkan nama yang dapat diprediksi yang dapat Anda referensikan dalam prompt kemudian, beri tahu lead apa yang harus dipanggil setiap rekan tim dalam instruksi spawn Anda.

308 296 

309<h3 id="token-usage">297<h3 id="token-usage">

310 Penggunaan token298 Penggunaan token


325Seorang reviewer tunggal cenderung tertarik pada satu jenis masalah pada satu waktu. Membagi kriteria review menjadi domain independen berarti keamanan, kinerja, dan test coverage semuanya mendapat perhatian menyeluruh secara bersamaan. Prompt menugaskan setiap rekan tim lensa yang berbeda sehingga mereka tidak tumpang tindih:313Seorang reviewer tunggal cenderung tertarik pada satu jenis masalah pada satu waktu. Membagi kriteria review menjadi domain independen berarti keamanan, kinerja, dan test coverage semuanya mendapat perhatian menyeluruh secara bersamaan. Prompt menugaskan setiap rekan tim lensa yang berbeda sehingga mereka tidak tumpang tindih:

326 314 

327```text theme={null}315```text theme={null}

328Buat tim agent untuk review PR #142. Hasilkan tiga reviewer:316Spawn three teammates to review PR #142:

329- Satu fokus pada implikasi keamanan317- One focused on security implications

330- Satu memeriksa dampak kinerja318- One checking performance impact

331- Satu memvalidasi test coverage319- One validating test coverage

332Buat mereka masing-masing review dan laporkan temuan.320Have them each review and report findings.

333```321```

334 322 

335Setiap reviewer bekerja dari PR yang sama tetapi menerapkan filter berbeda. Lead mensintesis temuan di ketiga setelah mereka selesai.323Setiap reviewer bekerja dari PR yang sama tetapi menerapkan filter berbeda. Lead mensintesis temuan di ketiga setelah mereka selesai.


341Ketika akar penyebab tidak jelas, satu agent cenderung menemukan satu penjelasan yang masuk akal dan berhenti mencari. Prompt melawan ini dengan membuat rekan tim secara eksplisit adversarial: pekerjaan setiap orang bukan hanya menyelidiki teori mereka sendiri tetapi menantang yang lain.329Ketika akar penyebab tidak jelas, satu agent cenderung menemukan satu penjelasan yang masuk akal dan berhenti mencari. Prompt melawan ini dengan membuat rekan tim secara eksplisit adversarial: pekerjaan setiap orang bukan hanya menyelidiki teori mereka sendiri tetapi menantang yang lain.

342 330 

343```text theme={null}331```text theme={null}

344Pengguna melaporkan aplikasi keluar setelah satu pesan alih-alih tetap terhubung.332Users report the app exits after one message instead of staying connected.

345Hasilkan 5 rekan tim agent untuk menyelidiki hipotesis berbeda. Buat mereka berbicara333Spawn 5 agent teammates to investigate different hypotheses. Have them talk to

346satu sama lain untuk mencoba membantah teori satu sama lain, seperti debat334each other to try to disprove each other's theories, like a scientific

347ilmiah. Perbarui dokumen temuan dengan konsensus apa pun yang muncul.335debate. Update the findings doc with whatever consensus emerges.

348```336```

349 337 

350Struktur debat adalah mekanisme kunci di sini. Investigasi sekuensial menderita dari anchoring: setelah satu teori dieksplorasi, investigasi berikutnya bias terhadapnya.338Struktur debat adalah mekanisme kunci di sini. Investigasi sekuensial menderita dari anchoring: setelah satu teori dieksplorasi, investigasi berikutnya bias terhadapnya.


362Rekan tim memuat konteks proyek secara otomatis, termasuk CLAUDE.md, MCP servers, dan skills, tetapi mereka tidak mewarisi riwayat percakapan lead. Lihat [Context dan komunikasi](#context-and-communication) untuk detail. Sertakan detail spesifik tugas dalam spawn prompt:350Rekan tim memuat konteks proyek secara otomatis, termasuk CLAUDE.md, MCP servers, dan skills, tetapi mereka tidak mewarisi riwayat percakapan lead. Lihat [Context dan komunikasi](#context-and-communication) untuk detail. Sertakan detail spesifik tugas dalam spawn prompt:

363 351 

364```text theme={null}352```text theme={null}

365Hasilkan rekan tim security reviewer dengan prompt: "Review modul autentikasi353Spawn a security reviewer teammate with the prompt: "Review the authentication module

366di src/auth/ untuk kerentanan keamanan. Fokus pada penanganan token, manajemen354at src/auth/ for security vulnerabilities. Focus on token handling, session

367session, dan validasi input. Aplikasi menggunakan token JWT yang disimpan di355management, and input validation. The app uses JWT tokens stored in

368httpOnly cookies. Laporkan masalah apa pun dengan rating severity."356httpOnly cookies. Report any issues with severity ratings."

369```357```

370 358 

371<h3 id="choose-an-appropriate-team-size">359<h3 id="choose-an-appropriate-team-size">


432 Rekan tim tidak muncul420 Rekan tim tidak muncul

433</h3>421</h3>

434 422 

435Jika rekan tim tidak muncul setelah Anda meminta Claude untuk membuat tim:423Jika rekan tim tidak muncul setelah Anda meminta Claude untuk membuat mereka:

436 424 

437* Dalam mode in-process, rekan tim mungkin sudah berjalan tetapi tidak terlihat. Tekan Shift+Down untuk bersiklus melalui rekan tim aktif.425* Dalam mode in-process, rekan tim mungkin sudah berjalan tetapi tidak terlihat. Tekan Shift+Down untuk bersiklus melalui rekan tim aktif.

438* Periksa bahwa tugas yang Anda berikan Claude cukup kompleks untuk menjamin tim. Claude memutuskan apakah akan menelurkan rekan tim berdasarkan tugas.426* Periksa bahwa tugas yang Anda berikan Claude cukup kompleks untuk menjamin rekan tim. Claude memutuskan apakah akan menelurkan mereka berdasarkan tugas.

439* Jika Anda secara eksplisit meminta split panes, pastikan tmux diinstal dan tersedia di PATH Anda:427* Jika Anda secara eksplisit meminta split panes, pastikan tmux diinstal dan tersedia di PATH Anda:

440 ```bash theme={null}428 ```bash theme={null}

441 which tmux429 which tmux


449Permintaan izin rekan tim naik ke lead, yang dapat menciptakan gesekan. Pre-approve operasi umum di [pengaturan izin](/id/permissions) Anda sebelum menelurkan rekan tim untuk mengurangi gangguan.437Permintaan izin rekan tim naik ke lead, yang dapat menciptakan gesekan. Pre-approve operasi umum di [pengaturan izin](/id/permissions) Anda sebelum menelurkan rekan tim untuk mengurangi gangguan.

450 438 

451<h3 id="teammates-stopping-on-errors">439<h3 id="teammates-stopping-on-errors">

452 Rekan tim berhenti pada error440 Rekan tim berhenti pada errors

453</h3>441</h3>

454 442 

455Rekan tim dapat berhenti setelah mengalami error alih-alih pulih. Periksa output mereka menggunakan Shift+Down dalam mode in-process atau dengan mengklik pane dalam mode split, kemudian baik:443Rekan tim dapat berhenti setelah mengalami errors alih-alih pulih. Periksa output mereka menggunakan Shift+Down dalam mode in-process atau dengan mengklik pane dalam mode split, kemudian baik:

456 444 

457* Berikan instruksi tambahan kepada mereka secara langsung445* Berikan instruksi tambahan kepada mereka secara langsung

458* Hasilkan rekan tim pengganti untuk melanjutkan pekerjaan446* Hasilkan rekan tim pengganti untuk melanjutkan pekerjaan

459 447 

460<h3 id="lead-shuts-down-before-work-is-done">448<h3 id="lead-shuts-down-before-work-is-done">

461 Lead shutdown sebelum pekerjaan selesai449 Lead shuts down sebelum pekerjaan selesai

462</h3>450</h3>

463 451 

464Lead dapat memutuskan tim selesai sebelum semua tugas benar-benar selesai. Jika ini terjadi, beri tahu untuk terus. Anda juga dapat memberi tahu lead untuk menunggu rekan tim selesai sebelum melanjutkan jika mulai melakukan pekerjaan alih-alih mendelegasikan.452Lead dapat memutuskan tim selesai sebelum semua tugas benar-benar selesai. Jika ini terjadi, beri tahu untuk terus. Anda juga dapat memberi tahu lead untuk menunggu rekan tim selesai sebelum melanjutkan jika mulai melakukan pekerjaan alih-alih mendelegasikan.


467 Orphaned tmux sessions455 Orphaned tmux sessions

468</h3>456</h3>

469 457 

470Jika session tmux bertahan setelah tim berakhir, mungkin tidak sepenuhnya dibersihkan. Daftar session dan bunuh yang dibuat oleh tim:458Jika session tmux bertahan setelah sesi Claude Code berakhir, mungkin tidak sepenuhnya dibersihkan. Daftar session dan bunuh yang dibuat oleh tim:

471 459 

472```bash theme={null}460```bash theme={null}

473tmux ls461tmux ls


483* **Tidak ada session resumption dengan rekan tim in-process**: `/resume` dan `/rewind` tidak mengembalikan rekan tim in-process. Setelah melanjutkan session, lead dapat mencoba mengirim pesan ke rekan tim yang tidak lagi ada. Jika ini terjadi, beri tahu lead untuk menelurkan rekan tim baru.471* **Tidak ada session resumption dengan rekan tim in-process**: `/resume` dan `/rewind` tidak mengembalikan rekan tim in-process. Setelah melanjutkan session, lead dapat mencoba mengirim pesan ke rekan tim yang tidak lagi ada. Jika ini terjadi, beri tahu lead untuk menelurkan rekan tim baru.

484* **Status tugas dapat tertinggal**: rekan tim kadang-kadang gagal menandai tugas sebagai selesai, yang memblokir tugas dependen. Jika tugas tampak terjebak, periksa apakah pekerjaan benar-benar selesai dan perbarui status tugas secara manual atau beri tahu lead untuk mendorong rekan tim.472* **Status tugas dapat tertinggal**: rekan tim kadang-kadang gagal menandai tugas sebagai selesai, yang memblokir tugas dependen. Jika tugas tampak terjebak, periksa apakah pekerjaan benar-benar selesai dan perbarui status tugas secara manual atau beri tahu lead untuk mendorong rekan tim.

485* **Shutdown dapat lambat**: rekan tim menyelesaikan permintaan atau tool call saat ini sebelum shutdown, yang dapat memakan waktu.473* **Shutdown dapat lambat**: rekan tim menyelesaikan permintaan atau tool call saat ini sebelum shutdown, yang dapat memakan waktu.

486* **Satu tim per session**: lead hanya dapat mengelola satu tim pada satu waktu. Bersihkan tim saat ini sebelum memulai yang baru.474* **Satu tim per session**: sebuah session memiliki tepat satu tim, yang dibatasi pada session tersebut. Anda tidak dapat membuat tim bernama tambahan atau berbagi tim di seluruh session.

487* **Tidak ada tim bersarang**: rekan tim tidak dapat menelurkan tim atau rekan tim mereka sendiri. Hanya lead yang dapat mengelola tim.475* **Tidak ada tim bersarang**: rekan tim tidak dapat menelurkan rekan tim mereka sendiri. Hanya lead yang dapat mengelola tim.

488* **Lead tetap**: session yang membuat tim adalah lead seumur hidupnya. Anda tidak dapat mempromosikan rekan tim ke lead atau mentransfer kepemimpinan.476* **Lead tetap**: session utama adalah lead seumur hidupnya. Anda tidak dapat mempromosikan rekan tim ke lead atau mentransfer kepemimpinan.

489* **Izin ditetapkan pada spawn**: semua rekan tim dimulai dengan mode izin lead. Anda dapat mengubah mode rekan tim individual setelah spawn, tetapi Anda tidak dapat mengatur mode per-rekan tim pada waktu spawn.477* **Izin ditetapkan pada spawn**: semua rekan tim dimulai dengan mode izin lead. Anda dapat mengubah mode rekan tim individual setelah spawn, tetapi Anda tidak dapat mengatur mode per-rekan tim pada waktu spawn.

490* **Split panes memerlukan tmux atau iTerm2**: mode in-process default bekerja di terminal apa pun. Mode split-pane tidak didukung di integrated terminal VS Code, Windows Terminal, atau Ghostty.478* **Split panes memerlukan tmux atau iTerm2**: mode in-process default bekerja di terminal apa pun. Mode split-pane tidak didukung di integrated terminal VS Code, Windows Terminal, atau Ghostty.

491 479 

agent-view.md +12 −7

Details

60 </Step>60 </Step>

61 61 

62 <Step title="Lampirkan dan lepaskan">62 <Step title="Lampirkan dan lepaskan">

63 Tekan `Enter` atau `→` pada baris untuk melampirkan ketika Anda menginginkan percakapan lengkap. Sesi mengambil alih terminal persis seolah-olah Anda telah menjalankan `claude`. Tekan `←` pada prompt kosong untuk melepaskan dan kembali ke tabel.63 Tekan `Enter` atau `→` pada baris untuk melampirkan ketika Anda menginginkan percakapan lengkap. Sesi mengambil alih terminal sebagai sesi Claude Code interaktif penuh. Tekan `←` pada prompt kosong untuk melepaskan dan kembali ke tabel.

64 </Step>64 </Step>

65 65 

66 <Step title="Bawa sesi yang ada ke dalam">66 <Step title="Bawa sesi yang ada ke dalam">


228| `a:<name>` | Sesi yang menjalankan agen bernama |228| `a:<name>` | Sesi yang menjalankan agen bernama |

229| `s:<state>` | Sesi dalam status tertentu, seperti `s:working`. Juga menerima `s:blocked` untuk semua yang menunggu Anda |229| `s:<state>` | Sesi dalam status tertentu, seperti `s:working`. Juga menerima `s:blocked` untuk semua yang menunggu Anda |

230| `#<number>` atau URL PR | Sesi yang bekerja pada permintaan tarik itu |230| `#<number>` atau URL PR | Sesi yang bekerja pada permintaan tarik itu |

231| URL lainnya | Sesi yang prompt pertamanya berisi URL itu |

231 232 

232<h3 id="keyboard-shortcuts">233<h3 id="keyboard-shortcuts">

233 Pintasan keyboard234 Pintasan keyboard


482Setiap sesi latar belakang memiliki ID pendek yang dapat Anda gunakan dari shell. ID dicetak ketika Anda memulai sesi dengan `claude --bg`, dan ID setiap sesi adalah nama direktorinya di bawah `~/.claude/jobs/`. Perintah-perintah ini berguna untuk scripting atau ketika Anda tidak ingin membuka tampilan agen.483Setiap sesi latar belakang memiliki ID pendek yang dapat Anda gunakan dari shell. ID dicetak ketika Anda memulai sesi dengan `claude --bg`, dan ID setiap sesi adalah nama direktorinya di bawah `~/.claude/jobs/`. Perintah-perintah ini berguna untuk scripting atau ketika Anda tidak ingin membuka tampilan agen.

483 484 

484| Perintah | Tujuan |485| Perintah | Tujuan |

485| :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |486| :--------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

486| `claude agents` | Buka tampilan agen |487| `claude agents` | Buka tampilan agen |

487| `claude agents --cwd <path>` | Buka tampilan agen yang dibatasi pada sesi yang dimulai di bawah `<path>` |488| `claude agents --cwd <path>` | Buka tampilan agen yang dibatasi pada sesi yang dimulai di bawah `<path>` |

488| `claude agents --json` | Cetak sesi langsung sebagai array JSON dan keluar. Setiap entri memiliki `pid`, `cwd`, `kind`, dan `startedAt`, ditambah `sessionId`, `name`, dan `status` ketika diatur. Gabungkan dengan `--cwd <path>` untuk memfilter |489| `claude agents --json` | Cetak sesi aktif sebagai array JSON dan keluar: setiap sesi langsung, ditambah sesi latar belakang yang masih bekerja atau terblokir bahkan ketika prosesnya telah keluar. Tambahkan `--all` untuk juga menyertakan sesi latar belakang yang telah selesai. Setiap entri memiliki `cwd`, `kind`, dan `startedAt`. Entri latar belakang juga memiliki `id`, dapat digunakan dengan `claude attach`/`logs`/`stop`, dan `state`: salah satu dari `working`, `blocked`, `done`, `failed`, atau `stopped`. `pid` dan `status` hanya ada saat proses masih hidup, ditambah `waitingFor` ketika status adalah `waiting`, yang mengatakan apa sesi diblokir, seperti `permission prompt` atau `input needed`; `sessionId` dan `name` muncul ketika diatur. Gabungkan dengan `--cwd <path>` untuk memfilter |

489| `claude attach <id>` | Lampirkan ke sesi di terminal ini |490| `claude attach <id>` | Lampirkan ke sesi di terminal ini |

490| `claude logs <id>` | Cetak output terbaru sesi |491| `claude logs <id>` | Cetak output terbaru sesi |

491| `claude stop <id>` | Hentikan sesi. Juga menerima `claude kill` |492| `claude stop <id>` | Hentikan sesi. Juga menerima `claude kill` |


534 535 

535Setiap sesi latar belakang memiliki variabel lingkungan `CLAUDE_JOB_DIR` yang diatur ke direktori `~/.claude/jobs/<id>` nya, jadi perintah shell yang dijalankan sesi dapat menulis file sementara ke `$CLAUDE_JOB_DIR/tmp` tanpa bertabrakan dengan sesi paralel.536Setiap sesi latar belakang memiliki variabel lingkungan `CLAUDE_JOB_DIR` yang diatur ke direktori `~/.claude/jobs/<id>` nya, jadi perintah shell yang dijalankan sesi dapat menulis file sementara ke `$CLAUDE_JOB_DIR/tmp` tanpa bertabrakan dengan sesi paralel.

536 537 

537Untuk memeriksa status ini tanpa membaca file secara langsung, jalankan `claude daemon status`. Ini melaporkan apakah supervisor dapat dijangkau, ID proses dan versinya, direktori soket, dan berapa banyak sesi latar belakang yang aktif. `/doctor` mencakup ringkasan pemeriksaan yang sama. Di Windows, `claude daemon status` menampilkan kesalahan file yang mendasar ketika file kunci pipa daemon terkunci atau tidak dapat dibaca alih-alih melaporkan kegagalan koneksi generik.538Untuk memeriksa status ini tanpa membaca file secara langsung, jalankan `claude daemon status`. Ini melaporkan apakah supervisor dapat dijangkau, ID proses dan versinya, direktori soket, dan berapa banyak sesi latar belakang yang aktif. `/doctor` mencakup ringkasan pemeriksaan yang sama.

539 

540Perintah ini juga memperingatkan ketika supervisor yang berjalan berada pada versi yang berbeda dari `claude` yang Anda panggil, yang terjadi setelah pembaruan yang belum dimulai ulang oleh supervisor. Peringatan menunjukkan kedua versi dan memberi tahu Anda untuk menjalankan `claude daemon stop --any` untuk mengambil versi baru. Ketika Claude Code diinstal sebagai layanan OS, perintah yang disarankan adalah `claude daemon stop` tanpa flag.

541 

542Di Windows, `claude daemon status` menampilkan kesalahan file yang mendasar ketika file kunci pipa daemon terkunci atau tidak dapat dibaca alih-alih melaporkan kegagalan koneksi generik.

538 543 

539<h3 id="turn-off-agent-view">544<h3 id="turn-off-agent-view">

540 Matikan tampilan agen545 Matikan tampilan agen


560 565 

561Sebelum Anda mengirim sesi pertama Anda, tampilan agen menampilkan petunjuk onboarding singkat dengan contoh prompt sebagai pengganti daftar sesi. Ketik prompt dalam input di bagian bawah dan tekan `Enter` untuk mengirim sesi pertama Anda.566Sebelum Anda mengirim sesi pertama Anda, tampilan agen menampilkan petunjuk onboarding singkat dengan contoh prompt sebagai pengganti daftar sesi. Ketik prompt dalam input di bagian bawah dan tekan `Enter` untuk mengirim sesi pertama Anda.

562 567 

563<h3 id="cannot-open-agents-because-background-tasks-are-running">568<h3 id="cannot-open-agents-because-work-is-running-in-the-background">

564 Tidak dapat membuka agen karena tugas latar belakang sedang berjalan569 Tidak dapat membuka agen karena pekerjaan sedang berjalan di latar belakang

565</h3>570</h3>

566 571 

567Jika menekan `←` untuk menempatkan sesi saat ini di latar belakang menunjukkan `Cannot open agents — N background task(s) running`, sesi memiliki pekerjaan yang sedang berlangsung seperti subagen, alur kerja dinamis, atau perintah shell latar belakang, dan pintasan tidak akan diam-diam meninggalkannya. Jalankan `/tasks` untuk melihat apa yang sedang berjalan, kemudian `/bg` untuk mengonfirmasi peninggalannya. Lihat [Dari dalam sesi](#from-inside-a-session) untuk apa yang ditransfer dan apa yang tidak saat Anda menempatkan di latar belakang.572Jika menekan `←` untuk menempatkan sesi saat ini di latar belakang menunjukkan `Cannot open agents — N still running in the background`, sesi memiliki pekerjaan yang sedang berlangsung seperti subagen, alur kerja dinamis, atau perintah shell latar belakang, dan pintasan tidak akan diam-diam meninggalkannya. Jalankan `/tasks` untuk melihat apa yang sedang berjalan, kemudian `/bg` untuk mengonfirmasi peninggalannya. Lihat [Dari dalam sesi](#from-inside-a-session) untuk apa yang ditransfer dan apa yang tidak saat Anda menempatkan di latar belakang.

568 573 

569<h3 id="prompt-rejected-as-too-short">574<h3 id="prompt-rejected-as-too-short">

570 Prompt ditolak karena terlalu pendek575 Prompt ditolak karena terlalu pendek

agents.md +2 −2

Details

9[Subagents](/id/sub-agents), [agent view](/id/agent-view), [agent teams](/id/agent-teams), dan [dynamic workflows](/id/workflows) masing-masing melakukan paralelisasi pekerjaan dengan cara yang berbeda. Yang tepat tergantung pada apakah Anda ingin tetap berada di setiap percakapan sendiri, menyerahkan tugas dan memeriksa kembali nanti, atau membiarkan Claude mengoordinasikan sekelompok pekerja untuk Anda.9[Subagents](/id/sub-agents), [agent view](/id/agent-view), [agent teams](/id/agent-teams), dan [dynamic workflows](/id/workflows) masing-masing melakukan paralelisasi pekerjaan dengan cara yang berbeda. Yang tepat tergantung pada apakah Anda ingin tetap berada di setiap percakapan sendiri, menyerahkan tugas dan memeriksa kembali nanti, atau membiarkan Claude mengoordinasikan sekelompok pekerja untuk Anda.

10 10 

11| Pendekatan | Apa yang diberikannya | Gunakan ketika |11| Pendekatan | Apa yang diberikannya | Gunakan ketika |

12| :--------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |12| :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

13| [Subagents](/id/sub-agents) | Pekerja delegasi di dalam satu sesi yang melakukan tugas sampingan dalam konteks mereka sendiri dan mengembalikan ringkasan | Tugas sampingan akan membanjiri percakapan utama Anda dengan hasil pencarian, log, atau konten file yang tidak akan Anda referensikan lagi |13| [Subagents](/id/sub-agents) | Pekerja delegasi di dalam satu sesi yang melakukan tugas sampingan dalam konteks mereka sendiri dan mengembalikan ringkasan | Tugas sampingan akan membanjiri percakapan utama Anda dengan hasil pencarian, log, atau konten file yang tidak akan Anda referensikan lagi |

14| [Agent view](/id/agent-view) | Satu layar untuk mengirim dan memantau sesi yang berjalan di latar belakang, dibuka dengan `claude agents`. Pratinjau penelitian | Anda memiliki beberapa tugas independen dan ingin menyerahkannya, memeriksa status sekilas, dan hanya melangkah ketika salah satunya membutuhkan Anda |14| [Agent view](/id/agent-view) | Satu layar untuk mengirim dan memantau sesi yang berjalan di latar belakang, dibuka dengan `claude agents`. Pratinjau penelitian | Anda memiliki beberapa tugas independen dan ingin menyerahkannya, memeriksa status sekilas, dan hanya melangkah ketika salah satunya membutuhkan Anda |

15| [Agent teams](/id/agent-teams) | Beberapa sesi terkoordinasi dengan daftar tugas bersama dan pesan antar-agen, dikelola oleh pemimpin. Eksperimental dan dinonaktifkan secara default | Anda ingin Claude membagi proyek menjadi beberapa bagian, menugaskannya, dan menjaga pekerja tetap tersinkronisasi |15| [Agent teams](/id/agent-teams) | Beberapa sesi terkoordinasi dengan daftar tugas bersama dan pesan antar-agen, dikelola oleh pemimpin. Eksperimental dan dinonaktifkan secara default | Anda ingin Claude membagi proyek menjadi beberapa bagian, menugaskannya, dan menjaga pekerja tetap tersinkronisasi |

16| [Dynamic workflows](/id/workflows) | Skrip yang menjalankan banyak subagents dan memeriksa silang hasil mereka, untuk pekerjaan yang terlalu besar untuk dikoordinasikan satu putaran sekaligus atau yang memerlukan lebih dari satu kali lintasan. Pratinjau penelitian | Tugas terlalu besar untuk segelintir subagents, atau Anda ingin temuan diverifikasi satu sama lain: audit seluruh codebase, migrasi 500 file, penelitian yang diperiksa silang, atau rencana yang disusun dari beberapa sudut |16| [Dynamic workflows](/id/workflows) | Skrip yang menjalankan banyak subagents dan memeriksa silang hasil mereka, untuk pekerjaan yang terlalu besar untuk dikoordinasikan satu putaran sekaligus atau yang memerlukan lebih dari satu kali lintasan | Tugas terlalu besar untuk segelintir subagents, atau Anda ingin temuan diverifikasi satu sama lain: audit seluruh codebase, migrasi 500 file, penelitian yang diperiksa silang, atau rencana yang disusun dari beberapa sudut |

17 17 

18Dalam setiap pendekatan, pekerja adalah sesi Claude. Untuk melibatkan alat yang berbeda, paparkan ke Claude sebagai [MCP server](/id/mcp).18Dalam setiap pendekatan, pekerja adalah sesi Claude. Untuk melibatkan alat yang berbeda, paparkan ke Claude sebagai [MCP server](/id/mcp).

19 19 

Details

6 6 

7> Pelajari tentang mengonfigurasi Claude Code melalui Amazon Bedrock, termasuk pengaturan, konfigurasi IAM, dan pemecahan masalah.7> Pelajari tentang mengonfigurasi Claude Code melalui Amazon Bedrock, termasuk pengaturan, konfigurasi IAM, dan pemecahan masalah.

8 8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79<ContactSalesCard surface="bedrock" />

80 

9<h2 id="prerequisites">81<h2 id="prerequisites">

10 Prasyarat82 Prasyarat

11</h2>83</h2>


141 "Credentials": {213 "Credentials": {

142 "AccessKeyId": "value",214 "AccessKeyId": "value",

143 "SecretAccessKey": "value",215 "SecretAccessKey": "value",

144 "SessionToken": "value"216 "SessionToken": "value",

217 "Expiration": "2026-01-01T00:00:00Z"

145 }218 }

146}219}

147```220```

148 221 

222`Expiration` bersifat opsional. {/* min-version: 2.1.176 */}Mulai dari Claude Code v2.1.176, ketika perintah mengembalikan `Expiration` ISO 8601 yang valid, Claude Code menyimpan kredensial dalam cache hingga lima menit sebelum waktu tersebut. Tanpanya, atau pada versi sebelumnya, kredensial disimpan dalam cache selama satu jam.

223 

149<h3 id="3-configure-claude-code">224<h3 id="3-configure-claude-code">

150 3. Konfigurasi Claude Code225 3. Konfigurasi Claude Code

151</h3>226</h3>


155```bash theme={null}230```bash theme={null}

156# Aktifkan integrasi Bedrock231# Aktifkan integrasi Bedrock

157export CLAUDE_CODE_USE_BEDROCK=1232export CLAUDE_CODE_USE_BEDROCK=1

158export AWS_REGION=us-east-1 # atau wilayah pilihan Anda233export AWS_REGION=us-east-1 # opsional jika profil AWS Anda sudah menetapkan wilayah

159 234 

160# Opsional: Ganti wilayah AWS untuk model kecil/cepat (Bedrock dan Mantle).235# Opsional: Ganti wilayah AWS untuk model kecil/cepat (Bedrock dan Mantle).

161# Di Bedrock, tidak berpengaruh tanpa ANTHROPIC_DEFAULT_HAIKU_MODEL236# Di Bedrock, tidak berpengaruh tanpa ANTHROPIC_DEFAULT_HAIKU_MODEL


168 243 

169Saat mengaktifkan Bedrock untuk Claude Code, perhatikan hal berikut:244Saat mengaktifkan Bedrock untuk Claude Code, perhatikan hal berikut:

170 245 

171* `AWS_REGION` adalah variabel lingkungan yang diperlukan. Claude Code tidak membaca dari file konfigurasi `.aws` untuk pengaturan ini.246* {/* min-version: 2.1.172 */}Mulai dari v2.1.172, Anda hanya perlu menetapkan `AWS_REGION` untuk mengganti wilayah profil AWS Anda atau ketika profil Anda tidak memiliki wilayah. Claude Code menyelesaikan wilayah dalam urutan ini:

247 

248 * `AWS_REGION`

249 * `AWS_DEFAULT_REGION`

250 * `region` yang ditetapkan pada profil AWS aktif Anda, dibaca dari file kredensial bersama AWS terlebih dahulu dan kemudian file konfigurasi bersama, sesuai dengan prioritas SDK AWS

251 * `us-east-1`

252 

253 Profil aktif adalah `AWS_PROFILE` jika diatur, jika tidak `default`. Atur `AWS_SHARED_CREDENTIALS_FILE` atau `AWS_CONFIG_FILE` untuk menunjuk ke jalur file non-default. Jalankan `/status` untuk melihat wilayah yang diselesaikan. Ketika wilayah berasal dari file konfigurasi AWS Anda atau fallback default, `/status` juga mencatat sumbernya. Pada v2.1.171 dan sebelumnya, Claude Code tidak membaca file konfigurasi AWS, jadi atur `AWS_REGION` secara eksplisit.

172* Saat menggunakan Bedrock, perintah `/logout` tidak tersedia karena autentikasi ditangani melalui kredensial AWS.254* Saat menggunakan Bedrock, perintah `/logout` tidak tersedia karena autentikasi ditangani melalui kredensial AWS.

173* Alat WebSearch tidak tersedia di Bedrock. Lihat [perilaku alat WebSearch](/id/tools-reference#websearch-tool-behavior).255* Alat WebSearch tidak tersedia di Bedrock. Lihat [perilaku alat WebSearch](/id/tools-reference#websearch-tool-behavior).

174* Anda dapat menggunakan file pengaturan untuk variabel lingkungan seperti `AWS_PROFILE` yang tidak ingin Anda bocorkan ke proses lain. Lihat [Settings](/id/settings) untuk informasi lebih lanjut.256* Anda dapat menggunakan file pengaturan untuk variabel lingkungan seperti `AWS_PROFILE` yang tidak ingin Anda bocorkan ke proses lain. Lihat [Settings](/id/settings) untuk informasi lebih lanjut.


178</h3>260</h3>

179 261 

180<Warning>262<Warning>

181 Pin versi model spesifik saat menerapkan ke beberapa pengguna. Tanpa pinning, alias model seperti `sonnet` dan `opus` diselesaikan ke versi terbaru, yang mungkin belum tersedia di akun Bedrock Anda ketika Anthropic merilis pembaruan. Claude Code [kembali](#startup-model-checks) ke versi sebelumnya saat startup ketika versi terbaru tidak tersedia, tetapi pinning memungkinkan Anda mengontrol kapan pengguna Anda beralih ke model baru.263 Pin versi model spesifik saat menerapkan ke beberapa pengguna. Tanpa pinning, alias model seperti `sonnet` dan `opus` diselesaikan ke default bawaan Claude Code untuk Bedrock, yang dapat tertinggal dari rilis terbaru dan mungkin belum tersedia di akun Anda. Claude Code [kembali](#startup-model-checks) ke versi sebelumnya saat startup ketika default tidak tersedia, tetapi pinning memungkinkan Anda mengontrol kapan pengguna Anda beralih ke model baru.

182</Warning>264</Warning>

183 265 

184Atur variabel lingkungan ini ke ID model Bedrock spesifik.266Atur variabel lingkungan ini ke ID model Bedrock spesifik.


191export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'273export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

192```274```

193 275 

194Variabel ini menggunakan ID profil inferensi lintas wilayah (dengan awalan `us.`). Jika Anda menggunakan awalan wilayah berbeda atau profil inferensi aplikasi, sesuaikan sesuai kebutuhan. Untuk ID model saat ini dan warisan, lihat [Models overview](https://platform.claude.com/docs/en/about-claude/models/overview). Lihat [Model configuration](/id/model-config#pin-models-for-third-party-deployments) untuk daftar lengkap variabel lingkungan.276Variabel ini menggunakan ID profil inferensi lintas wilayah (dengan awalan `us.`). Jika Anda menggunakan awalan wilayah berbeda atau profil inferensi aplikasi, sesuaikan sesuai kebutuhan. Di wilayah AWS GovCloud, gunakan awalan `us-gov.`. Untuk ID model saat ini dan warisan, lihat [Models overview](https://platform.claude.com/docs/en/about-claude/models/overview). Lihat [Model configuration](/id/model-config#pin-models-for-third-party-deployments) untuk daftar lengkap variabel lingkungan.

195 277 

196Claude Code menggunakan model default ini ketika tidak ada variabel pinning yang diatur:278Claude Code menggunakan model default ini ketika tidak ada variabel pinning yang diatur:

197 279 


366export AWS_REGION=us-east-1448export AWS_REGION=us-east-1

367```449```

368 450 

369Claude Code membuat URL endpoint dari `AWS_REGION`. Untuk menggantinya untuk endpoint khusus atau gateway, atur `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`.451Claude Code membuat URL endpoint dari wilayah AWS. {/* min-version: 2.1.172 */}Mulai dari v2.1.172, wilayah diselesaikan dengan prioritas yang sama seperti [Bedrock di atas](#3-configure-claude-code); versi sebelumnya hanya menggunakan `AWS_REGION`. Untuk mengganti URL untuk endpoint khusus atau gateway, atur `ANTHROPIC_BEDROCK_MANTLE_BASE_URL`.

370 452 

371Jalankan `/status` di dalam Claude Code untuk mengonfirmasi. Baris penyedia menunjukkan `Amazon Bedrock (Mantle)` ketika Mantle aktif.453Jalankan `/status` di dalam Claude Code untuk mengonfirmasi. Baris penyedia menunjukkan `Amazon Bedrock (Mantle)` ketika Mantle aktif.

372 454 

Details

6 6 

7> Beri tahu pengklasifikasi auto mode tentang repo, bucket, dan domain mana yang dipercaya organisasi Anda. Atur konteks lingkungan, ganti aturan blokir dan izin default, dan periksa konfigurasi efektif Anda dengan subperintah CLI auto-mode.7> Beri tahu pengklasifikasi auto mode tentang repo, bucket, dan domain mana yang dipercaya organisasi Anda. Atur konteks lingkungan, ganti aturan blokir dan izin default, dan periksa konfigurasi efektif Anda dengan subperintah CLI auto-mode.

8 8 

9[Auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) memungkinkan Claude Code berjalan tanpa permintaan izin dengan merutekan setiap panggilan alat melalui pengklasifikasi yang memblokir apa pun yang tidak dapat dibalikkan, merusak, atau ditujukan di luar lingkungan Anda. Gunakan blok pengaturan `autoMode` untuk memberi tahu pengklasifikasi itu repo, bucket, dan domain mana yang dipercaya organisasi Anda, sehingga berhenti memblokir operasi internal rutin.9[Auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) memungkinkan Claude Code berjalan tanpa permintaan izin rutin dengan merutekan panggilan alat melalui pengklasifikasi yang memblokir apa pun yang tidak dapat dibalikkan, merusak, atau ditujukan di luar lingkungan Anda. Aturan Deny dan explicit ask dievaluasi sebelum pengklasifikasi dan masih memblokir atau meminta. Gunakan blok pengaturan `autoMode` untuk memberi tahu pengklasifikasi itu repo, bucket, dan domain mana yang dipercaya organisasi Anda, sehingga berhenti memblokir operasi internal rutin.

10 10 

11<Note>11<Note>

12 Auto mode tersedia untuk semua pengguna pada Anthropic API. Pada Amazon Bedrock, Google Cloud Vertex AI, dan Microsoft Foundry, Anda harus terlebih dahulu [mengatur `CLAUDE_CODE_ENABLE_AUTO_MODE`](/id/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry). Jika Claude Code melaporkan auto mode tidak tersedia untuk akun Anda, periksa [persyaratan lengkap](/id/permission-modes#eliminate-prompts-with-auto-mode), yang juga mencakup model yang didukung dan pengaktifan admin pada paket Team dan Enterprise.12 Auto mode tersedia untuk semua pengguna pada Anthropic API. Pada Amazon Bedrock, Google Cloud Vertex AI, dan Microsoft Foundry, Anda harus terlebih dahulu [mengatur `CLAUDE_CODE_ENABLE_AUTO_MODE`](/id/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry). Jika Claude Code melaporkan auto mode tidak tersedia untuk akun Anda, periksa [persyaratan lengkap](/id/permission-modes#eliminate-prompts-with-auto-mode), yang juga mencakup model yang didukung dan pengaktifan admin pada paket Team dan Enterprise.


35| Cakupan | File | Gunakan untuk |35| Cakupan | File | Gunakan untuk |

36| :---------------------------------- | :-------------------------------------------------- | :----------------------------------------------------------- |36| :---------------------------------- | :-------------------------------------------------- | :----------------------------------------------------------- |

37| Satu pengembang | `~/.claude/settings.json` | Infrastruktur terpercaya pribadi |37| Satu pengembang | `~/.claude/settings.json` | Infrastruktur terpercaya pribadi |

38| Satu proyek, satu pengembang | `.claude/settings.local.json` | Bucket atau layanan terpercaya per-proyek, gitignored |38| Satu proyek, satu pengembang | `.claude/settings.local.json` | Bucket atau layanan terpercaya per-proyek |

39| Di seluruh organisasi | [Pengaturan terkelola](/id/server-managed-settings) | Infrastruktur terpercaya didistribusikan ke semua pengembang |39| Di seluruh organisasi | [Pengaturan terkelola](/id/server-managed-settings) | Infrastruktur terpercaya didistribusikan ke semua pengembang |

40| Bendera `--settings` atau Agent SDK | JSON inline | Penggantian per-invokasi untuk otomasi |40| Bendera `--settings` atau Agent SDK | JSON inline | Penggantian per-invokasi untuk otomasi |

41 41 


185 185 

186Penolakan berulang untuk tujuan yang sama biasanya berarti pengklasifikasi kehilangan konteks. Tambahkan tujuan itu ke `autoMode.environment`, kemudian jalankan `claude auto-mode config` untuk mengonfirmasi itu berlaku.186Penolakan berulang untuk tujuan yang sama biasanya berarti pengklasifikasi kehilangan konteks. Tambahkan tujuan itu ke `autoMode.environment`, kemudian jalankan `claude auto-mode config` untuk mengonfirmasi itu berlaku.

187 187 

188Untuk bereaksi terhadap penolakan secara terprogram, gunakan [hook `PermissionDenied`](/id/hooks#permissiondenied).188Untuk bereaksi terhadap penolakan secara terprogram, gunakan hook [`PermissionDenied`](/id/hooks#permissiondenied).

189 189 

190<h2 id="see-also">190<h2 id="see-also">

191 Lihat juga191 Lihat juga

Details

63 Pisahkan penelitian dan perencanaan dari implementasi untuk menghindari menyelesaikan masalah yang salah.63 Pisahkan penelitian dan perencanaan dari implementasi untuk menghindari menyelesaikan masalah yang salah.

64</Tip>64</Tip>

65 65 

66Membiarkan Claude langsung melompat ke pengkodean dapat menghasilkan kode yang menyelesaikan masalah yang salah. Gunakan [Plan Mode](/id/permission-modes#analyze-before-you-edit-with-plan-mode) untuk memisahkan eksplorasi dari eksekusi.66Membiarkan Claude langsung melompat ke pengkodean dapat menghasilkan kode yang menyelesaikan masalah yang salah. Gunakan [plan mode](/id/permission-modes#analyze-before-you-edit-with-plan-mode) untuk memisahkan eksplorasi dari eksekusi.

67 67 

68Alur kerja yang direkomendasikan memiliki empat fase:68Alur kerja yang direkomendasikan memiliki empat fase:

69 69 

70<Steps>70<Steps>

71 <Step title="Jelajahi">71 <Step title="Jelajahi">

72 Masukkan Plan Mode. Claude membaca file dan menjawab pertanyaan tanpa membuat perubahan.72 Masukkan plan mode. Claude membaca file dan menjawab pertanyaan tanpa membuat perubahan.

73 73 

74 ```txt claude (plan mode) theme={null}74 ```txt claude (plan mode) theme={null}

75 read /src/auth and understand how we handle sessions and login.75 read /src/auth and understand how we handle sessions and login.


89 </Step>89 </Step>

90 90 

91 <Step title="Implementasikan">91 <Step title="Implementasikan">

92 Beralih keluar dari Plan Mode dan biarkan Claude kode, memverifikasi terhadap rencananya.92 Beralih keluar dari plan mode dan biarkan Claude kode, memverifikasi terhadap rencananya.

93 93 

94 ```txt claude (default mode) theme={null}94 ```txt claude (default mode) theme={null}

95 implement the OAuth flow from your plan. write tests for the95 implement the OAuth flow from your plan. write tests for the


107</Steps>107</Steps>

108 108 

109<Callout>109<Callout>

110 Plan Mode berguna, tetapi juga menambah overhead.110 Plan mode berguna, tetapi juga menambah overhead.

111 111 

112 Untuk tugas di mana cakupannya jelas dan perbaikannya kecil (seperti memperbaiki typo, menambahkan baris log, atau mengganti nama variabel) minta Claude untuk melakukannya secara langsung.112 Untuk tugas di mana cakupannya jelas dan perbaikannya kecil (seperti memperbaiki typo, menambahkan baris log, atau mengganti nama variabel) minta Claude untuk melakukannya secara langsung.

113 113 

channels.md +8 −8

Details

29Untuk membangun channel Anda sendiri, lihat [referensi Channels](/id/channels-reference).29Untuk membangun channel Anda sendiri, lihat [referensi Channels](/id/channels-reference).

30 30 

31<h2 id="supported-channels">31<h2 id="supported-channels">

32 Supported channels32 Saluran yang Didukung

33</h2>33</h2>

34 34 

35Setiap channel yang didukung adalah plugin yang memerlukan [Bun](https://bun.sh). Untuk demo langsung dari alur plugin sebelum menghubungkan platform nyata, coba [quickstart fakechat](#quickstart).35Setiap saluran yang didukung adalah plugin yang memerlukan [Bun](https://bun.sh). Untuk demo langsung dari alur plugin sebelum menghubungkan platform nyata, coba [quickstart fakechat](#quickstart).

36 36 

37<Tabs>37<Tabs>

38 <Tab title="Telegram">38 <Tab title="Telegram">


171 <Tab title="iMessage">171 <Tab title="iMessage">

172 Lihat [sumber plugin iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) lengkap.172 Lihat [sumber plugin iMessage](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/imessage) lengkap.

173 173 

174 Channel iMessage membaca database Pesan Anda secara langsung dan mengirim balasan melalui AppleScript. Ini memerlukan macOS dan tidak memerlukan token bot atau layanan eksternal.174 Saluran iMessage membaca database Pesan Anda secara langsung dan mengirim balasan melalui AppleScript. Ini memerlukan macOS dan tidak memerlukan token bot atau layanan eksternal.

175 175 

176 <Steps>176 <Steps>

177 <Step title="Berikan Akses Disk Penuh">177 <Step title="Berikan Akses Disk Penuh">


217 </Tab>217 </Tab>

218</Tabs>218</Tabs>

219 219 

220Anda juga dapat [membangun channel Anda sendiri](/id/channels-reference) untuk sistem yang belum memiliki plugin.220Anda juga dapat [membangun saluran Anda sendiri](/id/channels-reference) untuk sistem yang belum memiliki plugin.

221 221 

222<h2 id="quickstart">222<h2 id="quickstart">

223 Quickstart223 Quickstart


345 Research preview345 Research preview

346</h2>346</h2>

347 347 

348Channels adalah fitur research preview. Ketersediaan sedang diluncurkan secara bertahap, dan sintaks bendera `--channels` dan kontrak protokol dapat berubah berdasarkan umpan balik.348Channels adalah fitur research preview. Ketersediaan sedang diluncurkan secara bertahap, dan sintaks bendera `--channels` serta kontrak protokol dapat berubah berdasarkan umpan balik.

349 349 

350Selama pratinjau, `--channels` hanya menerima plugin dari daftar penyetujuan yang dipertahankan Anthropic, atau dari daftar penyetujuan organisasi Anda jika admin telah mengatur [`allowedChannelPlugins`](#restrict-which-channel-plugins-can-run). Plugin channel di [claude-plugins-official](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) adalah set yang disetujui default. Jika Anda melewatkan sesuatu yang tidak ada di daftar penyetujuan yang efektif, Claude Code dimulai secara normal tetapi channel tidak mendaftar, dan pemberitahuan startup memberi tahu Anda mengapa.350Selama pratinjau, `--channels` hanya menerima plugin dari daftar penyetujuan yang dipertahankan Anthropic, atau dari daftar penyetujuan organisasi Anda jika admin telah mengatur [`allowedChannelPlugins`](#restrict-which-channel-plugins-can-run). Plugin channel di [claude-plugins-official](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) adalah set yang disetujui secara default. Jika Anda melewatkan sesuatu yang tidak ada di daftar penyetujuan yang efektif, Claude Code dimulai secara normal tetapi channel tidak mendaftar, dan pemberitahuan startup memberi tahu Anda mengapa.

351 351 

352Untuk menguji channel yang Anda bangun, gunakan `--dangerously-load-development-channels`. Lihat [Test during the research preview](/id/channels-reference#test-during-the-research-preview) untuk informasi tentang menguji channels khusus yang Anda bangun.352Untuk menguji channel yang Anda bangun, gunakan `--dangerously-load-development-channels`. Lihat [Test during the research preview](/id/channels-reference#test-during-the-research-preview) untuk informasi tentang menguji channels khusus yang Anda bangun.

353 353 

354Laporkan masalah atau umpan balik di [repositori GitHub Claude Code](https://github.com/anthropics/claude-code/issues).354Laporkan masalah atau umpan balik di [repositori GitHub Claude Code](https://github.com/anthropics/claude-code/issues).

355 355 

356<h2 id="how-channels-compare">356<h2 id="how-channels-compare">

357 How channels compare357 Perbandingan channel

358</h2>358</h2>

359 359 

360Beberapa fitur Claude Code terhubung ke sistem di luar terminal, masing-masing cocok untuk jenis pekerjaan yang berbeda:360Beberapa fitur Claude Code terhubung ke sistem di luar terminal, masing-masing cocok untuk jenis pekerjaan yang berbeda:


372* **[Webhook receiver](/id/channels-reference#example-build-a-webhook-receiver)**: webhook dari CI, pelacak kesalahan Anda, pipeline deploy, atau layanan eksternal lainnya tiba di mana Claude sudah memiliki file Anda terbuka dan mengingat apa yang Anda debug.372* **[Webhook receiver](/id/channels-reference#example-build-a-webhook-receiver)**: webhook dari CI, pelacak kesalahan Anda, pipeline deploy, atau layanan eksternal lainnya tiba di mana Claude sudah memiliki file Anda terbuka dan mengingat apa yang Anda debug.

373 373 

374<h2 id="next-steps">374<h2 id="next-steps">

375 Next steps375 Langkah selanjutnya

376</h2>376</h2>

377 377 

378Setelah Anda memiliki channel yang berjalan, jelajahi fitur terkait ini:378Setelah Anda memiliki channel yang berjalan, jelajahi fitur terkait ini:

Details

142 claude --dangerously-load-development-channels server:webhook142 claude --dangerously-load-development-channels server:webhook

143 ```143 ```

144 144 

145 Kali pertama Anda memulai sesi dalam proyek ini, Claude Code meminta persetujuan sebelum menggunakan server baru dari `.mcp.json`. Dialog melaporkan "New MCP server found in this project: webhook". Pilih **Use this MCP server** untuk melanjutkan.

146 

145 Ketika Claude Code dimulai, membaca konfigurasi MCP Anda, menjalankan `webhook.ts` Anda sebagai subprocess, dan pendengar HTTP dimulai secara otomatis pada port yang Anda konfigurasi (8788 dalam contoh ini). Anda tidak perlu menjalankan server sendiri.147 Ketika Claude Code dimulai, membaca konfigurasi MCP Anda, menjalankan `webhook.ts` Anda sebagai subprocess, dan pendengar HTTP dimulai secara otomatis pada port yang Anda konfigurasi (8788 dalam contoh ini). Anda tidak perlu menjalankan server sendiri.

146 148 

149 Pemberitahuan redup di bawah banner startup mengonfirmasi channel terdaftar: `Channels (experimental) messages from server:webhook inject directly in this session · restart without --dangerously-load-development-channels to stop`.

150 

147 Jika Anda melihat "blocked by org policy," admin organisasi Anda perlu [mengaktifkan channels](/id/channels#enterprise-controls) terlebih dahulu.151 Jika Anda melihat "blocked by org policy," admin organisasi Anda perlu [mengaktifkan channels](/id/channels#enterprise-controls) terlebih dahulu.

148 152 

149 Di terminal terpisah, simulasikan webhook dengan mengirim HTTP POST dengan pesan ke server Anda. Contoh ini mengirim alert kegagalan CI ke port 8788 (atau port apa pun yang Anda konfigurasi):153 Di terminal terpisah, simulasikan webhook dengan mengirim HTTP POST dengan pesan ke server Anda. Contoh ini mengirim alert kegagalan CI ke port 8788 (atau port apa pun yang Anda konfigurasi):


753curl -d "list the files in this directory" -H "X-Sender: dev" localhost:8788757curl -d "list the files in this directory" -H "X-Sender: dev" localhost:8788

754```758```

755 759 

756Dialog permission lokal terbuka di terminal Claude Code Anda. Sebentar kemudian prompt muncul dalam aliran `/events`, termasuk ID lima huruf. Setujui dari sisi jarak jauh:760Listing file adalah read-only, jadi Claude menjalankannya tanpa persetujuan. Dialog permission terbuka ketika Claude memanggil tool `reply` untuk mengirim jawabannya kembali. Dialog lokal terbuka di terminal Claude Code Anda, dan sebentar kemudian prompt untuk `mcp__webhook__reply` muncul dalam aliran `/events`, termasuk ID lima huruf. Setujui dari sisi jarak jauh:

757 761 

758```bash theme={null}762```bash theme={null}

759curl -d "yes <id>" -H "X-Sender: dev" localhost:8788763curl -d "yes <id>" -H "X-Sender: dev" localhost:8788

760```764```

761 765 

762Dialog lokal menutup dan tool berjalan. Balasan Claude kembali melalui tool `reply` dan mendarat dalam aliran juga.766Dialog lokal menutup, tool `reply` berjalan, dan balasan Claude mendarat dalam aliran.

763 767 

764Tiga bagian spesifik channel dalam file ini:768Tiga bagian spesifik channel dalam file ini:

765 769 

Details

59 59 

60Setiap sesi berjalan di VM yang dikelola Anthropic yang segar dengan repositori Anda dikloning. Bagian ini mencakup apa yang tersedia saat sesi dimulai dan cara menyesuaikannya.60Setiap sesi berjalan di VM yang dikelola Anthropic yang segar dengan repositori Anda dikloning. Bagian ini mencakup apa yang tersedia saat sesi dimulai dan cara menyesuaikannya.

61 61 

62<h3 id="what-s-available-in-cloud-sessions">62<h3 id="whats-available-in-cloud-sessions">

63 Apa yang tersedia di sesi cloud63 Apa yang tersedia di sesi cloud

64</h3>64</h3>

65 65 

66Sesi cloud dimulai dari klon segar repositori Anda. Apa pun yang dikomit ke repo tersedia. Apa pun yang Anda instal atau konfigurasikan hanya di mesin Anda sendiri tidak tersedia.66Sesi cloud dimulai dari klon segar repositori Anda. Apa pun yang dikomit ke repo tersedia. Apa pun yang Anda instal atau konfigurasikan hanya di mesin Anda sendiri tidak tersedia.

67 67 

68| | Tersedia di sesi cloud | Mengapa |68| | Tersedia di sesi cloud | Mengapa |

69| :------------------------------------------------------------------------ | :--------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |69| :---------------------------------------------------------------------------- | :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

70| `CLAUDE.md` repositori Anda | Ya | Bagian dari klon |70| `CLAUDE.md` repositori Anda | Ya | Bagian dari klon |

71| Hook `.claude/settings.json` repositori Anda | Ya | Bagian dari klon |71| Hook `.claude/settings.json` repositori Anda | Ya | Bagian dari klon |

72| Server MCP `.mcp.json` repositori Anda | Ya | Bagian dari klon |72| Server MCP `.mcp.json` repositori Anda | Ya | Bagian dari klon |


74| `.claude/skills/`, `.claude/agents/`, `.claude/commands/` repositori Anda | Ya | Bagian dari klon |74| `.claude/skills/`, `.claude/agents/`, `.claude/commands/` repositori Anda | Ya | Bagian dari klon |

75| Plugin yang dideklarasikan di `.claude/settings.json` | Ya | Diinstal saat startup sesi dari [marketplace](/id/plugin-marketplaces) yang Anda deklarasikan. Memerlukan akses jaringan untuk menjangkau sumber marketplace |75| Plugin yang dideklarasikan di `.claude/settings.json` | Ya | Diinstal saat startup sesi dari [marketplace](/id/plugin-marketplaces) yang Anda deklarasikan. Memerlukan akses jaringan untuk menjangkau sumber marketplace |

76| `~/.claude/CLAUDE.md` pengguna Anda | Tidak | Hidup di mesin Anda, bukan di repo |76| `~/.claude/CLAUDE.md` pengguna Anda | Tidak | Hidup di mesin Anda, bukan di repo |

77| `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` pengguna Anda | Tidak | Hidup di mesin Anda, bukan di repo. Komitkan ke direktori `.claude/` repo sebagai gantinya. Skill yang Anda aktifkan di claude.ai dimuat ke sesi cloud secara otomatis |

77| Plugin yang diaktifkan hanya di pengaturan pengguna Anda | Tidak | `enabledPlugins` bersistem hidup di `~/.claude/settings.json`. Deklarasikan di `.claude/settings.json` repo sebagai gantinya |78| Plugin yang diaktifkan hanya di pengaturan pengguna Anda | Tidak | `enabledPlugins` bersistem hidup di `~/.claude/settings.json`. Deklarasikan di `.claude/settings.json` repo sebagai gantinya |

78| Server MCP yang Anda tambahkan dengan `claude mcp add` | Tidak | Itu menulis ke konfigurasi pengguna lokal Anda, bukan repo. Deklarasikan server di [`.mcp.json`](/id/mcp#project-scope) sebagai gantinya |79| Server MCP yang Anda tambahkan dengan `claude mcp add` | Tidak | Itu menulis ke konfigurasi pengguna lokal Anda, bukan repo. Deklarasikan server di [`.mcp.json`](/id/mcp#project-scope) sebagai gantinya |

79| Token API statis dan kredensial | Tidak | Tidak ada penyimpanan rahasia khusus yang ada. Lihat di bawah |80| Token API statis dan kredensial | Tidak | Tidak ada penyimpanan rahasia khusus yang ada. Lihat di bawah |


297 Akses jaringan298 Akses jaringan

298</h2>299</h2>

299 300 

300Akses jaringan mengontrol koneksi keluar dari lingkungan cloud. Setiap lingkungan menentukan satu tingkat akses, dan Anda dapat memperluas dengan domain yang diizinkan khusus. Default adalah **Trusted**, yang memungkinkan registri paket dan [domain yang diizinkan](#default-allowed-domains) lainnya.301Akses jaringan mengontrol koneksi keluar dari lingkungan cloud. Setiap lingkungan menentukan satu tingkat akses, dan Anda dapat memperluas dengan domain yang diizinkan khusus. Default adalah **Trusted**, yang memungkinkan registri paket dan [domain yang diizinkan lainnya](#default-allowed-domains).

301 302 

302Untuk mengubah akses jaringan lingkungan, [buka untuk pengeditan](#configure-your-environment) dan gunakan pemilih **Akses jaringan** di dialog. Tidak ada halaman Environments terpisah. Ikon cloud muncul di mana pun Anda memulai sesi cloud atau mengonfigurasi [routine](/id/routines#environments-and-network-access).303Untuk mengubah akses jaringan lingkungan, [buka untuk pengeditan](#configure-your-environment) dan gunakan pemilih **Akses jaringan** di dialog. Tidak ada halaman Environments terpisah. Ikon cloud muncul di mana pun Anda memulai sesi cloud atau mengonfigurasi [routine](/id/routines#environments-and-network-access).

303 304 


353* Perlindungan terhadap permintaan berbahaya354* Perlindungan terhadap permintaan berbahaya

354* Pembatasan laju dan pencegahan penyalahgunaan355* Pembatasan laju dan pencegahan penyalahgunaan

355* Penyaringan konten untuk keamanan yang ditingkatkan356* Penyaringan konten untuk keamanan yang ditingkatkan

357* Jejak audit tingkat DNS dari nama host yang diminta

356 358 

357<h3 id="default-allowed-domains">359<h3 id="default-allowed-domains">

358 Domain yang diizinkan secara default360 Domain yang diizinkan secara default


745| `/context` | Ya | Menunjukkan apa yang saat ini ada di jendela konteks |747| `/context` | Ya | Menunjukkan apa yang saat ini ada di jendela konteks |

746| `/clear` | Tidak | Mulai sesi baru dari sidebar sebagai gantinya |748| `/clear` | Tidak | Mulai sesi baru dari sidebar sebagai gantinya |

747 749 

748Auto-compaction berjalan secara otomatis saat jendela konteks mendekati kapasitas, sama seperti di CLI. Untuk memicunya lebih awal, atur [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/id/env-vars) di [variabel lingkungan](#configure-your-environment) Anda. Misalnya, `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70` mengompak pada kapasitas 70% daripada default \~95%. Untuk mengubah ukuran jendela efektif untuk perhitungan compaction, gunakan [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/id/env-vars).750Auto-compaction berjalan secara otomatis saat jendela konteks mendekati kapasitas. Untuk memicunya lebih awal, atur [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/id/env-vars) di [variabel lingkungan](#configure-your-environment) Anda. Misalnya, `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70` mengompak pada kapasitas 70% daripada menunggu hingga jendela hampir penuh. Untuk mengubah ukuran jendela efektif untuk perhitungan compaction, gunakan [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/id/env-vars).

749 751 

750[Subagents](/id/sub-agents) bekerja dengan cara yang sama seperti secara lokal. Claude dapat menelurkan mereka dengan alat Task untuk mengalihkan penelitian atau pekerjaan paralel ke jendela konteks terpisah, menjaga percakapan utama lebih ringan. Subagents yang didefinisikan di `.claude/agents/` repo Anda diambil secara otomatis. [Tim agen](/id/agent-teams) dimatikan secara default tetapi dapat diaktifkan dengan menambahkan `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` ke [variabel lingkungan](#configure-your-environment) Anda.752[Subagents](/id/sub-agents) bekerja dengan cara yang sama seperti secara lokal. Claude dapat menelurkan mereka dengan alat Task untuk mengalihkan penelitian atau pekerjaan paralel ke jendela konteks terpisah, menjaga percakapan utama lebih ringan. Subagents yang didefinisikan di `.claude/agents/` repo Anda diambil secara otomatis. [Tim agen](/id/agent-teams) dimatikan secara default tetapi dapat diaktifkan dengan menambahkan `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` ke [variabel lingkungan](#configure-your-environment) Anda.

751 753 


753 Tinjau perubahan755 Tinjau perubahan

754</h3>756</h3>

755 757 

756Setiap sesi menunjukkan indikator diff dengan baris yang ditambahkan dan dihapus, seperti `+42 -18`. Pilih untuk membuka tampilan diff, tinggalkan komentar inline pada baris tertentu, dan kirimkan ke Claude dengan pesan berikutnya. Lihat [Tinjau dan ulangi](/id/web-quickstart#review-and-iterate) untuk panduan lengkap termasuk pembuatan PR. Untuk membuat Claude memantau PR untuk kegagalan CI dan komentar ulasan secara otomatis, lihat [Auto-fix pull request](#auto-fix-pull-requests).758Setiap sesi menunjukkan indikator diff dengan baris yang ditambahkan dan dihapus, seperti `+42 -18`. Pilih untuk membuka tampilan diff, tinggalkan komentar inline pada baris tertentu, dan kirimkan ke Claude dengan pesan berikutnya. Lihat [Tinjau dan ulangi](/id/web-quickstart#review-and-iterate) untuk panduan lengkap termasuk pembuatan PR. Untuk membuat Claude memantau PR untuk kegagalan CI dan komentar ulasan secara otomatis, lihat [Auto-fix pull requests](#auto-fix-pull-requests).

757 759 

758<h3 id="share-sessions">760<h3 id="share-sessions">

759 Bagikan sesi761 Bagikan sesi


813* **Dari aplikasi mobile**: beri tahu Claude untuk auto-fix PR, misalnya "watch this PR and fix any CI failures or review comments"815* **Dari aplikasi mobile**: beri tahu Claude untuk auto-fix PR, misalnya "watch this PR and fix any CI failures or review comments"

814* **PR yang ada**: tempel URL PR ke sesi dan beri tahu Claude untuk auto-fix816* **PR yang ada**: tempel URL PR ke sesi dan beri tahu Claude untuk auto-fix

815 817 

818Auto-fix adalah toggle per-PR. Untuk berhenti memantau, buka bilah status CI dalam sesi web dan hapus toggle **Auto-fix**, atau beri tahu Claude untuk berhenti memantau PR.

819 

816<h3 id="how-claude-responds-to-pr-activity">820<h3 id="how-claude-responds-to-pr-activity">

817 Bagaimana Claude merespons aktivitas PR821 Bagaimana Claude merespons aktivitas PR

818</h3>822</h3>


849Untuk kesalahan API runtime yang muncul dalam percakapan seperti `API Error: 500`, `529 Overloaded`, `429`, atau `Prompt is too long`, lihat [referensi Error](/id/errors). Kesalahan tersebut dan perbaikannya dibagikan dengan CLI dan Desktop app. Bagian di bawah mencakup masalah khusus untuk sesi cloud.853Untuk kesalahan API runtime yang muncul dalam percakapan seperti `API Error: 500`, `529 Overloaded`, `429`, atau `Prompt is too long`, lihat [referensi Error](/id/errors). Kesalahan tersebut dan perbaikannya dibagikan dengan CLI dan Desktop app. Bagian di bawah mencakup masalah khusus untuk sesi cloud.

850 854 

851<h3 id="session-creation-failed">855<h3 id="session-creation-failed">

852 Pembuatan sesi gagal856 Session creation failed

853</h3>857</h3>

854 858 

855Jika sesi baru gagal dimulai dengan `Session creation failed` atau macet di provisioning, Claude Code tidak dapat mengalokasikan lingkungan cloud.859Jika sesi baru gagal dimulai dengan `Session creation failed` atau macet di provisioning, Claude Code tidak dapat mengalokasikan lingkungan cloud.

856 860 

857* Periksa [status.claude.com](https://status.claude.com) untuk insiden sesi cloud861* Periksa [status.claude.com](https://status.claude.com) untuk insiden sesi cloud

858* Coba lagi setelah satu menit, karena kapasitas disediakan sesuai permintaan862* Coba lagi setelah satu menit, karena kapasitas disediakan sesuai permintaan

859* Konfirmasi repositori Anda dapat dijangkau. Akun GitHub yang terhubung harus memiliki akses ke repositori di GitHub, baik melalui otorisasi Claude GitHub App atau token `gh` yang disinkronkan melalui `/web-setup` — menginstal App di repositori tidak diperlukan. Lihat [Opsi autentikasi GitHub](#github-authentication-options).863* Konfirmasi repositori Anda dapat dijangkau. Akun GitHub yang terhubung harus memiliki akses ke repositori di GitHub, baik melalui otorisasi Claude GitHub App atau token `gh` yang disinkronkan melalui `/web-setup` — menginstal App di repositori tidak diperlukan. Lihat [GitHub authentication options](#github-authentication-options).

860 864 

861<h3 id="remote-control-session-expired-or-access-denied">865<h3 id="remote-control-session-expired-or-access-denied">

862 Sesi Remote Control kedaluwarsa atau akses ditolak866 Remote Control session expired or access denied

863</h3>867</h3>

864 868 

865`--teleport` terhubung melalui infrastruktur sesi Remote Control yang sama yang digunakan sesi cloud, jadi kesalahan autentikasi dan kedaluwarsa sesi muncul dengan wording Remote Control. Anda mungkin melihat `Remote Control session expired` atau `Access denied`. Token koneksi berumur pendek dan dibatasi pada akun Anda.869`--teleport` terhubung melalui infrastruktur sesi Remote Control yang sama yang digunakan sesi cloud, jadi kesalahan autentikasi dan kedaluwarsa sesi muncul dengan wording Remote Control. Anda mungkin melihat `Remote Control session expired` atau `Access denied`. Token koneksi berumur pendek dan dibatasi pada akun Anda.

866 870 

867* Jalankan `/login` secara lokal untuk menyegarkan kredensial Anda, kemudian sambungkan kembali871* Jalankan `/login` secara lokal untuk menyegarkan kredensial Anda, kemudian sambungkan kembali

868* Konfirmasi Anda masuk ke akun yang sama yang memiliki sesi872* Konfirmasi Anda masuk ke akun yang sama yang memiliki sesi

869* Jika Anda melihat `Remote Control may not be available for this organization`, admin Anda belum mengaktifkan sesi jarak jauh untuk rencana Anda873* Jika Anda melihat `Remote Control may not be available for this organization`, admin Anda belum mengaktifkan sesi cloud untuk paket Anda

870 874 

871<h3 id="environment-expired">875<h3 id="environment-expired">

872 Lingkungan kedaluwarsa876 Environment expired

873</h3>877</h3>

874 878 

875Sesi cloud berhenti setelah periode inaktivitas dan lingkungan yang mendasarinya diambil kembali. Dari terminal lokal, ini muncul sebagai `Could not resume session ... its environment has expired. Creating a fresh session instead.` Di web, sesi ditandai kedaluwarsa dalam daftar sesi.879Sesi cloud berhenti setelah periode inaktivitas dan lingkungan yang mendasarinya diambil kembali. Dari terminal lokal, ini muncul sebagai `Could not resume session ... its environment has expired. Creating a fresh session instead.` Di web, sesi ditandai kedaluwarsa dalam daftar sesi.

claude-directory.md +1427 −1

Details

6 6 

7> Tempat Claude Code membaca CLAUDE.md, settings.json, hooks, skills, commands, subagents, workflows, rules, dan auto memory. Jelajahi direktori .claude di proyek Anda dan ~/.claude di direktori home Anda.7> Tempat Claude Code membaca CLAUDE.md, settings.json, hooks, skills, commands, subagents, workflows, rules, dan auto memory. Jelajahi direktori .claude di proyek Anda dan ~/.claude di direktori home Anda.

8 8 

9export const ClaudeExplorer = () => {

10 const A = useMemo(() => ({href, children}) => <a href={href} style={{

11 color: 'var(--ce-accent)',

12 textDecoration: 'none',

13 borderBottom: '1px dotted var(--ce-accent)'

14 }}>{children}</a>, []);

15 const C = useMemo(() => ({children}) => <code style={{

16 fontFamily: 'var(--ce-mono)',

17 fontSize: '0.92em',

18 padding: '1px 4px',

19 borderRadius: '3px',

20 background: 'var(--ce-surface)',

21 border: '0.5px solid var(--ce-border-subtle)'

22 }}>{children}</code>, []);

23 const commandsNote = useMemo(() => <>Commands and skills are now the same mechanism. For new workflows, use <A href="/en/skills">skills/</A> instead: same <C>/name</C> invocation, plus you can bundle supporting files.</>, []);

24 const FILE_TREE = useMemo(() => ({

25 project: {

26 label: 'your-project/',

27 children: [{

28 id: 'claude-md',

29 label: 'CLAUDE.md',

30 type: 'file',

31 icon: 'md',

32 color: '#6A9BCC',

33 badge: 'committed',

34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/en/skills">skill</A> or a path-scoped <A href="/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions

40 

41## Commands

42- Build: \`npm run build\`

43- Test: \`npm test\`

44- Lint: \`npm run lint\`

45 

46## Stack

47- TypeScript with strict mode

48- React 19, functional components only

49 

50## Rules

51- Named exports, never default exports

52- Tests live next to source: \`foo.ts\` -> \`foo.test.ts\`

53- All API routes return \`{ data, error }\` shape`,

54 docsLink: '/en/memory'

55 }, {

56 id: 'mcp-json',

57 label: '.mcp.json',

58 type: 'file',

59 icon: 'json',

60 color: '#9B7BC4',

61 badge: 'committed',

62 oneLiner: 'Project-scoped MCP servers, shared with your team',

63 when: <>Servers connect when the session begins. Tool schemas are deferred by default and load on demand via <A href="/en/mcp#scale-with-mcp-tool-search">tool search</A></>,

64 description: <>Configures Model Context Protocol (MCP) servers that give Claude access to external tools: databases, APIs, browsers, and more. This file holds the project-scoped servers your whole team uses. Personal servers you want to keep to yourself go in <C>~/.claude.json</C> instead.</>,

65 tips: [<>Use environment variable references for secrets: <C>{'${GITHUB_TOKEN}'}</C></>, <>Lives at the project root, not inside <C>.claude/</C></>, <>For servers only you need, run <C>claude mcp add --scope user</C>. This writes to <C>~/.claude.json</C> instead of <C>.mcp.json</C></>],

66 exampleIntro: <>This example configures the GitHub MCP server so Claude can read issues and open pull requests. The <C>{'${GITHUB_TOKEN}'}</C> reference is read from your shell environment when Claude Code starts the server, so the token never lands in the file.</>,

67 example: `{

68 "mcpServers": {

69 "github": {

70 "command": "npx",

71 "args": ["-y", "@modelcontextprotocol/server-github"],

72 "env": {

73 "GITHUB_TOKEN": "\${GITHUB_TOKEN}"

74 }

75 }

76 }

77}`,

78 docsLink: '/en/mcp'

79 }, {

80 id: 'worktreeinclude',

81 label: '.worktreeinclude',

82 type: 'file',

83 icon: 'md',

84 color: '#8FA876',

85 badge: 'committed',

86 oneLiner: 'Gitignored files to copy into new worktrees',

87 when: <>Read when Claude creates a git worktree via <C>--worktree</C>, the <C>EnterWorktree</C> tool, or subagent <C>isolation: worktree</C></>,

88 description: <>Lists gitignored files to copy from your main repository into each new worktree. Worktrees are fresh checkouts, so untracked files like <C>.env</C> are missing by default. Patterns here use <C>.gitignore</C> syntax. Only files that match a pattern and are also gitignored get copied, so tracked files are never duplicated.</>,

89 tips: [<>Lives at the project root, not inside <C>.claude/</C></>, <>Git-only: if you configure a <A href="/en/hooks#worktreecreate">WorktreeCreate hook</A> for a different VCS, this file is not read. Copy files inside your hook script instead</>, <>Also applies to parallel sessions in the <A href="/en/desktop#work-in-parallel-with-sessions">desktop app</A></>],

90 exampleIntro: 'This example copies your local environment files and a secrets config into every worktree Claude creates. Comments start with # and blank lines are ignored, same as .gitignore.',

91 example: `# Local environment

92.env

93.env.local

94 

95# API credentials

96config/secrets.json`,

97 docsLink: '/en/worktrees#copy-gitignored-files-into-worktrees'

98 }, {

99 id: 'dot-claude',

100 label: '.claude/',

101 type: 'folder',

102 icon: 'folder',

103 color: 'var(--ce-accent)',

104 oneLiner: 'Project-level configuration, rules, and extensions',

105 description: 'Everything Claude Code reads that is specific to this project. If you use git, commit most files here so your team shares them; a few, like settings.local.json, are automatically gitignored. Each file badge shows which.',

106 children: [{

107 id: 'settings-json',

108 label: 'settings.json',

109 type: 'file',

110 icon: 'json',

111 color: 'var(--ce-text-3)',

112 badge: 'committed',

113 oneLiner: 'Permissions, hooks, and configuration',

114 when: <>Overrides global <C>~/.claude/settings.json</C>. Local settings, CLI flags, and managed settings override this</>,

115 description: 'Settings that Claude Code applies directly. Permissions control which commands and tools Claude can use; hooks run your scripts at specific points in a session. Unlike CLAUDE.md, which Claude reads as guidance, these are enforced whether Claude follows them or not.',

116 contains: [<><A href="/en/permissions">permissions</A>: allow, deny, or prompt before Claude uses specific tools or commands</>, <><A href="/en/hooks">hooks</A>: run your own scripts on events like before a tool call or after a file edit</>, <><A href="/en/statusline">statusLine</A>: customize the line shown at the bottom while Claude works</>, <><A href="/en/settings#available-settings">model</A>: pick a default model for this project</>, <><A href="/en/settings#environment-variables">env</A>: environment variables set in every session</>, <><A href="/en/output-styles">outputStyle</A>: select a custom system-prompt style from output-styles/</>],

117 tips: [<>Bash permission patterns support wildcards: <C>Bash(npm test *)</C> matches any command starting with <C>npm test</C></>, <>Array settings like <C>permissions.allow</C> combine across all scopes; scalar settings like <C>model</C> use the most specific value</>],

118 exampleIntro: <>This example allows <C>npm test</C> and <C>npm run</C> commands without prompting, blocks <C>rm -rf</C>, and runs Prettier on files after Claude edits or writes them.</>,

119 example: `{

120 "permissions": {

121 "allow": [

122 "Bash(npm test *)",

123 "Bash(npm run *)"

124 ],

125 "deny": [

126 "Bash(rm -rf *)"

127 ]

128 },

129 "hooks": {

130 "PostToolUse": [{

131 "matcher": "Edit|Write",

132 "hooks": [{

133 "type": "command",

134 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"

135 }]

136 }]

137 }

138}`,

139 docsLink: '/en/settings'

140 }, {

141 id: 'settings-local-json',

142 label: 'settings.local.json',

143 type: 'file',

144 icon: 'json',

145 color: 'var(--ce-text-3)',

146 badge: 'gitignored',

147 oneLiner: 'Your personal settings overrides for this project',

148 when: 'Highest of the user-editable settings files; CLI flags and managed settings still take precedence',

149 description: 'Personal settings that take precedence over the project defaults. Same JSON format as settings.json, but not committed. Use this when you need different permissions or defaults than the team config.',

150 tips: [<>Same schema as settings.json. Array settings like <C>permissions.allow</C> combine across scopes; scalar settings like <C>model</C> use the local value</>, <>Claude Code adds this file to <C>~/.config/git/ignore</C> the first time it writes one. If you use a custom <C>core.excludesFile</C>, add the pattern there too. To share the ignore rule with your team, also add it to the project <C>.gitignore</C></>],

151 exampleIntro: 'This example adds Docker permissions on top of whatever the team settings.json allows.',

152 example: `{

153 "permissions": {

154 "allow": [

155 "Bash(docker *)"

156 ]

157 }

158}`,

159 docsLink: '/en/settings'

160 }, {

161 id: 'rules',

162 label: 'rules/',

163 type: 'folder',

164 icon: 'folder',

165 color: '#9B7BC4',

166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',

167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/en/hooks">hooks</A> or <A href="/en/permissions">permissions</A>.</>],

169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],

170 docsLink: '/en/memory#organize-rules-with-claude/rules/',

171 children: [{

172 id: 'rule-testing',

173 label: 'testing.md',

174 type: 'file',

175 icon: 'md',

176 color: '#9B7BC4',

177 badge: 'committed',

178 oneLiner: 'Test conventions scoped to test files',

179 when: <>Loaded when Claude reads a file matching the <C>paths:</C> globs below</>,

180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,

181 example: `---

182paths:

183 - "**/*.test.ts"

184 - "**/*.test.tsx"

185---

186 

187# Testing Rules

188 

189- Use descriptive test names: "should [expected] when [condition]"

190- Mock external dependencies, not internal modules

191- Clean up side effects in afterEach`

192 }, {

193 id: 'rule-api',

194 label: 'api-design.md',

195 type: 'file',

196 icon: 'md',

197 color: '#9B7BC4',

198 badge: 'committed',

199 oneLiner: 'API conventions scoped to backend code',

200 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,

201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is editing API routes.</>,

202 example: `---

203paths:

204 - "src/api/**/*.ts"

205---

206 

207# API Design Rules

208 

209- All endpoints must validate input with Zod schemas

210- Return shape: { data: T } | { error: string }

211- Rate limit all public endpoints`

212 }]

213 }, {

214 id: 'skills',

215 label: 'skills/',

216 type: 'folder',

217 icon: 'folder',

218 color: '#D4A843',

219 oneLiner: 'Reusable prompts you or Claude invoke by name',

220 when: <>Invoked with <C>/skill-name</C> or when Claude matches the task to a skill</>,

221 description: <>Each skill is a folder with a SKILL.md file plus any supporting files it needs. By default, both you and Claude can invoke a skill. Use frontmatter to control that: <C>disable-model-invocation: true</C> for user-only workflows like <C>/deploy</C>, or <C>user-invocable: false</C> to hide from the <C>/</C> menu while Claude can still invoke it.</>,

222 tips: [<>Skills accept arguments: <C>/deploy staging</C> passes "staging" as <C>$ARGUMENTS</C>. Use <C>$0</C>, <C>$1</C>, and so on for positional access</>, <>The <C>description</C> frontmatter determines when Claude auto-invokes the skill</>, 'Bundle reference docs alongside SKILL.md. Claude knows the skill directory path and can read supporting files when you mention them'],

223 docsLink: '/en/skills',

224 children: [{

225 id: 'skill-review',

226 label: 'security-review/',

227 type: 'folder',

228 icon: 'folder',

229 color: '#D4A843',

230 oneLiner: 'A skill bundling SKILL.md with supporting files',

231 children: [{

232 id: 'skill-review-md',

233 label: 'SKILL.md',

234 type: 'file',

235 icon: 'md',

236 color: '#D4A843',

237 badge: 'committed',

238 oneLiner: 'Entrypoint: trigger, invocability, instructions',

239 when: <>User types <C>/security-review &lt;target&gt;</C>; Claude cannot auto-invoke this skill</>,

240 description: [<>This skill uses <C>disable-model-invocation: true</C> so only you can trigger it; Claude never invokes it on its own.</>, <>The <C>!`...`</C> line runs a shell command and injects its output into the prompt. <C>$ARGUMENTS</C> substitutes whatever you typed after the skill name. Claude sees the skill directory path, so mentioning a bundled file like checklist.md lets Claude read it.</>],

241 example: `---

242description: Reviews code changes for security vulnerabilities, authentication gaps, and injection risks

243disable-model-invocation: true

244argument-hint: <branch-or-path>

245---

246 

247## Diff to review

248 

249!\`git diff $ARGUMENTS\`

250 

251Audit the changes above for:

252 

2531. Injection vulnerabilities (SQL, XSS, command)

2542. Authentication and authorization gaps

2553. Hardcoded secrets or credentials

256 

257Use checklist.md in this skill directory for the full review checklist.

258 

259Report findings with severity ratings and remediation steps.`

260 }, {

261 id: 'skill-checklist',

262 label: 'checklist.md',

263 type: 'file',

264 icon: 'md',

265 color: '#D4A843',

266 badge: 'committed',

267 oneLiner: 'Supporting file bundled with the skill',

268 when: 'Claude reads it on demand while running the skill',

269 description: <>Skills can bundle any supporting files: reference docs, templates, scripts. The skill directory path is prepended to SKILL.md, so Claude can read bundled files by name. For scripts in bash injection commands, use the <C>{'${CLAUDE_SKILL_DIR}'}</C> placeholder.</>,

270 example: `# Security Review Checklist

271 

272## Input Validation

273- [ ] All user input sanitized before DB queries

274- [ ] File upload MIME types validated

275- [ ] Path traversal prevented on file operations

276 

277## Authentication

278- [ ] JWT tokens expire after 24 hours

279- [ ] API keys stored in environment variables

280- [ ] Passwords hashed with bcrypt or argon2`

281 }]

282 }]

283 }, {

284 id: 'commands',

285 label: 'commands/',

286 type: 'folder',

287 icon: 'folder',

288 color: '#788C5D',

289 oneLiner: <>Single-file prompts invoked with <C>/name</C></>,

290 note: commandsNote,

291 when: <>User types <C>/command-name</C></>,

292 description: <>A file at <C>commands/deploy.md</C> creates <C>/deploy</C> the same way a skill at <C>skills/deploy/SKILL.md</C> does, and both can be auto-invoked by Claude. Skills use a directory with SKILL.md, letting you bundle reference docs, templates, or scripts alongside the prompt.</>,

293 tips: [<>Use <C>$ARGUMENTS</C> in the file to accept parameters: <C>/fix-issue 123</C></>, 'If a skill and command share a name, the skill takes precedence', 'New commands should usually be skills instead; commands remain supported'],

294 docsLink: '/en/skills',

295 children: [{

296 id: 'cmd-example',

297 label: 'fix-issue.md',

298 type: 'file',

299 icon: 'md',

300 color: '#788C5D',

301 badge: 'committed',

302 oneLiner: <>Invoked as <C>/fix-issue &lt;number&gt;</C></>,

303 note: commandsNote,

304 description: [<>An example command for fixing a GitHub issue. Type <C>/fix-issue 123</C> and the <C>!`...`</C> line runs <C>gh issue view 123</C> in your shell, injecting the output into the prompt before Claude sees it.</>, <><C>$ARGUMENTS</C> substitutes whatever you typed after the command name. For positional access, use <C>$0</C> <C>$1</C> and so on.</>],

305 example: `---

306argument-hint: <issue-number>

307---

308 

309!\`gh issue view $ARGUMENTS\`

310 

311Investigate and fix the issue above.

312 

3131. Trace the bug to its root cause

3142. Implement the fix

3153. Write or update tests

3164. Summarize what you changed and why`

317 }]

318 }, {

319 id: 'output-styles',

320 label: 'output-styles/',

321 type: 'folder',

322 icon: 'folder',

323 color: '#5AA7A7',

324 oneLiner: 'Project-scoped output styles, if your team shares any',

325 when: 'Applied at session start when selected via the outputStyle setting',

326 description: <>Output styles are usually personal, so most live in <C>~/.claude/output-styles/</C>. Put one here if your team shares a style, like a review mode everyone uses. See <A href="#ce-global-output-styles">the Global tab</A> for the full explanation and example.</>,

327 docsLink: '/en/output-styles',

328 children: []

329 }, {

330 id: 'agents',

331 label: 'agents/',

332 type: 'folder',

333 icon: 'folder',

334 color: '#C46686',

335 oneLiner: 'Specialized subagents with their own context window',

336 when: 'Runs in its own context window when you or Claude invoke it',

337 description: 'Each markdown file defines a subagent with its own system prompt, tool access, and optionally its own model. Subagents run in a fresh context window, keeping the main conversation clean. Useful for parallel work or isolated tasks.',

338 tips: ['Each agent gets a fresh context window, separate from your main session', <>Restrict tool access per agent with the <C>tools:</C> frontmatter field</>, 'Type @ and pick an agent from the autocomplete to delegate directly'],

339 docsLink: '/en/sub-agents',

340 children: [{

341 id: 'agent-reviewer',

342 label: 'code-reviewer.md',

343 type: 'file',

344 icon: 'md',

345 color: '#C46686',

346 badge: 'committed',

347 oneLiner: 'Subagent for isolated code review',

348 when: 'Claude spawns it for review tasks, or you @-mention it from the autocomplete',

349 description: <>An example subagent restricted to read-only tools. The <C>description</C> frontmatter tells Claude when to delegate to it automatically; <C>tools:</C> limits it to Read, Grep, and Glob so it can inspect code but never edit. The body becomes the subagent's system prompt.</>,

350 example: `---

351name: code-reviewer

352description: Reviews code for correctness, security, and maintainability

353tools: Read, Grep, Glob

354---

355 

356You are a senior code reviewer. Review for:

357 

3581. Correctness: logic errors, edge cases, null handling

3592. Security: injection, auth bypass, data exposure

3603. Maintainability: naming, complexity, duplication

361 

362Every finding must include a concrete fix.`

363 }]

364 }, {

365 id: 'workflows',

366 label: 'workflows/',

367 type: 'folder',

368 icon: 'folder',

369 color: '#C46686',

370 oneLiner: 'Dynamic workflow scripts that orchestrate many subagents',

371 when: 'Loaded at startup; each file becomes a /<name> command',

372 description: <>Each <C>.js</C> file is a <A href="/en/workflows">dynamic workflow</A>: a script the runtime executes to spawn and coordinate many subagents. Workflows are written by Claude and saved here from <C>/workflows</C> rather than authored from scratch.</>,

373 tips: [<>Save a run from <C>/workflows</C> with <C>s</C> to create one of these</>, <>A project workflow takes precedence over a personal one in <C>~/.claude/workflows/</C> with the same name</>],

374 docsLink: '/en/workflows'

375 }, {

376 id: 'agent-memory',

377 label: 'agent-memory/',

378 type: 'folder',

379 icon: 'folder',

380 color: '#C46686',

381 badge: 'committed',

382 autogen: true,

383 oneLiner: 'Subagent persistent memory, separate from your main session auto memory',

384 when: 'First 200 lines (capped at 25KB) of MEMORY.md loaded into the subagent system prompt when it runs',

385 description: <>Subagents with <C>memory: project</C> in their frontmatter get a dedicated memory directory here. This is distinct from your <A href="/en/memory#auto-memory">main session auto memory</A> at <C>~/.claude/projects/</C>: each subagent reads and writes its own MEMORY.md, not yours.</>,

386 tips: [<>Only created for subagents that set the <C>memory:</C> frontmatter field</>, <>This directory holds project-scoped subagent memory, meant to be shared with your team. To keep memory out of version control use <C>memory: local</C>, which writes to <C>.claude/agent-memory-local/</C> instead. For cross-project memory use <C>memory: user</C>, which writes to <C>~/.claude/agent-memory/</C></>, <>The main session auto memory is a different feature; see <C>~/.claude/projects/</C> in the Global tab</>],

387 docsLink: '/en/sub-agents#enable-persistent-memory',

388 children: [{

389 id: 'agent-memory-sub',

390 label: '<agent-name>/',

391 type: 'folder',

392 icon: 'folder',

393 color: '#C46686',

394 autogen: true,

395 children: [{

396 id: 'agent-memory-md',

397 label: 'MEMORY.md',

398 type: 'file',

399 icon: 'md',

400 color: '#C46686',

401 badge: 'committed',

402 autogen: true,

403 oneLiner: 'The subagent writes and maintains this file automatically',

404 when: 'Loaded into the subagent system prompt when the subagent starts',

405 description: <>Works the same as your <A href="/en/memory#auto-memory">main auto memory</A>: the subagent creates and updates this file itself. You do not write it. The subagent reads it at the start of each task and writes back what it learns.</>,

406 example: `# code-reviewer memory

407 

408## Patterns seen

409- Project uses custom Result<T, E> type, not exceptions

410- Auth middleware expects Bearer token in Authorization header

411- Tests use factory functions in test/factories/

412 

413## Recurring issues

414- Missing null checks on API responses (src/api/*)

415- Unhandled promise rejections in background jobs`

416 }]

417 }]

418 }]

419 }]

420 },

421 global: {

422 label: '~/',

423 children: [{

424 id: 'claude-json',

425 label: '.claude.json',

426 type: 'file',

427 icon: 'json',

428 color: 'var(--ce-text-3)',

429 badge: 'local',

430 oneLiner: 'App state and UI preferences',

431 when: <>Read at session start for your preferences and MCP servers. Claude Code writes back to it when you change settings in <C>/config</C> or approve trust prompts</>,

432 description: <>Holds state that does not belong in settings.json: theme, OAuth session, per-project trust decisions, your personal MCP servers, and UI toggles. Mostly managed through <C>/config</C> rather than editing directly.</>,

433 tips: [<>IDE toggles like <C>autoConnectIde</C> and <C>externalEditorContext</C> live here, not in settings.json</>, <>The <C>projects</C> key tracks per-project state like trust-dialog acceptance and last-session metrics. Permission rules you approve in-session go to <C>.claude/settings.local.json</C> instead</>, <>MCP servers here are yours only: user scope applies across all projects, local scope is per-project but not committed. Team-shared servers go in <C>.mcp.json</C> at the project root instead</>],

434 example: `{

435 "autoConnectIde": true,

436 "externalEditorContext": true,

437 "mcpServers": {

438 "my-tools": {

439 "command": "npx",

440 "args": ["-y", "@example/mcp-server"]

441 }

442 }

443}`,

444 docsLink: '/en/settings#global-config-settings'

445 }, {

446 id: 'global-dot-claude',

447 label: '.claude/',

448 type: 'folder',

449 icon: 'folder',

450 color: 'var(--ce-accent)',

451 oneLiner: 'Your personal configuration across all projects',

452 description: 'The global counterpart to your project .claude/ directory. Files here apply to every project you work in and are never committed to any repository.',

453 children: [{

454 id: 'global-claude-md',

455 label: 'CLAUDE.md',

456 type: 'file',

457 icon: 'md',

458 color: '#6A9BCC',

459 badge: 'local',

460 oneLiner: 'Personal preferences across every project',

461 when: 'Loaded at the start of every session, in every project',

462 description: 'Your global instruction file. Loaded alongside the project CLAUDE.md at session start, so both are in context together. When instructions conflict, project-level instructions take priority. Keep this to preferences that apply everywhere: response style, commit format, personal conventions.',

463 tips: ['Keep it short since it loads into context for every project, alongside that project\'s own CLAUDE.md', 'Good for response style, commit format, and personal conventions'],

464 example: `# Global preferences

465 

466- Keep explanations concise

467- Use conventional commit format

468- Show the terminal command to verify changes

469- Prefer composition over inheritance`,

470 docsLink: '/en/memory'

471 }, {

472 id: 'global-settings',

473 label: 'settings.json',

474 type: 'file',

475 icon: 'json',

476 color: 'var(--ce-text-3)',

477 badge: 'local',

478 oneLiner: 'Default settings for all projects',

479 when: 'Your defaults. Project and local settings.json override any keys you also set there',

480 description: [<>Same keys as project <C>settings.json</C>: permissions, hooks, model, environment variables, and the rest. Put settings here that you want in every project, like permissions you always allow, a preferred model, or a notification hook that runs regardless of which project you're in.</>, <>Settings follow a precedence order: project <C>settings.json</C> overrides any matching keys you set here. This is different from CLAUDE.md, where global and project files are both loaded into context rather than merged key by key.</>],

481 example: `{

482 "permissions": {

483 "allow": [

484 "Bash(git log *)",

485 "Bash(git diff *)"

486 ]

487 }

488}`,

489 docsLink: '/en/settings'

490 }, {

491 id: 'keybindings',

492 label: 'keybindings.json',

493 type: 'file',

494 icon: 'json',

495 color: 'var(--ce-text-3)',

496 badge: 'local',

497 oneLiner: 'Custom keyboard shortcuts',

498 when: 'Read at session start and hot-reloaded when you edit the file',

499 description: <>Rebind keyboard shortcuts in the interactive CLI. Run <C>/keybindings</C> to create or open this file with a schema reference. Ctrl+C, Ctrl+D, Ctrl+M, and Caps Lock are reserved and cannot be rebound.</>,

500 exampleIntro: <>This example binds <C>Ctrl+E</C> to open your external editor and unbinds <C>Ctrl+U</C> by setting it to <C>null</C>. The <C>context</C> field scopes bindings to a specific part of the CLI, here the main chat input.</>,

501 example: `{

502 "$schema": "https://www.schemastore.org/claude-code-keybindings.json",

503 "$docs": "https://code.claude.com/docs/en/keybindings",

504 "bindings": [

505 {

506 "context": "Chat",

507 "bindings": {

508 "ctrl+e": "chat:externalEditor",

509 "ctrl+u": null

510 }

511 }

512 ]

513}`,

514 docsLink: '/en/keybindings'

515 }, {

516 id: 'themes',

517 label: 'themes/',

518 type: 'folder',

519 icon: 'folder',

520 color: '#5AA7A7',

521 oneLiner: 'Custom color themes',

522 when: <>Read at session start and hot-reloaded when files change. Listed in <C>/theme</C></>,

523 description: <>Each <C>.json</C> file defines a custom color theme: a built-in <C>base</C> preset plus an <C>overrides</C> map of color tokens. Create one interactively with <C>/theme</C> or write the JSON by hand. Selecting a custom theme stores <C>custom:&lt;slug&gt;</C> as your theme preference.</>,

524 example: `{

525 "name": "Dracula",

526 "base": "dark",

527 "overrides": {

528 "claude": "#bd93f9",

529 "error": "#ff5555",

530 "success": "#50fa7b"

531 }

532}`,

533 docsLink: '/en/terminal-config#create-a-custom-theme',

534 children: []

535 }, {

536 id: 'global-projects',

537 label: 'projects/',

538 type: 'folder',

539 icon: 'folder',

540 color: '#E8A45C',

541 autogen: true,

542 oneLiner: "Auto memory: Claude's notes to itself, per project",

543 when: 'MEMORY.md loaded at session start; topic files read on demand',

544 description: 'Auto memory lets Claude accumulate knowledge across sessions without you writing anything. Claude saves notes as it works: build commands, debugging insights, architecture notes. Each project gets its own memory directory keyed by the repository path.',

545 tips: [<>On by default. Toggle with <C>/memory</C> or <C>autoMemoryEnabled</C> in settings</>, 'MEMORY.md is the index loaded each session. The first 200 lines, or 25KB, whichever comes first, are read', 'Topic files like debugging.md are read on demand, not at startup', 'These are plain markdown. Edit or delete them anytime'],

546 docsLink: '/en/memory#auto-memory',

547 children: [{

548 id: 'memory-dir',

549 label: '<project>/memory/',

550 type: 'folder',

551 icon: 'folder',

552 color: '#E8A45C',

553 autogen: true,

554 oneLiner: "Claude's accumulated knowledge for one project",

555 children: [{

556 id: 'memory-md',

557 label: 'MEMORY.md',

558 type: 'file',

559 icon: 'md',

560 color: '#E8A45C',

561 badge: 'local',

562 autogen: true,

563 oneLiner: 'Claude writes and maintains this file automatically',

564 when: 'First 200 lines (capped at 25KB) loaded at session start',

565 description: 'Claude creates and updates this file as it works; you do not write it yourself. It acts as an index that Claude reads at the start of every session, pointing to topic files for detail. You can edit or delete it, but Claude will keep updating it.',

566 example: `# Memory Index

567 

568## Project

569- [build-and-test.md](build-and-test.md): npm run build (~45s), Vitest, dev server on 3001

570- [architecture.md](architecture.md): API client singleton, refresh-token auth

571 

572## Reference

573- [debugging.md](debugging.md): auth token rotation and DB connection troubleshooting`,

574 docsLink: '/en/memory'

575 }, {

576 id: 'memory-topic',

577 label: 'debugging.md',

578 type: 'file',

579 icon: 'md',

580 color: '#E8A45C',

581 badge: 'local',

582 autogen: true,

583 oneLiner: 'Topic notes Claude writes when MEMORY.md gets long',

584 when: 'Claude reads this when a related task comes up',

585 description: 'An example of a topic file Claude creates when MEMORY.md grows too long. Claude picks the filename based on what it splits out: debugging.md, architecture.md, build-commands.md, or similar. You never create these yourself. Claude reads a topic file back only when the current task relates to it.',

586 example: `---

587name: Debugging patterns

588description: Auth token rotation and database connection troubleshooting for this project

589type: reference

590---

591 

592## Auth Token Issues

593- Refresh token rotation: old token invalidated immediately

594- If 401 after refresh: check clock skew between client and server

595 

596## Database Connection Drops

597- Connection pool: max 10 in dev, 50 in prod

598- Always check \`docker compose ps\` first`

599 }]

600 }]

601 }, {

602 id: 'global-rules',

603 label: 'rules/',

604 type: 'folder',

605 icon: 'folder',

606 color: '#9B7BC4',

607 oneLiner: 'User-level rules that apply to every project',

608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,

609 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',

610 docsLink: '/en/memory#organize-rules-with-claude/rules/',

611 children: []

612 }, {

613 id: 'global-skills',

614 label: 'skills/',

615 type: 'folder',

616 icon: 'folder',

617 color: '#D4A843',

618 oneLiner: 'Personal skills available in every project',

619 when: <>Invoked with <C>/skill-name</C> in any project</>,

620 description: 'Skills you built for yourself that work everywhere. Same structure as project skills: each is a folder with SKILL.md, scoped to your user account instead of a single project.',

621 docsLink: '/en/skills',

622 children: []

623 }, {

624 id: 'global-commands',

625 label: 'commands/',

626 type: 'folder',

627 icon: 'folder',

628 color: '#788C5D',

629 oneLiner: 'Personal single-file commands available in every project',

630 note: commandsNote,

631 when: <>User types <C>/command-name</C> in any project</>,

632 description: 'Same as project commands/ but scoped to your user account. Each markdown file becomes a command available everywhere.',

633 docsLink: '/en/skills',

634 children: []

635 }, {

636 id: 'global-output-styles',

637 label: 'output-styles/',

638 type: 'folder',

639 icon: 'folder',

640 color: '#5AA7A7',

641 oneLiner: 'Custom system-prompt sections that adjust how Claude works',

642 when: 'Applied at session start when selected via the outputStyle setting',

643 description: [<>Each markdown file defines an output style: a section appended to the system prompt that, by default, also drops the built-in software-engineering task instructions. Use this to adapt Claude Code for uses beyond coding, or to add teaching or review modes.</>, <>Select a built-in or custom style with <C>/config</C> or the <C>outputStyle</C> key in settings. Styles here are available in every project; project-level styles with the same name take precedence.</>],

644 tips: ['Built-in styles Explanatory and Learning are included with Claude Code; custom styles go here', <>Set <C>keep-coding-instructions: true</C> in frontmatter to keep the default task instructions alongside your additions</>, 'Changes take effect on the next session since the system prompt is fixed at startup for caching'],

645 docsLink: '/en/output-styles',

646 children: [{

647 id: 'output-style-example',

648 label: 'teaching.md',

649 type: 'file',

650 icon: 'md',

651 color: '#5AA7A7',

652 badge: 'local',

653 oneLiner: 'Example style that adds explanations and leaves small changes for you',

654 when: <>Active when <C>outputStyle</C> in settings is set to <C>teaching</C></>,

655 description: <>This style appends instructions to the system prompt: Claude adds a "Why this approach" note after each task and leaves TODO(human) markers for changes under 10 lines instead of writing them itself. Select it by setting <C>outputStyle</C> to the filename without .md, or to the <C>name</C> field if you set one in frontmatter.</>,

656 example: `---

657description: Explains reasoning and asks you to implement small pieces

658keep-coding-instructions: true

659---

660 

661After completing each task, add a brief "Why this approach" note

662explaining the key design decision.

663 

664When a change is under 10 lines, ask the user to implement it

665themselves by leaving a TODO(human) marker instead of writing it.`

666 }]

667 }, {

668 id: 'global-agents',

669 label: 'agents/',

670 type: 'folder',

671 icon: 'folder',

672 color: '#C46686',

673 oneLiner: 'Personal subagents available in every project',

674 when: 'Claude delegates or you @-mention in any project',

675 description: 'Subagents defined here are available across all your projects. Same format as project agents.',

676 docsLink: '/en/sub-agents',

677 children: []

678 }, {

679 id: 'global-workflows',

680 label: 'workflows/',

681 type: 'folder',

682 icon: 'folder',

683 color: '#C46686',

684 oneLiner: 'Personal dynamic workflows available in every project',

685 when: 'Loaded at startup; each file becomes a /<name> command',

686 description: <>Workflow scripts saved here are available across all your projects. A project workflow with the same name in <C>.claude/workflows/</C> takes precedence.</>,

687 docsLink: '/en/workflows',

688 children: []

689 }, {

690 id: 'global-agent-memory',

691 label: 'agent-memory/',

692 type: 'folder',

693 icon: 'folder',

694 color: '#C46686',

695 autogen: true,

696 oneLiner: <>Persistent memory for subagents with <C>memory: user</C></>,

697 when: 'Loaded into the subagent system prompt when the subagent starts',

698 description: <>Subagents with <C>memory: user</C> in their frontmatter store knowledge here that persists across all projects. For project-scoped subagent memory, see <C>.claude/agent-memory/</C> instead.</>,

699 docsLink: '/en/sub-agents#enable-persistent-memory',

700 children: []

701 }]

702 }]

703 }

704 }), []);

705 const BADGE_STYLES = useMemo(() => ({

706 committed: {

707 bg: 'rgba(85,138,66,0.08)',

708 color: 'var(--ce-badge-committed)',

709 border: 'rgba(85,138,66,0.15)',

710 label: 'committed'

711 },

712 gitignored: {

713 bg: 'rgba(217,119,87,0.06)',

714 color: 'var(--ce-badge-gitignored)',

715 border: 'rgba(217,119,87,0.15)',

716 label: 'gitignored'

717 },

718 local: {

719 bg: 'rgba(115,114,108,0.06)',

720 color: 'var(--ce-badge-local)',

721 border: 'rgba(115,114,108,0.12)',

722 label: 'local only'

723 },

724 autogen: {

725 bg: 'rgba(232,164,92,0.1)',

726 color: 'var(--ce-badge-autogen)',

727 border: 'rgba(232,164,92,0.2)',

728 label: 'Claude writes'

729 }

730 }), []);

731 const allNodes = useMemo(() => {

732 const flatten = (nodes, acc, path, parentId) => {

733 for (const node of nodes) {

734 const nextPath = [...path, node.label];

735 acc[node.id] = {

736 ...node,

737 path: nextPath,

738 parentId

739 };

740 if (node.children) flatten(node.children, acc, nextPath, node.id);

741 }

742 return acc;

743 };

744 const project = flatten(FILE_TREE.project.children, {}, [FILE_TREE.project.label]);

745 const global = flatten(FILE_TREE.global.children, {}, [FILE_TREE.global.label]);

746 for (const id in project) project[id].root = 'project';

747 for (const id in global) global[id].root = 'global';

748 return {

749 ...project,

750 ...global

751 };

752 }, [FILE_TREE]);

753 const allFolderIds = useMemo(() => Object.keys(allNodes).filter(id => allNodes[id].type === 'folder'), [allNodes]);

754 const DEFAULT_EXPANDED = ['dot-claude', 'rules', 'skills', 'skill-review', 'commands', 'agents', 'agent-memory', 'agent-memory-sub', 'global-dot-claude', 'global-output-styles', 'global-projects', 'memory-dir'];

755 const [mounted, setMounted] = useState(false);

756 const [activeRoot, setActiveRoot] = useState('project');

757 const [selectedId, setSelectedId] = useState('claude-md');

758 const [expandedFolders, setExpandedFolders] = useState(() => new Set(DEFAULT_EXPANDED));

759 const [forceMobile, setForceMobile] = useState(false);

760 const [copiedId, setCopiedId] = useState(null);

761 const [isFullscreen, setIsFullscreen] = useState(false);

762 const copyTimeoutRef = useRef(null);

763 const rootRef = useRef(null);

764 useEffect(() => {

765 setMounted(true);

766 const applyHash = scroll => {

767 const hash = window.location.hash.slice(1);

768 if (!hash.startsWith('ce-')) return;

769 const id = hash.slice(3);

770 const node = allNodes[id];

771 if (!node) return;

772 setActiveRoot(node.root);

773 setSelectedId(id);

774 setExpandedFolders(new Set(allFolderIds));

775 if (scroll && rootRef.current) rootRef.current.scrollIntoView({

776 behavior: 'smooth',

777 block: 'start'

778 });

779 };

780 applyHash(false);

781 const onHashChange = () => applyHash(true);

782 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

783 window.addEventListener('hashchange', onHashChange);

784 document.addEventListener('fullscreenchange', onFsChange);

785 return () => {

786 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

787 window.removeEventListener('hashchange', onHashChange);

788 document.removeEventListener('fullscreenchange', onFsChange);

789 };

790 }, []);

791 useEffect(() => {

792 if (!mounted || !rootRef.current) return;

793 const hash = window.location.hash.slice(1);

794 if (hash.startsWith('ce-') && allNodes[hash.slice(3)]) {

795 rootRef.current.scrollIntoView({

796 behavior: 'smooth',

797 block: 'start'

798 });

799 }

800 }, [mounted]);

801 if (!mounted) return null;

802 const selected = allNodes[selectedId];

803 const tree = FILE_TREE[activeRoot];

804 const isCopied = copiedId === selected.id;

805 const toggleFolder = id => {

806 const next = new Set(expandedFolders);

807 next.has(id) ? next.delete(id) : next.add(id);

808 setExpandedFolders(next);

809 };

810 const switchRoot = root => {

811 if (root === activeRoot) return;

812 setActiveRoot(root);

813 const firstId = FILE_TREE[root].children[0].id;

814 setSelectedId(firstId);

815 try {

816 history.replaceState(null, '', '#ce-' + firstId);

817 } catch (e) {}

818 };

819 const toggleFullscreen = () => {

820 if (!rootRef.current) return;

821 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

822 };

823 const selectNode = n => {

824 setSelectedId(n.id);

825 if (n.type === 'folder' && !expandedFolders.has(n.id)) toggleFolder(n.id);

826 try {

827 history.replaceState(null, '', '#ce-' + n.id);

828 } catch (e) {}

829 };

830 const iconBtn = {

831 width: 28,

832 flexShrink: 0,

833 borderRadius: '6px',

834 border: 'none',

835 cursor: 'pointer',

836 background: 'transparent',

837 color: 'var(--ce-text-4)',

838 display: 'flex',

839 alignItems: 'center',

840 justifyContent: 'center'

841 };

842 const visibleFolderIds = allFolderIds.filter(id => allNodes[id].root === activeRoot);

843 const allExpanded = visibleFolderIds.every(id => expandedFolders.has(id));

844 const toggleAllFolders = () => {

845 const next = new Set(expandedFolders);

846 visibleFolderIds.forEach(id => allExpanded ? next.delete(id) : next.add(id));

847 setExpandedFolders(next);

848 };

849 const onTreeKeyDown = e => {

850 if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(e.key)) return;

851 const visible = [];

852 const walk = nodes => {

853 for (const n of nodes) {

854 visible.push(n.id);

855 if (n.children && expandedFolders.has(n.id)) walk(n.children);

856 }

857 };

858 walk(tree.children);

859 const i = visible.indexOf(selectedId);

860 if (i === -1) return;

861 e.preventDefault();

862 if (e.key === 'ArrowDown' && i < visible.length - 1) selectNode(allNodes[visible[i + 1]]); else if (e.key === 'ArrowUp' && i > 0) selectNode(allNodes[visible[i - 1]]); else if (e.key === 'ArrowRight' && selected.type === 'folder') {

863 if (!expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.children && selected.children.length) selectNode(allNodes[selected.children[0].id]);

864 } else if (e.key === 'ArrowLeft') {

865 if (selected.type === 'folder' && expandedFolders.has(selectedId)) toggleFolder(selectedId); else if (selected.parentId) selectNode(allNodes[selected.parentId]);

866 }

867 };

868 const copyExample = (id, text) => {

869 const done = () => {

870 setCopiedId(id);

871 if (copyTimeoutRef.current) clearTimeout(copyTimeoutRef.current);

872 copyTimeoutRef.current = setTimeout(() => setCopiedId(null), 2000);

873 };

874 const fallback = () => {

875 const ta = document.createElement('textarea');

876 ta.value = text;

877 ta.style.position = 'fixed';

878 ta.style.opacity = '0';

879 document.body.appendChild(ta);

880 ta.select();

881 try {

882 if (document.execCommand('copy')) done();

883 } catch (e) {}

884 document.body.removeChild(ta);

885 };

886 if (navigator.clipboard) {

887 navigator.clipboard.writeText(text).then(done, fallback);

888 } else {

889 fallback();

890 }

891 };

892 const renderIcon = (icon, color, size) => {

893 const sz = size || 14;

894 if (icon === 'folder') {

895 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

896 <path d="M1.5 3.5a1 1 0 0 1 1-1h2.6l1 1.2h5.4a1 1 0 0 1 1 1v5.8a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V3.5z" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

897 </svg>;

898 }

899 if (icon === 'json') {

900 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

901 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

902 <text x="7" y="9" fontSize="6" fontFamily="monospace" fill={color} textAnchor="middle" fontWeight="700">{'{}'}</text>

903 </svg>;

904 }

905 return <svg width={sz} height={sz} viewBox="0 0 14 14" fill="none">

906 <rect x="2" y="1.5" width="10" height="11" rx="1.5" fill={color} fillOpacity="0.15" stroke={color} strokeWidth="1" />

907 <line x1="4.5" y1="5" x2="9.5" y2="5" stroke={color} strokeWidth="1" />

908 <line x1="4.5" y1="7" x2="9.5" y2="7" stroke={color} strokeWidth="1" />

909 <line x1="4.5" y1="9" x2="8" y2="9" stroke={color} strokeWidth="1" />

910 </svg>;

911 };

912 const renderNode = (node, depth) => {

913 const isFolder = node.type === 'folder';

914 const isExpanded = expandedFolders.has(node.id);

915 const isSelected = selectedId === node.id;

916 return <div key={node.id}>

917 <button role="treeitem" tabIndex={-1} onClick={() => selectNode(node)} aria-selected={isSelected} aria-expanded={isFolder ? isExpanded : undefined} style={{

918 display: 'flex',

919 alignItems: 'center',

920 gap: '5px',

921 width: '100%',

922 padding: `4px 8px 4px ${8 + depth * 16}px`,

923 background: isSelected ? 'var(--ce-accent-bg)' : 'transparent',

924 borderTop: 'none',

925 borderRight: 'none',

926 borderBottom: 'none',

927 borderLeft: isSelected ? '2px solid var(--ce-accent)' : '2px solid transparent',

928 outline: 'none',

929 cursor: 'pointer',

930 textAlign: 'left',

931 fontFamily: 'var(--ce-mono)',

932 fontSize: '13.5px',

933 color: isSelected ? 'var(--ce-accent)' : 'var(--ce-text-2)',

934 fontWeight: isSelected ? 550 : 400,

935 transition: 'all 0.1s'

936 }}>

937 {isFolder ? <span onClick={e => {

938 e.stopPropagation();

939 toggleFolder(node.id);

940 }} style={{

941 fontSize: '14px',

942 color: 'var(--ce-text-4)',

943 width: '20px',

944 height: '20px',

945 display: 'inline-flex',

946 alignItems: 'center',

947 justifyContent: 'center',

948 cursor: 'pointer',

949 borderRadius: '4px',

950 marginLeft: '-6px',

951 flexShrink: 0

952 }} onMouseEnter={e => {

953 e.currentTarget.style.background = 'var(--ce-arrow-hover)';

954 e.currentTarget.style.color = 'var(--ce-text-2)';

955 }} onMouseLeave={e => {

956 e.currentTarget.style.background = 'transparent';

957 e.currentTarget.style.color = 'var(--ce-text-4)';

958 }}>{isExpanded ? '▾' : '▸'}</span> : <span style={{

959 width: '14px',

960 flexShrink: 0

961 }} />}

962 {renderIcon(node.icon, node.color)}

963 <span style={{

964 flex: 1,

965 overflow: 'hidden',

966 textOverflow: 'ellipsis',

967 whiteSpace: 'nowrap'

968 }}>{node.label}</span>

969 {node.badge && BADGE_STYLES[node.badge] && <span title={BADGE_STYLES[node.badge].label} style={{

970 width: 6,

971 height: 6,

972 borderRadius: '50%',

973 background: BADGE_STYLES[node.badge].color,

974 flexShrink: 0,

975 opacity: 0.7

976 }} />}

977 </button>

978 {isFolder && isExpanded && node.children && <div role="group">{node.children.map(child => renderNode(child, depth + 1))}</div>}

979 </div>;

980 };

981 return <>

982 <style>{`

983 .ce-root {

984 --ce-mono: var(--font-mono, ui-monospace, monospace);

985 --ce-accent: #D97757;

986 --ce-accent-bg: rgba(217,119,87,0.06);

987 --ce-accent-border: rgba(217,119,87,0.12);

988 --ce-bg: #fff;

989 --ce-surface: #FAFAF7;

990 --ce-surface-hover: #F0EEE6;

991 --ce-border: #E8E6DC;

992 --ce-border-subtle: #F0EEE6;

993 --ce-text: #141413;

994 --ce-text-2: #5E5D59;

995 --ce-text-3: #73726C;

996 --ce-text-4: #9C9A92;

997 --ce-text-5: #B8B6AE;

998 --ce-sep: #D1CFC5;

999 --ce-code-header: #F5F4ED;

1000 --ce-code-bg: #1A1918;

1001 --ce-arrow-hover: rgba(0,0,0,0.08);

1002 --ce-badge-committed: #3d6b2e;

1003 --ce-badge-gitignored: #b85c3a;

1004 --ce-badge-local: #5e5d59;

1005 --ce-badge-autogen: #b07520;

1006 --ce-when-text: #4a7fb5;

1007 }

1008 .dark .ce-root {

1009 --ce-bg: #1a1918;

1010 --ce-surface: #232221;

1011 --ce-surface-hover: #2e2d2b;

1012 --ce-border: #3a3936;

1013 --ce-border-subtle: #2e2d2b;

1014 --ce-text: #e8e6dc;

1015 --ce-text-2: #c4c2b8;

1016 --ce-text-3: #9c9a92;

1017 --ce-text-4: #73726c;

1018 --ce-text-5: #5e5d59;

1019 --ce-sep: #4a4946;

1020 --ce-code-header: #2e2d2b;

1021 --ce-code-bg: #0d0d0c;

1022 --ce-arrow-hover: rgba(255,255,255,0.08);

1023 --ce-badge-committed: #6fa85c;

1024 --ce-badge-gitignored: #e08a60;

1025 --ce-badge-local: #9c9a92;

1026 --ce-badge-autogen: #e8a45c;

1027 --ce-when-text: #8bb4e0;

1028 }

1029 .ce-mobile-fallback { display: none; border: 1px solid rgba(0,0,0,0.1); background: rgba(0,0,0,0.03); }

1030 .dark .ce-mobile-fallback { border-color: rgba(255,255,255,0.15); background: rgba(255,255,255,0.04); }

1031 @media (max-width: 700px) {

1032 .ce-root:not(.ce-force) { display: none !important; }

1033 .ce-mobile-fallback { display: block; }

1034 }

1035 `}</style>

1036 {!forceMobile && <div className="ce-mobile-fallback" style={{

1037 padding: '14px 16px',

1038 borderRadius: '8px',

1039 fontSize: '14px'

1040 }}>

1041 The interactive explorer works best on a larger screen. See the <a href="#file-reference" style={{

1042 color: '#D97757'

1043 }}>file reference table</a> below, or <button onClick={() => setForceMobile(true)} style={{

1044 border: 'none',

1045 background: 'none',

1046 padding: 0,

1047 color: '#D97757',

1048 textDecoration: 'underline',

1049 cursor: 'pointer',

1050 font: 'inherit'

1051 }}>show the explorer anyway</button>.

1052 </div>}

1053 <div ref={rootRef} className={forceMobile ? 'ce-root ce-force' : 'ce-root'} style={{

1054 borderRadius: isFullscreen ? 0 : '12px',

1055 border: '1px solid var(--ce-border)',

1056 background: 'var(--ce-bg)',

1057 display: 'flex',

1058 alignItems: 'stretch',

1059 overflow: 'hidden',

1060 fontFamily: 'var(--font-sans, -apple-system, sans-serif)',

1061 ...isFullscreen && ({

1062 height: '100vh'

1063 })

1064 }}>

1065 {}

1066 <div style={{

1067 width: 'min(240px, 35%)',

1068 minWidth: '180px',

1069 flexShrink: 0,

1070 borderRight: '1px solid var(--ce-border-subtle)',

1071 background: 'var(--ce-surface)',

1072 display: 'flex',

1073 flexDirection: 'column'

1074 }}>

1075 <div style={{

1076 padding: '8px 8px 4px',

1077 borderBottom: '1px solid var(--ce-border-subtle)',

1078 display: 'flex',

1079 gap: '4px'

1080 }}>

1081 {['project', 'global'].map(root => <button key={root} onClick={() => switchRoot(root)} style={{

1082 flex: 1,

1083 padding: '6px 0',

1084 borderRadius: '6px',

1085 border: 'none',

1086 cursor: 'pointer',

1087 fontFamily: 'var(--ce-mono)',

1088 fontSize: '11.5px',

1089 background: activeRoot === root ? 'var(--ce-accent-bg)' : 'transparent',

1090 color: activeRoot === root ? 'var(--ce-accent)' : 'var(--ce-text-4)',

1091 fontWeight: activeRoot === root ? 600 : 430

1092 }}>

1093 {root === 'project' ? 'Project' : 'Global (~/)'}

1094 </button>)}

1095 <button onClick={toggleAllFolders} title={allExpanded ? 'Collapse all' : 'Expand all'} style={{

1096 ...iconBtn,

1097 fontSize: 11

1098 }}>

1099 {allExpanded ? '⊟' : '⊞'}

1100 </button>

1101 <button onClick={toggleFullscreen} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} style={{

1102 ...iconBtn,

1103 fontSize: 13

1104 }}>

1105 {isFullscreen ? '⤡' : '⛶'}

1106 </button>

1107 </div>

1108 <div role="tree" aria-label="Configuration files" tabIndex={0} onKeyDown={onTreeKeyDown} style={{

1109 padding: '6px 0',

1110 overflowY: 'auto',

1111 flex: 1,

1112 outline: 'none'

1113 }}>

1114 {tree.children.map(node => renderNode(node, 0))}

1115 </div>

1116 </div>

1117 

1118 {}

1119 <div style={{

1120 flex: 1,

1121 minWidth: 0,

1122 padding: '20px 24px',

1123 minHeight: '400px',

1124 overflowY: 'auto'

1125 }}>

1126 <span aria-live="polite" style={{

1127 position: 'absolute',

1128 width: 1,

1129 height: 1,

1130 overflow: 'hidden',

1131 clip: 'rect(0 0 0 0)'

1132 }}>{selected.label} selected</span>

1133 {}

1134 <div style={{

1135 fontFamily: 'var(--ce-mono)',

1136 fontSize: '11px',

1137 color: 'var(--ce-text-4)',

1138 marginBottom: '10px',

1139 cursor: 'default'

1140 }}>

1141 {selected.path.map((seg, i) => <span key={i}>

1142 <span style={{

1143 color: i === selected.path.length - 1 ? 'var(--ce-accent)' : 'var(--ce-text-4)'

1144 }}>{seg.replace(/\/$/, '')}</span>

1145 {i < selected.path.length - 1 && <span style={{

1146 color: 'var(--ce-sep)'

1147 }}> / </span>}

1148 </span>)}

1149 </div>

1150 

1151 {}

1152 <div style={{

1153 display: 'flex',

1154 alignItems: 'flex-start',

1155 gap: '10px',

1156 marginBottom: '10px'

1157 }}>

1158 <span style={{

1159 flexShrink: 0,

1160 display: 'flex'

1161 }}>{renderIcon(selected.icon, selected.color, 24)}</span>

1162 <div style={{

1163 flex: 1,

1164 minWidth: 0

1165 }}>

1166 <div style={{

1167 fontSize: '22px',

1168 fontWeight: 600,

1169 color: 'var(--ce-text)',

1170 letterSpacing: '-0.3px',

1171 lineHeight: '26px'

1172 }}>{selected.label}</div>

1173 {selected.oneLiner && <div style={{

1174 fontSize: '15px',

1175 color: 'var(--ce-text-3)',

1176 marginTop: '3px'

1177 }}>{selected.oneLiner}</div>}

1178 </div>

1179 <div style={{

1180 display: 'flex',

1181 gap: '4px',

1182 flexShrink: 0

1183 }}>

1184 {[selected.autogen && 'autogen', selected.badge].filter(Boolean).map(k => {

1185 const s = BADGE_STYLES[k];

1186 if (!s) return null;

1187 return <span key={k} style={{

1188 fontFamily: 'var(--ce-mono)',

1189 fontSize: '10px',

1190 fontWeight: 600,

1191 textTransform: 'uppercase',

1192 letterSpacing: '0.3px',

1193 padding: '2px 6px',

1194 borderRadius: '4px',

1195 background: s.bg,

1196 color: s.color,

1197 border: `0.5px solid ${s.border}`

1198 }}>{s.label}</span>;

1199 })}

1200 </div>

1201 </div>

1202 

1203 {}

1204 {selected.note && <div style={{

1205 padding: '10px 12px',

1206 borderRadius: '8px',

1207 marginBottom: '14px',

1208 background: 'rgba(217,119,87,0.06)',

1209 border: '1px solid rgba(217,119,87,0.2)',

1210 borderLeft: '3px solid var(--ce-accent)',

1211 fontSize: '15px',

1212 color: 'var(--ce-text-2)',

1213 lineHeight: 1.6

1214 }}>

1215 {selected.note}

1216 </div>}

1217 

1218 {}

1219 {selected.when && <div style={{

1220 padding: '8px 12px',

1221 borderRadius: '6px',

1222 background: 'rgba(106,155,204,0.06)',

1223 border: '0.5px solid rgba(106,155,204,0.12)',

1224 fontSize: '15px',

1225 color: 'var(--ce-when-text)',

1226 marginBottom: '16px'

1227 }}>

1228 <div style={{

1229 fontSize: '10px',

1230 fontWeight: 700,

1231 textTransform: 'uppercase',

1232 letterSpacing: '0.4px',

1233 opacity: 0.65,

1234 marginBottom: '3px'

1235 }}>When it loads</div>

1236 <div style={{

1237 fontWeight: 500

1238 }}>{selected.when}</div>

1239 </div>}

1240 

1241 {}

1242 {selected.description && <div style={{

1243 fontSize: '16px',

1244 color: 'var(--ce-text-2)',

1245 lineHeight: 1.65,

1246 marginBottom: '16px'

1247 }}>

1248 {Array.isArray(selected.description) ? selected.description.map((para, i) => <div key={i} style={{

1249 marginBottom: i < selected.description.length - 1 ? '12px' : 0

1250 }}>{para}</div>) : selected.description}

1251 </div>}

1252 

1253 {}

1254 {selected.contains && selected.contains.length > 0 && <div style={{

1255 marginBottom: '16px'

1256 }}>

1257 <div style={{

1258 fontSize: '11px',

1259 fontWeight: 700,

1260 color: 'var(--ce-text-4)',

1261 textTransform: 'uppercase',

1262 letterSpacing: '0.4px',

1263 marginBottom: '8px'

1264 }}>Common keys</div>

1265 {selected.contains.map((item, i) => <div key={i} style={{

1266 display: 'flex',

1267 gap: '7px',

1268 fontSize: '15px',

1269 color: 'var(--ce-text-2)',

1270 lineHeight: 1.5,

1271 marginBottom: '5px'

1272 }}>

1273 <span style={{

1274 fontSize: '7px',

1275 color: 'var(--ce-text-4)',

1276 marginTop: '6px'

1277 }}>●</span>

1278 <span>{item}</span>

1279 </div>)}

1280 </div>}

1281 

1282 {}

1283 {selected.tips && selected.tips.length > 0 && <div style={{

1284 padding: '12px 14px',

1285 borderRadius: '8px',

1286 background: 'var(--ce-surface)',

1287 border: '1px solid var(--ce-border-subtle)',

1288 marginBottom: '16px'

1289 }}>

1290 <div style={{

1291 fontSize: '11px',

1292 fontWeight: 700,

1293 color: 'var(--ce-accent)',

1294 textTransform: 'uppercase',

1295 letterSpacing: '0.4px',

1296 marginBottom: '6px'

1297 }}>Tips</div>

1298 {selected.tips.map((tip, i) => <div key={i} style={{

1299 display: 'flex',

1300 gap: '7px',

1301 fontSize: '14.5px',

1302 color: 'var(--ce-text-2)',

1303 marginBottom: i < selected.tips.length - 1 ? '5px' : 0

1304 }}>

1305 <span style={{

1306 fontSize: '7px',

1307 color: 'var(--ce-accent)',

1308 marginTop: '6px'

1309 }}>●</span>

1310 <span>{tip}</span>

1311 </div>)}

1312 </div>}

1313 

1314 {}

1315 {selected.example && <div style={{

1316 marginBottom: '16px'

1317 }}>

1318 {selected.exampleIntro && <div style={{

1319 fontSize: '15px',

1320 color: 'var(--ce-text-2)',

1321 lineHeight: 1.6,

1322 marginBottom: '10px'

1323 }}>

1324 {selected.exampleIntro}

1325 </div>}

1326 <div style={{

1327 display: 'flex',

1328 justifyContent: 'space-between',

1329 alignItems: 'center',

1330 padding: '6px 10px',

1331 background: 'var(--ce-code-header)',

1332 border: '1px solid var(--ce-border)',

1333 borderRadius: '8px 8px 0 0'

1334 }}>

1335 <span style={{

1336 fontFamily: 'var(--ce-mono)',

1337 fontSize: '11px',

1338 fontWeight: 600,

1339 color: 'var(--ce-text-3)'

1340 }}>{selected.label}</span>

1341 <button onClick={() => copyExample(selected.id, selected.example)} style={{

1342 padding: '3px 8px',

1343 borderRadius: '4px',

1344 fontSize: '11px',

1345 fontWeight: 600,

1346 cursor: 'pointer',

1347 transition: 'all 0.15s',

1348 background: isCopied ? 'rgba(85,138,66,0.08)' : 'var(--ce-code-header)',

1349 border: isCopied ? '0.5px solid rgba(85,138,66,0.2)' : '0.5px solid var(--ce-border)',

1350 color: isCopied ? '#558A42' : 'var(--ce-text-3)'

1351 }}>

1352 {isCopied ? '✓ Copied' : 'Copy'}

1353 </button>

1354 </div>

1355 <pre style={{

1356 margin: 0,

1357 padding: '12px 14px',

1358 background: 'var(--ce-code-bg)',

1359 color: '#E8E6DC',

1360 fontFamily: 'var(--ce-mono)',

1361 fontSize: '13px',

1362 lineHeight: 1.65,

1363 borderRadius: '0 0 8px 8px',

1364 overflowX: 'auto',

1365 whiteSpace: 'pre'

1366 }}>{selected.example}</pre>

1367 </div>}

1368 

1369 {}

1370 {selected.docsLink && <a href={selected.docsLink} style={{

1371 display: 'inline-flex',

1372 padding: '5px 12px',

1373 borderRadius: '6px',

1374 background: 'var(--ce-accent-bg)',

1375 border: '1px solid var(--ce-accent-border)',

1376 color: 'var(--ce-accent)',

1377 fontSize: '12px',

1378 fontWeight: 600,

1379 textDecoration: 'none'

1380 }}>Full docs →</a>}

1381 

1382 {}

1383 {selected.children && selected.children.length > 0 && <div style={{

1384 marginTop: '20px'

1385 }}>

1386 <div style={{

1387 fontSize: '11px',

1388 fontWeight: 700,

1389 color: 'var(--ce-text-4)',

1390 textTransform: 'uppercase',

1391 letterSpacing: '0.4px',

1392 marginBottom: '8px'

1393 }}>Contents</div>

1394 <div style={{

1395 display: 'flex',

1396 flexDirection: 'column',

1397 gap: '4px'

1398 }}>

1399 {selected.children.map(child => <button key={child.id} onClick={() => selectNode(child)} style={{

1400 display: 'flex',

1401 alignItems: 'center',

1402 gap: '8px',

1403 padding: '6px 8px',

1404 width: '100%',

1405 background: 'var(--ce-surface)',

1406 borderRadius: '6px',

1407 border: 'none',

1408 cursor: 'pointer',

1409 textAlign: 'left',

1410 transition: 'background 0.1s'

1411 }} onMouseEnter={e => e.currentTarget.style.background = 'var(--ce-surface-hover)'} onMouseLeave={e => e.currentTarget.style.background = 'var(--ce-surface)'}>

1412 {renderIcon(child.icon, child.color, 13)}

1413 <span style={{

1414 fontFamily: 'var(--ce-mono)',

1415 fontSize: '12px',

1416 color: 'var(--ce-text-2)'

1417 }}>{child.label}</span>

1418 {child.oneLiner && <span style={{

1419 fontSize: '11px',

1420 color: 'var(--ce-text-4)',

1421 overflow: 'hidden',

1422 textOverflow: 'ellipsis',

1423 whiteSpace: 'nowrap'

1424 }}>{child.oneLiner}</span>}

1425 </button>)}

1426 </div>

1427 </div>}

1428 </div>

1429 </div>

1430 </>;

1431};

1432 

9Claude Code membaca instruksi, pengaturan, skills, subagents, dan memory dari direktori proyek Anda dan dari `~/.claude` di direktori home Anda. Commit file proyek ke git untuk membagikannya dengan tim Anda; file di `~/.claude` adalah konfigurasi pribadi yang berlaku di semua proyek Anda.1433Claude Code membaca instruksi, pengaturan, skills, subagents, dan memory dari direktori proyek Anda dan dari `~/.claude` di direktori home Anda. Commit file proyek ke git untuk membagikannya dengan tim Anda; file di `~/.claude` adalah konfigurasi pribadi yang berlaku di semua proyek Anda.

10 1434 

11Di Windows, `~/.claude` diselesaikan menjadi `%USERPROFILE%\.claude`. Jika Anda menetapkan [`CLAUDE_CONFIG_DIR`](/id/env-vars), setiap jalur `~/.claude` di halaman ini berada di bawah direktori itu sebagai gantinya.1435Di Windows, `~/.claude` diselesaikan menjadi `%USERPROFILE%\.claude`. Jika Anda menetapkan [`CLAUDE_CONFIG_DIR`](/id/env-vars), setiap jalur `~/.claude` di halaman ini berada di bawah direktori itu sebagai gantinya.


18 1442 

19Klik file di pohon untuk melihat apa yang dilakukan masing-masing, kapan dimuat, dan contohnya.1443Klik file di pohon untuk melihat apa yang dilakukan masing-masing, kapan dimuat, dan contohnya.

20 1444 

21<h2 id="what-s-not-shown">1445<ClaudeExplorer />

1446 

1447<h2 id="what’s-not-shown">

22 Apa yang tidak ditampilkan1448 Apa yang tidak ditampilkan

23</h2>1449</h2>

24 1450 

Details

6 6 

7> Konfigurasi Claude Code untuk menggunakan Claude API yang dioperasikan Anthropic dengan autentikasi AWS, kontrol akses IAM, dan penagihan AWS Marketplace.7> Konfigurasi Claude Code untuk menggunakan Claude API yang dioperasikan Anthropic dengan autentikasi AWS, kontrol akses IAM, dan penagihan AWS Marketplace.

8 8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79export const Experiment = ({flag, treatment, children}) => {

80 const VID_KEY = 'exp_vid';

81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);

82 const fnv1a = s => {

83 let h = 0x811c9dc5;

84 for (let i = 0; i < s.length; i++) {

85 h ^= s.charCodeAt(i);

86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);

87 }

88 return h >>> 0;

89 };

90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';

91 const [decision] = useState(() => {

92 const params = new URLSearchParams(location.search);

93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];

94 const force = params.get('gb-force');

95 if (force) {

96 for (const p of force.split(',')) {

97 const [k, v] = p.split(':');

98 if (k === flag) return {

99 variant: v || 'treatment',

100 track: false

101 };

102 }

103 }

104 if (navigator.globalPrivacyControl) {

105 return {

106 variant: 'control',

107 track: false

108 };

109 }

110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);

111 if (prefsMatch) {

112 try {

113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {

114 return {

115 variant: 'control',

116 track: false

117 };

118 }

119 } catch {

120 return {

121 variant: 'control',

122 track: false

123 };

124 }

125 } else {

126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];

127 if (!country || CONSENT_COUNTRIES.has(country)) {

128 return {

129 variant: 'control',

130 track: false

131 };

132 }

133 }

134 let vid;

135 try {

136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);

137 if (ajsMatch) {

138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');

139 } else {

140 vid = localStorage.getItem(VID_KEY);

141 if (!vid) {

142 vid = crypto.randomUUID();

143 }

144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;

145 }

146 try {

147 localStorage.setItem(VID_KEY, vid);

148 } catch {}

149 } catch {

150 return {

151 variant: 'control',

152 track: false

153 };

154 }

155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);

156 return {

157 variant,

158 track: true,

159 vid

160 };

161 });

162 useEffect(() => {

163 if (!decision.track) return;

164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {

165 method: 'POST',

166 headers: {

167 'Content-Type': 'application/json',

168 'x-service-name': 'claude_code_docs'

169 },

170 body: JSON.stringify({

171 events: [{

172 event_type: 'GrowthbookExperimentEvent',

173 event_data: {

174 device_id: decision.vid,

175 anonymous_id: decision.vid,

176 timestamp: new Date().toISOString(),

177 experiment_id: flag,

178 variation_id: decision.variant === 'treatment' ? 1 : 0,

179 environment: 'production'

180 }

181 }]

182 }),

183 keepalive: true

184 }).catch(() => {});

185 }, []);

186 return decision.variant === 'treatment' ? treatment : children;

187};

188 

189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="claude_platform_on_aws" />} />

190 

9Claude Platform on AWS adalah Claude API yang dioperasikan Anthropic dengan autentikasi AWS, kontrol akses IAM, dan penagihan AWS Marketplace. Permintaan mencapai API Anthropic secara langsung, sehingga Anda mendapatkan model dan fitur yang sama seperti [Claude API](https://platform.claude.com/docs) dengan jadwal rilis yang sama. Anda melakukan autentikasi dengan kredensial AWS atau kunci API workspace, dan Anda membayar melalui AWS Marketplace.191Claude Platform on AWS adalah Claude API yang dioperasikan Anthropic dengan autentikasi AWS, kontrol akses IAM, dan penagihan AWS Marketplace. Permintaan mencapai API Anthropic secara langsung, sehingga Anda mendapatkan model dan fitur yang sama seperti [Claude API](https://platform.claude.com/docs) dengan jadwal rilis yang sama. Anda melakukan autentikasi dengan kredensial AWS atau kunci API workspace, dan Anda membayar melalui AWS Marketplace.

10 192 

11Gunakan panduan ini untuk mengarahkan Claude Code ke workspace yang telah Anda sediakan melalui Claude Platform on AWS. Untuk langganan AWS dan penyiapan workspace yang dilakukan sebelumnya, lihat [dokumentasi Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws).193Gunakan panduan ini untuk mengarahkan Claude Code ke workspace yang telah Anda sediakan melalui Claude Platform on AWS. Untuk langganan AWS dan penyiapan workspace yang dilakukan sebelumnya, lihat [dokumentasi Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws).


92 3. Sematkan versi model274 3. Sematkan versi model

93</h3>275</h3>

94 276 

95Claude Platform on AWS menggunakan ID model yang sama seperti Claude API langsung. Alias default `opus`, `sonnet`, dan `haiku` diselesaikan ke versi terbaru yang tersedia di workspace Anda.277Claude Platform on AWS menggunakan ID model yang sama seperti Claude API langsung. Alias default `fable`, `opus`, `sonnet`, dan `haiku` diselesaikan ke default bawaan Claude Code untuk Claude Platform on AWS, yang dapat tertinggal dari rilis terbaru. Tanpa `ANTHROPIC_DEFAULT_OPUS_MODEL`, alias `opus` diselesaikan ke Opus 4.7.

96 278 

97Jika Anda menerapkan Claude Code ke tim, sematkan ID model secara eksplisit sehingga rilis baru tidak memindahkan semua orang sekaligus:279Jika Anda menerapkan Claude Code ke tim, sematkan ID model secara eksplisit sehingga rilis baru tidak memindahkan semua orang sekaligus:

98 280 

99```bash theme={null}281```bash theme={null}

282export ANTHROPIC_DEFAULT_FABLE_MODEL=claude-fable-5

100export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-7283export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-7

101export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6284export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6

102export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5285export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5


157 `403 Forbidden` atau `AccessDenied` pada setiap permintaan340 `403 Forbidden` atau `AccessDenied` pada setiap permintaan

158</h3>341</h3>

159 342 

160Prinsipal IAM yang diselesaikan Claude Code kemungkinan besar tidak memiliki izin untuk memanggil layanan Anthropic di workspace Anda. Periksa peran yang terpasang pada profil AWS Anda atau runner yang memulai Claude Code, dan verifikasi bahwa ia memiliki tindakan `aws-external-anthropic` yang didokumentasikan dalam [referensi tindakan IAM](https://platform.claude.com/docs/en/api/claude-platform-on-aws-iam-actions).343Prinsipal IAM yang diselesaikan Claude Code kemungkinan besar tidak memiliki izin untuk memanggil layanan Anthropic di workspace Anda. Periksa peran yang terpasang pada profil AWS Anda atau runner yang memulai Claude Code, dan verifikasi bahwa ia memiliki tindakan `aws-external-anthropic` yang didokumentasikan dalam [referensi tindakan IAM](https://platform.claude.com/docs/id/api/claude-platform-on-aws-iam-actions).

161 344 

162Jika Anda menetapkan `ANTHROPIC_AWS_API_KEY`, kunci mengambil prioritas atas SigV4 dan kunci yang sudah usang menghasilkan kesalahan yang sama. Buat ulang kunci di AWS Console di bawah **Claude Platform on AWS → API keys** atau batalkan variabel untuk kembali ke kredensial AWS Anda.345Jika Anda menetapkan `ANTHROPIC_AWS_API_KEY`, kunci mengambil prioritas atas SigV4 dan kunci yang sudah usang menghasilkan kesalahan yang sama. Buat ulang kunci di AWS Console di bawah **Claude Platform on AWS → API keys** atau batalkan variabel untuk kembali ke kredensial AWS Anda.

163 346 

cli-reference.md +11 −9

Details

13Anda dapat memulai sesi, menyalurkan konten, melanjutkan percakapan, dan mengelola pembaruan dengan perintah-perintah ini:13Anda dapat memulai sesi, menyalurkan konten, melanjutkan percakapan, dan mengelola pembaruan dengan perintah-perintah ini:

14 14 

15| Perintah | Deskripsi | Contoh |15| Perintah | Deskripsi | Contoh |

16| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------- |16| :------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |

17| `claude` | Mulai sesi interaktif | `claude` |17| `claude` | Mulai sesi interaktif | `claude` |

18| `claude "query"` | Mulai sesi interaktif dengan prompt awal | `claude "explain this project"` |18| `claude "query"` | Mulai sesi interaktif dengan prompt awal | `claude "explain this project"` |

19| `claude -p "query"` | Kueri melalui SDK, kemudian keluar | `claude -p "explain this function"` |19| `claude -p "query"` | Kueri melalui SDK, kemudian keluar | `claude -p "explain this function"` |


26| `claude auth login` | Masuk ke akun Anthropic Anda. Gunakan `--email` untuk mengisi email Anda sebelumnya, `--sso` untuk memaksa autentikasi SSO, dan `--console` untuk masuk dengan Anthropic Console untuk penagihan penggunaan API alih-alih langganan Claude | `claude auth login --console` |26| `claude auth login` | Masuk ke akun Anthropic Anda. Gunakan `--email` untuk mengisi email Anda sebelumnya, `--sso` untuk memaksa autentikasi SSO, dan `--console` untuk masuk dengan Anthropic Console untuk penagihan penggunaan API alih-alih langganan Claude | `claude auth login --console` |

27| `claude auth logout` | Keluar dari akun Anthropic Anda | `claude auth logout` |27| `claude auth logout` | Keluar dari akun Anthropic Anda | `claude auth logout` |

28| `claude auth status` | Tampilkan status autentikasi sebagai JSON. Gunakan `--text` untuk output yang dapat dibaca manusia. Keluar dengan kode 0 jika masuk, 1 jika tidak | `claude auth status` |28| `claude auth status` | Tampilkan status autentikasi sebagai JSON. Gunakan `--text` untuk output yang dapat dibaca manusia. Keluar dengan kode 0 jika masuk, 1 jika tidak | `claude auth status` |

29| `claude agents` | Buka [tampilan agen](/id/agent-view) untuk memantau dan mengirim sesi latar belakang paralel. Gunakan `--cwd <path>` untuk menampilkan hanya sesi yang dimulai di bawah direktori tersebut, atau `--json` untuk mencetak sesi langsung sebagai array JSON untuk skrip. Lewatkan `--permission-mode`, `--model`, `--effort`, atau `--agent` untuk menetapkan [default untuk sesi yang dikirim](/id/agent-view#permission-mode-model-and-effort). Menerima `--settings`, `--add-dir`, `--plugin-dir`, dan `--mcp-config` seperti perintah `claude` tingkat atas. Membuka tampilan agen memerlukan terminal interaktif | `claude agents --json` |29| `claude agents` | Buka [tampilan agen](/id/agent-view) untuk memantau dan mengirim sesi latar belakang paralel. Gunakan `--cwd <path>` untuk menampilkan hanya sesi yang dimulai di bawah direktori tersebut, atau `--json` untuk mencetak sesi langsung sebagai array JSON untuk skrip (`--json --all` juga mencakup sesi latar belakang yang selesai). Lewatkan `--permission-mode`, `--model`, `--effort`, atau `--agent` untuk menetapkan [default untuk sesi yang dikirim](/id/agent-view#permission-mode-model-and-effort). Menerima `--settings`, `--add-dir`, `--plugin-dir`, dan `--mcp-config` seperti perintah `claude` tingkat atas. Membuka tampilan agen memerlukan terminal interaktif | `claude agents --json` |

30| `claude attach <id>` | Lampirkan ke [sesi latar belakang](/id/agent-view#manage-sessions-from-the-shell) di terminal ini | `claude attach 7c5dcf5d` |30| `claude attach <id>` | Lampirkan ke [sesi latar belakang](/id/agent-view#manage-sessions-from-the-shell) di terminal ini | `claude attach 7c5dcf5d` |

31| `claude auto-mode defaults` | Cetak aturan pengklasifikasi [auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) bawaan sebagai JSON. Gunakan `claude auto-mode config` untuk melihat konfigurasi efektif Anda dengan pengaturan yang diterapkan | `claude auto-mode defaults > rules.json` |31| `claude auto-mode defaults` | Cetak aturan pengklasifikasi [auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) bawaan sebagai JSON. Gunakan `claude auto-mode config` untuk melihat konfigurasi efektif Anda dengan pengaturan yang diterapkan | `claude auto-mode defaults > rules.json` |

32| `claude daemon status` | Cetak status [supervisor](/id/agent-view#the-supervisor-process) sesi latar belakang, versi, direktori soket, dan jumlah pekerja untuk diagnostik. Keluar dengan 1 jika supervisor tidak berjalan | `claude daemon status` |32| `claude daemon status` | Cetak status [supervisor](/id/agent-view#the-supervisor-process) sesi latar belakang, versi, direktori soket, dan jumlah pekerja untuk diagnostik. Keluar dengan 1 jika supervisor tidak berjalan | `claude daemon status` |


51Sesuaikan perilaku Claude Code dengan flag baris perintah ini. `claude --help` tidak mencantumkan setiap flag, jadi ketiadaan flag dari `--help` tidak berarti flag tersebut tidak tersedia.51Sesuaikan perilaku Claude Code dengan flag baris perintah ini. `claude --help` tidak mencantumkan setiap flag, jadi ketiadaan flag dari `--help` tidak berarti flag tersebut tidak tersedia.

52 52 

53| Flag | Deskripsi | Contoh |53| Flag | Deskripsi | Contoh |

54| :---------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |54| :---------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |

55| `--add-dir` | Tambahkan direktori kerja tambahan untuk Claude membaca dan mengedit file. Memberikan akses file; sebagian besar konfigurasi `.claude/` [tidak ditemukan](/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori ini. Memvalidasi setiap jalur ada sebagai direktori. Untuk mempertahankan direktori ini di seluruh sesi, atur [`permissions.additionalDirectories`](/id/settings#permission-settings) dalam pengaturan | `claude --add-dir ../apps ../lib` |55| `--add-dir` | Tambahkan direktori kerja tambahan untuk Claude membaca dan mengedit file. Memberikan akses file; sebagian besar konfigurasi `.claude/` [tidak ditemukan](/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori ini. Memvalidasi setiap jalur ada sebagai direktori. Untuk mempertahankan direktori ini di seluruh sesi, atur [`permissions.additionalDirectories`](/id/settings#permission-settings) dalam pengaturan | `claude --add-dir ../apps ../lib` |

56| `--advisor <model>` | {/* min-version: 2.1.98 */}Aktifkan [alat advisor](/id/advisor) sisi server untuk sesi ini dengan alias model: `opus`, `sonnet`, atau `fable` ({/* min-version: 2.1.170 */}v2.1.170+), atau ID model lengkap. Mengambil prioritas atas pengaturan `advisorModel` untuk sesi. Memerlukan Claude Code v2.1.98 atau lebih baru | `claude --advisor opus` |

56| `--agent` | Tentukan agen untuk sesi saat ini (menimpa pengaturan `agent`) | `claude --agent my-custom-agent` |57| `--agent` | Tentukan agen untuk sesi saat ini (menimpa pengaturan `agent`) | `claude --agent my-custom-agent` |

57| `--agents` | Tentukan subagents kustom secara dinamis melalui JSON. Menggunakan nama field yang sama dengan [frontmatter](/id/sub-agents#supported-frontmatter-fields) subagent, ditambah field `prompt` untuk instruksi agen | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |58| `--agents` | Tentukan subagents kustom secara dinamis melalui JSON. Menggunakan nama field yang sama dengan [frontmatter](/id/sub-agents#supported-frontmatter-fields) subagent, ditambah field `prompt` untuk instruksi agen | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

58| `--allow-dangerously-skip-permissions` | Tambahkan `bypassPermissions` ke siklus mode `Shift+Tab` tanpa memulai di dalamnya. Memungkinkan Anda memulai dalam mode berbeda seperti `plan` dan beralih ke `bypassPermissions` nanti. Lihat [mode izin](/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |59| `--allow-dangerously-skip-permissions` | Tambahkan `bypassPermissions` ke siklus mode `Shift+Tab` tanpa memulai di dalamnya. Memungkinkan Anda memulai dalam mode berbeda seperti `plan` dan beralih ke `bypassPermissions` nanti. Lihat [mode izin](/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |

59| `--allowedTools` | Tools yang dieksekusi tanpa meminta izin. Lihat [sintaks aturan izin](/id/settings#permission-rule-syntax) untuk pencocokan pola. Untuk membatasi tools mana yang tersedia, gunakan `--tools` sebagai gantinya | `"Bash(git log *)" "Bash(git diff *)" "Read"` |60| `--allowedTools`, `--allowed-tools` | Tools yang dieksekusi tanpa meminta izin. Lihat [sintaks aturan izin](/id/settings#permission-rule-syntax) untuk pencocokan pola. Untuk membatasi tools mana yang tersedia, gunakan `--tools` sebagai gantinya | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

60| `--append-system-prompt` | Tambahkan teks kustom ke akhir prompt sistem default | `claude --append-system-prompt "Always use TypeScript"` |61| `--append-system-prompt` | Tambahkan teks kustom ke akhir prompt sistem default | `claude --append-system-prompt "Always use TypeScript"` |

61| `--append-system-prompt-file` | Muat teks prompt sistem tambahan dari file dan tambahkan ke prompt default | `claude --append-system-prompt-file ./extra-rules.txt` |62| `--append-system-prompt-file` | Muat teks prompt sistem tambahan dari file dan tambahkan ke prompt default | `claude --append-system-prompt-file ./extra-rules.txt` |

62| `--bare` | Mode minimal: lewati penemuan otomatis hooks, skills, plugins, server MCP, auto memory, dan CLAUDE.md sehingga panggilan skrip dimulai lebih cepat. Claude memiliki akses ke tools Bash, baca file, dan edit file. Menetapkan [`CLAUDE_CODE_SIMPLE`](/id/env-vars). Lihat [bare mode](/id/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |63| `--bare` | Mode minimal: lewati penemuan otomatis hooks, skills, plugins, server MCP, auto memory, dan CLAUDE.md sehingga panggilan skrip dimulai lebih cepat. Claude memiliki akses ke tools Bash, baca file, dan edit file. Menetapkan [`CLAUDE_CODE_SIMPLE`](/id/env-vars). Lihat [bare mode](/id/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |


70| `--debug` | Aktifkan mode debug dengan penyaringan kategori opsional (misalnya, `"api,hooks"` atau `"!statsig,!file"`) | `claude --debug "api,mcp"` |71| `--debug` | Aktifkan mode debug dengan penyaringan kategori opsional (misalnya, `"api,hooks"` atau `"!statsig,!file"`) | `claude --debug "api,mcp"` |

71| `--debug-file <path>` | Tulis log debug ke jalur file tertentu. Secara implisit mengaktifkan mode debug. Mengambil prioritas atas `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |72| `--debug-file <path>` | Tulis log debug ke jalur file tertentu. Secara implisit mengaktifkan mode debug. Mengambil prioritas atas `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |

72| `--disable-slash-commands` | Nonaktifkan semua skills dan perintah untuk sesi ini | `claude --disable-slash-commands` |73| `--disable-slash-commands` | Nonaktifkan semua skills dan perintah untuk sesi ini | `claude --disable-slash-commands` |

73| `--disallowedTools` | Aturan penolakan. Nama tool yang telanjang menghapus tool itu dari konteks model. Aturan yang dibatasi seperti `Bash(rm *)` membiarkan tool tersedia dan menolak hanya panggilan yang cocok | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |74| `--disallowedTools`, `--disallowed-tools` | Aturan penolakan. Nama tool yang telanjang menghapus tools yang cocok dari konteks model: `"Edit"` menghapus Edit, `"*"` menghapus setiap tool, dan `"mcp__*"` menghapus setiap tool MCP. Aturan yang dibatasi seperti `Bash(rm *)` membiarkan tool tersedia dan menolak hanya panggilan yang cocok | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

74| `--effort` | Atur [tingkat upaya](/id/model-config#adjust-effort-level) untuk sesi saat ini. Opsi: `low`, `medium`, `high`, `xhigh`, `max`; tingkat yang tersedia tergantung pada model. Menimpa pengaturan [`effortLevel`](/id/settings#available-settings) untuk sesi ini dan tidak bertahan | `claude --effort high` |75| `--effort` | Atur [tingkat upaya](/id/model-config#adjust-effort-level) untuk sesi saat ini. Opsi: `low`, `medium`, `high`, `xhigh`, `max`; tingkat yang tersedia tergantung pada model. Menimpa pengaturan [`effortLevel`](/id/settings#available-settings) untuk sesi ini dan tidak bertahan | `claude --effort high` |

75| `--enable-auto-mode` | {/* max-version: 2.1.110 */}Dihapus di v2.1.111. Auto mode sekarang dalam siklus `Shift+Tab` secara default; gunakan `--permission-mode auto` untuk memulai di dalamnya | `claude --permission-mode auto` |76| `--enable-auto-mode` | {/* max-version: 2.1.110 */}Dihapus di v2.1.111. Auto mode sekarang dalam siklus `Shift+Tab` secara default; gunakan `--permission-mode auto` untuk memulai di dalamnya | `claude --permission-mode auto` |

76| `--exclude-dynamic-system-prompt-sections` | Pindahkan bagian per-mesin dari prompt sistem (direktori kerja, informasi lingkungan, jalur memori, status git-repo) ke pesan pengguna pertama. Meningkatkan reuse prompt-cache di berbagai pengguna dan mesin yang menjalankan tugas yang sama. Hanya berlaku dengan prompt sistem default; diabaikan ketika `--system-prompt` atau `--system-prompt-file` diatur. Gunakan dengan `-p` untuk beban kerja multi-pengguna yang ditulis skrip | `claude -p --exclude-dynamic-system-prompt-sections "query"` |77| `--exclude-dynamic-system-prompt-sections` | Pindahkan bagian per-mesin dari prompt sistem (direktori kerja, informasi lingkungan, jalur memori, status git-repo) ke pesan pengguna pertama. Meningkatkan reuse prompt-cache di berbagai pengguna dan mesin yang menjalankan tugas yang sama. Hanya berlaku dengan prompt sistem default; diabaikan ketika `--system-prompt` atau `--system-prompt-file` diatur. Gunakan dengan `-p` untuk beban kerja multi-pengguna yang ditulis skrip | `claude -p --exclude-dynamic-system-prompt-sections "query"` |

77| `--exec` | Jalankan perintah shell sebagai pekerjaan latar belakang yang didukung PTY alih-alih memulai sesi Claude. Gunakan dengan `--bg` untuk meluncurkan dari shell | `claude --bg --exec 'pytest -x'` |78| `--exec` | Jalankan perintah shell sebagai pekerjaan latar belakang yang didukung PTY alih-alih memulai sesi Claude. Gunakan dengan `--bg` untuk meluncurkan dari shell | `claude --bg --exec 'pytest -x'` |

78| `--fallback-model` | Aktifkan fallback otomatis ke model yang ditentukan ketika model default kelebihan beban atau tidak tersedia, misalnya model yang sudah pensiun. Berlaku dalam mode cetak (`-p`) dan dalam [sesi latar belakang](/id/agent-view), yang berjalan non-interaktif; diabaikan dalam sesi interaktif | `claude -p --fallback-model sonnet "query"` |79| `--fallback-model` | Aktifkan fallback otomatis ke model yang ditentukan ketika model utama kelebihan beban atau tidak tersedia, misalnya model yang sudah pensiun. Menerima daftar yang dipisahkan koma yang dicoba secara berurutan. Lihat [Fallback model chains](/id/model-config#fallback-model-chains). Untuk mempertahankan rantai di seluruh sesi, gunakan pengaturan [`fallbackModel`](/id/settings#available-settings), yang flag ini timpa | `claude --fallback-model sonnet,haiku` |

79| `--fork-session` | Saat melanjutkan, buat ID sesi baru alih-alih menggunakan kembali yang asli (gunakan dengan `--resume` atau `--continue`) | `claude --resume abc123 --fork-session` |80| `--fork-session` | Saat melanjutkan, buat ID sesi baru alih-alih menggunakan kembali yang asli (gunakan dengan `--resume` atau `--continue`) | `claude --resume abc123 --fork-session` |

80| `--from-pr` | Lanjutkan sesi yang ditautkan ke pull request tertentu. Menerima nomor PR, URL GitHub atau GitHub Enterprise PR, URL merge request GitLab, atau URL pull request Bitbucket. Sesi secara otomatis ditautkan ketika Claude membuat pull request | `claude --from-pr 123` |81| `--from-pr` | Lanjutkan sesi yang ditautkan ke pull request tertentu. Menerima nomor PR, URL GitHub atau GitHub Enterprise PR, URL merge request GitLab, atau URL pull request Bitbucket. Sesi secara otomatis ditautkan ketika Claude membuat pull request | `claude --from-pr 123` |

81| `--ide` | Secara otomatis terhubung ke IDE saat startup jika tepat satu IDE valid tersedia | `claude --ide` |82| `--ide` | Secara otomatis terhubung ke IDE saat startup jika tepat satu IDE valid tersedia | `claude --ide` |


89| `--max-budget-usd` | Jumlah dolar maksimum untuk dihabiskan pada panggilan API sebelum berhenti (mode cetak saja) | `claude -p --max-budget-usd 5.00 "query"` |90| `--max-budget-usd` | Jumlah dolar maksimum untuk dihabiskan pada panggilan API sebelum berhenti (mode cetak saja) | `claude -p --max-budget-usd 5.00 "query"` |

90| `--max-turns` | Batasi jumlah putaran agentic (mode cetak saja). Keluar dengan kesalahan saat batas tercapai. Tidak ada batas secara default | `claude -p --max-turns 3 "query"` |91| `--max-turns` | Batasi jumlah putaran agentic (mode cetak saja). Keluar dengan kesalahan saat batas tercapai. Tidak ada batas secara default | `claude -p --max-turns 3 "query"` |

91| `--mcp-config` | Muat server MCP dari file JSON atau string (dipisahkan spasi) | `claude --mcp-config ./mcp.json` |92| `--mcp-config` | Muat server MCP dari file JSON atau string (dipisahkan spasi) | `claude --mcp-config ./mcp.json` |

92| `--model` | Menetapkan model untuk sesi saat ini dengan alias untuk model terbaru (`sonnet` atau `opus`) atau nama lengkap model. Menimpa pengaturan [`model`](/id/settings#available-settings) dan [`ANTHROPIC_MODEL`](/id/model-config#environment-variables) | `claude --model claude-sonnet-4-6` |93| `--model` | Menetapkan model untuk sesi saat ini dengan alias untuk model terbaru (`sonnet`, `opus`, `haiku`, atau `fable`) atau nama lengkap model. Menimpa pengaturan [`model`](/id/settings#available-settings) dan [`ANTHROPIC_MODEL`](/id/model-config#environment-variables) | `claude --model claude-sonnet-4-6` |

93| `--name`, `-n` | Atur nama tampilan untuk sesi, ditampilkan di `/resume` dan judul terminal. Anda dapat melanjutkan sesi bernama dengan `claude --resume <name>`. <br /><br />[`/rename`](/id/commands) mengubah nama di tengah sesi dan juga menampilkannya di bilah prompt | `claude -n "my-feature-work"` |94| `--name`, `-n` | Atur nama tampilan untuk sesi, ditampilkan di `/resume` dan judul terminal. Anda dapat melanjutkan sesi bernama dengan `claude --resume <name>`. <br /><br />[`/rename`](/id/commands) mengubah nama di tengah sesi dan juga menampilkannya di bilah prompt | `claude -n "my-feature-work"` |

94| `--no-chrome` | Nonaktifkan [integrasi browser Chrome](/id/chrome) untuk sesi ini | `claude --no-chrome` |95| `--no-chrome` | Nonaktifkan [integrasi browser Chrome](/id/chrome) untuk sesi ini | `claude --no-chrome` |

95| `--no-session-persistence` | Nonaktifkan persistensi sesi sehingga sesi tidak disimpan ke disk dan tidak dapat dilanjutkan. Mode cetak saja. Variabel lingkungan [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/id/env-vars) melakukan hal yang sama dalam mode apa pun | `claude -p --no-session-persistence "query"` |96| `--no-session-persistence` | Nonaktifkan persistensi sesi sehingga sesi tidak disimpan ke disk dan tidak dapat dilanjutkan. Mode cetak saja. Variabel lingkungan [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/id/env-vars) melakukan hal yang sama dalam mode apa pun | `claude -p --no-session-persistence "query"` |


104| `--remote-control`, `--rc` | Mulai sesi interaktif dengan [Remote Control](/id/remote-control#start-a-remote-control-session) diaktifkan sehingga Anda juga dapat mengontrolnya dari claude.ai atau aplikasi Claude. Secara opsional berikan nama untuk sesi | `claude --remote-control "My Project"` |105| `--remote-control`, `--rc` | Mulai sesi interaktif dengan [Remote Control](/id/remote-control#start-a-remote-control-session) diaktifkan sehingga Anda juga dapat mengontrolnya dari claude.ai atau aplikasi Claude. Secara opsional berikan nama untuk sesi | `claude --remote-control "My Project"` |

105| `--remote-control-session-name-prefix <prefix>` | Awalan untuk nama sesi [Remote Control](/id/remote-control) yang dibuat secara otomatis ketika tidak ada nama eksplisit yang diatur. Default ke nama host mesin Anda, menghasilkan nama seperti `myhost-graceful-unicorn`. Atur `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` untuk efek yang sama | `claude remote-control --remote-control-session-name-prefix dev-box` |106| `--remote-control-session-name-prefix <prefix>` | Awalan untuk nama sesi [Remote Control](/id/remote-control) yang dibuat secara otomatis ketika tidak ada nama eksplisit yang diatur. Default ke nama host mesin Anda, menghasilkan nama seperti `myhost-graceful-unicorn`. Atur `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` untuk efek yang sama | `claude remote-control --remote-control-session-name-prefix dev-box` |

106| `--replay-user-messages` | Re-emit pesan pengguna dari stdin kembali ke stdout untuk pengakuan. Memerlukan `--input-format stream-json` dan `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --verbose --replay-user-messages` |107| `--replay-user-messages` | Re-emit pesan pengguna dari stdin kembali ke stdout untuk pengakuan. Memerlukan `--input-format stream-json` dan `--output-format stream-json` | `claude -p --input-format stream-json --output-format stream-json --verbose --replay-user-messages` |

107| `--resume`, `-r` | Lanjutkan sesi tertentu berdasarkan ID atau nama, atau tampilkan pemilih interaktif untuk memilih sesi. Mencakup sesi yang menambahkan direktori ini dengan `/add-dir`. Mulai dari v2.1.144, [sesi latar belakang](/id/agent-view) muncul di pemilih yang ditandai dengan `bg` | `claude --resume auth-refactor` |108| `--resume`, `-r` | Lanjutkan sesi tertentu berdasarkan ID atau nama, atau tampilkan pemilih interaktif untuk memilih sesi. Pemilih dan pencarian nama mencakup sesi yang menambahkan direktori ini dengan `/add-dir`; melewatkan ID sesi hanya mencari di direktori proyek saat ini dan git worktrees-nya. Mulai dari v2.1.144, [sesi latar belakang](/id/agent-view) muncul di pemilih yang ditandai dengan `bg` | `claude --resume auth-refactor` |

109| `--safe-mode` | {/* min-version: 2.1.169 */}Mulai dengan semua kustomisasi dinonaktifkan untuk memecahkan masalah konfigurasi yang rusak: CLAUDE.md, skills, plugins, hooks, server MCP, perintah dan agen kustom, gaya output, workflows, tema kustom, pintasan keyboard kustom, perintah status line dan file-suggestion, server LSP, dan auto-memory tidak dimuat. Autentikasi, pemilihan model, tools bawaan, dan izin bekerja secara normal, yang berbeda dari [`--bare`](/id/headless#start-faster-with-bare-mode). Kebijakan pengaturan terkelola masih berlaku, termasuk hooks yang dikonfigurasi kebijakan, status line, dan perintah file-suggestion; plugins terkelola, skills terkelola, CLAUDE.md terkelola, dan server MCP yang dikonfigurasi kebijakan tidak. Berguna untuk memeriksa apakah kustomisasi adalah apa yang memicu [fallback otomatis dari Fable 5](/id/model-config#automatic-model-fallback). Menetapkan [`CLAUDE_CODE_SAFE_MODE`](/id/env-vars) | `claude --safe-mode` |

108| `--session-id` | Gunakan ID sesi tertentu untuk percakapan (harus UUID yang valid) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |110| `--session-id` | Gunakan ID sesi tertentu untuk percakapan (harus UUID yang valid) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

109| `--setting-sources` | Daftar sumber pengaturan yang dipisahkan koma untuk dimuat (`user`, `project`, `local`) | `claude --setting-sources user,project` |111| `--setting-sources` | Daftar sumber pengaturan yang dipisahkan koma untuk dimuat (`user`, `project`, `local`) | `claude --setting-sources user,project` |

110| `--settings` | Jalur ke file JSON pengaturan atau string JSON inline. Nilai yang Anda atur di sini menimpa kunci yang sama dalam file `settings.json` Anda untuk sesi ini. Kunci yang Anda lewatkan mempertahankan nilai berbasis file mereka. Lihat [precedence pengaturan](/id/settings#settings-precedence) | `claude --settings ./settings.json` |112| `--settings` | Jalur ke file JSON pengaturan atau string JSON inline. Nilai yang Anda atur di sini menimpa kunci yang sama dalam file `settings.json` Anda untuk sesi ini. Kunci yang Anda lewatkan mempertahankan nilai berbasis file mereka. Lihat [precedence pengaturan](/id/settings#settings-precedence) | `claude --settings ./settings.json` |


114| `--teleport` | Lanjutkan [sesi web](/id/claude-code-on-the-web) di terminal lokal Anda | `claude --teleport` |116| `--teleport` | Lanjutkan [sesi web](/id/claude-code-on-the-web) di terminal lokal Anda | `claude --teleport` |

115| `--teammate-mode` | Atur bagaimana [rekan tim agen](/id/agent-teams) ditampilkan: `auto` (default), `in-process`, atau `tmux`. Menimpa pengaturan [`teammateMode`](/id/settings#available-settings) untuk sesi ini. Lihat [Pilih mode tampilan](/id/agent-teams#choose-a-display-mode) | `claude --teammate-mode in-process` |117| `--teammate-mode` | Atur bagaimana [rekan tim agen](/id/agent-teams) ditampilkan: `auto` (default), `in-process`, atau `tmux`. Menimpa pengaturan [`teammateMode`](/id/settings#available-settings) untuk sesi ini. Lihat [Pilih mode tampilan](/id/agent-teams#choose-a-display-mode) | `claude --teammate-mode in-process` |

116| `--tmux` | Buat sesi tmux untuk worktree. Memerlukan `--worktree`. Menggunakan pane native iTerm2 saat tersedia; berikan `--tmux=classic` untuk tmux tradisional | `claude -w feature-auth --tmux` |118| `--tmux` | Buat sesi tmux untuk worktree. Memerlukan `--worktree`. Menggunakan pane native iTerm2 saat tersedia; berikan `--tmux=classic` untuk tmux tradisional | `claude -w feature-auth --tmux` |

117| `--tools` | Batasi tools bawaan mana yang dapat digunakan Claude. Gunakan `""` untuk menonaktifkan semua, `"default"` untuk semua, atau nama tools seperti `"Bash,Edit,Read"` | `claude --tools "Bash,Edit,Read"` |119| `--tools` | Batasi tools bawaan mana yang dapat digunakan Claude. Gunakan `""` untuk menonaktifkan semua, `"default"` untuk semua, atau nama tools seperti `"Bash,Edit,Read"`. Tools MCP tidak terpengaruh; untuk menolak yang juga, gunakan `--disallowedTools "mcp__*"`, atau berikan `--strict-mcp-config` tanpa `--mcp-config` sehingga tidak ada server MCP yang dimuat | `claude --tools "Bash,Edit,Read"` |

118| `--verbose` | Aktifkan logging verbose, menampilkan output putaran penuh. Menimpa pengaturan [`viewMode`](/id/settings#available-settings) untuk sesi ini | `claude --verbose` |120| `--verbose` | Aktifkan logging verbose, menampilkan output putaran penuh. Menimpa pengaturan [`viewMode`](/id/settings#available-settings) untuk sesi ini | `claude --verbose` |

119| `--version`, `-v` | Keluarkan nomor versi | `claude -v` |121| `--version`, `-v` | Keluarkan nomor versi | `claude -v` |

120| `--worktree`, `-w` | Mulai Claude dalam [git worktree](/id/worktrees) terisolasi di `<repo>/.claude/worktrees/<name>`. Jika tidak ada nama yang diberikan, satu akan dibuat secara otomatis. Berikan `#<number>` atau URL pull request GitHub untuk mengambil PR itu dari `origin` dan membuat cabang worktree darinya | `claude -w feature-auth` |122| `--worktree`, `-w` | Mulai Claude dalam [git worktree](/id/worktrees) terisolasi di `<repo>/.claude/worktrees/<name>`. Jika tidak ada nama yang diberikan, satu akan dibuat secara otomatis. Berikan `#<number>` atau URL pull request GitHub untuk mengambil PR itu dari `origin` dan membuat cabang worktree darinya | `claude -w feature-auth` |

code-review.md +5 −5

Details

296 296 

297Tombol **Re-run** di tab Checks GitHub tidak memicu ulang Code Review. Gunakan perintah komentar atau push baru sebagai gantinya.297Tombol **Re-run** di tab Checks GitHub tidak memicu ulang Code Review. Gunakan perintah komentar atau push baru sebagai gantinya.

298 298 

299<h3 id="review-didn-t-run-and-the-pr-shows-a-spend-cap-message">299<h3 id="review-didnt-run-and-the-pr-shows-a-spend-cap-message">

300 Ulasan tidak berjalan dan PR menampilkan pesan batas pengeluaran300 Ulasan tidak berjalan dan PR menampilkan pesan batas pengeluaran

301</h3>301</h3>

302 302 

303Ketika batas pengeluaran bulanan organisasi Anda tercapai, Code Review memposting komentar tunggal pada PR yang menjelaskan bahwa ulasan dilewati. Ulasan dilanjutkan secara otomatis pada awal periode penagihan berikutnya, atau segera ketika admin menaikkan batas di [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage).303Ketika batas pengeluaran bulanan organisasi Anda tercapai, Code Review memposting komentar tunggal pada PR yang menjelaskan bahwa ulasan dilewati. Ulasan dilanjutkan secara otomatis pada awal periode penagihan berikutnya, atau segera ketika admin menaikkan batas di [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage).

304 304 

305<h3 id="find-issues-that-aren-t-showing-as-inline-comments">305<h3 id="find-issues-that-arent-showing-as-inline-comments">

306 Temukan masalah yang tidak ditampilkan sebagai komentar sebaris306 Temukan masalah yang tidak ditampilkan sebagai komentar sebaris

307</h3>307</h3>

308 308 


316 Meninjau diff secara lokal316 Meninjau diff secara lokal

317</h2>317</h2>

318 318 

319Perintah [`/code-review`](/id/commands) meninjau diff di terminal Anda tanpa memasang GitHub App. Jalankan dalam sesi Claude Code apa pun: ini melaporkan bug kebenaran dan {/* min-version: 2.1.151 */}penggunaan kembali, penyederhanaan, dan pembersihan efisiensi dalam diff saat ini. Lewatkan `--comment` untuk memposting temuan sebagai komentar PR sebaris, atau `--fix` untuk menerapkan temuan ke pohon kerja Anda setelah ulasan.319Perintah [`/code-review`](/id/commands) meninjau diff di terminal Anda tanpa memasang GitHub App. Jalankan dalam sesi Claude Code apa pun: ini melaporkan bug kebenaran dan {/* min-version: 2.1.151 */}penggunaan kembali, penyederhanaan, dan pembersihan efisiensi. Secara default, ulasan lokal mencakup komit cabang Anda yang berada di depan upstream-nya ditambah perubahan yang tidak dilakukan dalam pohon kerja. Lewatkan `--comment` untuk memposting temuan sebagai komentar PR sebaris, atau `--fix` untuk menerapkan temuan ke pohon kerja Anda setelah ulasan.

320 320 

321[Tingkat upaya](/id/model-config#adjust-effort-level) yang lebih rendah mengembalikan temuan yang lebih sedikit dan lebih percaya diri, sementara `high` hingga `max` memberikan cakupan yang lebih luas dan mungkin mencakup temuan yang tidak pasti. Tanpa argumen upaya, ulasan menggunakan upaya saat ini sesi. Lewatkan jalur atau referensi PR untuk meninjau target tertentu alih-alih diff saat ini.321[Tingkat upaya](/id/model-config#adjust-effort-level) yang lebih rendah mengembalikan temuan yang lebih sedikit dan lebih percaya diri, sementara `high` hingga `max` memberikan cakupan yang lebih luas dan mungkin mencakup temuan yang tidak pasti. Tanpa argumen upaya, ulasan menggunakan upaya saat ini sesi. Untuk meninjau sesuatu selain diff default, lewatkan target: jalur file, nomor PR, nama cabang, atau rentang ref seperti `main...my-feature`. Bentuk rentang ref meninjau diff yang dilakukan yang akan dimuat pull request dari `my-feature` ke `main`, terlepas dari bagaimana upstream cabang dikonfigurasi.

322 322 

323`/code-review ultra --fix` menjalankan [ultrareview](/id/ultrareview) yang lebih dalam di cloud, kemudian menerapkan temuannya ke pohon kerja Anda ketika mereka kembali dalam sesi Anda.323`/code-review ultra --fix` menjalankan [ultrareview](/id/ultrareview) yang lebih dalam di cloud, kemudian menerapkan temuannya ke pohon kerja Anda ketika mereka kembali dalam sesi Anda. Ultrareview menggunakan cakupannya sendiri: cabang saat ini Anda terhadap cabang default repositori, ditambah perubahan yang tidak dilakukan dan staged dalam pohon kerja.

324 324 

325Perintah ini dinamai `/simplify` sebelum v2.1.147, ketika ia menerapkan perbaikan secara default. {/* min-version: 2.1.154 */}Dari v2.1.154, `/simplify` menjalankan ulasan pembersihan terpisah yang menerapkan perbaikan tanpa mencari bug. Jika Anda membuat skrip `/simplify` untuk pencarian bug, beralih ke `/code-review --fix`, yang tidak berubah.325Perintah ini dinamai `/simplify` sebelum v2.1.147, ketika ia menerapkan perbaikan secara default. {/* min-version: 2.1.154 */}Dari v2.1.154, `/simplify` menjalankan ulasan pembersihan terpisah yang menerapkan perbaikan tanpa mencari bug. Jika Anda membuat skrip `/simplify` untuk pencarian bug, beralih ke `/code-review --fix`, yang tidak berubah.

326 326 

commands.md +25 −14

Details

12 12 

13Sebuah perintah hanya dikenali di awal pesan Anda. Teks yang mengikuti nama perintah diteruskan kepadanya sebagai argumen.13Sebuah perintah hanya dikenali di awal pesan Anda. Teks yang mengikuti nama perintah diteruskan kepadanya sebagai argumen.

14 14 

15## Perintah di seluruh alur kerja khas15<h2 id="commands-across-a-typical-workflow">

16 Perintah di seluruh alur kerja khas

17</h2>

16 18 

17Sebagian besar perintah berguna pada titik tertentu dalam sesi, dari pengaturan proyek hingga pengiriman perubahan.19Sebagian besar perintah berguna pada titik tertentu dalam sesi, dari pengaturan proyek hingga pengiriman perubahan.

18 20 


28 30 

29**Ketika ada yang salah.** `/rewind` mengembalikan kode dan percakapan ke checkpoint, atau merangkum bagian dari percakapan. `/doctor` dan `/debug` mendiagnosis masalah instalasi dan runtime, dan `/feedback` melaporkan bug dengan konteks sesi terlampir.31**Ketika ada yang salah.** `/rewind` mengembalikan kode dan percakapan ke checkpoint, atau merangkum bagian dari percakapan. `/doctor` dan `/debug` mendiagnosis masalah instalasi dan runtime, dan `/feedback` melaporkan bug dengan konteks sesi terlampir.

30 32 

31## Semua perintah33<h2 id="all-commands">

34 Semua perintah

35</h2>

32 36 

33Tabel di bawah mencantumkan semua perintah yang disertakan dalam Claude Code. Sebagian besar adalah perintah bawaan yang perilakunya dikodekan ke dalam CLI. Dua jenis entri ditandai:37Tabel di bawah mencantumkan semua perintah yang disertakan dalam Claude Code. Sebagian besar adalah perintah bawaan yang perilakunya dikodekan ke dalam CLI. Dua jenis entri ditandai:

34 38 


46| Perintah | Tujuan |50| Perintah | Tujuan |

47| :--------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |51| :--------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

48| `/add-dir <path>` | Tambahkan direktori kerja untuk akses file selama sesi saat ini. Sebagian besar konfigurasi `.claude/` [tidak ditemukan](/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori yang ditambahkan. Anda dapat nanti melanjutkan sesi dari direktori yang ditambahkan dengan `--continue` atau `--resume` |52| `/add-dir <path>` | Tambahkan direktori kerja untuk akses file selama sesi saat ini. Sebagian besar konfigurasi `.claude/` [tidak ditemukan](/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori yang ditambahkan. Anda dapat nanti melanjutkan sesi dari direktori yang ditambahkan dengan `--continue` atau `--resume` |

53| `/advisor [model\|off]` | {/* min-version: 2.1.98 */}Aktifkan atau nonaktifkan [advisor tool](/id/advisor), yang berkonsultasi dengan model kedua untuk panduan di momen-momen kunci selama tugas. Menerima `opus`, `sonnet`, `fable` ({/* min-version: 2.1.170 */}v2.1.170+), atau ID model lengkap. Tanpa argumen, membuka pemilih. Memerlukan Claude Code v2.1.98 atau lebih baru |

49| `/agents` | Kelola konfigurasi [agent](/id/sub-agents) |54| `/agents` | Kelola konfigurasi [agent](/id/sub-agents) |

50| `/autofix-pr [prompt]` | Spawn sesi [Claude Code di web](/id/claude-code-on-the-web#auto-fix-pull-requests) yang memantau PR cabang saat ini dan mendorong perbaikan ketika CI gagal atau reviewer meninggalkan komentar. Mendeteksi PR terbuka dari cabang yang Anda checkout dengan `gh pr view`; untuk memantau PR yang berbeda, checkout cabangnya terlebih dahulu. Secara default sesi jarak jauh diberitahu untuk memperbaiki setiap kegagalan CI dan komentar review; teruskan prompt untuk memberikan instruksi yang berbeda, misalnya `/autofix-pr only fix lint and type errors`. Memerlukan CLI `gh` dan akses ke [Claude Code di web](/id/claude-code-on-the-web#who-can-use-claude-code-on-the-web) |55| `/autofix-pr [prompt]` | Spawn sesi [Claude Code di web](/id/claude-code-on-the-web#auto-fix-pull-requests) yang memantau PR cabang saat ini dan mendorong perbaikan ketika CI gagal atau reviewer meninggalkan komentar. Mendeteksi PR terbuka dari cabang yang Anda checkout dengan `gh pr view`; untuk memantau PR yang berbeda, checkout cabangnya terlebih dahulu. Secara default sesi cloud diberitahu untuk memperbaiki setiap kegagalan CI dan komentar review; teruskan prompt untuk memberikan instruksi yang berbeda, misalnya `/autofix-pr only fix lint and type errors`. Memerlukan CLI `gh` dan akses ke [Claude Code di web](/id/claude-code-on-the-web) |

51| `/background [prompt]` | Lepaskan sesi saat ini untuk berjalan sebagai [background agent](/id/agent-view) dan bebaskan terminal ini. Teruskan prompt untuk mengirim satu instruksi lagi sebelum melepaskan. Pantau sesi dengan `claude agents`. Alias: `/bg` |56| `/background [prompt]` | Lepaskan sesi saat ini untuk berjalan sebagai [background agent](/id/agent-view) dan bebaskan terminal ini. Teruskan prompt untuk mengirim satu instruksi lagi sebelum melepaskan. Pantau sesi dengan `claude agents`. Alias: `/bg` |

52| `/batch <instruction>` | **[Skill](/id/skills#bundled-skills).** Orkestrasi perubahan skala besar di seluruh codebase secara paralel. Meneliti codebase, menguraikan pekerjaan menjadi 5 hingga 30 unit independen, dan menyajikan rencana. Setelah disetujui, spawn satu [background subagent](/id/sub-agents#run-subagents-in-foreground-or-background) per unit dalam [git worktree](/id/worktrees) yang terisolasi. Setiap subagent mengimplementasikan unitnya, menjalankan tes, dan membuka pull request. Memerlukan repositori git. Contoh: `/batch migrate src/ from Solid to React` |57| `/batch <instruction>` | **[Skill](/id/skills#bundled-skills).** Orkestrasi perubahan skala besar di seluruh codebase secara paralel. Meneliti codebase, menguraikan pekerjaan menjadi 5 hingga 30 unit independen, dan menyajikan rencana. Setelah disetujui, spawn satu [background subagent](/id/sub-agents#run-subagents-in-foreground-or-background) per unit dalam [git worktree](/id/worktrees) yang terisolasi. Setiap subagent mengimplementasikan unitnya, menjalankan tes, dan membuka pull request. Memerlukan repositori git. Contoh: `/batch migrate src/ from Solid to React` |

53| `/branch [name]` | Buat cabang dari percakapan saat ini pada titik ini. Beralih Anda ke cabang dan melestarikan yang asli, yang dapat Anda kembali dengan `/resume`. Alias: `/fork`. Ketika [`CLAUDE_CODE_FORK_SUBAGENT`](/id/env-vars) diatur, `/fork` malah spawn [forked subagent](/id/sub-agents#fork-the-current-conversation) dan tidak lagi menjadi alias untuk perintah ini |58| `/branch [name]` | Buat cabang dari percakapan saat ini pada titik ini, sehingga Anda dapat mencoba arah yang berbeda tanpa kehilangan percakapan seperti adanya. Beralih Anda ke cabang dan melestarikan yang asli, yang dapat Anda kembali dengan `/resume`. Untuk menyerahkan tugas sampingan ke subagent latar belakang alih-alih beralih ke salinan sendiri, gunakan `/fork` |

54| `/btw <question>` | Ajukan [pertanyaan sampingan](/id/interactive-mode#side-questions-with-%2Fbtw) dengan cepat tanpa menambahkan ke percakapan |59| `/btw <question>` | Ajukan [pertanyaan sampingan](/id/interactive-mode#side-questions-with-%2Fbtw) dengan cepat tanpa menambahkan ke percakapan |

60| `/cd <path>` | {/* min-version: 2.1.169 */}Pindahkan sesi ini ke direktori kerja baru. Cache prompt percakapan dipertahankan: [`CLAUDE.md`](/id/memory) direktori baru ditambahkan sebagai pesan alih-alih membangun ulang system prompt. Sesi dipindahkan ke penyimpanan proyek direktori baru, jadi `--resume` dan `--continue` menemukannya dari sana. Meminta Anda untuk mempercayai direktori jika Anda belum pernah bekerja di dalamnya sebelumnya. Untuk memberikan akses ke direktori tambahan tanpa memindahkan sesi, gunakan `/add-dir`. Batasi atau nonaktifkan target `/cd` dengan [aturan izin `Cd`](/id/permissions#cd). Memerlukan Claude Code v2.1.169 atau lebih baru; versi sebelumnya melaporkan `Unknown command: /cd` |

55| `/chrome` | Konfigurasi pengaturan [Claude in Chrome](/id/chrome) |61| `/chrome` | Konfigurasi pengaturan [Claude in Chrome](/id/chrome) |

56| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/id/skills#bundled-skills).** Muat materi referensi Claude API untuk bahasa proyek Anda (Python, TypeScript, Java, Go, Ruby, C#, PHP, atau cURL) dan referensi Managed Agents. Mencakup tool use, streaming, batches, structured outputs, dan pitfalls umum. Juga mengaktifkan secara otomatis ketika kode Anda mengimpor `anthropic` atau `@anthropic-ai/sdk`. Jalankan `/claude-api migrate` untuk meningkatkan kode Claude API yang ada ke model yang lebih baru: Claude menanyakan file mana yang akan dipindai dan model mana yang akan ditargetkan, kemudian memperbarui ID model, konfigurasi thinking, dan parameter lain yang berubah antar versi. Jalankan `/claude-api managed-agents-onboard` untuk panduan interaktif yang membuat Managed Agent baru dari awal |62| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/id/skills#bundled-skills).** Muat materi referensi Claude API untuk bahasa proyek Anda (Python, TypeScript, Java, Go, Ruby, C#, PHP, atau cURL) dan referensi Managed Agents. Mencakup tool use, streaming, batches, structured outputs, dan pitfalls umum. Juga mengaktifkan secara otomatis ketika kode Anda mengimpor `anthropic` atau `@anthropic-ai/sdk`. Jalankan `/claude-api migrate` untuk meningkatkan kode Claude API yang ada ke model yang lebih baru: Claude menanyakan file mana yang akan dipindai dan model mana yang akan ditargetkan, kemudian memperbarui ID model, konfigurasi thinking, dan parameter lain yang berubah antar versi. Jalankan `/claude-api managed-agents-onboard` untuk panduan interaktif yang membuat Managed Agent baru dari awal |

57| `/clear [name]` | Mulai percakapan baru dengan konteks kosong. Percakapan sebelumnya tetap tersedia di `/resume`. Teruskan nama untuk memberi label percakapan sebelumnya di pemilih `/resume`. Untuk membebaskan konteks sambil melanjutkan percakapan yang sama, gunakan `/compact` sebagai gantinya. Alias: `/reset`, `/new` |63| `/clear [name]` | Mulai percakapan baru dengan konteks kosong. Percakapan sebelumnya tetap tersedia di `/resume`. Teruskan nama untuk memberi label percakapan sebelumnya di pemilih `/resume`. Untuk membebaskan konteks sambil melanjutkan percakapan yang sama, gunakan `/compact` sebagai gantinya. Alias: `/reset`, `/new` |


74| `/feedback [report]` | Kirimkan umpan balik, laporkan bug, atau bagikan percakapan Anda. Alias: `/bug`, `/share` |80| `/feedback [report]` | Kirimkan umpan balik, laporkan bug, atau bagikan percakapan Anda. Alias: `/bug`, `/share` |

75| `/fewer-permission-prompts` | **[Skill](/id/skills#bundled-skills).** Pindai transkrip Anda untuk Bash dan MCP tool calls read-only umum, kemudian tambahkan allowlist prioritas ke project `.claude/settings.json` untuk mengurangi permission prompts |81| `/fewer-permission-prompts` | **[Skill](/id/skills#bundled-skills).** Pindai transkrip Anda untuk Bash dan MCP tool calls read-only umum, kemudian tambahkan allowlist prioritas ke project `.claude/settings.json` untuk mengurangi permission prompts |

76| `/focus` | Alihkan focus view, yang menampilkan hanya prompt terakhir Anda, ringkasan tool-call satu baris dengan edit diffstats, dan respons final. Pilihan bertahan di seluruh sesi; atur [`viewMode`](/id/settings#available-settings) dalam pengaturan untuk menggantinya. Hanya tersedia dalam [fullscreen rendering](/id/fullscreen) |82| `/focus` | Alihkan focus view, yang menampilkan hanya prompt terakhir Anda, ringkasan tool-call satu baris dengan edit diffstats, dan respons final. Pilihan bertahan di seluruh sesi; atur [`viewMode`](/id/settings#available-settings) dalam pengaturan untuk menggantinya. Hanya tersedia dalam [fullscreen rendering](/id/fullscreen) |

83| `/fork <directive>` | {/* min-version: 2.1.161 */}Spawn [forked subagent](/id/sub-agents#fork-the-current-conversation): sebuah subagent latar belakang yang mewarisi percakapan lengkap dan bekerja pada direktif sementara Anda terus melanjutkan. Hasilnya kembali ke percakapan Anda ketika selesai. Untuk beralih ke salinan percakapan sendiri, gunakan `/branch`. Sebelum v2.1.161, `/fork` adalah alias untuk `/branch` |

77| `/goal [condition\|clear]` | Atur [goal](/id/goal): Claude terus bekerja di seluruh turn sampai kondisi terpenuhi. Tanpa argumen, menampilkan goal saat ini atau yang paling baru dicapai. `clear`, `stop`, `off`, `reset`, `none`, atau `cancel` menghapus goal aktif lebih awal |84| `/goal [condition\|clear]` | Atur [goal](/id/goal): Claude terus bekerja di seluruh turn sampai kondisi terpenuhi. Tanpa argumen, menampilkan goal saat ini atau yang paling baru dicapai. `clear`, `stop`, `off`, `reset`, `none`, atau `cancel` menghapus goal aktif lebih awal |

78| `/heapdump` | Tulis JavaScript heap snapshot dan memory breakdown ke `~/Desktop`, atau direktori home Anda di Linux tanpa folder Desktop, untuk mendiagnosis penggunaan memori tinggi. Lihat [troubleshooting](/id/troubleshooting#high-cpu-or-memory-usage) |85| `/heapdump` | Tulis JavaScript heap snapshot dan memory breakdown ke `~/Desktop`, atau direktori home Anda di Linux tanpa folder Desktop, untuk mendiagnosis penggunaan memori tinggi. Lihat [troubleshooting](/id/troubleshooting#high-cpu-or-memory-usage) |

79| `/help` | Tampilkan bantuan dan perintah yang tersedia |86| `/help` | Tampilkan bantuan dan perintah yang tersedia |


83| `/insights` | Hasilkan laporan yang menganalisis sesi Claude Code Anda, termasuk area proyek, pola interaksi, dan titik gesekan |90| `/insights` | Hasilkan laporan yang menganalisis sesi Claude Code Anda, termasuk area proyek, pola interaksi, dan titik gesekan |

84| `/install-github-app` | Siapkan aplikasi [Claude GitHub Actions](/id/github-actions) untuk repositori. Memandu Anda melalui pemilihan repo dan konfigurasi integrasi |91| `/install-github-app` | Siapkan aplikasi [Claude GitHub Actions](/id/github-actions) untuk repositori. Memandu Anda melalui pemilihan repo dan konfigurasi integrasi |

85| `/install-slack-app` | Instal aplikasi Claude Slack. Membuka browser untuk menyelesaikan alur OAuth |92| `/install-slack-app` | Instal aplikasi Claude Slack. Membuka browser untuk menyelesaikan alur OAuth |

86| `/keybindings` | Buka atau buat file konfigurasi pintasan keyboard Anda |93| `/keybindings` | Buka file pintasan keyboard Anda |

87| `/login` | Masuk ke akun Anthropic Anda |94| `/login` | Masuk ke akun Anthropic Anda |

88| `/logout` | Keluar dari akun Anthropic Anda |95| `/logout` | Keluar dari akun Anthropic Anda |

89| `/loop [interval] [prompt]` | **[Skill](/id/skills#bundled-skills).** Jalankan prompt berulang kali sementara sesi tetap terbuka. Hilangkan interval dan Claude self-paces antara iterasi. Hilangkan prompt dan, [di mana tersedia](/id/scheduled-tasks#run-the-built-in-maintenance-prompt), Claude menjalankan autonomous maintenance check atau prompt di `.claude/loop.md`. Contoh: `/loop 5m check if the deploy finished`. Lihat [Run prompts on a schedule](/id/scheduled-tasks). Alias: `/proactive` |96| `/loop [interval] [prompt]` | **[Skill](/id/skills#bundled-skills).** Jalankan prompt berulang kali sementara sesi tetap terbuka. Hilangkan interval dan Claude self-paces antara iterasi. Hilangkan prompt dan, [di mana tersedia](/id/scheduled-tasks#run-the-built-in-maintenance-prompt), Claude menjalankan autonomous maintenance check atau prompt di `.claude/loop.md`. Contoh: `/loop 5m check if the deploy finished`. Lihat [Run prompts on a schedule](/id/scheduled-tasks). Alias: `/proactive` |

90| `/mcp` | Kelola koneksi server MCP dan autentikasi OAuth |97| `/mcp [reconnect <server>\|enable\|disable [<server>\|all]]` | Kelola koneksi server MCP dan autentikasi OAuth. Jalankan tanpa argumen untuk membuka daftar interaktif, teruskan `reconnect <server>` untuk menghubungkan kembali satu server yang terputus, atau teruskan `enable`/`disable` dengan nama server atau `all` untuk mengubah status koneksi tanpa membuka dialog |

91| `/memory` | Edit file memori `CLAUDE.md`, aktifkan atau nonaktifkan [auto-memory](/id/memory#auto-memory), dan lihat entri auto-memory |98| `/memory` | Edit file memori `CLAUDE.md`, aktifkan atau nonaktifkan [auto-memory](/id/memory#auto-memory), dan lihat entri auto-memory |

92| `/mobile` | Tampilkan kode QR untuk mengunduh aplikasi Claude mobile. Alias: `/ios`, `/android` |99| `/mobile` | Tampilkan kode QR untuk mengunduh aplikasi Claude mobile. Alias: `/ios`, `/android` |

93| `/model [model]` | Alihkan model AI dan simpan sebagai default Anda untuk sesi baru. Untuk model yang mendukungnya, gunakan panah kiri/kanan untuk [menyesuaikan effort level](/id/model-config#adjust-effort-level). Tanpa argumen, membuka pemilih; tekan `s` pada baris untuk beralih hanya untuk sesi saat ini. Pemilih meminta konfirmasi ketika percakapan memiliki output sebelumnya, karena respons berikutnya membaca ulang riwayat lengkap tanpa cached context. Setelah dikonfirmasi, perubahan berlaku tanpa menunggu respons saat ini selesai |100| `/model [model]` | Alihkan model AI dan simpan sebagai default Anda untuk sesi baru. Untuk model yang mendukungnya, gunakan panah kiri/kanan untuk [menyesuaikan effort level](/id/model-config#adjust-effort-level). Tanpa argumen, membuka pemilih; tekan `s` pada baris untuk beralih hanya untuk sesi saat ini. Pemilih meminta konfirmasi ketika percakapan memiliki output sebelumnya, karena respons berikutnya membaca ulang riwayat lengkap tanpa cached context. Setelah dikonfirmasi, perubahan berlaku tanpa menunggu respons saat ini selesai |

94| `/passes` | Bagikan minggu gratis Claude Code dengan teman. Hanya terlihat jika akun Anda memenuhi syarat |101| `/passes` | Bagikan minggu gratis Claude Code dengan teman. Hanya terlihat jika akun Anda memenuhi syarat |

95| `/permissions` | Kelola aturan allow, ask, dan deny untuk izin alat. Membuka dialog interaktif di mana Anda dapat melihat aturan berdasarkan scope, menambah atau menghapus aturan, mengelola direktori kerja, dan meninjau [recent auto mode denials](/id/auto-mode-config#review-denials). Alias: `/allowed-tools` |102| `/permissions` | Kelola aturan allow, ask, dan deny untuk izin alat. Membuka dialog interaktif di mana Anda dapat melihat aturan berdasarkan scope, menambah atau menghapus aturan, mengelola direktori kerja, dan meninjau [recent auto mode denials](/id/auto-mode-config#review-denials). Alias: `/allowed-tools` |

96| `/plan [description]` | Masuki plan mode langsung dari prompt. Teruskan deskripsi opsional untuk memasuki plan mode dan segera mulai dengan tugas tersebut, misalnya `/plan fix the auth bug` |103| `/plan [description]` | Masuki plan mode langsung dari prompt. Teruskan deskripsi opsional untuk memasuki plan mode dan segera mulai dengan tugas tersebut, misalnya `/plan fix the auth bug` |

97| `/plugin` | Kelola Claude Code [plugins](/id/plugins) |104| `/plugin [subcommand]` | Kelola Claude Code [plugins](/id/plugins). Jalankan tanpa argumen untuk membuka menu plugin, atau teruskan subcommand seperti `list`, `install`, `enable`, atau `disable` untuk bertindak langsung |

98| `/powerup` | Temukan fitur Claude Code melalui pelajaran interaktif cepat dengan demo animasi |105| `/powerup` | Temukan fitur Claude Code melalui pelajaran interaktif cepat dengan demo animasi |

99| `/pr-comments [PR]` | {/* max-version: 2.1.90 */}Dihapus di v2.1.91. Tanyakan Claude secara langsung untuk melihat komentar pull request sebagai gantinya. Pada versi sebelumnya, mengambil dan menampilkan komentar dari pull request GitHub; secara otomatis mendeteksi PR untuk cabang saat ini, atau teruskan URL atau nomor PR. Memerlukan CLI `gh` |106| `/pr-comments [PR]` | {/* max-version: 2.1.90 */}Dihapus di v2.1.91. Tanyakan Claude secara langsung untuk melihat komentar pull request sebagai gantinya. Pada versi sebelumnya, mengambil dan menampilkan komentar dari pull request GitHub; secara otomatis mendeteksi PR untuk cabang saat ini, atau teruskan URL atau nomor PR. Memerlukan CLI `gh` |

100| `/privacy-settings` | Lihat dan perbarui pengaturan privasi Anda. Hanya tersedia untuk pelanggan paket Pro dan Max |107| `/privacy-settings` | Lihat dan perbarui pengaturan privasi Anda. Hanya tersedia untuk pelanggan paket Pro dan Max |

101| `/radio` | Buka Claude FM lo-fi radio di browser Anda. Mencetak URL stream ketika tidak ada browser yang tersedia. Tidak tersedia di Bedrock, Vertex, atau Foundry |108| `/radio` | Buka Claude FM lo-fi radio di browser Anda. Mencetak URL stream ketika tidak ada browser yang tersedia. Tidak tersedia di Bedrock, Vertex, atau Foundry |

102| `/recap` | Hasilkan ringkasan satu baris dari sesi saat ini sesuai permintaan. Lihat [Session recap](/id/interactive-mode#session-recap) untuk recap otomatis yang muncul setelah Anda pergi |109| `/recap` | Hasilkan ringkasan satu baris dari sesi saat ini sesuai permintaan. Lihat [Session recap](/id/interactive-mode#session-recap) untuk recap otomatis yang muncul setelah Anda pergi |

103| `/release-notes` | Lihat changelog dalam pemilih versi interaktif. Pilih versi spesifik untuk melihat release notes-nya, atau pilih untuk menampilkan semua versi |110| `/release-notes` | Lihat changelog dalam pemilih versi interaktif. Pilih versi spesifik untuk melihat release notes-nya, atau pilih untuk menampilkan semua versi |

104| `/reload-plugins` | Muat ulang semua [plugins](/id/plugins) aktif untuk menerapkan perubahan yang tertunda tanpa memulai ulang. Melaporkan jumlah untuk setiap komponen yang dimuat ulang dan menandai kesalahan pemuatan apa pun |111| `/reload-plugins [--force]` | Muat ulang semua [plugins](/id/plugins) aktif untuk menerapkan perubahan yang tertunda tanpa memulai ulang. Melaporkan jumlah untuk setiap komponen yang dimuat ulang dan menandai kesalahan pemuatan apa pun. Ketika reload akan mengubah alat MCP mana yang dimuat dan membatalkan cache prompt, perintah memperingatkan dan melewati kecuali Anda teruskan `--force` |

105| `/reload-skills` | {/* min-version: 2.1.152 */}Pindai ulang direktori [skill](/id/skills) dan command sehingga skills yang ditambahkan atau diubah di disk selama sesi menjadi tersedia tanpa memulai ulang. Melaporkan berapa banyak skills yang tersedia dan berapa banyak yang ditambahkan atau dihapus |112| `/reload-skills` | {/* min-version: 2.1.152 */}Pindai ulang direktori [skill](/id/skills) dan command sehingga skills yang ditambahkan atau diubah di disk selama sesi menjadi tersedia tanpa memulai ulang. Melaporkan berapa banyak skills yang tersedia dan berapa banyak yang ditambahkan atau dihapus. Ditambahkan di v2.1.152 |

106| `/remote-control` | Buat sesi ini tersedia untuk [remote control](/id/remote-control) dari claude.ai. Alias: `/rc` |113| `/remote-control` | Buat sesi ini tersedia untuk [remote control](/id/remote-control) dari claude.ai. Alias: `/rc` |

107| `/remote-env` | Konfigurasi lingkungan jarak jauh default untuk [sesi web yang dimulai dengan `--remote`](/id/claude-code-on-the-web#configure-your-environment) |114| `/remote-env` | Pilih lingkungan default untuk [cloud agents](/id/claude-code-on-the-web#configure-your-environment) |

108| `/rename [name]` | Ubah nama sesi saat ini dan tampilkan nama di bilah prompt. Tanpa nama, secara otomatis menghasilkan satu dari riwayat percakapan |115| `/rename [name]` | Ubah nama sesi saat ini dan tampilkan nama di bilah prompt. Tanpa nama, secara otomatis menghasilkan satu dari riwayat percakapan |

109| `/resume [session]` | Lanjutkan percakapan berdasarkan ID atau nama, atau buka pemilih sesi. Sejak v2.1.144, [background sessions](/id/agent-view) muncul di pemilih yang ditandai dengan `bg`. Alias: `/continue` |116| `/resume [session]` | Lanjutkan percakapan berdasarkan ID atau nama, atau buka pemilih sesi. Sejak v2.1.144, [background sessions](/id/agent-view) muncul di pemilih yang ditandai dengan `bg`. Alias: `/continue` |

110| `/review [PR]` | Tinjau pull request secara lokal dalam sesi saat ini Anda. Untuk review berbasis cloud yang lebih dalam, lihat [`/code-review ultra`](/id/ultrareview) |117| `/review [PR]` | Tinjau pull request secara lokal dalam sesi saat ini Anda. Untuk review berbasis cloud yang lebih dalam, lihat [`/code-review ultra`](/id/ultrareview) |


124| `/statusline` | Konfigurasi [status line](/id/statusline) Claude Code. Jelaskan apa yang Anda inginkan, atau jalankan tanpa argumen untuk auto-configure dari prompt shell Anda |131| `/statusline` | Konfigurasi [status line](/id/statusline) Claude Code. Jelaskan apa yang Anda inginkan, atau jalankan tanpa argumen untuk auto-configure dari prompt shell Anda |

125| `/stickers` | Pesan stiker Claude Code |132| `/stickers` | Pesan stiker Claude Code |

126| `/stop` | Hentikan [background session](/id/agent-view) saat ini. Hanya tersedia saat terhubung ke background session; transkrip dan worktree apa pun disimpan. Untuk melepaskan tanpa menghentikan, gunakan `/exit` atau tekan `←` |133| `/stop` | Hentikan [background session](/id/agent-view) saat ini. Hanya tersedia saat terhubung ke background session; transkrip dan worktree apa pun disimpan. Untuk melepaskan tanpa menghentikan, gunakan `/exit` atau tekan `←` |

127| `/tasks` | Daftar dan kelola tugas latar belakang. Juga tersedia sebagai `/bashes` |134| `/tasks` | Lihat dan kelola semua yang berjalan di latar belakang. Juga tersedia sebagai `/bashes` |

128| `/team-onboarding` | Hasilkan panduan onboarding tim dari riwayat penggunaan Claude Code Anda. Claude menganalisis sesi, perintah, dan penggunaan server MCP Anda dari 30 hari terakhir dan menghasilkan panduan markdown yang dapat ditempel rekan kerja sebagai pesan pertama untuk setup dengan cepat. Untuk pelanggan claude.ai di paket Pro, Max, Team, dan Enterprise, juga mengembalikan link berbagi yang dapat dibuka rekan kerja langsung di Claude Code |135| `/team-onboarding` | Hasilkan panduan onboarding tim dari riwayat penggunaan Claude Code Anda. Claude menganalisis sesi, perintah, dan penggunaan server MCP Anda dari 30 hari terakhir dan menghasilkan panduan markdown yang dapat ditempel rekan kerja sebagai pesan pertama untuk setup dengan cepat. Untuk pelanggan claude.ai di paket Pro, Max, Team, dan Enterprise, juga mengembalikan link berbagi yang dapat dibuka rekan kerja langsung di Claude Code |

129| `/teleport` | Tarik sesi [Claude Code di web](/id/claude-code-on-the-web#from-web-to-terminal) ke terminal ini: membuka pemilih, kemudian mengambil cabang dan percakapan. Juga tersedia sebagai `/tp`. Memerlukan langganan claude.ai |136| `/teleport` | Tarik sesi [Claude Code di web](/id/claude-code-on-the-web#from-web-to-terminal) ke terminal ini: membuka pemilih, kemudian mengambil cabang dan percakapan. Juga tersedia sebagai `/tp`. Memerlukan langganan claude.ai |

130| `/terminal-setup` | Konfigurasi pintasan keyboard terminal untuk Shift+Enter dan pintasan lainnya. Hanya terlihat di terminal yang membutuhkannya, seperti VS Code, Cursor, Windsurf, Alacritty, atau Zed |137| `/terminal-setup` | Konfigurasi pintasan keyboard terminal untuk Shift+Enter dan pintasan lainnya. Hanya terlihat di terminal yang membutuhkannya, seperti VS Code, Cursor, Devin Desktop, Alacritty, atau Zed |

131| `/theme` | Ubah tema warna. Mencakup opsi `auto` yang mengikuti mode gelap atau terang terminal Anda, varian terang dan gelap, tema yang dapat diakses buta warna (daltonized), tema ANSI yang menggunakan palet warna terminal Anda, dan [custom themes](/id/terminal-config#create-a-custom-theme) apa pun dari `~/.claude/themes/` atau plugins. Pilih **New custom theme…** untuk membuat satu |138| `/theme` | Ubah tema warna. Mencakup opsi `auto` yang mengikuti mode gelap atau terang terminal Anda, varian terang dan gelap, tema yang dapat diakses buta warna (daltonized), tema ANSI yang menggunakan palet warna terminal Anda, dan [custom themes](/id/terminal-config#create-a-custom-theme) apa pun dari `~/.claude/themes/` atau plugins. Pilih **New custom theme…** untuk membuat satu |

132| `/tui [default\|fullscreen]` | Atur renderer UI terminal dan luncurkan ulang ke dalamnya dengan percakapan Anda tetap utuh. `fullscreen` mengaktifkan [flicker-free alt-screen renderer](/id/fullscreen). Tanpa argumen, mencetak renderer aktif |139| `/tui [default\|fullscreen]` | Atur renderer UI terminal dan luncurkan ulang ke dalamnya dengan percakapan Anda tetap utuh. `fullscreen` mengaktifkan [flicker-free alt-screen renderer](/id/fullscreen). Tanpa argumen, mencetak renderer aktif |

133| `/ultraplan <prompt>` | Buat draf rencana dalam sesi [ultraplan](/id/ultraplan), tinjau di browser Anda, kemudian jalankan secara jarak jauh atau kirim kembali ke terminal Anda |140| `/ultraplan <prompt>` | Buat draf rencana dalam sesi [ultraplan](/id/ultraplan), tinjau di browser Anda, kemudian jalankan secara jarak jauh atau kirim kembali ke terminal Anda |


141| `/web-setup` | Hubungkan akun GitHub Anda ke [Claude Code di web](/id/web-quickstart#connect-from-your-terminal) menggunakan kredensial CLI `gh` lokal Anda. `/schedule` meminta ini secara otomatis jika GitHub tidak terhubung |148| `/web-setup` | Hubungkan akun GitHub Anda ke [Claude Code di web](/id/web-quickstart#connect-from-your-terminal) menggunakan kredensial CLI `gh` lokal Anda. `/schedule` meminta ini secara otomatis jika GitHub tidak terhubung |

142| `/workflows` | Buka [workflow](/id/workflows#watch-the-run) progress view untuk menonton, menjeda, melanjutkan, atau menyimpan workflows yang sedang berjalan dan selesai |149| `/workflows` | Buka [workflow](/id/workflows#watch-the-run) progress view untuk menonton, menjeda, melanjutkan, atau menyimpan workflows yang sedang berjalan dan selesai |

143 150 

144## MCP prompts151<h2 id="mcp-prompts">

152 MCP prompts

153</h2>

145 154 

146Server MCP dapat mengekspos prompt yang muncul sebagai perintah. Ini menggunakan format `/mcp__<server>__<prompt>` dan secara dinamis ditemukan dari server yang terhubung. Lihat [MCP prompts](/id/mcp#use-mcp-prompts-as-commands) untuk detail.155Server MCP dapat mengekspos prompt yang muncul sebagai perintah. Ini menggunakan format `/mcp__<server>__<prompt>` dan secara dinamis ditemukan dari server yang terhubung. Lihat [MCP prompts](/id/mcp#use-mcp-prompts-as-commands) untuk detail.

147 156 

148## Lihat juga157<h2 id="see-also">

158 Lihat juga

159</h2>

149 160 

150* [Skills](/id/skills): buat perintah Anda sendiri161* [Skills](/id/skills): buat perintah Anda sendiri

151* [Interactive mode](/id/interactive-mode): pintasan keyboard, Vim mode, dan command history162* [Interactive mode](/id/interactive-mode): pintasan keyboard, Vim mode, dan command history

Details

228di tengah sesi. *Sonnet* adalah default workhorse untuk pekerjaan fitur sehari-hari,228di tengah sesi. *Sonnet* adalah default workhorse untuk pekerjaan fitur sehari-hari,

229bug, tes, dan review. Gunakan *Opus* untuk refactor besar, debugging rumit, atau apa pun229bug, tes, dan review. Gunakan *Opus* untuk refactor besar, debugging rumit, atau apa pun

230yang berisiko tinggi. Turun ke *Haiku* untuk pertanyaan cepat, pemformatan, dan edit mekanis230yang berisiko tinggi. Turun ke *Haiku* untuk pertanyaan cepat, pemformatan, dan edit mekanis

231di mana kecepatan menang.231di mana kecepatan menang. *Fable 5* adalah model paling mampu untuk tugas-tugas tersulit dan

232paling lama; itu bukan default, jadi pilih dengan `/model fable`, dan perhatikan bahwa konten

233cybersecurity dan biology kembali ke Opus secara otomatis.

232 234 

233*Coba sekarang:* ketik `/model` dan pilih Sonnet jika Anda belum melakukannya. Ini adalah235*Coba sekarang:* ketik `/model` dan pilih Sonnet jika Anda belum melakukannya. Ini adalah

234default yang tepat untuk sebagian besar tugas.236default yang tepat untuk sebagian besar tugas.

235 237 

236📖 Konfigurasi model → https://code.claude.com/docs/en/model-config238📖 Konfigurasi model → https://code.claude.com/docs/id/model-config

237```239```

238 240 

239| Model | Terbaik untuk |241| Model | Terbaik untuk |

240| ------ | --------------------------------------------------------------------------------------------------------- |242| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

243| Fable 5 | Tugas-tugas tersulit dan paling lama. Opt-in saja: pilih dengan `/model fable`. Konten cybersecurity atau biology [kembali ke Opus](/id/model-config#automatic-model-fallback) |

241| Opus | Refactor skala besar, debugging kompleks, keputusan arsitektur, perubahan berisiko tinggi |244| Opus | Refactor skala besar, debugging kompleks, keputusan arsitektur, perubahan berisiko tinggi |

242| Sonnet | Pekerjaan fitur sehari-hari, perbaikan bug, tes, dokumentasi, review kode. Default yang direkomendasikan. |245| Sonnet | Pekerjaan fitur sehari-hari, perbaikan bug, tes, dokumentasi, review kode. Default yang direkomendasikan. |

243| Haiku | Pertanyaan cepat, pemformatan, edit mekanis, iterasi cepat |246| Haiku | Pertanyaan cepat, pemformatan, edit mekanis, iterasi cepat |


259 262 

260*Coba sekarang:* pilih bug yang telah Anda hindari dan tempel pesan kesalahan.263*Coba sekarang:* pilih bug yang telah Anda hindari dan tempel pesan kesalahan.

261 264 

262📖 Quickstart → https://code.claude.com/docs/en/quickstart265📖 Quickstart → https://code.claude.com/docs/id/quickstart

263```266```

264 267 

265<h3 id="project-memory">268<h3 id="project-memory">


282*Coba sekarang:* buka repo utama Anda, jalankan `claude`, ketik `/init`. Tiga puluh285*Coba sekarang:* buka repo utama Anda, jalankan `claude`, ketik `/init`. Tiga puluh

283detik, membayar setiap sesi setelahnya.286detik, membayar setiap sesi setelahnya.

284 287 

285📖 CLAUDE.md dan memori proyek → https://code.claude.com/docs/en/memory288📖 CLAUDE.md dan memori proyek → https://code.claude.com/docs/id/memory

286```289```

287 290 

288**Referensi @**291**Referensi @**


301 304 

302*Coba sekarang:* ketik `@` kemudian Tab. Autocomplete menunjukkan Anda setiap file dalam jangkauan.305*Coba sekarang:* ketik `@` kemudian Tab. Autocomplete menunjukkan Anda setiap file dalam jangkauan.

303 306 

304📖 Mereferensikan file → https://code.claude.com/docs/en/common-workflows307📖 Mereferensikan file → https://code.claude.com/docs/id/common-workflows

305```308```

306 309 

307<h3 id="control-and-safety">310<h3 id="control-and-safety">


325*Coba sekarang:* pada refactor berikutnya, tekan Shift+Tab sampai Anda melihat "plan",328*Coba sekarang:* pada refactor berikutnya, tekan Shift+Tab sampai Anda melihat "plan",

326kemudian jelaskan perubahan. Anda akan mendapatkan proposal lengkap sebelum file tunggal bergerak.329kemudian jelaskan perubahan. Anda akan mendapatkan proposal lengkap sebelum file tunggal bergerak.

327 330 

328📖 Mode izin → https://code.claude.com/docs/en/permissions331📖 Mode izin → https://code.claude.com/docs/id/permissions

329```332```

330 333 

331**Checkpointing dan `/rewind`**334**Checkpointing dan `/rewind`**


342*Coba sekarang:* tekan *Esc* dua kali untuk membuka menu rewind, atau ketik `/rewind`.345*Coba sekarang:* tekan *Esc* dua kali untuk membuka menu rewind, atau ketik `/rewind`.

343Pilih titik sebelum hal-hal menjadi miring.346Pilih titik sebelum hal-hal menjadi miring.

344 347 

345📖 Checkpointing → https://code.claude.com/docs/en/checkpointing348📖 Checkpointing → https://code.claude.com/docs/id/checkpointing

346```349```

347 350 

348<h3 id="connect-your-tools">351<h3 id="connect-your-tools">


364*Coba sekarang:* tanya Claude "atur konektor MCP untuk [GitHub/Jira/Linear]367*Coba sekarang:* tanya Claude "atur konektor MCP untuk [GitHub/Jira/Linear]

365di repo ini". Itu akan menulis konfigurasi untuk Anda.368di repo ini". Itu akan menulis konfigurasi untuk Anda.

366 369 

367📖 Konektor MCP → https://code.claude.com/docs/en/mcp370📖 Konektor MCP → https://code.claude.com/docs/id/mcp

368```371```

369 372 

370<h3 id="automate-your-workflows">373<h3 id="automate-your-workflows">


386*Coba sekarang:* ketik "buat saya skill /standup yang merangkum apa yang saya kerjakan389*Coba sekarang:* ketik "buat saya skill /standup yang merangkum apa yang saya kerjakan

387hari ini dari git log", kemudian jalankan `/standup` besok pagi.390hari ini dari git log", kemudian jalankan `/standup` besok pagi.

388 391 

389📖 Skills → https://code.claude.com/docs/en/skills392📖 Skills → https://code.claude.com/docs/id/skills

390```393```

391 394 

392**Hooks**395**Hooks**


404*Coba sekarang:* tanya Claude "tambahkan Hook Stop yang mengirim notifikasi desktop407*Coba sekarang:* tanya Claude "tambahkan Hook Stop yang mengirim notifikasi desktop

405saat Anda selesai". Itu akan menulis skrip dan menghubungkannya.408saat Anda selesai". Itu akan menulis skrip dan menghubungkannya.

406 409 

407📖 Panduan hooks → https://code.claude.com/docs/en/hooks-guide410📖 Panduan hooks → https://code.claude.com/docs/id/hooks-guide

408```411```

409 412 

410<h3 id="day-to-day-development">413<h3 id="day-to-day-development">


426*Coba sekarang:* lain kali sesuatu yang visual rusak, tangkap layarnya dan tempel langsung429*Coba sekarang:* lain kali sesuatu yang visual rusak, tangkap layarnya dan tempel langsung

427ke prompt. Kemudian cukup ketik "apa yang salah di sini?"430ke prompt. Kemudian cukup ketik "apa yang salah di sini?"

428 431 

429📖 Bekerja dengan gambar → https://code.claude.com/docs/en/common-workflows432📖 Bekerja dengan gambar → https://code.claude.com/docs/id/common-workflows

430```433```

431 434 

432**Alur kerja Git**435**Alur kerja Git**


445*Coba sekarang:* setelah perbaikan berikutnya, alih-alih beralih ke klien git Anda,448*Coba sekarang:* setelah perbaikan berikutnya, alih-alih beralih ke klien git Anda,

446cukup ketik "commit ini dengan pesan yang baik dan buka PR".449cukup ketik "commit ini dengan pesan yang baik dan buka PR".

447 450 

448📖 Membuat pull request → https://code.claude.com/docs/en/common-workflows451📖 Membuat pull request → https://code.claude.com/docs/id/common-workflows

449```452```

450 453 

451<h3 id="share-and-scale">454<h3 id="share-and-scale">


467*Coba sekarang:* ketik `/plugin` dan gulir. Anda akan menemukan setidaknya satu470*Coba sekarang:* ketik `/plugin` dan gulir. Anda akan menemukan setidaknya satu

468hal yang tidak Anda tahu Anda inginkan.471hal yang tidak Anda tahu Anda inginkan.

469 472 

470📖 Plugins → https://code.claude.com/docs/en/plugins473📖 Plugins → https://code.claude.com/docs/id/plugins

471```474```

472 475 

473<h3 id="security-and-admin">476<h3 id="security-and-admin">


491*Coba sekarang:* simpan dua tautan ini untuk lain kali pertanyaan muncul.494*Coba sekarang:* simpan dua tautan ini untuk lain kali pertanyaan muncul.

492Mereka menjawab sebagian besar pertanyaan review keamanan.495Mereka menjawab sebagian besar pertanyaan review keamanan.

493 496 

494📖 https://code.claude.com/docs/en/security497📖 https://code.claude.com/docs/id/security

495📖 https://code.claude.com/docs/en/data-usage498📖 https://code.claude.com/docs/id/data-usage

496```499```

497 500 

498**Praktik terbaik**501**Praktik terbaik**


512*Coba sekarang:* jika Anda hanya melakukan satu atau dua dari ini, pilih yang Anda515*Coba sekarang:* jika Anda hanya melakukan satu atau dua dari ini, pilih yang Anda

513lewatkan dan lakukan pada tugas berikutnya. Posting apa yang berubah di #claude-code.516lewatkan dan lakukan pada tugas berikutnya. Posting apa yang berubah di #claude-code.

514 517 

515📖 Praktik terbaik → https://code.claude.com/docs/en/best-practices518📖 Praktik terbaik → https://code.claude.com/docs/id/best-practices

516```519```

517 520 

518<h2 id="quick-reference">521<h2 id="quick-reference">

computer-use.md +3 −3

Details

226Sesi Claude Code lain menahan kunci. Selesaikan tugas dalam sesi itu atau keluar darinya. Jika sesi lain mogok, kunci dilepaskan secara otomatis ketika Claude mendeteksi proses tidak lagi berjalan.226Sesi Claude Code lain menahan kunci. Selesaikan tugas dalam sesi itu atau keluar darinya. Jika sesi lain mogok, kunci dilepaskan secara otomatis ketika Claude mendeteksi proses tidak lagi berjalan.

227 227 

228<h3 id="macos-permissions-prompt-keeps-reappearing">228<h3 id="macos-permissions-prompt-keeps-reappearing">

229 Prompt izin macOS terus muncul kembali229 macOS permissions prompt keeps reappearing

230</h3>230</h3>

231 231 

232macOS kadang-kadang memerlukan restart dari proses yang meminta setelah Anda memberikan Screen Recording. Keluar dari Claude Code sepenuhnya dan mulai sesi baru. Jika prompt terus berlanjut, buka **System Settings > Privacy & Security > Screen Recording** dan konfirmasi aplikasi terminal Anda terdaftar dan diaktifkan.232macOS kadang-kadang memerlukan restart dari proses yang meminta setelah Anda memberikan Screen Recording. Keluar dari Claude Code sepenuhnya dan mulai sesi baru. Jika prompt terus berlanjut, buka **System Settings > Privacy & Security > Screen Recording** dan konfirmasi aplikasi terminal Anda terdaftar dan diaktifkan.

233 233 

234<h3 id="computer-use-doesn-t-appear-in-/mcp">234<h3 id="computer-use-doesnt-appear-in-/mcp">

235 `computer-use` tidak muncul di `/mcp`235 `computer-use` doesn't appear in `/mcp`

236</h3>236</h3>

237 237 

238Server hanya muncul pada setup yang memenuhi syarat. Periksa bahwa:238Server hanya muncul pada setup yang memenuhi syarat. Periksa bahwa:

context-window.md +1591 −5

Details

6 6 

7> Simulasi interaktif tentang bagaimana jendela konteks Claude Code terisi selama sesi. Lihat apa yang dimuat secara otomatis, berapa biaya setiap pembacaan file, dan kapan aturan dan hook dijalankan.7> Simulasi interaktif tentang bagaimana jendela konteks Claude Code terisi selama sesi. Lihat apa yang dimuat secara otomatis, berapa biaya setiap pembacaan file, dan kapan aturan dan hook dijalankan.

8 8 

9Jendela konteks Claude Code menyimpan semua yang Claude ketahui tentang sesi Anda: instruksi Anda, file yang dibacanya, respons miliknya sendiri, dan konten yang tidak pernah muncul di terminal Anda. Garis waktu di bawah ini menjelaskan apa yang dimuat dan kapan. Lihat [penjelasan tertulis](#what-the-timeline-shows) untuk konten yang sama dalam bentuk daftar.9export const ContextWindow = () => {

10 const MAX = 200000;

11 const STARTUP_END = 0.2;

12 {}

13 const EVENTS = useMemo(() => [{}, {

14 t: 0.015,

15 kind: 'auto',

16 label: 'System prompt',

17 tokens: 4200,

18 color: '#6B6964',

19 vis: 'hidden',

20 desc: 'Core instructions for behavior, tool use, and response formatting. Always loaded first. You never see it.',

21 link: null

22 }, {

23 t: 0.035,

24 kind: 'auto',

25 label: 'Auto memory (MEMORY.md)',

26 tokens: 680,

27 color: '#E8A45C',

28 vis: 'hidden',

29 desc: "Claude's notes to itself from previous sessions: build commands it learned, patterns it noticed, mistakes to avoid. The first 200 lines or 25KB, whichever comes first, are loaded into the conversation context.",

30 link: '/en/memory#auto-memory'

31 }, {

32 t: 0.06,

33 kind: 'auto',

34 label: 'Environment info',

35 tokens: 280,

36 color: '#6B6964',

37 vis: 'hidden',

38 desc: 'Working directory, platform, shell, OS version, and whether this is a git repo. Git branch, status, and recent commits load as a separate block at the very end of the system prompt.',

39 link: null

40 }, {

41 t: 0.08,

42 kind: 'auto',

43 label: 'MCP tools (deferred)',

44 tokens: 120,

45 color: '#9B7BC4',

46 vis: 'hidden',

47 desc: 'MCP tool names listed so Claude knows what is available. By default, full schemas stay deferred and Claude loads specific ones on demand via tool search when a task needs them. Set `ENABLE_TOOL_SEARCH=auto` to load schemas upfront when they fit within 10% of the context window, or `ENABLE_TOOL_SEARCH=false` to load everything.',

48 link: '/en/mcp#scale-with-mcp-tool-search'

49 }, {

50 t: 0.1,

51 kind: 'auto',

52 label: 'Skill descriptions',

53 tokens: 450,

54 color: '#D4A843',

55 vis: 'hidden',

56 noSurviveCompact: true,

57 desc: 'One-line descriptions of available skills so Claude knows what it can invoke. Full skill content loads only when Claude actually uses one. Skills with `disable-model-invocation: true` are not in this list. They stay completely out of context until you invoke them with `/name`. Unlike the rest of the startup content, this listing is not re-injected after `/compact`. Only skills you actually invoked get preserved.',

58 link: '/en/skills'

59 }, {

60 t: 0.12,

61 kind: 'auto',

62 label: '~/.claude/CLAUDE.md',

63 tokens: 320,

64 color: '#6A9BCC',

65 vis: 'hidden',

66 desc: 'Your global preferences. Applies to every project. Loaded alongside project instructions at the start of every conversation.',

67 link: '/en/memory#choose-where-to-put-claude-md-files'

68 }, {

69 t: 0.14,

70 kind: 'auto',

71 label: 'Project CLAUDE.md',

72 tokens: 1800,

73 color: '#6A9BCC',

74 vis: 'hidden',

75 desc: 'Project conventions, build commands, architecture notes. The most important file you can create. Lives in your project root, so your whole team gets the same instructions.',

76 tip: 'Keep it under 200 lines. Move reference content to skills or path-scoped rules so it only loads when needed.',

77 link: '/en/memory'

78 }, {}, {

79 t: 0.22,

80 kind: 'user',

81 label: 'Your prompt',

82 tokens: 45,

83 color: '#558A42',

84 vis: 'full',

85 desc: '"Fix the auth bug where users get 401 after token refresh"',

86 link: null

87 }, {}, {

88 t: 0.28,

89 kind: 'claude',

90 label: 'Read src/api/auth.ts',

91 tokens: 2400,

92 color: '#8A8880',

93 vis: 'brief',

94 desc: 'Main auth file. You see "Read auth.ts" in your terminal, but the 2,400 tokens of file content only Claude sees.',

95 tip: 'File reads dominate context usage. Be specific in prompts ("fix the bug in auth.ts") so Claude reads fewer files. For research-heavy tasks, use a subagent.',

96 link: null

97 }, {

98 t: 0.32,

99 kind: 'claude',

100 label: 'Read src/lib/tokens.ts',

101 tokens: 1100,

102 color: '#8A8880',

103 vis: 'brief',

104 desc: 'Following imports to the token module. Shown as a one-liner in your terminal.',

105 link: null

106 }, {

107 t: 0.35,

108 kind: 'auto',

109 label: 'Rule: api-conventions.md',

110 tokens: 380,

111 color: '#4A9B8E',

112 vis: 'brief',

113 desc: 'This rule in `.claude/rules/` has a `paths:` pattern matching `src/api/**`. It loaded automatically when Claude read a file in that directory. You see "Loaded .claude/rules/api-conventions.md" in your terminal, but not the rule content.',

114 link: '/en/memory#path-specific-rules'

115 }, {

116 t: 0.38,

117 kind: 'claude',

118 label: 'Read middleware.ts',

119 tokens: 1800,

120 color: '#8A8880',

121 vis: 'brief',

122 desc: 'Tracing the auth flow deeper.',

123 link: null

124 }, {

125 t: 0.41,

126 kind: 'claude',

127 label: 'Read auth.test.ts',

128 tokens: 1600,

129 color: '#8A8880',

130 vis: 'brief',

131 desc: 'Checking existing tests for expected behavior.',

132 link: null

133 }, {

134 t: 0.44,

135 kind: 'auto',

136 label: 'Rule: testing.md',

137 tokens: 290,

138 color: '#4A9B8E',

139 vis: 'brief',

140 desc: 'Another path-scoped rule, this one matching `*.test.ts` files. Triggered when Claude read auth.test.ts. Shown as a one-line "Loaded" notice.',

141 link: '/en/memory#path-specific-rules'

142 }, {

143 t: 0.47,

144 kind: 'claude',

145 label: 'grep "refreshToken"',

146 tokens: 600,

147 color: '#A09E96',

148 vis: 'brief',

149 desc: 'Search results across the codebase. You see the command ran, not the full output.',

150 link: null

151 }, {}, {

152 t: 0.53,

153 kind: 'claude',

154 label: "Claude's analysis",

155 tokens: 800,

156 color: '#D97757',

157 vis: 'full',

158 desc: 'Explains the bug: token invalidated too early in the rotation. This text appears in your terminal.',

159 link: null

160 }, {

161 t: 0.57,

162 kind: 'claude',

163 label: 'Edit auth.ts',

164 tokens: 400,

165 color: '#D97757',

166 vis: 'full',

167 desc: 'Fixes the token rotation order. The diff appears in your terminal.',

168 link: null

169 }, {

170 t: 0.59,

171 kind: 'hook',

172 label: 'Hook: prettier',

173 tokens: 120,

174 color: '#B8860B',

175 vis: 'hidden',

176 desc: 'A PostToolUse hook in `settings.json` runs prettier after every file edit and reports back via `hookSpecificOutput.additionalContext`. That field enters Claude\'s context. Plain stdout on exit 0 does not. It is written to the debug log only.',

177 tip: 'Output JSON with `additionalContext` to send info to Claude. For PostToolUse hooks, exit code 2 surfaces stderr as an error but cannot block since the tool already ran. Keep output concise since it enters context without truncation.',

178 link: '/en/hooks-guide'

179 }, {

180 t: 0.62,

181 kind: 'claude',

182 label: 'Edit auth.test.ts',

183 tokens: 600,

184 color: '#D97757',

185 vis: 'full',

186 desc: 'Adds a regression test for the fix. The diff appears in your terminal.',

187 link: null

188 }, {

189 t: 0.64,

190 kind: 'hook',

191 label: 'Hook: prettier',

192 tokens: 100,

193 color: '#B8860B',

194 vis: 'hidden',

195 desc: 'The same hook fires again for the test file. Every matching tool event triggers it.',

196 link: '/en/hooks-guide'

197 }, {

198 t: 0.67,

199 kind: 'claude',

200 label: 'npm test output',

201 tokens: 1200,

202 color: '#A09E96',

203 vis: 'brief',

204 desc: 'Runs the test suite. You see "Running npm test..." and the pass count, not the full 1,200 tokens of output.',

205 link: null

206 }, {

207 t: 0.70,

208 kind: 'claude',

209 label: 'Summary',

210 tokens: 400,

211 color: '#D97757',

212 vis: 'full',

213 desc: '"Fixed token rotation. Added regression test. All tests pass."',

214 link: null

215 }, {}, {

216 t: 0.72,

217 kind: 'user',

218 label: 'Your follow-up',

219 tokens: 40,

220 color: '#558A42',

221 vis: 'full',

222 desc: '"Use a subagent to research session timeout handling, then fix it"',

223 tip: 'Follow-ups add to the same context. Delegating research to a subagent keeps large file reads out of your main window.',

224 link: null

225 }, {

226 t: 0.79,

227 kind: 'claude',

228 label: 'Spawn research subagent',

229 tokens: 80,

230 color: '#D97757',

231 vis: 'brief',

232 desc: "Claude delegates the research to a subagent with a fresh, separate context window. It loads CLAUDE.md and the same MCP and skill setup, but starts without your conversation history or the main session's auto memory.",

233 link: '/en/sub-agents'

234 }, {

235 t: 0.795,

236 kind: 'sub',

237 label: 'System prompt',

238 tokens: 0,

239 subTokens: 900,

240 color: '#6B6964',

241 vis: 'hidden',

242 desc: "The subagent gets its own system prompt, shorter than the main session's. For the general-purpose agent, it's a brief prompt plus environment details. The main session's auto memory is not included. If a custom agent has memory: in its frontmatter, it loads its own separate MEMORY.md here instead.",

243 link: '/en/sub-agents#enable-persistent-memory'

244 }, {

245 t: 0.80,

246 kind: 'sub',

247 label: 'Project CLAUDE.md (own copy)',

248 tokens: 0,

249 subTokens: 1800,

250 color: '#6A9BCC',

251 vis: 'hidden',

252 desc: "The subagent loads CLAUDE.md too. Same file, same content, but it counts against the subagent's context, not yours. The built-in Explore and Plan agents skip this for a smaller context.",

253 link: '/en/sub-agents'

254 }, {

255 t: 0.805,

256 kind: 'sub',

257 label: 'MCP tools + skills',

258 tokens: 0,

259 subTokens: 970,

260 color: '#9B7BC4',

261 vis: 'hidden',

262 desc: "The subagent has access to the same MCP servers and skills. It gets most of the parent's tools, minus several that don't apply in a nested context, including plan-mode controls, background-task tools, and by default the Agent tool itself to prevent recursion.",

263 link: '/en/sub-agents'

264 }, {

265 t: 0.81,

266 kind: 'sub',

267 label: 'Task prompt from main',

268 tokens: 0,

269 subTokens: 120,

270 color: '#558A42',

271 vis: 'hidden',

272 desc: "Instead of a user prompt, the subagent receives the task Claude wrote for it: 'Research session timeout handling in this codebase.'",

273 link: '/en/sub-agents'

274 }, {

275 t: 0.82,

276 kind: 'sub',

277 label: 'Read session.ts',

278 tokens: 0,

279 subTokens: 2200,

280 color: '#8A8880',

281 vis: 'hidden',

282 desc: "Now the subagent does its work. This file read fills the subagent's context, not yours.",

283 link: '/en/sub-agents'

284 }, {

285 t: 0.825,

286 kind: 'sub',

287 label: 'Read timeouts.ts',

288 tokens: 0,

289 subTokens: 800,

290 color: '#8A8880',

291 vis: 'hidden',

292 desc: "Another file read in the subagent's separate context.",

293 link: '/en/sub-agents'

294 }, {

295 t: 0.83,

296 kind: 'sub',

297 label: 'Read config/*.ts',

298 tokens: 0,

299 subTokens: 3100,

300 color: '#8A8880',

301 vis: 'hidden',

302 desc: "The subagent can read as many files as it needs. None of this touches your main context.",

303 link: '/en/sub-agents'

304 }, {

305 t: 0.85,

306 kind: 'claude',

307 label: 'Subagent returns summary',

308 tokens: 420,

309 color: '#D97757',

310 vis: 'brief',

311 desc: "Only the subagent's final text response comes back to your context, plus a small metadata trailer with token counts and duration. The subagent read 6,100 tokens of files. You got a 420-token result. That's the context savings.",

312 link: '/en/sub-agents'

313 }, {

314 t: 0.86,

315 kind: 'claude',

316 label: "Claude's response",

317 tokens: 1200,

318 color: '#D97757',

319 vis: 'full',

320 desc: 'Analysis and fix for session timeouts. This text appears in your terminal.',

321 link: null

322 }, {}, {

323 t: 0.875,

324 kind: 'user',

325 label: '!git status',

326 tokens: 180,

327 color: '#558A42',

328 vis: 'full',

329 desc: "You ran a shell command with the ! prefix to see which files Claude modified. The command and its output both enter context as part of your message. Useful for grounding Claude in command output without Claude running it.",

330 link: '/en/interactive-mode#bash-mode-with-prefix'

331 }, {

332 t: 0.89,

333 kind: 'user',

334 label: '/commit-push',

335 tokens: 620,

336 color: '#558A42',

337 vis: 'brief',

338 desc: 'You invoked a skill that has `disable-model-invocation: true`. Its description was not in the skill index at startup, so it cost zero context until this moment. Now the full skill content loads and Claude follows its instructions to stage, commit, and push your changes.',

339 tip: 'Set `disable-model-invocation: true` on skills with side effects like committing, deploying, or sending messages. They stay out of context entirely until you need them.',

340 link: '/en/skills#control-who-invokes-a-skill'

341 }, {}, {

342 t: 0.93,

343 kind: 'compact',

344 label: '/compact',

345 tokens: 0,

346 color: '#D97757',

347 vis: 'brief',

348 desc: 'Replaces the conversation with a structured summary. You see a "Conversation compacted" message. The summarization happens without appearing in your terminal.',

349 link: '/en/how-claude-code-works#the-context-window'

350 }].filter(e => e.t !== undefined), []);

351 const VIS_META = {

352 hidden: {

353 label: 'Invisible in your terminal',

354 sub: 'This content does not appear in your terminal.'

355 },

356 brief: {

357 label: 'One-liner in your terminal',

358 sub: 'You see a brief mention, not the full content.'

359 },

360 full: {

361 label: 'Shown in your terminal',

362 sub: 'The actual content appears in your terminal.'

363 }

364 };

365 {}

366 const GATES = [{

367 at: 0.18,

368 kind: 'prompt',

369 text: 'Fix the auth bug where users get 401 after token refresh',

370 resumeTo: 0.22

371 }, {

372 at: 0.705,

373 kind: 'prompt',

374 text: 'Use a subagent to research session timeout handling, then fix it',

375 resumeTo: 0.72

376 }, {

377 at: 0.865,

378 kind: 'bang',

379 text: '!git status',

380 resumeTo: 0.875

381 }, {

382 at: 0.88,

383 kind: 'slash',

384 text: '/commit-push',

385 resumeTo: 0.89

386 }, {

387 at: 0.90,

388 kind: 'compact',

389 text: '/compact',

390 resumeTo: 1

391 }];

392 const KIND_META = {

393 auto: {

394 badge: 'auto',

395 detail: 'Auto-loaded',

396 badgeBg: 'rgba(94,93,89,0.15)',

397 badgeColor: '#8A8880'

398 },

399 user: {

400 badge: 'you',

401 detail: 'You typed this',

402 badgeBg: 'rgba(85,138,66,0.15)',

403 badgeColor: '#6BA656'

404 },

405 claude: {

406 badge: 'claude',

407 detail: "Claude's work",

408 badgeBg: 'rgba(217,119,87,0.12)',

409 badgeColor: '#D97757'

410 },

411 hook: {

412 badge: 'hook',

413 detail: 'Hook (automatic)',

414 badgeBg: 'rgba(184,134,11,0.15)',

415 badgeColor: '#CCA020'

416 },

417 compact: {

418 badge: 'compact',

419 detail: 'Compaction',

420 badgeBg: 'rgba(217,119,87,0.12)',

421 badgeColor: '#D97757'

422 },

423 sub: {

424 badge: 'subagent',

425 detail: "In subagent's context",

426 badgeBg: 'rgba(155,123,196,0.12)',

427 badgeColor: '#9B7BC4'

428 }

429 };

430 const LEGEND = [{

431 c: '#6B6964',

432 l: 'System'

433 }, {

434 c: '#6A9BCC',

435 l: 'CLAUDE.md'

436 }, {

437 c: '#E8A45C',

438 l: 'Memory'

439 }, {

440 c: '#D4A843',

441 l: 'Skills'

442 }, {

443 c: '#9B7BC4',

444 l: 'MCP'

445 }, {

446 c: '#4A9B8E',

447 l: 'Rules'

448 }, {

449 c: '#558A42',

450 l: 'You'

451 }, {

452 c: '#8A8880',

453 l: 'Files'

454 }, {

455 c: '#A09E96',

456 l: 'Output'

457 }, {

458 c: '#D97757',

459 l: 'Claude'

460 }, {

461 c: '#B8860B',

462 l: 'Hooks'

463 }];

464 const fmt = n => n >= 1000 ? (n / 1000).toFixed(1).replace(/\.0$/, '') + 'K' : n + '';

465 const [time, setTime] = useState(0);

466 const [playing, setPlaying] = useState(false);

467 const [hovIdx, setHovIdx] = useState(null);

468 const [selIdx, setSelIdx] = useState(null);

469 const [hovCat, setHovCat] = useState(null);

470 const [gatesPassed, setGatesPassed] = useState(0);

471 const [mounted, setMounted] = useState(false);

472 const [hasInteracted, setHasInteracted] = useState(false);

473 const lastRef = useRef(null);

474 const scrollRef = useRef(null);

475 const detailRef = useRef(null);

476 useEffect(() => setMounted(true), []);

477 const activeGate = GATES.find((g, i) => i >= gatesPassed && time >= g.at && time < g.resumeTo);

478 useEffect(() => {

479 if (!playing) return;

480 let raf;

481 let stopped = false;

482 const tick = ts => {

483 if (stopped) return;

484 if (!lastRef.current) lastRef.current = ts;

485 const dt = (ts - lastRef.current) / 1000;

486 lastRef.current = ts;

487 setTime(prev => {

488 const next = prev + dt * 0.032;

489 const gate = GATES.find((g, i) => i >= gatesPassed && next >= g.at && prev < g.resumeTo);

490 if (gate) {

491 stopped = true;

492 setPlaying(false);

493 return gate.at;

494 }

495 if (next >= 1) {

496 stopped = true;

497 setPlaying(false);

498 return 1;

499 }

500 return next;

501 });

502 if (!stopped) raf = requestAnimationFrame(tick);

503 };

504 raf = requestAnimationFrame(tick);

505 return () => {

506 stopped = true;

507 cancelAnimationFrame(raf);

508 lastRef.current = null;

509 };

510 }, [playing, gatesPassed]);

511 const sendPrompt = () => {

512 if (!activeGate) return;

513 const isCompact = activeGate.kind === 'compact';

514 setGatesPassed(n => n + 1);

515 setTime(activeGate.resumeTo);

516 setSelIdx(null);

517 setHovIdx(null);

518 if (!isCompact) setPlaying(true);

519 };

520 const visibleCount = EVENTS.filter(e => e.t <= time).length;

521 const preCompactVisible = useMemo(() => EVENTS.slice(0, visibleCount), [EVENTS, visibleCount]);

522 const compactGateIdx = GATES.length - 1;

523 const isCompacted = gatesPassed > compactGateIdx && preCompactVisible.some(e => e.kind === 'compact');

524 const {visible, preCompactTotal} = useMemo(() => {

525 const nonCompact = preCompactVisible.filter(e => e.kind !== 'compact');

526 if (!isCompacted) {

527 return {

528 visible: preCompactVisible,

529 preCompactTotal: 0

530 };

531 }

532 {}

533 const autoLoads = nonCompact.filter(e => e.kind === 'auto' && e.t < STARTUP_END && !e.noSurviveCompact);

534 const summarized = nonCompact.filter(e => e.t >= STARTUP_END && e.kind !== 'sub');

535 const sumTokens = summarized.reduce((s, e) => s + e.tokens, 0);

536 const summaryBlock = {

537 t: STARTUP_END,

538 kind: 'compact',

539 label: 'Conversation summary',

540 tokens: Math.round(sumTokens * 0.12),

541 color: '#A09E96',

542 vis: 'hidden',

543 desc: `All ${summarized.length} conversation events condensed into one structured summary. The summary keeps: your requests and intent, key technical concepts, files examined or modified with important code snippets, errors and how they were fixed, pending tasks, and current work. It replaces the verbatim conversation: full tool outputs and intermediate reasoning are gone. Claude can still reference the work but won't have the exact code it read earlier.`,

544 link: '/en/how-claude-code-works#the-context-window'

545 };

546 return {

547 visible: [...autoLoads, summaryBlock],

548 preCompactTotal: nonCompact.reduce((s, e) => s + e.tokens, 0)

549 };

550 }, [preCompactVisible, isCompacted]);

551 const {blocks, totalTokens} = useMemo(() => {

552 const bl = visible.map((e, visIdx) => ({

553 ...e,

554 id: e.label + e.t,

555 visIdx

556 })).filter(e => e.tokens > 0 || e.label === 'Conversation summary');

557 return {

558 blocks: bl,

559 totalTokens: bl.reduce((s, b) => s + b.tokens, 0)

560 };

561 }, [visible]);

562 const subTotal = useMemo(() => visible.filter(e => e.kind === 'sub').reduce((s, e) => s + (e.subTokens || 0), 0), [visible]);

563 useEffect(() => {

564 if (!scrollRef.current) return;

565 if (isCompacted) scrollRef.current.scrollTo({

566 top: 0,

567 behavior: 'smooth'

568 }); else if (playing || activeGate) scrollRef.current.scrollTop = scrollRef.current.scrollHeight;

569 }, [visible.length, !!activeGate, isCompacted]);

570 const rootRef = useRef(null);

571 const keyStateRef = useRef({});

572 const [isFullscreen, setIsFullscreen] = useState(false);

573 keyStateRef.current = {

574 time,

575 activeGate,

576 sendPrompt,

577 hasInteracted

578 };

579 useEffect(() => {

580 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

581 document.addEventListener('fullscreenchange', onFsChange);

582 return () => document.removeEventListener('fullscreenchange', onFsChange);

583 }, []);

584 const toggleFullscreen = () => {

585 if (!rootRef.current) return;

586 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

587 };

588 useEffect(() => {

589 const onKey = e => {

590 const tag = e.target.tagName;

591 if (tag === 'INPUT' || tag === 'BUTTON' || tag === 'TEXTAREA' || tag === 'SELECT' || e.target.isContentEditable) return;

592 if (!rootRef.current) return;

593 const rect = rootRef.current.getBoundingClientRect();

594 if (rect.width === 0 && rect.height === 0) return;

595 if (rect.bottom < 0 || rect.top > window.innerHeight) return;

596 if (e.code === 'Space') {

597 const {time: t, activeGate: g, sendPrompt: send, hasInteracted: hi} = keyStateRef.current;

598 if (!hi) return;

599 e.preventDefault();

600 if (t === 0) setPlaying(true); else if (g) send(); else if (t >= 1) {

601 setTime(0);

602 setGatesPassed(0);

603 setSelIdx(null);

604 setHovIdx(null);

605 setPlaying(true);

606 } else setPlaying(p => !p);

607 }

608 };

609 window.addEventListener('keydown', onKey);

610 return () => window.removeEventListener('keydown', onKey);

611 }, []);

612 const pct = totalTokens / MAX * 100;

613 const barColor = pct > 75 ? '#D97757' : pct > 50 ? '#B8860B' : '#558A42';

614 const activeIdx = selIdx !== null ? selIdx : hovIdx;

615 const hovEvent = activeIdx !== null ? visible[activeIdx] : null;

616 useEffect(() => {

617 if (detailRef.current) detailRef.current.scrollTop = 0;

618 }, [hovEvent]);

619 const focusT = hovEvent ? hovEvent.t : time;

620 const takeaway = isCompacted ? 'Compaction replaces the conversation with a structured summary. System prompt, CLAUDE.md, memory, and MCP tools reload automatically. The skill listing is the one exception. Only skills you actually invoked are preserved.' : focusT < STARTUP_END ? 'A lot loads before you type anything. CLAUDE.md, memory, skills, and MCP tools are all in context before your first prompt.' : focusT < 0.28 ? "Your prompt is tiny compared to what's already loaded. Most of Claude's context is project knowledge, not your words." : focusT < 0.50 ? 'Each file Claude reads grows the context. Path-scoped rules load automatically alongside matching files.' : focusT < 0.71 ? 'Hooks fire automatically on tool events. Output reaches Claude via additionalContext JSON. Exit code 2 surfaces stderr to Claude. Plain stdout on exit 0 goes to the debug log, not the transcript.' : focusT < 0.79 ? 'Follow-up questions keep building on the same context. Everything from earlier is still there.' : focusT < 0.87 ? "The subagent works in its own separate context window. None of its file reads touch yours. Only the final summary comes back." : focusT < 0.88 ? 'Bang commands run in your shell and prefix the output to your next message. Useful for grounding Claude in command results without it running them.' : focusT < 0.90 ? 'User-only skills stay out of context entirely until you invoke them. The skill index at startup only lists skills Claude can call on its own.' : '/compact summarizes the conversation to free space while keeping key information. In a real session, run it when context starts affecting performance or before a long new task.';

621 const terminalView = isCompacted ? 'A "Conversation compacted" message. The summarization happens silently.' : focusT < STARTUP_END ? 'The input box, waiting for your first message. Everything above loads silently before you type anything.' : focusT < 0.28 ? 'Your prompt. Claude hasn\'t started working yet.' : focusT < 0.52 ? 'Your prompt and "Reading files...". Rules show as one-line "Loaded" notices, not their content.' : focusT < 0.72 ? "Claude's response and file diffs. Hooks fire silently. Tool output like npm test shows as a brief summary, not the full content." : focusT < 0.79 ? 'Your follow-up prompt.' : focusT < 0.86 ? "A brief notice that a subagent is working, then its result. You don't see the subagent's individual file reads." : focusT < 0.90 ? "Claude's response, your git status output, and the commit-push skill running." : 'Your full conversation. /compact is available to run.';

622 const mono = 'var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace)';

623 const renderWithCode = s => s.split('`').map((part, i) => i % 2 === 1 ? <code key={i} style={{

624 fontFamily: mono,

625 fontSize: '0.92em',

626 background: 'var(--cw-track)',

627 padding: '1px 4px',

628 borderRadius: 3

629 }}>{part}</code> : part);

630 if (!mounted) return null;

631 return <>

632 <div className="cw-mobile-fallback">

633 This interactive timeline works best on a larger screen. See <a href="#what-the-timeline-shows" style={{

634 color: '#D97757'

635 }}>the written breakdown below</a> for the same concepts.

636 </div>

637 <div className="cw-root" ref={rootRef} onClickCapture={() => setHasInteracted(true)} style={isFullscreen ? {

638 height: '100vh',

639 borderRadius: 0,

640 display: 'flex',

641 flexDirection: 'column'

642 } : {}}>

643 <style>{`

644 .cw-root {

645 --cw-bg: #FAFAF8;

646 --cw-text: #1A1918;

647 --cw-text-2: #3D3C38;

648 --cw-text-3: #5E5D59;

649 --cw-text-dim: #6E6C64;

650 --cw-text-faint: #8A8880;

651 --cw-surface: rgba(0,0,0,0.025);

652 --cw-surface-2: rgba(0,0,0,0.04);

653 --cw-border: rgba(0,0,0,0.08);

654 --cw-track: rgba(0,0,0,0.04);

655 --cw-hover: rgba(0,0,0,0.04);

656 --cw-rail: rgba(0,0,0,0.08);

657 --cw-scrollbar: rgba(0,0,0,0.22);

658 background: var(--cw-bg);

659 border-radius: 12px;

660 overflow: hidden;

661 font-family: var(--font-sans, -apple-system, BlinkMacSystemFont, sans-serif);

662 color: var(--cw-text);

663 border: 1px solid var(--cw-border);

664 }

665 .dark .cw-root {

666 --cw-bg: #111110;

667 --cw-text: #E8E6DC;

668 --cw-text-2: #B8B6AE;

669 --cw-text-3: #9C9A92;

670 --cw-text-dim: #8A8880;

671 --cw-text-faint: #6E6C64;

672 --cw-surface: rgba(255,255,255,0.02);

673 --cw-surface-2: rgba(255,255,255,0.015);

674 --cw-border: rgba(255,255,255,0.06);

675 --cw-track: rgba(255,255,255,0.03);

676 --cw-hover: rgba(255,255,255,0.04);

677 --cw-rail: rgba(255,255,255,0.04);

678 --cw-scrollbar: rgba(255,255,255,0.18);

679 }

680 .cw-scroll::-webkit-scrollbar { width: 6px; }

681 .cw-scroll::-webkit-scrollbar-track { background: transparent; }

682 .cw-scroll::-webkit-scrollbar-thumb { background: var(--cw-scrollbar); border-radius: 3px; }

683 @keyframes cw-blink { 50% { opacity: 0; } }

684 @keyframes cw-fadein { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }

685 .cw-compacted-row { animation: cw-fadein 0.3s ease-out backwards; }

686 .cw-mobile-fallback { display: none; padding: 14px 16px; border-radius: 8px; font-size: 14px; border: 1px solid rgba(0,0,0,0.1); background: rgba(0,0,0,0.03); }

687 .dark .cw-mobile-fallback { border-color: rgba(255,255,255,0.15); background: rgba(255,255,255,0.04); }

688 @media (max-width: 700px) {

689 .cw-root { display: none !important; }

690 .cw-mobile-fallback { display: block; }

691 }

692 `}</style>

10 693 

11## Apa yang ditunjukkan garis waktu694 {}

695 <div style={{

696 padding: '16px 20px 12px',

697 display: 'flex',

698 alignItems: 'flex-end',

699 gap: 24

700 }}>

701 <div style={{

702 flex: 1,

703 minWidth: 0

704 }}>

705 <div style={{

706 fontSize: 18,

707 fontWeight: 600,

708 letterSpacing: -0.3,

709 lineHeight: 1

710 }}>

711 Explore the context window

712 </div>

713 <div style={{

714 fontSize: 14,

715 color: 'var(--cw-text-dim)',

716 marginTop: 4

717 }}>

718 A simulated session showing what enters context and what it costs

719 </div>

720 </div>

721 <div style={{

722 textAlign: 'right',

723 flexShrink: 0

724 }}>

725 <div style={{

726 fontFamily: mono,

727 fontSize: 20,

728 fontWeight: 600,

729 color: barColor,

730 letterSpacing: -0.5,

731 lineHeight: 1

732 }}>

733 ~{fmt(totalTokens)}<span style={{

734 fontSize: 15,

735 fontWeight: 500,

736 marginLeft: 4

737 }}>tokens</span>

738 </div>

739 <div style={{

740 fontFamily: mono,

741 fontSize: 13,

742 color: 'var(--cw-text-dim)',

743 marginTop: 2

744 }} title="Token counts are illustrative. Actual values vary with your CLAUDE.md size, MCP servers, and file lengths.">

745 / {fmt(MAX)} · illustrative

746 </div>

747 </div>

748 </div>

749 

750 {}

751 <div style={{

752 padding: '0 20px'

753 }}>

754 <div style={{

755 height: 4,

756 borderRadius: 2,

757 background: 'var(--cw-track)',

758 overflow: 'hidden',

759 marginBottom: 6

760 }}>

761 <div style={{

762 width: pct + '%',

763 height: '100%',

764 background: barColor,

765 transition: 'width 0.6s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s'

766 }} />

767 </div>

768 <div style={{

769 height: 28,

770 borderRadius: 5,

771 background: 'var(--cw-track)',

772 border: '1px solid var(--cw-border)',

773 overflow: 'hidden',

774 display: 'flex'

775 }}>

776 {blocks.map((b, i) => {

777 const w = Math.max(b.tokens / MAX * 100, 0.15);

778 const isHov = b.visIdx === activeIdx;

779 const catMatch = hovCat && b.color === hovCat;

780 const dimmed = hovCat ? !catMatch : activeIdx !== null && !isHov;

781 return <div key={b.id} onMouseEnter={() => setHovIdx(b.visIdx)} onMouseLeave={() => setHovIdx(null)} onClick={() => setSelIdx(selIdx === b.visIdx ? null : b.visIdx)} style={{

782 width: w + '%',

783 height: '100%',

784 background: b.color,

785 opacity: isHov || catMatch ? 1 : dimmed ? 0.25 : 0.65,

786 borderRight: i < blocks.length - 1 ? '0.5px solid var(--cw-border)' : 'none',

787 transition: 'opacity 0.15s',

788 cursor: 'pointer'

789 }} />;

790 })}

791 </div>

792 <div style={{

793 display: 'flex',

794 gap: 12,

795 marginTop: 6,

796 flexWrap: 'wrap',

797 justifyContent: 'space-between'

798 }}>

799 <div style={{

800 display: 'flex',

801 gap: 12,

802 flexWrap: 'wrap'

803 }}>

804 {LEGEND.map(x => {

805 const active = hovCat === x.c;

806 return <div key={x.l} onMouseEnter={() => setHovCat(x.c)} onMouseLeave={() => setHovCat(null)} style={{

807 display: 'flex',

808 alignItems: 'center',

809 gap: 4,

810 padding: '2px 6px',

811 borderRadius: 4,

812 cursor: 'pointer',

813 background: active ? 'var(--cw-hover)' : 'transparent',

814 transition: 'background 0.1s'

815 }}>

816 <div style={{

817 width: 6,

818 height: 6,

819 borderRadius: 1.5,

820 background: x.c,

821 opacity: active ? 1 : 0.7

822 }} />

823 <span style={{

824 fontSize: 12,

825 color: active ? 'var(--cw-text)' : 'var(--cw-text-dim)'

826 }}>{x.l}</span>

827 </div>;

828 })}

829 </div>

830 <div style={{

831 display: 'flex',

832 gap: 6,

833 alignItems: 'center',

834 fontSize: 12,

835 color: 'var(--cw-text-dim)'

836 }}>

837 <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="#558A42" strokeWidth="2.5">

838 <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" /><circle cx="12" cy="12" r="3" />

839 </svg>

840 <span>= appears in your terminal</span>

841 </div>

842 </div>

843 </div>

844 

845 {}

846 <div style={{

847 display: 'flex',

848 padding: '14px 20px 0',

849 gap: 16,

850 height: isFullscreen ? 'calc(100vh - 240px)' : 420

851 }}>

852 

853 {}

854 <div ref={scrollRef} className="cw-scroll" style={{

855 flex: 1,

856 minWidth: 0,

857 overflowY: 'auto',

858 paddingRight: 8,

859 scrollBehavior: 'smooth'

860 }}>

861 {visible.length === 0 && !playing && <div style={{

862 height: '100%',

863 display: 'flex',

864 flexDirection: 'column',

865 alignItems: 'center',

866 justifyContent: 'center',

867 gap: 16

868 }}>

869 <div style={{

870 fontFamily: mono,

871 fontSize: 16,

872 color: 'var(--cw-text-dim)',

873 display: 'flex',

874 alignItems: 'center',

875 gap: 8

876 }}>

877 <span style={{

878 color: 'var(--cw-text-faint)'

879 }}>$</span>

880 <span>claude</span>

881 <span style={{

882 display: 'inline-block',

883 width: 8,

884 height: 16,

885 background: 'var(--cw-text-dim)',

886 opacity: 0.5,

887 animation: 'cw-blink 1s step-end infinite'

888 }} />

889 </div>

890 <button onClick={() => setPlaying(true)} style={{

891 padding: '10px 20px',

892 borderRadius: 8,

893 border: '1px solid rgba(217,119,87,0.3)',

894 background: 'rgba(217,119,87,0.08)',

895 color: '#D97757',

896 fontSize: 15,

897 fontWeight: 600,

898 cursor: 'pointer',

899 display: 'flex',

900 alignItems: 'center',

901 gap: 8

902 }}>

903 <span>▶</span>

904 <span>Start session</span>

905 </button>

906 <div style={{

907 fontSize: 13,

908 color: 'var(--cw-text-faint)',

909 maxWidth: 280,

910 textAlign: 'center',

911 lineHeight: 1.5

912 }}>

913 Watch what loads into context, from the moment you run <code style={{

914 fontFamily: mono

915 }}>claude</code> through a full conversation.

916 </div>

917 </div>}

918 {isCompacted && <div style={{

919 marginBottom: 10,

920 padding: '10px 12px',

921 borderRadius: 6,

922 background: 'rgba(217,119,87,0.05)',

923 border: '1px solid rgba(217,119,87,0.15)'

924 }}>

925 <div style={{

926 fontSize: 13,

927 fontWeight: 600,

928 color: '#D97757',

929 marginBottom: 3

930 }}>

931 After /compact

932 </div>

933 <div style={{

934 fontSize: 13,

935 color: 'var(--cw-text-3)',

936 lineHeight: 1.5,

937 fontFamily: mono

938 }}>

939 {fmt(preCompactTotal)} → {fmt(totalTokens)} tokens · freed {fmt(preCompactTotal - totalTokens)}

940 </div>

941 <div style={{

942 fontSize: 13,

943 color: 'var(--cw-text-dim)',

944 lineHeight: 1.5,

945 marginTop: 4

946 }}>

947 This is what's left in context: startup content, which lives outside the message history and reloads after compaction, plus a structured summary of the entire conversation. Skill descriptions don't reload.

948 </div>

949 </div>}

950 {time > 0 && visible.length > 0 && <div style={{

951 fontSize: 12,

952 fontWeight: 700,

953 color: 'var(--cw-text-faint)',

954 textTransform: 'uppercase',

955 letterSpacing: 0.6,

956 marginBottom: 6,

957 paddingLeft: 28

958 }}>

959 {isCompacted ? 'Reloaded after compact' : 'Before you type anything'}

960 </div>}

961 

962 {time > 0 && visible.map((evt, i) => {

963 const meta = KIND_META[evt.kind];

964 const isHov = hovIdx === i;

965 const prevKind = i > 0 ? visible[i - 1].kind : null;

966 const isSub = evt.kind === 'sub';

967 const enteringSubagent = isSub && prevKind !== 'sub';

968 const leavingSubagent = prevKind === 'sub' && !isSub;

969 let showPhase = null;

970 if (evt.kind === 'user' && prevKind !== 'user') showPhase = 'You'; else if (evt.kind === 'claude' && prevKind === 'user') showPhase = 'Claude works'; else if (evt.label === 'Conversation summary') showPhase = 'Summarized by /compact';

971 const isNewRow = isCompacted && !(evt.kind === 'auto' && evt.t < STARTUP_END);

972 return <div key={evt.label + evt.t} className={isNewRow ? 'cw-compacted-row' : ''} style={isNewRow ? {

973 animationDelay: `${i * 60}ms`

974 } : {}}>

975 {showPhase && <div style={{

976 fontSize: 12,

977 fontWeight: 700,

978 color: 'var(--cw-text-faint)',

979 textTransform: 'uppercase',

980 letterSpacing: 0.6,

981 marginTop: 14,

982 marginBottom: 6,

983 paddingLeft: 28

984 }}>

985 {showPhase}

986 </div>}

987 {enteringSubagent && <div style={{

988 marginLeft: 28,

989 marginTop: 6,

990 marginBottom: 2,

991 paddingLeft: 10,

992 borderLeft: '2px solid rgba(155,123,196,0.4)',

993 fontSize: 12,

994 fontWeight: 600,

995 color: '#9B7BC4',

996 textTransform: 'uppercase',

997 letterSpacing: 0.5

998 }}>

999 Subagent's separate context window

1000 </div>}

1001 {leavingSubagent && <div style={{

1002 marginLeft: 28,

1003 marginBottom: 6,

1004 paddingLeft: 10,

1005 paddingBottom: 6,

1006 borderLeft: '2px solid rgba(155,123,196,0.4)',

1007 fontSize: 12,

1008 color: 'var(--cw-text-dim)',

1009 fontFamily: mono

1010 }}>

1011 ↓ {fmt(subTotal)} tokens stayed in subagent's context · only the summary returns

1012 </div>}

1013 <div onMouseEnter={() => setHovIdx(i)} onMouseLeave={() => setHovIdx(null)} onClick={() => setSelIdx(selIdx === i ? null : i)} style={{

1014 display: 'flex',

1015 alignItems: 'flex-start',

1016 borderRadius: 6,

1017 cursor: 'pointer',

1018 background: selIdx === i || isHov ? 'var(--cw-hover)' : 'transparent',

1019 outline: selIdx === i ? '1px solid rgba(217,119,87,0.4)' : 'none',

1020 opacity: hovCat && evt.color !== hovCat ? 0.35 : 1,

1021 transition: 'background 0.1s, opacity 0.15s',

1022 marginLeft: isSub ? 28 : 0,

1023 paddingLeft: isSub ? 10 : 0,

1024 borderLeft: isSub ? '2px solid rgba(155,123,196,0.4)' : 'none'

1025 }}>

1026 <div style={{

1027 width: 28,

1028 display: 'flex',

1029 flexDirection: 'column',

1030 alignItems: 'center',

1031 paddingTop: 8,

1032 flexShrink: 0

1033 }}>

1034 <div style={{

1035 width: evt.kind === 'user' || evt.kind === 'compact' ? 10 : 7,

1036 height: evt.kind === 'user' || evt.kind === 'compact' ? 10 : 7,

1037 borderRadius: '50%',

1038 background: evt.color,

1039 opacity: isHov ? 1 : 0.6,

1040 transition: 'opacity 0.15s',

1041 boxShadow: isHov ? `0 0 8px ${evt.color}40` : 'none'

1042 }} />

1043 {i < visible.length - 1 && <div style={{

1044 width: 1.5,

1045 flex: 1,

1046 background: 'var(--cw-rail)',

1047 marginTop: 2,

1048 minHeight: 6

1049 }} />}

1050 </div>

1051 <div style={{

1052 flex: 1,

1053 minWidth: 0,

1054 padding: '5px 10px 5px 4px',

1055 display: 'flex',

1056 alignItems: 'center',

1057 gap: 8

1058 }}>

1059 <span style={{

1060 fontSize: 12,

1061 fontWeight: 600,

1062 padding: '1px 5px',

1063 borderRadius: 3,

1064 background: meta.badgeBg,

1065 color: meta.badgeColor,

1066 flexShrink: 0,

1067 fontFamily: mono

1068 }}>

1069 {meta.badge}

1070 </span>

1071 <span style={{

1072 fontSize: 15,

1073 fontFamily: mono,

1074 color: isHov ? 'var(--cw-text)' : evt.kind === 'user' ? '#558A42' : evt.kind === 'auto' ? 'var(--cw-text-dim)' : 'var(--cw-text-2)',

1075 flex: 1,

1076 minWidth: 0,

1077 overflow: 'hidden',

1078 textOverflow: 'ellipsis',

1079 whiteSpace: 'nowrap',

1080 fontWeight: evt.kind === 'user' ? 550 : 400

1081 }}>

1082 {evt.label}

1083 </span>

1084 {evt.tokens > 0 && <span style={{

1085 fontSize: 12,

1086 fontFamily: mono,

1087 color: 'var(--cw-text-faint)',

1088 flexShrink: 0

1089 }}>

1090 +{fmt(evt.tokens)}

1091 </span>}

1092 {evt.subTokens > 0 && <span style={{

1093 fontSize: 12,

1094 fontFamily: mono,

1095 color: '#9B7BC4',

1096 flexShrink: 0,

1097 opacity: 0.6

1098 }}>

1099 +{fmt(evt.subTokens)}

1100 </span>}

1101 {evt.tokens > 0 && <div style={{

1102 width: 50,

1103 height: 5,

1104 borderRadius: 2,

1105 background: 'var(--cw-track)',

1106 flexShrink: 0,

1107 overflow: 'hidden'

1108 }}>

1109 <div style={{

1110 width: Math.min(evt.tokens / 5000 * 100, 100) + '%',

1111 height: '100%',

1112 background: evt.color,

1113 opacity: isHov ? 0.8 : 0.4,

1114 transition: 'opacity 0.15s'

1115 }} />

1116 </div>}

1117 <span style={{

1118 width: 14,

1119 flexShrink: 0,

1120 display: 'flex',

1121 justifyContent: 'center'

1122 }} title={VIS_META[evt.vis].label}>

1123 {evt.vis !== 'hidden' && <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke={evt.vis === 'full' ? '#558A42' : 'currentColor'} style={{

1124 color: 'var(--cw-text-faint)',

1125 opacity: evt.vis === 'full' ? 1 : 0.5

1126 }} strokeWidth="2">

1127 <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" /><circle cx="12" cy="12" r="3" />

1128 </svg>}

1129 </span>

1130 </div>

1131 </div>

1132 </div>;

1133 })}

1134 

1135 {activeGate && (activeGate.kind === 'prompt' || activeGate.kind === 'bang' || activeGate.kind === 'slash') && <div style={{

1136 paddingLeft: 28,

1137 marginTop: 12,

1138 paddingRight: 8

1139 }}>

1140 <div style={{

1141 fontSize: 11,

1142 fontWeight: 600,

1143 color: '#6BA656',

1144 fontFamily: mono,

1145 textTransform: 'uppercase',

1146 letterSpacing: 0.5,

1147 marginBottom: 4,

1148 paddingLeft: 2

1149 }}>

1150 You type in your terminal

1151 </div>

1152 <div style={{

1153 display: 'flex',

1154 alignItems: 'flex-start',

1155 gap: 8,

1156 padding: '10px 12px',

1157 borderRadius: 6,

1158 background: 'rgba(85,138,66,0.06)',

1159 border: '1px solid rgba(85,138,66,0.2)'

1160 }}>

1161 <span style={{

1162 color: '#558A42',

1163 fontSize: 15,

1164 fontFamily: mono,

1165 flexShrink: 0

1166 }}>❯</span>

1167 <span style={{

1168 fontSize: 15,

1169 fontFamily: mono,

1170 color: 'var(--cw-text-2)',

1171 flex: 1,

1172 lineHeight: 1.5

1173 }}>

1174 {activeGate.text}

1175 <span style={{

1176 display: 'inline-block',

1177 width: 7,

1178 height: 13,

1179 marginLeft: 2,

1180 background: '#558A42',

1181 opacity: 0.5,

1182 verticalAlign: 'middle',

1183 animation: 'cw-blink 1s step-end infinite'

1184 }} />

1185 </span>

1186 <button onClick={sendPrompt} style={{

1187 padding: '5px 12px',

1188 borderRadius: 5,

1189 border: 'none',

1190 background: '#558A42',

1191 color: '#fff',

1192 fontSize: 13,

1193 fontWeight: 600,

1194 cursor: 'pointer',

1195 flexShrink: 0

1196 }}>

1197 {activeGate.kind === 'prompt' ? 'Send ↵' : 'Run ↵'}

1198 </button>

1199 </div>

1200 </div>}

1201 {activeGate && activeGate.kind === 'compact' && <div style={{

1202 paddingLeft: 28,

1203 marginTop: 12,

1204 paddingRight: 8

1205 }}>

1206 <div style={{

1207 padding: '12px 14px',

1208 borderRadius: 6,

1209 background: 'rgba(217,119,87,0.06)',

1210 border: '1px solid rgba(217,119,87,0.25)'

1211 }}>

1212 <div style={{

1213 fontSize: 13,

1214 color: 'var(--cw-text-3)',

1215 marginBottom: 8,

1216 lineHeight: 1.5

1217 }}>

1218 Context is at <span style={{

1219 fontFamily: mono,

1220 fontWeight: 600,

1221 color: barColor

1222 }}>{fmt(totalTokens)} tokens</span>.

1223 Run <code style={{

1224 fontFamily: mono,

1225 background: 'var(--cw-track)',

1226 padding: '1px 4px',

1227 borderRadius: 3

1228 }}>/compact</code> to

1229 summarize older exchanges and free space for more work.

1230 </div>

1231 <div style={{

1232 display: 'flex',

1233 alignItems: 'center',

1234 gap: 8

1235 }}>

1236 <span style={{

1237 color: '#D97757',

1238 fontSize: 15,

1239 fontFamily: mono

1240 }}>❯</span>

1241 <span style={{

1242 fontSize: 15,

1243 fontFamily: mono,

1244 color: 'var(--cw-text-2)',

1245 flex: 1

1246 }}>

1247 {activeGate.text}

1248 </span>

1249 <button onClick={sendPrompt} style={{

1250 padding: '5px 12px',

1251 borderRadius: 5,

1252 border: 'none',

1253 background: '#D97757',

1254 color: '#fff',

1255 fontSize: 13,

1256 fontWeight: 600,

1257 cursor: 'pointer',

1258 flexShrink: 0

1259 }}>

1260 Run ↵

1261 </button>

1262 </div>

1263 </div>

1264 </div>}

1265 </div>

1266 

1267 {}

1268 <div style={{

1269 width: 300,

1270 flexShrink: 0,

1271 display: 'flex',

1272 flexDirection: 'column'

1273 }}>

1274 <div ref={detailRef} className="cw-scroll" style={{

1275 padding: '14px 16px',

1276 borderRadius: 10,

1277 background: 'var(--cw-surface)',

1278 border: '1px solid var(--cw-border)',

1279 flex: 1,

1280 minHeight: 0,

1281 overflowY: 'auto',

1282 display: 'flex',

1283 flexDirection: 'column',

1284 gap: 10

1285 }}>

1286 {hovEvent ? <div>

1287 <div style={{

1288 display: 'flex',

1289 alignItems: 'center',

1290 gap: 8,

1291 marginBottom: 8

1292 }}>

1293 <div style={{

1294 width: 10,

1295 height: 10,

1296 borderRadius: 3,

1297 background: hovEvent.color,

1298 opacity: 0.8

1299 }} />

1300 <span style={{

1301 fontSize: 16,

1302 fontWeight: 600

1303 }}>{hovEvent.label}</span>

1304 </div>

1305 <div style={{

1306 display: 'flex',

1307 width: 'fit-content',

1308 padding: '3px 8px',

1309 borderRadius: 4,

1310 marginBottom: 8,

1311 background: KIND_META[hovEvent.kind].badgeBg

1312 }}>

1313 <span style={{

1314 fontSize: 12,

1315 fontWeight: 600,

1316 color: KIND_META[hovEvent.kind].badgeColor

1317 }}>

1318 {KIND_META[hovEvent.kind].detail}

1319 </span>

1320 </div>

1321 {hovEvent.tokens > 0 && <div style={{

1322 fontSize: 14,

1323 fontFamily: mono,

1324 color: 'var(--cw-text-dim)',

1325 marginBottom: 6

1326 }}>

1327 {fmt(hovEvent.tokens)} tokens

1328 </div>}

1329 {hovEvent.subTokens > 0 && <div style={{

1330 fontSize: 14,

1331 fontFamily: mono,

1332 color: '#9B7BC4',

1333 marginBottom: 6

1334 }}>

1335 {fmt(hovEvent.subTokens)} tokens in the subagent's context

1336 </div>}

1337 <p style={{

1338 fontSize: 15,

1339 color: 'var(--cw-text-3)',

1340 lineHeight: 1.55,

1341 margin: 0

1342 }}>

1343 {renderWithCode(hovEvent.desc)}

1344 </p>

1345 <div style={{

1346 marginTop: 10,

1347 padding: '8px 10px',

1348 borderRadius: 6,

1349 background: hovEvent.vis === 'full' ? 'rgba(85,138,66,0.08)' : 'var(--cw-surface-2)',

1350 border: '1px solid ' + (hovEvent.vis === 'full' ? 'rgba(85,138,66,0.2)' : 'var(--cw-border)')

1351 }}>

1352 <div style={{

1353 display: 'flex',

1354 alignItems: 'center',

1355 gap: 6,

1356 marginBottom: 3

1357 }}>

1358 <span style={{

1359 fontSize: 13,

1360 color: hovEvent.vis === 'full' ? '#558A42' : 'var(--cw-text-dim)'

1361 }}>

1362 {hovEvent.vis === 'full' ? '●' : hovEvent.vis === 'brief' ? '◐' : '○'}

1363 </span>

1364 <span style={{

1365 fontSize: 12,

1366 fontWeight: 600,

1367 color: 'var(--cw-text-2)'

1368 }}>

1369 {VIS_META[hovEvent.vis].label}

1370 </span>

1371 </div>

1372 <div style={{

1373 fontSize: 13,

1374 color: 'var(--cw-text-dim)',

1375 lineHeight: 1.4

1376 }}>

1377 {VIS_META[hovEvent.vis].sub}

1378 </div>

1379 </div>

1380 {hovEvent.tip && <div style={{

1381 marginTop: 10,

1382 padding: '8px 10px',

1383 borderRadius: 6,

1384 background: 'rgba(85,138,66,0.06)',

1385 border: '1px solid rgba(85,138,66,0.15)'

1386 }}>

1387 <div style={{

1388 fontSize: 12,

1389 fontWeight: 600,

1390 color: '#558A42',

1391 marginBottom: 3,

1392 display: 'flex',

1393 alignItems: 'center',

1394 gap: 4

1395 }}>

1396 <span>💡</span> Save context

1397 </div>

1398 <div style={{

1399 fontSize: 13,

1400 color: 'var(--cw-text-3)',

1401 lineHeight: 1.5

1402 }}>

1403 {renderWithCode(hovEvent.tip)}

1404 </div>

1405 </div>}

1406 {hovEvent.link && <a href={hovEvent.link} style={{

1407 display: 'inline-block',

1408 marginTop: 10,

1409 fontSize: 13,

1410 color: '#D97757',

1411 textDecoration: 'none',

1412 borderBottom: '1px solid rgba(217,119,87,0.3)'

1413 }}>

1414 Learn more →

1415 </a>}

1416 </div> : <div style={{

1417 display: 'flex',

1418 flexDirection: 'column',

1419 alignItems: 'center',

1420 textAlign: 'center',

1421 gap: 4,

1422 padding: '12px 0 4px'

1423 }}>

1424 <div style={{

1425 fontSize: 22,

1426 opacity: 0.2

1427 }}>👁</div>

1428 <div style={{

1429 fontSize: 14,

1430 fontWeight: 500,

1431 color: 'var(--cw-text-dim)'

1432 }}>Hover or click any event</div>

1433 <div style={{

1434 fontSize: 12,

1435 color: 'var(--cw-text-faint)',

1436 lineHeight: 1.4,

1437 maxWidth: 200

1438 }}>

1439 Hover to preview. Click to pin so you can scroll.

1440 </div>

1441 </div>}

1442 

1443 <div style={{

1444 padding: '10px 12px',

1445 borderRadius: 8,

1446 background: 'rgba(217,119,87,0.05)',

1447 border: '1px solid rgba(217,119,87,0.12)'

1448 }}>

1449 <div style={{

1450 fontSize: 11,

1451 fontWeight: 700,

1452 color: '#D97757',

1453 textTransform: 'uppercase',

1454 letterSpacing: 0.5,

1455 marginBottom: 3

1456 }}>

1457 Key takeaway

1458 </div>

1459 <div style={{

1460 fontSize: 13,

1461 color: 'var(--cw-text-3)',

1462 lineHeight: 1.5

1463 }}>

1464 {takeaway}

1465 </div>

1466 </div>

1467 

1468 <div style={{

1469 padding: '10px 12px',

1470 borderRadius: 8,

1471 background: 'var(--cw-surface-2)',

1472 border: '1px solid var(--cw-border)'

1473 }}>

1474 <div style={{

1475 fontSize: 11,

1476 fontWeight: 700,

1477 color: 'var(--cw-text-dim)',

1478 textTransform: 'uppercase',

1479 letterSpacing: 0.5,

1480 marginBottom: 3

1481 }}>

1482 In your terminal you see

1483 </div>

1484 <div style={{

1485 fontSize: 13,

1486 color: 'var(--cw-text-3)',

1487 lineHeight: 1.5

1488 }}>

1489 {terminalView}

1490 </div>

1491 </div>

1492 </div>

1493 </div>

1494 </div>

1495 

1496 {}

1497 <div style={{

1498 padding: '10px 20px 14px',

1499 display: 'flex',

1500 alignItems: 'center',

1501 gap: 10

1502 }}>

1503 <button aria-label={time >= 1 ? 'Restart' : activeGate ? 'Continue' : playing ? 'Pause' : 'Play'} onClick={() => {

1504 if (time >= 1) {

1505 setTime(0);

1506 setGatesPassed(0);

1507 setSelIdx(null);

1508 setHovIdx(null);

1509 setPlaying(true);

1510 } else if (activeGate) sendPrompt(); else setPlaying(!playing);

1511 }} style={{

1512 width: 30,

1513 height: 30,

1514 borderRadius: 6,

1515 border: 'none',

1516 background: 'rgba(217,119,87,0.1)',

1517 color: '#D97757',

1518 cursor: 'pointer',

1519 fontSize: 15,

1520 fontWeight: 700,

1521 display: 'flex',

1522 alignItems: 'center',

1523 justifyContent: 'center'

1524 }}>

1525 {time >= 1 ? '↺' : playing ? '⏸' : '▶'}

1526 </button>

1527 <div style={{

1528 flex: 1,

1529 height: 3,

1530 borderRadius: 2,

1531 background: 'var(--cw-track)',

1532 overflow: 'hidden'

1533 }}>

1534 <div style={{

1535 width: time * 100 + '%',

1536 height: '100%',

1537 background: '#D97757',

1538 transition: 'width 0.1s linear'

1539 }} />

1540 </div>

1541 <span style={{

1542 fontSize: 12,

1543 fontFamily: mono,

1544 color: 'var(--cw-text-faint)',

1545 minWidth: 30

1546 }}>

1547 {Math.round(time * 100)}%

1548 </span>

1549 <button onClick={toggleFullscreen} aria-label={isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} style={{

1550 width: 28,

1551 height: 28,

1552 borderRadius: 6,

1553 border: '1px solid var(--cw-border)',

1554 background: 'var(--cw-surface)',

1555 color: 'var(--cw-text-dim)',

1556 cursor: 'pointer',

1557 fontSize: 15,

1558 flexShrink: 0,

1559 marginLeft: 4,

1560 display: 'flex',

1561 alignItems: 'center',

1562 justifyContent: 'center'

1563 }}>

1564 {isFullscreen ? '⤡' : '⛶'}

1565 </button>

1566 </div>

1567 </div>

1568 </>;

1569};

1570 

1571Jendela konteks Claude Code menyimpan semua yang Claude ketahui tentang sesi Anda: instruksi Anda, file yang dibacanya, respons miliknya sendiri, dan konten yang tidak pernah muncul di terminal Anda. Garis waktu di bawah ini memainkan sesi lengkap dari startup hingga pemadatan: apa yang dimuat sebelum Anda mengetik, apa yang ditambahkan setiap pembacaan file, aturan, dan hook saat Claude bekerja, dan bagaimana subagent menjaga pembacaan besar tetap berada di luar konteks Anda. Lihat [penjelasan tertulis](#what-the-timeline-shows) untuk konten yang sama dalam bentuk daftar.

1572 

1573<ContextWindow />

1574 

1575<h2 id="what-the-timeline-shows">

1576 Apa yang ditunjukkan garis waktu

1577</h2>

12 1578 

13Sesi ini menjelaskan alur kerja yang realistis dengan jumlah token yang representatif:1579Sesi ini menjelaskan alur kerja yang realistis dengan jumlah token yang representatif:

14 1580 


17* **Prompt lanjutan**: [subagent](/id/sub-agents) menangani penelitian dalam jendela konteks terpisahnya sendiri, sehingga pembacaan file besar tetap berada di luar milik Anda. Hanya ringkasan dan trailer metadata kecil yang kembali.1583* **Prompt lanjutan**: [subagent](/id/sub-agents) menangani penelitian dalam jendela konteks terpisahnya sendiri, sehingga pembacaan file besar tetap berada di luar milik Anda. Hanya ringkasan dan trailer metadata kecil yang kembali.

18* **Di akhir**: `/compact` menggantikan percakapan dengan ringkasan terstruktur. Sebagian besar konten startup dimuat ulang secara otomatis; tabel di bawah menunjukkan apa yang terjadi pada setiap mekanisme.1584* **Di akhir**: `/compact` menggantikan percakapan dengan ringkasan terstruktur. Sebagian besar konten startup dimuat ulang secara otomatis; tabel di bawah menunjukkan apa yang terjadi pada setiap mekanisme.

19 1585 

20## Apa yang bertahan dari pemadatan1586<h2 id="what-survives-compaction">

1587 Apa yang bertahan dari pemadatan

1588</h2>

21 1589 

22Ketika sesi panjang dipadatkan, Claude Code merangkum riwayat percakapan agar sesuai dengan jendela konteks. Apa yang terjadi pada instruksi Anda tergantung pada cara instruksi tersebut dimuat:1590Ketika sesi panjang dipadatkan, Claude Code merangkum riwayat percakapan agar sesuai dengan jendela konteks. Apa yang terjadi pada instruksi Anda tergantung pada cara instruksi tersebut dimuat:

23 1591 


35 1603 

36Badan skill disuntikkan kembali setelah pemadatan, tetapi skill besar dipotong agar sesuai dengan batas per-skill, dan skill yang paling lama dipanggil dijatuhkan setelah anggaran total terlampaui. Pemotongan menjaga awal file, jadi letakkan instruksi paling penting di dekat bagian atas `SKILL.md`.1604Badan skill disuntikkan kembali setelah pemadatan, tetapi skill besar dipotong agar sesuai dengan batas per-skill, dan skill yang paling lama dipanggil dijatuhkan setelah anggaran total terlampaui. Pemotongan menjaga awal file, jadi letakkan instruksi paling penting di dekat bagian atas `SKILL.md`.

37 1605 

38## Periksa sesi Anda sendiri1606<h2 id="when-your-context-fills-up">

1607 Ketika konteks Anda penuh

1608</h2>

1609 

1610Claude Code secara otomatis dipadatkan saat Anda mendekati batas, sehingga jendela konteks yang penuh tidak mengakhiri sesi Anda. Lintasan otomatis bekerja dengan cara yang sama seperti langkah `/compact` dalam garis waktu. Lihat [Ketika konteks penuh](/id/how-claude-code-works#when-context-fills-up) untuk apa yang dipertahankannya.

1611 

1612Anda juga dapat bertindak sebelum lintasan otomatis berjalan:

1613 

1614* **Padatkan dengan fokus**: jalankan `/compact` dengan instruksi, seperti `/compact focus on the auth bug fix`, sebelum memulai tugas baru yang panjang. Ringkasan menjaga apa yang Anda pilih alih-alih apa yang ditebak lintasan otomatis sebagai penting.

1615* **Bersihkan antar tugas**: jalankan `/clear` saat beralih ke pekerjaan yang tidak terkait. Percakapan lama mengalahkan file yang Anda butuhkan selanjutnya dan menghabiskan token pada setiap pesan.

1616* **Delegasikan pembacaan besar**: kirim penelitian ke [subagent](/id/sub-agents) sehingga konten file tetap berada di jendela konteksnya, bukan milik Anda.

1617 

1618Jika Anda membutuhkan jendela yang lebih besar daripada percakapan yang lebih kecil, Fable 5, Opus 4.6 dan yang lebih baru, dan Sonnet 4.6 mendukung jendela konteks 1 juta token. Lihat [Extended context](/id/model-config#extended-context) untuk ketersediaan menurut paket dan cara memilih varian model `[1m]`. Pemadatan bekerja dengan cara yang sama pada batas yang lebih besar.

1619 

1620<h2 id="check-your-own-session">

1621 Periksa sesi Anda sendiri

1622</h2>

39 1623 

40Visualisasi menggunakan angka representatif. Untuk melihat penggunaan konteks aktual Anda pada titik mana pun, jalankan `/context` untuk rincian langsung menurut kategori dengan saran optimasi. Jalankan `/memory` untuk memeriksa file CLAUDE.md dan memori otomatis mana yang dimuat saat startup.1624Visualisasi menggunakan angka representatif. Untuk melihat penggunaan konteks aktual Anda pada titik mana pun, jalankan `/context` untuk rincian langsung menurut kategori dengan saran optimasi. Jalankan `/memory` untuk memeriksa file CLAUDE.md dan memori otomatis mana yang dimuat saat startup.

41 1625 

42## Sumber daya terkait1626<h2 id="related-resources">

1627 Sumber daya terkait

1628</h2>

43 1629 

44Untuk cakupan lebih mendalam tentang fitur yang ditunjukkan dalam garis waktu, lihat halaman-halaman ini:1630Untuk cakupan lebih mendalam tentang fitur yang ditunjukkan dalam garis waktu, lihat halaman-halaman ini:

45 1631 

costs.md +4 −2

Details

35 35 

36Pada paket Pro, Max, Team, atau Enterprise, `/usage` juga menampilkan rincian tentang apa yang diperhitungkan terhadap batas paket Anda. Ini mengatribusikan penggunaan terbaru ke skills, subagents, plugins, dan server MCP individual, masing-masing ditampilkan sebagai persentase dari total. Tekan `d` atau `w` untuk beralih antara 24 jam terakhir dan 7 hari terakhir. Angka-angka tersebut bersifat perkiraan dan dihitung dari riwayat sesi lokal di mesin ini, jadi penggunaan dari perangkat lain atau claude.ai tidak disertakan.36Pada paket Pro, Max, Team, atau Enterprise, `/usage` juga menampilkan rincian tentang apa yang diperhitungkan terhadap batas paket Anda. Ini mengatribusikan penggunaan terbaru ke skills, subagents, plugins, dan server MCP individual, masing-masing ditampilkan sebagai persentase dari total. Tekan `d` atau `w` untuk beralih antara 24 jam terakhir dan 7 hari terakhir. Angka-angka tersebut bersifat perkiraan dan dihitung dari riwayat sesi lokal di mesin ini, jadi penggunaan dari perangkat lain atau claude.ai tidak disertakan.

37 37 

38Di [ekstensi VS Code](/id/vs-code#check-account-and-usage), rincian yang sama muncul dalam dialog Account & usage dengan toggle Day dan Week. Memerlukan Claude Code v2.1.174 atau lebih baru.

39 

38<h2 id="managing-costs-for-teams">40<h2 id="managing-costs-for-teams">

39 Mengelola biaya untuk tim41 Mengelola biaya untuk tim

40</h2>42</h2>


85* Gunakan Sonnet untuk rekan kerja. Ini menyeimbangkan kemampuan dan biaya untuk tugas koordinasi.87* Gunakan Sonnet untuk rekan kerja. Ini menyeimbangkan kemampuan dan biaya untuk tugas koordinasi.

86* Jaga tim tetap kecil. Setiap rekan kerja menjalankan jendela konteks sendiri, jadi penggunaan token kira-kira sebanding dengan ukuran tim.88* Jaga tim tetap kecil. Setiap rekan kerja menjalankan jendela konteks sendiri, jadi penggunaan token kira-kira sebanding dengan ukuran tim.

87* Jaga prompt spawn tetap fokus. Rekan kerja memuat CLAUDE.md, server MCP, dan skills secara otomatis, tetapi semuanya dalam prompt spawn menambah konteks mereka dari awal.89* Jaga prompt spawn tetap fokus. Rekan kerja memuat CLAUDE.md, server MCP, dan skills secara otomatis, tetapi semuanya dalam prompt spawn menambah konteks mereka dari awal.

88* Bersihkan tim ketika pekerjaan selesai. Rekan kerja aktif terus mengonsumsi token bahkan jika menganggur.90* Bersihkan tim ketika pekerjaan selesai. Setiap rekan kerja aktif terus mengonsumsi token sampai keluar atau sesi berakhir.

89* Tim agen dinonaktifkan secara default. Atur `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` di [settings.json](/id/settings) atau lingkungan Anda untuk mengaktifkannya. Lihat [aktifkan tim agen](/id/agent-teams#enable-agent-teams).91* Tim agen dinonaktifkan secara default. Atur `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` di [settings.json](/id/settings) atau lingkungan Anda untuk mengaktifkannya. Lihat [aktifkan tim agen](/id/agent-teams#enable-agent-teams).

90 92 

91<h2 id="reduce-token-usage">93<h2 id="reduce-token-usage">


196 Sesuaikan pemikiran yang diperluas198 Sesuaikan pemikiran yang diperluas

197</h3>199</h3>

198 200 

199Pemikiran yang diperluas diaktifkan secara default karena secara signifikan meningkatkan kinerja pada tugas perencanaan dan penalaran yang kompleks. Token pemikiran ditagih sebagai token output, dan anggaran default dapat mencapai puluhan ribu token per permintaan tergantung pada model. Untuk tugas yang lebih sederhana di mana penalaran mendalam tidak diperlukan, Anda dapat mengurangi biaya dengan menurunkan [tingkat upaya](/id/model-config#adjust-effort-level) dengan `/effort` atau di `/model`, menonaktifkan pemikiran di `/config`, atau menurunkan anggaran dengan `MAX_THINKING_TOKENS=8000`.201Pemikiran yang diperluas diaktifkan secara default karena secara signifikan meningkatkan kinerja pada tugas perencanaan dan penalaran yang kompleks. Token pemikiran ditagih sebagai token output, dan anggaran default dapat mencapai puluhan ribu token per permintaan tergantung pada model. Untuk tugas yang lebih sederhana di mana penalaran mendalam tidak diperlukan, Anda dapat mengurangi biaya dengan menurunkan [tingkat upaya](/id/model-config#adjust-effort-level) dengan `/effort` atau di `/model`, menonaktifkan pemikiran di `/config`, atau, pada model dengan [anggaran pemikiran tetap](/id/model-config#adaptive-reasoning-and-fixed-thinking-budgets), menurunkan anggaran dengan `MAX_THINKING_TOKENS=8000`. Model adaptive-reasoning mengabaikan anggaran bukan nol, jadi gunakan tingkat upaya di sana. Menonaktifkan pemikiran tidak tersedia di Fable 5, yang selalu menggunakan pemikiran yang diperluas.

200 202 

201<h3 id="delegate-verbose-operations-to-subagents">203<h3 id="delegate-verbose-operations-to-subagents">

202 Delegasikan operasi verbose ke subagents204 Delegasikan operasi verbose ke subagents

data-usage.md +4 −4

Details

62**Pengguna komersial (Team, Enterprise, dan API)**:62**Pengguna komersial (Team, Enterprise, dan API)**:

63 63 

64* Standar: periode retensi 30 hari64* Standar: periode retensi 30 hari

65* [Retensi data nol](/id/zero-data-retention): tersedia untuk Claude Code di Claude untuk Enterprise. ZDR diaktifkan berdasarkan per-organisasi; setiap organisasi baru harus memiliki ZDR diaktifkan secara terpisah oleh tim akun Anda65* [Retensi data nol](/id/zero-data-retention): tersedia untuk Claude Code di Claude untuk Enterprise. ZDR tidak termasuk dalam paket Enterprise standar; diaktifkan berdasarkan per-organisasi oleh tim akun Anda setelah mengkonfirmasi kelayakan

66* Penyimpanan lokal: klien Claude Code menyimpan transkrip sesi secara lokal dalam plaintext di bawah `~/.claude/projects/` selama 30 hari secara default untuk memungkinkan pemulihan sesi. Sesuaikan periode dengan `cleanupPeriodDays`. Lihat [data aplikasi](/id/claude-directory#application-data) untuk apa yang disimpan dan cara menghapusnya.66* Penyimpanan lokal: klien Claude Code menyimpan transkrip sesi secara lokal dalam plaintext di bawah `~/.claude/projects/` selama 30 hari secara default untuk memungkinkan pemulihan sesi. Sesuaikan periode dengan `cleanupPeriodDays`. Lihat [data aplikasi](/id/claude-directory#application-data) untuk apa yang disimpan dan cara menghapusnya.

67 67 

68Anda dapat menghapus sesi Claude Code individual di web kapan saja. Menghapus sesi secara permanen menghapus data peristiwa sesi. Untuk instruksi tentang cara menghapus sesi, lihat [Menghapus sesi](/id/claude-code-on-the-web#delete-sessions).68Anda dapat menghapus sesi Claude Code individual di web kapan saja. Menghapus sesi secara permanen menghapus data peristiwa sesi. Untuk instruksi tentang cara menghapus sesi, lihat [Menghapus sesi](/id/claude-code-on-the-web#delete-sessions).


75 Akses data75 Akses data

76</h2>76</h2>

77 77 

78Untuk semua pengguna pihak pertama, Anda dapat mempelajari lebih lanjut tentang data apa yang dicatat untuk [Claude Code lokal](#local-claude-code-data-flow-and-dependencies) dan [Claude Code cloud](#cloud-execution-data-flow-and-dependencies). Sesi [Remote Control](/id/remote-control) mengikuti alur data lokal karena semua eksekusi terjadi di mesin Anda. Perhatikan untuk Claude Code jarak jauh, Claude mengakses repositori tempat Anda memulai sesi Claude Code Anda. Claude tidak mengakses repositori yang telah Anda hubungkan tetapi belum memulai sesi di dalamnya.78Untuk semua pengguna pihak pertama, Anda dapat mempelajari lebih lanjut tentang data apa yang dicatat untuk [Claude Code lokal](#local-claude-code-data-flow-and-dependencies) dan [Claude Code jarak jauh](#cloud-execution-data-flow-and-dependencies). Sesi [Remote Control](/id/remote-control) mengikuti alur data lokal karena semua eksekusi terjadi di mesin Anda. Perhatikan untuk Claude Code jarak jauh, Claude mengakses repositori tempat Anda memulai sesi Claude Code Anda. Claude tidak mengakses repositori yang telah Anda hubungkan tetapi belum memulai sesi di dalamnya.

79 79 

80<h2 id="local-claude-code-data-flow-and-dependencies">80<h2 id="local-claude-code-data-flow-and-dependencies">

81 Claude Code Lokal: Alur data dan dependensi81 Claude Code Lokal: Alur data dan dependensi


83 83 

84Diagram di bawah menunjukkan bagaimana Claude Code terhubung ke layanan eksternal selama instalasi dan operasi normal. Garis solid menunjukkan koneksi yang diperlukan, sementara garis putus-putus mewakili alur data opsional atau yang dimulai pengguna.84Diagram di bawah menunjukkan bagaimana Claude Code terhubung ke layanan eksternal selama instalasi dan operasi normal. Garis solid menunjukkan koneksi yang diperlukan, sementara garis putus-putus mewakili alur data opsional atau yang dimulai pengguna.

85 85 

86<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/claude-code-data-flow.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=5b1131530bdfdd415700a0cb4d4070c4" alt="Diagram menunjukkan koneksi eksternal Claude Code: install/update terhubung ke server distribusi, dan permintaan pengguna terhubung ke layanan Anthropic termasuk auth Console, public-api, dan secara opsional metrics, Sentry, dan pelaporan bug" width="720" height="520" data-path="images/claude-code-data-flow.svg" />86<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/claude-code-data-flow.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=5b1131530bdfdd415700a0cb4d4070c4" alt="Diagram menunjukkan koneksi eksternal Claude Code: install/update terhubung ke server distribusi, dan permintaan pengguna terhubung ke layanan Anthropic termasuk auth Console, public-api, dan secara opsional metrics dan Sentry. Umpan balik yang dikirim dengan /feedback masuk ke Google Cloud Storage dan secara opsional membuat masalah GitHub" width="720" height="520" data-path="images/claude-code-data-flow.svg" />

87 87 

88Claude Code berjalan secara lokal. Untuk berinteraksi dengan LLM, Claude Code mengirimkan data melalui jaringan. Data ini mencakup semua prompt pengguna dan output model, dienkripsi dalam transit melalui TLS 1.2+. Claude Code kompatibel dengan sebagian besar VPN dan proxy LLM populer.88Claude Code berjalan secara lokal. Untuk berinteraksi dengan LLM, Claude Code mengirimkan data melalui jaringan. Data ini mencakup semua prompt pengguna dan output model, dienkripsi dalam transit melalui TLS 1.2+. Claude Code kompatibel dengan sebagian besar VPN dan proxy LLM populer.

89 89 


119 119 

120Claude Code terhubung dari mesin pengguna ke Sentry untuk logging kesalahan operasional. Data dienkripsi dalam transit menggunakan TLS dan saat istirahat menggunakan enkripsi AES 256-bit. Baca lebih lanjut di [dokumentasi keamanan Sentry](https://sentry.io/security/). Untuk menolak logging kesalahan, atur variabel lingkungan `DISABLE_ERROR_REPORTING`.120Claude Code terhubung dari mesin pengguna ke Sentry untuk logging kesalahan operasional. Data dienkripsi dalam transit menggunakan TLS dan saat istirahat menggunakan enkripsi AES 256-bit. Baca lebih lanjut di [dokumentasi keamanan Sentry](https://sentry.io/security/). Untuk menolak logging kesalahan, atur variabel lingkungan `DISABLE_ERROR_REPORTING`.

121 121 

122Ketika Anda menjalankan perintah `/feedback`, salinan riwayat percakapan lengkap Anda termasuk kode dikirim ke Anthropic. Sebelum mengirimkan, Anda memilih berapa banyak riwayat yang akan disertakan: sesi saat ini saja, yang merupakan default, atau juga sesi lain dari proyek yang sama selama 24 jam atau 7 hari terakhir. Data dienkripsi dalam transit melalui TLS. Secara opsional, masalah GitHub dibuat di repositori publik. Untuk menolak, atur variabel lingkungan `DISABLE_FEEDBACK_COMMAND` ke `1`.122Ketika Anda menjalankan perintah `/feedback`, salinan riwayat percakapan lengkap Anda termasuk kode dikirim ke Anthropic. Sebelum mengirimkan, Anda memilih berapa banyak riwayat yang akan disertakan: sesi saat ini saja, yang merupakan default, atau juga sesi lain dari proyek yang sama selama 24 jam atau 7 hari terakhir. Data dienkripsi dalam transit melalui TLS dan disimpan di Google Cloud Storage, yang mengenkripsi data yang disimpan saat istirahat secara default. Secara opsional, masalah GitHub dibuat di repositori publik. Untuk menolak, atur variabel lingkungan `DISABLE_FEEDBACK_COMMAND` ke `1`.

123 123 

124Ketika Anda menggunakan penyedia pihak ketiga seperti Bedrock atau Vertex, atau tidak memiliki kredensial Anthropic yang dikonfigurasi, `/feedback` menulis laporan ke arsip lokal di bawah `~/.claude/feedback-bundles/` alih-alih mengirimkannya ke Anthropic. Pola kunci API dan token yang diketahui dihapus sebelum arsip ditulis. Tidak ada yang meninggalkan mesin Anda sampai Anda mengirim file tersebut ke perwakilan akun Anthropic Anda atau melampirkannya ke permintaan dukungan.124Ketika Anda menggunakan penyedia pihak ketiga seperti Bedrock atau Vertex, atau tidak memiliki kredensial Anthropic yang dikonfigurasi, `/feedback` menulis laporan ke arsip lokal di bawah `~/.claude/feedback-bundles/` alih-alih mengirimkannya ke Anthropic. Pola kunci API dan token yang diketahui dihapus sebelum arsip ditulis. Tidak ada yang meninggalkan mesin Anda sampai Anda mengirim file tersebut ke perwakilan akun Anthropic Anda atau melampirkannya ke permintaan dukungan.

125 125 

Details

78 Uji terhadap konfigurasi bersih78 Uji terhadap konfigurasi bersih

79</h2>79</h2>

80 80 

81Jika pemeriksaan yang ditargetkan tidak mengisolasi penyebab, atau konfigurasi Anda dalam keadaan yang tidak diketahui, bandingkan dengan sesi yang tidak memuat apa pun dari pengaturan biasa Anda. Arahkan [`CLAUDE_CONFIG_DIR`](/id/env-vars) ke direktori kosong untuk melewati semua yang ada di bawah `~/.claude`, dan luncurkan dari direktori yang tidak memiliki folder `.claude`, `.mcp.json`, atau `CLAUDE.md` sehingga konfigurasi proyek juga dilewati.81{/* min-version: 2.1.169 */}Mulai dengan [`claude --safe-mode`](/id/cli-reference#cli-flags), yang meluncurkan sesi dengan semua kustomisasi dinonaktifkan, termasuk `CLAUDE.md`, skills, plugins, hooks, server MCP, dan perintah dan agen kustom. Autentikasi, pemilihan model, alat bawaan, dan izin berfungsi secara normal. Jika masalah hilang dalam safe mode, salah satu permukaan tersebut adalah penyebabnya; gunakan pemeriksaan yang ditargetkan di atas untuk menemukan mana. Pengaturan terkelola yang diterapkan oleh organisasi Anda masih sebagian berlaku, jadi hooks yang dikonfigurasi kebijakan dan baris status berjalan bahkan dalam safe mode.

82 

83Jika masalah berlanjut dalam safe mode, atau pengaturan Anda sendiri mencurigakan, bandingkan dengan sesi yang tidak memuat apa pun dari pengaturan biasa Anda. Arahkan [`CLAUDE_CONFIG_DIR`](/id/env-vars) ke direktori kosong untuk melewati semua yang ada di bawah `~/.claude`, dan luncurkan dari direktori yang tidak memiliki folder `.claude`, `.mcp.json`, atau `CLAUDE.md` sehingga konfigurasi proyek juga dilewati.

82 84 

83```bash theme={null}85```bash theme={null}

84cd /tmp && CLAUDE_CONFIG_DIR=/tmp/claude-clean claude86cd /tmp && CLAUDE_CONFIG_DIR=/tmp/claude-clean claude

85```87```

86 88 

87Sesi bersih tidak memiliki pengaturan pengguna atau proyek, hooks, server MCP, plugin, atau memory.89Sesi bersih tidak memiliki pengaturan pengguna atau proyek, hooks, server MCP, plugins, atau memory.

88 90 

89* Pengaturan terkelola masih berlaku jika organisasi Anda menerapkannya, karena mereka berada di jalur sistem di luar `~/.claude`91* Pengaturan terkelola masih berlaku jika organisasi Anda menerapkannya, karena mereka berada di jalur sistem di luar `~/.claude`

90* Di Linux dan Windows, Anda akan diminta untuk masuk lagi karena kredensial disimpan di bawah direktori konfigurasi92* Di Linux dan Windows, Anda akan diminta untuk masuk lagi karena kredensial disimpan di bawah direktori konfigurasi

desktop.md +28 −26

Details

67 67 

68Kotak prompt mendukung dua cara untuk membawa konteks eksternal:68Kotak prompt mendukung dua cara untuk membawa konteks eksternal:

69 69 

70* **@mention files**: ketik `@` diikuti dengan nama file untuk menambahkan file ke konteks percakapan. Claude kemudian dapat membaca dan mereferensikan file tersebut. @mention tidak tersedia di sesi jarak jauh.70* **@mention files**: ketik `@` diikuti dengan nama file untuk menambahkan file ke konteks percakapan. Claude kemudian dapat membaca dan mereferensikan file tersebut. @mention tidak tersedia di sesi cloud.

71* **Attach files**: lampirkan gambar, PDF, dan file lainnya ke prompt Anda menggunakan tombol lampiran, atau seret dan lepas file langsung ke prompt. Ini berguna untuk berbagi tangkapan layar bug, mockup desain, atau dokumen referensi.71* **Attach files**: lampirkan gambar, PDF, dan file lainnya ke prompt Anda menggunakan tombol lampiran, atau seret dan lepas file langsung ke prompt. Ini berguna untuk berbagi tangkapan layar bug, mockup desain, atau dokumen referensi.

72 72 

73<h3 id="choose-a-permission-mode">73<h3 id="choose-a-permission-mode">


77Permission modes mengontrol berapa banyak otonomi yang dimiliki Claude selama sesi: apakah itu meminta izin sebelum mengedit file, menjalankan perintah, atau keduanya. Anda dapat beralih mode kapan saja menggunakan pemilih mode di sebelah tombol kirim. Mulai dengan Ask permissions untuk melihat dengan tepat apa yang dilakukan Claude, kemudian pindah ke Auto accept edits atau Plan mode saat Anda merasa nyaman.77Permission modes mengontrol berapa banyak otonomi yang dimiliki Claude selama sesi: apakah itu meminta izin sebelum mengedit file, menjalankan perintah, atau keduanya. Anda dapat beralih mode kapan saja menggunakan pemilih mode di sebelah tombol kirim. Mulai dengan Ask permissions untuk melihat dengan tepat apa yang dilakukan Claude, kemudian pindah ke Auto accept edits atau Plan mode saat Anda merasa nyaman.

78 78 

79| Mode | Settings key | Behavior |79| Mode | Settings key | Behavior |

80| ---------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |80| ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

81| **Ask permissions** | `default` | Claude meminta izin sebelum mengedit file atau menjalankan perintah. Anda melihat diff dan dapat menerima atau menolak setiap perubahan. Direkomendasikan untuk pengguna baru. |81| **Ask permissions** | `default` | Claude meminta izin sebelum mengedit file atau menjalankan perintah. Anda melihat diff dan dapat menerima atau menolak setiap perubahan. Direkomendasikan untuk pengguna baru. |

82| **Auto accept edits** | `acceptEdits` | Claude secara otomatis menerima edit file dan perintah filesystem umum seperti `mkdir`, `touch`, dan `mv`, tetapi masih meminta izin sebelum menjalankan perintah terminal lainnya. Gunakan ini ketika Anda mempercayai perubahan file dan menginginkan iterasi yang lebih cepat. |82| **Auto accept edits** | `acceptEdits` | Claude secara otomatis menerima edit file dan perintah filesystem umum seperti `mkdir`, `touch`, dan `mv`, tetapi masih meminta izin sebelum menjalankan perintah terminal lainnya. Gunakan ini ketika Anda mempercayai perubahan file dan menginginkan iterasi yang lebih cepat. |

83| **Plan mode** | `plan` | Claude membaca file dan menjalankan perintah untuk menjelajahi, kemudian mengusulkan rencana tanpa mengedit kode sumber Anda. Bagus untuk tugas kompleks di mana Anda ingin meninjau pendekatan terlebih dahulu. |83| **Plan mode** | `plan` | Claude membaca file dan menjalankan perintah untuk menjelajahi, kemudian mengusulkan rencana tanpa mengedit kode sumber Anda. Bagus untuk tugas kompleks di mana Anda ingin meninjau pendekatan terlebih dahulu. |

84| **Auto** | `auto` | Claude mengeksekusi semua tindakan dengan pemeriksaan keamanan latar belakang yang memverifikasi keselarasan dengan permintaan Anda. Mengurangi prompt izin sambil mempertahankan pengawasan. Aktifkan di Settings → Claude Code Anda. Lihat [availability requirements](#auto-mode-availability) di bawah. |84| **Auto** | `auto` | Claude mengeksekusi semua tindakan dengan pemeriksaan keamanan latar belakang yang memverifikasi keselarasan dengan permintaan Anda. Mengurangi prompt izin sambil mempertahankan pengawasan. Aktifkan di Settings → Claude Code Anda. Lihat [availability requirements](#auto-mode-availability) di bawah. |

85| **Bypass permissions** | `bypassPermissions` | Claude berjalan tanpa prompt izin apa pun, setara dengan `--dangerously-skip-permissions` di CLI. Aktifkan di Settings → Claude Code Anda di bawah "Allow bypass permissions mode". Hanya gunakan ini di kontainer atau VM yang disandbox. Admin enterprise dapat menonaktifkan opsi ini. |85| **Bypass permissions** | `bypassPermissions` | Claude berjalan tanpa prompt izin apa pun, kecuali yang dipaksa oleh [ask rules](/id/permissions#manage-permissions) eksplisit; setara dengan `--dangerously-skip-permissions` di CLI. Aktifkan di Settings → Claude Code Anda di bawah "Allow bypass permissions mode". Hanya gunakan ini di kontainer atau VM yang disandbox. Admin enterprise dapat menonaktifkan opsi ini. |

86 86 

87Mode izin `dontAsk` hanya tersedia di [CLI](/id/permission-modes#allow-only-pre-approved-tools-with-dontask-mode).87Mode izin `dontAsk` hanya tersedia di [CLI](/id/permission-modes#allow-only-pre-approved-tools-with-dontask-mode).

88 88 


94 Mulai tugas kompleks di Plan mode sehingga Claude memetakan pendekatan sebelum membuat perubahan. Setelah Anda menyetujui rencana, beralih ke Auto accept edits atau Ask permissions untuk menjalankannya. Lihat [explore first, then plan, then code](/id/best-practices#explore-first-then-plan-then-code) untuk informasi lebih lanjut tentang alur kerja ini.94 Mulai tugas kompleks di Plan mode sehingga Claude memetakan pendekatan sebelum membuat perubahan. Setelah Anda menyetujui rencana, beralih ke Auto accept edits atau Ask permissions untuk menjalankannya. Lihat [explore first, then plan, then code](/id/best-practices#explore-first-then-plan-then-code) untuk informasi lebih lanjut tentang alur kerja ini.

95</Tip>95</Tip>

96 96 

97Sesi jarak jauh mendukung Auto accept edits dan Plan mode. Ask permissions tidak tersedia karena sesi jarak jauh secara otomatis menerima edit file secara default, dan Bypass permissions tidak tersedia karena lingkungan jarak jauh sudah disandbox.97Sesi cloud mendukung Accept edits, Plan mode, dan Auto mode. Accept edits sesuai dengan mode `default`: sesi cloud secara otomatis menyetujui edit file, jadi pemilih menampilkan Accept edits alih-alih Ask permissions. Bypass permissions tidak tersedia karena lingkungan cloud sudah disandbox.

98 98 

99Admin enterprise dapat membatasi permission modes mana yang tersedia. Lihat [enterprise configuration](#enterprise-configuration) untuk detail.99Admin enterprise dapat membatasi permission modes mana yang tersedia. Lihat [enterprise configuration](#enterprise-configuration) untuk detail.

100 100 


403 Hubungkan alat eksternal403 Hubungkan alat eksternal

404</h3>404</h3>

405 405 

406Untuk sesi lokal dan [SSH](#ssh-sessions), klik tombol **+** di sebelah kotak prompt dan pilih **Connectors** untuk menambahkan integrasi seperti Google Calendar, Slack, GitHub, Linear, Notion, dan lainnya. Anda dapat menambahkan connectors sebelum atau selama sesi. Tombol **+** tidak tersedia di sesi jarak jauh, tetapi [routines](/id/routines) mengonfigurasi connectors pada waktu pembuatan routine.406Untuk sesi lokal dan [SSH](#ssh-sessions), klik tombol **+** di sebelah kotak prompt dan pilih **Connectors** untuk menambahkan integrasi seperti Google Calendar, Slack, GitHub, Linear, Notion, dan lainnya. Anda dapat menambahkan connectors sebelum atau selama sesi. Tombol **+** tidak tersedia di sesi cloud, tetapi [routines](/id/routines) mengonfigurasi connectors pada waktu pembuatan routine.

407 407 

408Untuk mengelola atau memutuskan connectors, buka Settings → Connectors di aplikasi desktop, atau pilih **Manage connectors** dari menu Connectors di kotak prompt.408Untuk mengelola atau memutuskan connectors, buka Settings → Connectors di aplikasi desktop, atau pilih **Manage connectors** dari menu Connectors di kotak prompt.

409 409 


425 425 

426Untuk sesi lokal dan [SSH](#ssh-sessions), klik tombol **+** di sebelah kotak prompt dan pilih **Plugins** untuk melihat plugins yang diinstal dan skills mereka. Untuk menambahkan plugin, pilih **Add plugin** dari submenu untuk membuka plugin browser, yang menampilkan plugins yang tersedia dari [marketplaces](/id/plugin-marketplaces) yang dikonfigurasi termasuk marketplace Anthropic resmi. Pilih **Manage plugins** untuk mengaktifkan, menonaktifkan, atau mencopot plugins.426Untuk sesi lokal dan [SSH](#ssh-sessions), klik tombol **+** di sebelah kotak prompt dan pilih **Plugins** untuk melihat plugins yang diinstal dan skills mereka. Untuk menambahkan plugin, pilih **Add plugin** dari submenu untuk membuka plugin browser, yang menampilkan plugins yang tersedia dari [marketplaces](/id/plugin-marketplaces) yang dikonfigurasi termasuk marketplace Anthropic resmi. Pilih **Manage plugins** untuk mengaktifkan, menonaktifkan, atau mencopot plugins.

427 427 

428Plugins dapat dibatasi pada akun pengguna Anda, proyek tertentu, atau lokal saja. Jika organisasi Anda mengelola plugins secara terpusat, plugins tersebut tersedia di sesi desktop dengan cara yang sama seperti di CLI. Plugins tidak tersedia untuk sesi jarak jauh. Untuk referensi plugin lengkap termasuk membuat plugins Anda sendiri, lihat [plugins](/id/plugins).428Plugins dapat dibatasi pada akun pengguna Anda, proyek tertentu, atau lokal saja. Jika organisasi Anda mengelola plugins secara terpusat, plugins tersebut tersedia di sesi desktop dengan cara yang sama seperti di CLI. Plugins tidak tersedia untuk sesi cloud. Untuk referensi plugin lengkap termasuk membuat plugins Anda sendiri, lihat [plugins](/id/plugins).

429 429 

430<h3 id="configure-preview-servers">430<h3 id="configure-preview-servers">

431 Konfigurasikan server pratinjau431 Konfigurasikan server pratinjau


487| `program` | string | Skrip untuk dijalankan dengan `node`. Lihat [when to use `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |487| `program` | string | Skrip untuk dijalankan dengan `node`. Lihat [when to use `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |

488| `args` | string\[] | Argumen yang dilewatkan ke `program`. Hanya digunakan ketika `program` diatur |488| `args` | string\[] | Argumen yang dilewatkan ke `program`. Hanya digunakan ketika `program` diatur |

489 489 

490<a id="when-to-use-program-vs-runtimeexecutable" />

491 

490<h5 id="when-to-use-program-vs-runtimeexecutable">492<h5 id="when-to-use-program-vs-runtimeexecutable">

491 When to use `program` vs `runtimeExecutable`493 When to use `program` vs `runtimeExecutable`

492</h5>494</h5>


598 600 

599Untuk mengatur variabel lingkungan untuk sesi lokal dan dev server di platform apa pun, buka dropdown lingkungan di kotak prompt, arahkan ke **Local**, dan klik ikon gear untuk membuka editor lingkungan lokal. Variabel yang Anda simpan di sini disimpan terenkripsi di mesin Anda dan berlaku untuk setiap sesi lokal dan server pratinjau yang Anda mulai. Anda juga dapat menambahkan variabel ke kunci `env` di file `~/.claude/settings.json` Anda, meskipun ini hanya mencapai sesi Claude dan bukan dev server. Lihat [environment variables](/id/env-vars) untuk daftar lengkap variabel yang didukung.601Untuk mengatur variabel lingkungan untuk sesi lokal dan dev server di platform apa pun, buka dropdown lingkungan di kotak prompt, arahkan ke **Local**, dan klik ikon gear untuk membuka editor lingkungan lokal. Variabel yang Anda simpan di sini disimpan terenkripsi di mesin Anda dan berlaku untuk setiap sesi lokal dan server pratinjau yang Anda mulai. Anda juga dapat menambahkan variabel ke kunci `env` di file `~/.claude/settings.json` Anda, meskipun ini hanya mencapai sesi Claude dan bukan dev server. Lihat [environment variables](/id/env-vars) untuk daftar lengkap variabel yang didukung.

600 602 

601[Extended thinking](/id/model-config#extended-thinking) diaktifkan secara default, yang meningkatkan kinerja pada tugas penalaran kompleks tetapi menggunakan token tambahan. Untuk menonaktifkan pemikiran sepenuhnya, atur `MAX_THINKING_TOKENS` ke `0` di editor lingkungan lokal. Pada model dengan [adaptive reasoning](/id/model-config#adjust-effort-level), nilai `MAX_THINKING_TOKENS` apa pun yang lain diabaikan karena adaptive reasoning mengontrol kedalaman pemikiran sebagai gantinya. Pada Opus 4.6 dan Sonnet 4.6, atur `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` ke `1` untuk menggunakan anggaran pemikiran tetap; Opus 4.7 dan yang lebih baru selalu menggunakan adaptive reasoning dan tidak memiliki mode anggaran tetap.603[Extended thinking](/id/model-config#extended-thinking) diaktifkan secara default, yang meningkatkan kinerja pada tugas penalaran kompleks tetapi menggunakan token tambahan. Untuk menonaktifkan pemikiran, atur `MAX_THINKING_TOKENS` ke `0` di editor lingkungan lokal; ini tidak berpengaruh pada Fable 5, yang selalu menggunakan extended thinking. Pada [penyedia pihak ketiga](/id/third-party-integrations), `0` menghilangkan parameter `thinking` sebagai gantinya, dan model adaptive-reasoning mungkin masih berpikir. Pada model dengan [adaptive reasoning](/id/model-config#adjust-effort-level), nilai `MAX_THINKING_TOKENS` apa pun yang lain diabaikan karena adaptive reasoning mengontrol kedalaman pemikiran sebagai gantinya. Pada Opus 4.6 dan Sonnet 4.6, atur `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` ke `1` untuk menggunakan anggaran pemikiran tetap; Opus 4.7 dan yang lebih baru selalu menggunakan adaptive reasoning dan tidak memiliki mode anggaran tetap.

602 604 

603<h3 id="remote-sessions">605<h3 id="cloud-sessions">

604 Remote sessions606 Cloud sessions

605</h3>607</h3>

606 608 

607Sesi jarak jauh terus berlanjut di latar belakang bahkan jika Anda menutup aplikasi. Penggunaan dihitung terhadap [batas rencana langganan](/id/costs) Anda tanpa biaya komputasi terpisah.609Sesi cloud terus berlanjut di latar belakang bahkan jika Anda menutup aplikasi. Penggunaan dihitung terhadap [batas rencana langganan](/id/costs) Anda tanpa biaya komputasi terpisah.

608 610 

609Anda dapat membuat lingkungan cloud kustom dengan tingkat akses jaringan dan variabel lingkungan yang berbeda. Pilih dropdown lingkungan saat memulai sesi jarak jauh dan pilih **Add environment**. Lihat [cloud environment](/id/claude-code-on-the-web#the-cloud-environment) untuk detail tentang mengonfigurasi akses jaringan dan variabel lingkungan.611Anda dapat membuat lingkungan cloud kustom dengan tingkat akses jaringan dan variabel lingkungan yang berbeda. Pilih dropdown lingkungan saat memulai sesi cloud dan pilih **Add environment**. Lihat [cloud environment](/id/claude-code-on-the-web#the-cloud-environment) untuk detail tentang mengonfigurasi akses jaringan dan variabel lingkungan.

610 612 

611<h3 id="ssh-sessions">613<h3 id="ssh-sessions">

612 SSH sessions614 SSH sessions


710 712 

711Tim IT dapat mengelola aplikasi desktop melalui MDM di macOS atau group policy di Windows. Kebijakan yang tersedia termasuk mengaktifkan atau menonaktifkan fitur Claude Code, mengontrol auto-updates, dan menetapkan URL penyebaran kustom.713Tim IT dapat mengelola aplikasi desktop melalui MDM di macOS atau group policy di Windows. Kebijakan yang tersedia termasuk mengaktifkan atau menonaktifkan fitur Claude Code, mengontrol auto-updates, dan menetapkan URL penyebaran kustom.

712 714 

713* **macOS**: konfigurasikan melalui domain preferensi `com.anthropic.Claude` menggunakan alat seperti Jamf atau Kandji715* **macOS**: konfigurasikan melalui domain preferensi `com.anthropic.claudefordesktop` menggunakan alat seperti Jamf atau Kandji

714* **Windows**: konfigurasikan melalui registri di `SOFTWARE\Policies\Claude`716* **Windows**: konfigurasikan melalui registri di `SOFTWARE\Policies\Claude`

715 717 

716<h3 id="authentication-and-sso">718<h3 id="authentication-and-sso">


723 Penanganan data725 Penanganan data

724</h3>726</h3>

725 727 

726Claude Code memproses kode Anda secara lokal dalam sesi lokal atau pada infrastruktur cloud Anthropic dalam sesi jarak jauh. Percakapan dan konteks kode dikirim ke API Anthropic untuk diproses. Lihat [data handling](/id/data-usage) untuk detail tentang retensi data, privasi, dan kepatuhan.728Claude Code memproses kode Anda secara lokal dalam sesi lokal atau pada infrastruktur cloud Anthropic dalam sesi cloud. Percakapan dan konteks kode dikirim ke API Anthropic untuk diproses. Lihat [data handling](/id/data-usage) untuk detail tentang retensi data, privasi, dan kepatuhan.

727 729 

728<h3 id="deployment">730<h3 id="deployment">

729 Penyebaran731 Penyebaran


762| `--resume`, `--continue` | Klik sesi di sidebar |764| `--resume`, `--continue` | Klik sesi di sidebar |

763| `--permission-mode` | Pemilih mode di sebelah tombol kirim |765| `--permission-mode` | Pemilih mode di sebelah tombol kirim |

764| `--dangerously-skip-permissions` | Bypass permissions mode. Aktifkan di Settings → Claude Code → "Allow bypass permissions mode". Admin enterprise dapat menonaktifkan pengaturan ini. |766| `--dangerously-skip-permissions` | Bypass permissions mode. Aktifkan di Settings → Claude Code → "Allow bypass permissions mode". Admin enterprise dapat menonaktifkan pengaturan ini. |

765| `--add-dir` | Tambahkan beberapa repo dengan tombol **+** di sesi jarak jauh |767| `--add-dir` | Tambahkan beberapa repo dengan tombol **+** di sesi cloud |

766| `--allowedTools`, `--disallowedTools` | Tidak ada setara per-sesi. Aturan izin di [file pengaturan](/id/settings) masih berlaku. |768| `--allowedTools`, `--disallowedTools` | Tidak ada setara per-sesi. Aturan izin di [file pengaturan](/id/settings) masih berlaku. |

767| `--verbose` | [Mode tampilan verbose](#switch-view-modes) di dropdown tampilan Transcript |769| `--verbose` | [Mode tampilan verbose](#switch-view-modes) di dropdown tampilan Transcript |

768| `--print`, `--output-format` | Tidak tersedia. Desktop hanya interaktif. |770| `--print`, `--output-format` | Tidak tersedia. Desktop hanya interaktif. |


779* **[MCP servers](/id/mcp)** yang dikonfigurasi di `~/.claude.json` atau `.mcp.json` bekerja di keduanya781* **[MCP servers](/id/mcp)** yang dikonfigurasi di `~/.claude.json` atau `.mcp.json` bekerja di keduanya

780* **[Hooks](/id/hooks)** dan **[skills](/id/skills)** yang ditentukan dalam pengaturan berlaku untuk keduanya782* **[Hooks](/id/hooks)** dan **[skills](/id/skills)** yang ditentukan dalam pengaturan berlaku untuk keduanya

781* **[Settings](/id/settings)** di `~/.claude.json` dan `~/.claude/settings.json` dibagikan. Aturan izin, alat yang diizinkan, dan pengaturan lainnya di `settings.json` berlaku untuk sesi Desktop.783* **[Settings](/id/settings)** di `~/.claude.json` dan `~/.claude/settings.json` dibagikan. Aturan izin, alat yang diizinkan, dan pengaturan lainnya di `settings.json` berlaku untuk sesi Desktop.

782* **Models**: Sonnet, Opus, dan Haiku tersedia di keduanya. Di Desktop, pilih model dari dropdown di sebelah tombol kirim. Anda dapat mengubah model selama sesi dari dropdown yang sama.784* **Models**: model yang sama [models](/id/model-config#available-models) tersedia di keduanya. Di Desktop, pilih model dari dropdown di sebelah tombol kirim. Anda dapat mengubah model selama sesi dari dropdown yang sama.

783 785 

784<Note>786<Note>

785 **MCP servers dari aplikasi chat Claude Desktop**: aplikasi Desktop memuat MCP servers dari `claude_desktop_config.json` ke dalam sesi tab Code, bersama dengan servers dari `~/.claude.json` dan `.mcp.json`. Server yang ditentukan di `claude_desktop_config.json` tersedia di permukaan chat Desktop dan tab Code.787 **MCP servers dari aplikasi chat Claude Desktop**: aplikasi Desktop memuat MCP servers dari `claude_desktop_config.json` ke dalam sesi tab Code, bersama dengan servers dari `~/.claude.json` dan `.mcp.json`. Server yang ditentukan di `claude_desktop_config.json` tersedia di permukaan chat Desktop dan tab Code.


794Tabel ini membandingkan kemampuan inti antara CLI dan Desktop. Untuk daftar lengkap flag CLI, lihat [referensi CLI](/id/cli-reference).796Tabel ini membandingkan kemampuan inti antara CLI dan Desktop. Untuk daftar lengkap flag CLI, lihat [referensi CLI](/id/cli-reference).

795 797 

796| Fitur | CLI | Desktop |798| Fitur | CLI | Desktop |

797| ----------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |799| ----------------------------------------------------- | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

798| Mode izin | Semua mode termasuk `dontAsk` | Tanyakan izin, Terima otomatis edit, Plan Mode, Auto, dan Bypass permissions via Settings |800| Mode izin | Semua mode termasuk `dontAsk` | Tanyakan izin, Terima otomatis edit, Plan Mode, Auto, dan Bypass permissions via Settings |

799| `--dangerously-skip-permissions` | Flag CLI | Bypass permissions mode. Aktifkan di Settings → Claude Code → "Allow bypass permissions mode" |801| `--dangerously-skip-permissions` | Flag CLI | Bypass permissions mode. Aktifkan di Settings → Claude Code → "Allow bypass permissions mode" |

800| [Penyedia pihak ketiga](/id/third-party-integrations) | Bedrock, Vertex, Foundry | API Anthropic secara default. Penerapan enterprise dapat mengonfigurasi Vertex AI dan penyedia gateway. Lihat [panduan konfigurasi enterprise](https://support.claude.com/en/articles/12622667-enterprise-configuration). |802| [Penyedia pihak ketiga](/id/third-party-integrations) | Bedrock, Vertex AI, Foundry | API Anthropic secara default. Penerapan enterprise dapat mengonfigurasi Vertex AI dan penyedia gateway. Lihat [panduan konfigurasi enterprise](https://support.claude.com/en/articles/12622667-enterprise-configuration). Untuk menjalankan tab Code di Bedrock, Vertex AI, Foundry, atau gateway LLM yang di-host sendiri, lihat [Cowork on 3P research preview](https://claude.com/docs/cowork/3p/overview). |

801| [MCP servers](/id/mcp) | Konfigurasikan di file pengaturan | UI Connectors untuk sesi lokal dan SSH, atau file pengaturan |803| [MCP servers](/id/mcp) | Konfigurasikan di file pengaturan | UI Connectors untuk sesi lokal dan SSH, atau file pengaturan |

802| [Plugins](/id/plugins) | Perintah `/plugin` | UI plugin manager |804| [Plugins](/id/plugins) | Perintah `/plugin` | UI plugin manager |

803| File @mention | Berbasis teks | Dengan autocomplete; hanya sesi lokal dan SSH |805| File @mention | Berbasis teks | Dengan autocomplete; hanya sesi lokal dan SSH |


809| Integrasi Dispatch | Tidak tersedia | [Sesi Dispatch](#sessions-from-dispatch) di sidebar |811| Integrasi Dispatch | Tidak tersedia | [Sesi Dispatch](#sessions-from-dispatch) di sidebar |

810| Scripting dan otomasi | [`--print`](/id/cli-reference), [Agent SDK](/id/headless) | Tidak tersedia |812| Scripting dan otomasi | [`--print`](/id/cli-reference), [Agent SDK](/id/headless) | Tidak tersedia |

811 813 

812<h3 id="what-s-not-available-in-desktop">814<h3 id="whats-not-available-in-desktop">

813 Apa yang tidak tersedia di Desktop815 Apa yang tidak tersedia di Desktop

814</h3>816</h3>

815 817 

816Fitur berikut hanya tersedia di CLI atau ekstensi VS Code:818Fitur berikut hanya tersedia di CLI atau ekstensi VS Code, kecuali jika dicatat:

817 819 

818* **Penyedia pihak ketiga**: Desktop terhubung ke API Anthropic secara default. Penerapan enterprise dapat mengonfigurasi Vertex AI dan penyedia gateway melalui [pengaturan terkelola](https://support.claude.com/en/articles/12622667-enterprise-configuration). Untuk Bedrock atau Foundry, gunakan [CLI](/id/quickstart).820* **Penyedia pihak ketiga**: Desktop terhubung ke API Anthropic secara default. Penerapan enterprise dapat mengonfigurasi Vertex AI dan penyedia gateway melalui [pengaturan terkelola](https://support.claude.com/en/articles/12622667-enterprise-configuration). Untuk Bedrock atau Foundry di CLI, lihat [quickstart](/id/quickstart). Sebagai pengecualian terhadap bagian di atas, [Cowork on 3P research preview](https://claude.com/docs/cowork/3p/overview) menjalankan tab Code di Bedrock, Vertex AI, Foundry, atau gateway LLM yang di-host sendiri.

819* **Linux**: aplikasi desktop hanya tersedia di macOS dan Windows. Di Linux, gunakan [CLI](/id/quickstart).821* **Linux**: aplikasi desktop hanya tersedia di macOS dan Windows. Di Linux, gunakan [CLI](/id/quickstart).

820* **Saran kode inline**: Desktop tidak menyediakan saran gaya autocomplete. Ini bekerja melalui prompt percakapan dan perubahan kode eksplisit.822* **Saran kode inline**: Desktop tidak menyediakan saran gaya autocomplete. Ini bekerja melalui prompt percakapan dan perubahan kode eksplisit.

821* **Tim agent**: sesi Claude Code paralel yang saling berkirim pesan tersedia di [CLI](/id/agent-teams), bukan di Desktop. Untuk pekerjaan multi-agent di dalam satu sesi, gunakan [dynamic workflows](/id/workflows), yang berjalan di Desktop.823* **Tim agent**: sesi Claude Code paralel yang saling berkirim pesan tersedia di [CLI](/id/agent-teams), bukan di Desktop. Untuk pekerjaan multi-agent di dalam satu sesi, gunakan [dynamic workflows](/id/workflows), yang berjalan di Desktop.


885 887 

886Jika toggle MCP server tidak merespons atau server gagal terhubung di Windows, periksa bahwa server dikonfigurasi dengan benar di pengaturan Anda, mulai ulang aplikasi, verifikasi proses server berjalan di Task Manager, dan tinjau log server untuk kesalahan koneksi.888Jika toggle MCP server tidak merespons atau server gagal terhubung di Windows, periksa bahwa server dikonfigurasi dengan benar di pengaturan Anda, mulai ulang aplikasi, verifikasi proses server berjalan di Task Manager, dan tinjau log server untuk kesalahan koneksi.

887 889 

888<h3 id="app-won-t-quit">890<h3 id="app-wont-quit">

889 App won't quit891 App won't quit

890</h3>892</h3>

891 893 


899* **PATH not updated after install**: buka jendela terminal baru. Pembaruan PATH hanya berlaku untuk sesi terminal baru.901* **PATH not updated after install**: buka jendela terminal baru. Pembaruan PATH hanya berlaku untuk sesi terminal baru.

900* **Concurrent installation error**: jika Anda melihat kesalahan tentang instalasi lain sedang berlangsung tetapi tidak ada, coba jalankan installer sebagai Administrator.902* **Concurrent installation error**: jika Anda melihat kesalahan tentang instalasi lain sedang berlangsung tetapi tidak ada, coba jalankan installer sebagai Administrator.

901 903 

902<h3 id="branch-doesn-t-exist-yet-when-opening-in-cli">904<h3 id="branch-doesnt-exist-yet-when-opening-in-cli">

903 "Branch doesn't exist yet" when opening in CLI905 "Branch doesn't exist yet" when opening in CLI

904</h3>906</h3>

905 907 

906Sesi jarak jauh dapat membuat cabang yang tidak ada di mesin lokal Anda. Klik nama cabang di toolbar sesi untuk menyalinnya, kemudian ambil secara lokal:908Sesi cloud dapat membuat cabang yang tidak ada di mesin lokal Anda. Klik nama cabang di toolbar sesi untuk menyalinnya, kemudian ambil secara lokal:

907 909 

908```bash theme={null}910```bash theme={null}

909git fetch origin <branch-name>911git fetch origin <branch-name>


914 Still stuck?916 Still stuck?

915</h3>917</h3>

916 918 

917* Cari atau laporkan bug di [GitHub Issues](https://github.com/anthropics/claude-code/issues)919* Buka Help Get Support di aplikasi desktop, atau kunjungi [Claude support center](https://support.claude.com/) secara langsung

918* Kunjungi [Claude support center](https://support.claude.com/)920* Untuk masalah yang juga muncul kembali di CLI `claude` standalone, cari atau laporkan bug di [GitHub Issues](https://github.com/anthropics/claude-code/issues)

919 921 

920Saat melaporkan bug, sertakan versi aplikasi desktop Anda, sistem operasi Anda, pesan kesalahan yang tepat, dan log yang relevan. Di macOS, periksa Console.app. Di Windows, periksa Event Viewer → Windows Logs → Application.922Saat melaporkan masalah, sertakan versi aplikasi desktop Anda, sistem operasi Anda, pesan kesalahan yang tepat, dan log yang relevan. Di macOS, periksa Console.app. Di Windows, periksa Event Viewer → Windows Logs → Application.

Details

66 66 

67 Anda juga dapat memilih:67 Anda juga dapat memilih:

68 68 

69 * **Remote**: Jalankan sesi pada infrastruktur cloud Anthropic yang berlanjut bahkan jika Anda menutup aplikasi. Sesi remote menggunakan infrastruktur yang sama dengan [Claude Code di web](/id/claude-code-on-the-web).69 * **Remote**: Jalankan sesi pada infrastruktur cloud Anthropic yang berlanjut bahkan jika Anda menutup aplikasi. Sesi cloud menggunakan infrastruktur yang sama dengan [Claude Code di web](/id/claude-code-on-the-web).

70 * **SSH**: Terhubung ke mesin jarak jauh melalui SSH, seperti server Anda sendiri, VM cloud, atau dev containers. Desktop menginstal Claude Code di mesin jarak jauh secara otomatis saat pertama kali Anda terhubung.70 * **SSH**: Terhubung ke mesin jarak jauh melalui SSH, seperti server Anda sendiri, VM cloud, atau dev containers. Desktop menginstal Claude Code di mesin jarak jauh secara otomatis saat pertama kali Anda terhubung.

71 </Step>71 </Step>

72 72 

73 <Step title="Pilih model">73 <Step title="Pilih model">

74 Pilih model dari dropdown di sebelah tombol kirim. Lihat [models](/id/model-config#available-models) untuk perbandingan Opus, Sonnet, dan Haiku. Anda dapat mengubah model nanti dari dropdown yang sama.74 Pilih model dari dropdown di sebelah tombol kirim. Lihat [models](/id/model-config#available-models) untuk perbandingan model yang tersedia. Anda dapat mengubah model nanti dari dropdown yang sama.

75 </Step>75 </Step>

76 76 

77 <Step title="Beri tahu Claude apa yang harus dilakukan">77 <Step title="Beri tahu Claude apa yang harus dilakukan">


81 * `Add tests for the main function`81 * `Add tests for the main function`

82 * `Create a CLAUDE.md with instructions for this codebase`82 * `Create a CLAUDE.md with instructions for this codebase`

83 83 

84 Sebuah [session](/id/desktop#work-in-parallel-with-sessions) adalah percakapan dengan Claude tentang kode Anda. Setiap sesi melacak konteks dan perubahannya sendiri, sehingga Anda dapat bekerja pada beberapa tugas tanpa saling mengganggu.84 Sebuah [session](/id/desktop#work-in-parallel-with-sessions) adalah percakapan dengan Claude tentang kode Anda. Setiap sesi melacak konteks dan perubahan sendirinya, sehingga Anda dapat bekerja pada beberapa tugas tanpa saling mengganggu.

85 </Step>85 </Step>

86 86 

87 <Step title="Tinjau dan terima perubahan">87 <Step title="Tinjau dan terima perubahan">


129 129 

130Desktop menjalankan mesin yang sama dengan CLI dengan antarmuka grafis. Anda dapat menjalankan keduanya secara bersamaan pada proyek yang sama, dan mereka berbagi konfigurasi (file CLAUDE.md, MCP servers, hooks, skills, dan settings). Untuk perbandingan lengkap fitur, setara flag, dan apa yang tidak tersedia di Desktop, lihat [Perbandingan CLI](/id/desktop#coming-from-the-cli).130Desktop menjalankan mesin yang sama dengan CLI dengan antarmuka grafis. Anda dapat menjalankan keduanya secara bersamaan pada proyek yang sama, dan mereka berbagi konfigurasi (file CLAUDE.md, MCP servers, hooks, skills, dan settings). Untuk perbandingan lengkap fitur, setara flag, dan apa yang tidak tersedia di Desktop, lihat [Perbandingan CLI](/id/desktop#coming-from-the-cli).

131 131 

132<h2 id="what-s-next">132<h2 id="whats-next">

133 Apa selanjutnya133 Apa selanjutnya

134</h2>134</h2>

135 135 

devcontainer.md +2 −2

Details

66 Ganti baris `image` dengan citra dasar proyek Anda atau hapus jika file yang ada menggunakan Dockerfile.66 Ganti baris `image` dengan citra dasar proyek Anda atau hapus jika file yang ada menggunakan Dockerfile.

67 </Step>67 </Step>

68 68 

69 <Step title="Rebuild kontainer">69 <Step title="Bangun kembali kontainer">

70 Buka Command Palette VS Code dengan `Cmd+Shift+P` di Mac atau `Ctrl+Shift+P` di Windows dan Linux, dan jalankan **Dev Containers: Rebuild Container**.70 Buka Command Palette VS Code dengan `Cmd+Shift+P` di Mac atau `Ctrl+Shift+P` di Windows dan Linux, dan jalankan **Dev Containers: Rebuild Container**.

71 71 

72 Untuk alat lain, ikuti tindakan rebuild alat tersebut: lihat [rebuilding di GitHub Codespaces](https://docs.github.com/en/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace), [Dev Containers CLI](https://github.com/devcontainers/cli), atau dokumentasi dev container IDE Anda.72 Untuk alat lain, ikuti tindakan rebuild alat tersebut: lihat [membangun kembali di GitHub Codespaces](https://docs.github.com/en/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace), [Dev Containers CLI](https://github.com/devcontainers/cli), atau dokumentasi dev container IDE Anda.

73 </Step>73 </Step>

74 74 

75 <Step title="Masuk ke Claude Code">75 <Step title="Masuk ke Claude Code">

Details

169 * **Marketplaces**: tambah, hapus, atau perbarui marketplace yang ditambahkan169 * **Marketplaces**: tambah, hapus, atau perbarui marketplace yang ditambahkan

170 * **Errors**: lihat kesalahan pemuatan plugin apa pun170 * **Errors**: lihat kesalahan pemuatan plugin apa pun

171 171 

172 Buka tab **Discover** untuk melihat plugin dari marketplace yang baru saja Anda tambahkan. {/* min-version: 2.1.154 */}Plugin yang ditandai sebagai relevan dengan direktori kerja Anda saat ini disematkan di bagian atas dengan label **suggested for this directory**.172 Buka tab **Discover** untuk melihat plugin dari marketplace yang baru saja Anda tambahkan. {/* min-version: 2.1.154 */}Ketika administrator Anda telah memasukkan marketplace ke dalam daftar putih melalui pengaturan terkelola [`pluginSuggestionMarketplaces`](/id/settings#available-settings), plugin yang ditandai sebagai relevan dengan direktori kerja Anda saat ini disematkan di bagian atas dengan label **suggested for this directory**.

173 </Step>173 </Step>

174 174 

175 <Step title="Instal plugin">175 <Step title="Instal plugin">


328* ketik untuk memfilter berdasarkan nama atau deskripsi plugin328* ketik untuk memfilter berdasarkan nama atau deskripsi plugin

329* tekan Enter untuk membuka tampilan detail plugin dan mengaktifkan, menonaktifkan, atau menghapusnya329* tekan Enter untuk membuka tampilan detail plugin dan mengaktifkan, menonaktifkan, atau menghapusnya

330 330 

331Tampilan detail menunjukkan komponen yang disumbangkan plugin: perintah, skills, agen, hooks, server MCP, dan server LSP. Inventaris yang sama tersedia dari baris perintah dengan `claude plugin details`.

332 

331Saat Anda menginstal plugin yang mendeklarasikan dependensi, output instalasi mencantumkan dependensi mana yang diinstal secara otomatis bersama dengannya.333Saat Anda menginstal plugin yang mendeklarasikan dependensi, output instalasi mencantumkan dependensi mana yang diinstal secara otomatis bersama dengannya.

332 334 

333Anda juga dapat mengelola plugin dengan perintah langsung.335Anda juga dapat mengelola plugin dengan perintah langsung.

334 336 

337Daftar plugin yang diinstal tanpa membuka menu:

338 

339```shell theme={null}

340/plugin list

341```

342 

343Lewatkan `--enabled` atau `--disabled` untuk menampilkan hanya plugin dalam status tersebut.

344 

335Nonaktifkan plugin tanpa menghapusnya:345Nonaktifkan plugin tanpa menghapusnya:

336 346 

337```shell theme={null}347```shell theme={null}


369 379 

370Claude Code memuat ulang semua plugin aktif dan menampilkan hitungan untuk plugin, skills, agen, hooks, server MCP plugin, dan server LSP plugin.380Claude Code memuat ulang semua plugin aktif dan menampilkan hitungan untuk plugin, skills, agen, hooks, server MCP plugin, dan server LSP plugin.

371 381 

372Memuat ulang memiliki biaya token pada permintaan berikutnya: komponen yang baru dimuat mengumumkan diri mereka dalam konten yang ditambahkan ke percakapan, sementara riwayat yang ada masih membaca dari prompt cache. Plugin yang menyediakan server MCP memerlukan biaya lebih ketika alatnya tidak ditangguhkan oleh [pencarian alat plugin](/id/mcp#scale-with-mcp-tool-search): perubahan membatalkan cache dan permintaan berikutnya membaca ulang seluruh percakapan. Lihat [mengaktifkan atau menonaktifkan plugin](/id/prompt-caching#enabling-or-disabling-a-plugin) untuk detail.382Memuat ulang memiliki biaya token pada permintaan berikutnya: komponen yang baru dimuat mengumumkan diri mereka dalam konten yang ditambahkan ke percakapan, sementara riwayat yang ada masih membaca dari prompt cache. Plugin yang menyediakan server MCP memerlukan biaya lebih ketika alatnya tidak ditangguhkan oleh [pencarian alat](/id/mcp#scale-with-mcp-tool-search): perubahan membatalkan cache dan permintaan berikutnya membaca ulang seluruh percakapan. {/* min-version: 2.1.163 */}Dalam hal itu `/reload-plugins` menampilkan peringatan dan tidak menerapkan reload; lewatkan `--force` untuk menerapkan bagaimanapun. Lihat [mengaktifkan atau menonaktifkan plugin](/id/prompt-caching#enabling-or-disabling-a-plugin) untuk detail.

373 383 

374<h2 id="manage-marketplaces">384<h2 id="manage-marketplaces">

375 Kelola marketplace385 Kelola marketplace


510* **False positive diagnostics in monorepos**: language server mungkin melaporkan kesalahan impor yang tidak terselesaikan untuk paket internal jika workspace tidak dikonfigurasi dengan benar. Ini tidak mempengaruhi kemampuan Claude untuk mengedit kode.520* **False positive diagnostics in monorepos**: language server mungkin melaporkan kesalahan impor yang tidak terselesaikan untuk paket internal jika workspace tidak dikonfigurasi dengan benar. Ini tidak mempengaruhi kemampuan Claude untuk mengedit kode.

511 521 

512<h2 id="next-steps">522<h2 id="next-steps">

513 Next steps523 Langkah selanjutnya

514</h2>524</h2>

515 525 

516* **Build your own plugins**: Lihat [Plugins](/id/plugins) untuk membuat skills, agen, dan hooks526* **Build your own plugins**: Lihat [Plugins](/id/plugins) untuk membuat skills, agen, dan hooks

env-vars.md +37 −22

Details

73File yang Anda pilih mengontrol siapa variabel berlaku untuk:73File yang Anda pilih mengontrol siapa variabel berlaku untuk:

74 74 

75| File | Berlaku untuk |75| File | Berlaku untuk |

76| :---------------------------- | :-------------------------------------------------------------- |76| :---------------------------- | :---------------------------------------------------------------------------------------- |

77| `~/.claude/settings.json` | Anda, di setiap proyek |77| `~/.claude/settings.json` | Anda, di setiap proyek |

78| `.claude/settings.json` | Semua orang yang bekerja di proyek, diperiksa ke kontrol sumber |78| `.claude/settings.json` | Semua orang yang bekerja di proyek, diperiksa ke kontrol sumber |

79| `.claude/settings.local.json` | Anda, di proyek ini saja, tidak diperiksa masuk |79| `.claude/settings.local.json` | Anda, di proyek ini saja (tambahkan ke gitignore Anda jika Anda membuatnya dengan tangan) |

80| Pengaturan terkelola | Semua orang di organisasi Anda, digunakan oleh admin |80| Pengaturan terkelola | Semua orang di organisasi Anda, digunakan oleh admin |

81 81 

82Lihat [File pengaturan](/id/settings#settings-files) untuk mengetahui di mana setiap file berada dan [Prioritas pengaturan](/id/settings#settings-precedence) untuk mengetahui bagaimana mereka bergabung saat lebih dari satu mengatur variabel yang sama.82Lihat [File pengaturan](/id/settings#settings-files) untuk mengetahui di mana setiap file berada dan [Prioritas pengaturan](/id/settings#settings-precedence) untuk mengetahui bagaimana mereka bergabung saat lebih dari satu mengatur variabel yang sama.


96</h2>96</h2>

97 97 

98| Variabel | Tujuan |98| Variabel | Tujuan |

99| :------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |99| :------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

100| `ANTHROPIC_API_KEY` | Kunci API yang dikirim sebagai header `X-Api-Key`. Saat diatur, kunci ini digunakan alih-alih langganan Claude Pro, Max, Team, atau Enterprise Anda bahkan jika Anda sudah masuk. Dalam mode non-interaktif (`-p`), kunci selalu digunakan saat ada. Dalam mode interaktif, Anda diminta untuk menyetujui kunci sekali sebelum mengganti langganan Anda. Untuk menggunakan langganan Anda sebagai gantinya, jalankan `unset ANTHROPIC_API_KEY` |100| `ANTHROPIC_API_KEY` | Kunci API yang dikirim sebagai header `X-Api-Key`. Saat diatur, kunci ini digunakan alih-alih langganan Claude Pro, Max, Team, atau Enterprise Anda bahkan jika Anda sudah masuk. Dalam mode non-interaktif (`-p`), kunci selalu digunakan saat ada. Dalam mode interaktif, Anda diminta untuk menyetujui kunci sekali sebelum mengganti langganan Anda. Untuk menggunakan langganan Anda sebagai gantinya, jalankan `unset ANTHROPIC_API_KEY` |

101| `ANTHROPIC_AUTH_TOKEN` | Nilai kustom untuk header `Authorization` (nilai yang Anda atur di sini akan diawali dengan `Bearer `) |101| `ANTHROPIC_AUTH_TOKEN` | Nilai kustom untuk header `Authorization` (nilai yang Anda atur di sini akan diawali dengan `Bearer `) |

102| `ANTHROPIC_AWS_API_KEY` | Kunci API Workspace untuk [Claude Platform on AWS](/id/claude-platform-on-aws), dihasilkan di AWS Console. Dikirim sebagai `x-api-key` dan mengambil prioritas atas AWS SigV4 |102| `ANTHROPIC_AWS_API_KEY` | Kunci API Workspace untuk [Claude Platform on AWS](/id/claude-platform-on-aws), dihasilkan di AWS Console. Dikirim sebagai `x-api-key` dan mengambil prioritas atas AWS SigV4 |


112| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Deskripsi tampilan untuk entri model kustom di pemilih `/model`. Default ke `Custom model (<model-id>)` saat tidak diatur |112| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Deskripsi tampilan untuk entri model kustom di pemilih `/model`. Default ke `Custom model (<model-id>)` saat tidak diatur |

113| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nama tampilan untuk entri model kustom di pemilih `/model`. Default ke ID model saat tidak diatur |113| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nama tampilan untuk entri model kustom di pemilih `/model`. Default ke ID model saat tidak diatur |

114| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Lihat [Konfigurasi Model](/id/model-config#customize-pinned-model-display-and-capabilities) |114| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Lihat [Konfigurasi Model](/id/model-config#customize-pinned-model-display-and-capabilities) |

115| `ANTHROPIC_DEFAULT_FABLE_MODEL` | Lihat [Konfigurasi Model](/id/model-config#environment-variables) |

116| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | Lihat [Konfigurasi Model](/id/model-config#customize-pinned-model-display-and-capabilities) |

117| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | Lihat [Konfigurasi Model](/id/model-config#customize-pinned-model-display-and-capabilities) |

118| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | Lihat [Konfigurasi Model](/id/model-config#customize-pinned-model-display-and-capabilities) |

115| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Lihat [Konfigurasi Model](/id/model-config#environment-variables) |119| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Lihat [Konfigurasi Model](/id/model-config#environment-variables) |

116| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Lihat [Konfigurasi Model](/id/model-config#customize-pinned-model-display-and-capabilities) |120| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Lihat [Konfigurasi Model](/id/model-config#customize-pinned-model-display-and-capabilities) |

117| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Lihat [Konfigurasi Model](/id/model-config#customize-pinned-model-display-and-capabilities) |121| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Lihat [Konfigurasi Model](/id/model-config#customize-pinned-model-display-and-capabilities) |


133| `ANTHROPIC_VERTEX_BASE_URL` | Ganti URL titik akhir Vertex AI. Gunakan untuk titik akhir Vertex kustom atau saat merutekan melalui [gateway LLM](/id/llm-gateway). Lihat [Google Vertex AI](/id/google-vertex-ai) |137| `ANTHROPIC_VERTEX_BASE_URL` | Ganti URL titik akhir Vertex AI. Gunakan untuk titik akhir Vertex kustom atau saat merutekan melalui [gateway LLM](/id/llm-gateway). Lihat [Google Vertex AI](/id/google-vertex-ai) |

134| `ANTHROPIC_VERTEX_PROJECT_ID` | ID proyek GCP untuk permintaan Vertex AI. Ditimpa oleh `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT`, atau proyek dalam file kredensial `GOOGLE_APPLICATION_CREDENTIALS` Anda. Lihat [Google Vertex AI](/id/google-vertex-ai) |138| `ANTHROPIC_VERTEX_PROJECT_ID` | ID proyek GCP untuk permintaan Vertex AI. Ditimpa oleh `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT`, atau proyek dalam file kredensial `GOOGLE_APPLICATION_CREDENTIALS` Anda. Lihat [Google Vertex AI](/id/google-vertex-ai) |

135| `ANTHROPIC_WORKSPACE_ID` | ID Workspace untuk [workload identity federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Atur ini saat aturan federasi Anda dibatasi ke lebih dari satu workspace sehingga pertukaran token tahu workspace mana yang ditargetkan |139| `ANTHROPIC_WORKSPACE_ID` | ID Workspace untuk [workload identity federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Atur ini saat aturan federasi Anda dibatasi ke lebih dari satu workspace sehingga pertukaran token tahu workspace mana yang ditargetkan |

140| `API_FORCE_IDLE_TIMEOUT` | {/* min-version: 2.1.169 */}Ganti waktu tunggu idle 5 menit yang membatalkan respons model streaming saat tidak ada byte yang tiba. Atur ke `0` untuk menonaktifkan waktu tunggu, misalnya saat [gateway](/id/llm-gateway) lambat atau model lokal berhenti lebih lama dari 5 menit di antara chunk. Atur ke `1` untuk menjaga waktu tunggu pada setiap penyedia. Saat tidak diatur, waktu tunggu tidak aktif pada koneksi API Anthropic langsung dan [Claude Platform on AWS](/id/claude-platform-on-aws), di mana watchdog aliran byte tingkat Claude Code sendiri berjalan, dan aktif pada setiap penyedia lain, termasuk [Vertex AI](/id/google-vertex-ai), [Foundry](/id/microsoft-foundry), [Mantle](/id/amazon-bedrock#use-the-mantle-endpoint), [Bedrock](/id/amazon-bedrock), dan koneksi gateway, sehingga aliran yang macet membatalkan alih-alih hang. Sejak v2.1.169 |

136| `API_TIMEOUT_MS` | Waktu tunggu untuk permintaan API dalam milidetik (default: 600000, atau 10 menit; maksimum: 2147483647). Tingkatkan ini saat permintaan habis waktu pada jaringan lambat atau saat merutekan melalui proxy. Nilai di atas maksimum akan meluap timer yang mendasar dan menyebabkan permintaan gagal segera |141| `API_TIMEOUT_MS` | Waktu tunggu untuk permintaan API dalam milidetik (default: 600000, atau 10 menit; maksimum: 2147483647). Tingkatkan ini saat permintaan habis waktu pada jaringan lambat atau saat merutekan melalui proxy. Nilai di atas maksimum akan meluap timer yang mendasar dan menyebabkan permintaan gagal segera |

137| `AWS_BEARER_TOKEN_BEDROCK` | Kunci API Bedrock untuk autentikasi (lihat [Kunci API Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |142| `AWS_BEARER_TOKEN_BEDROCK` | Kunci API Bedrock untuk autentikasi (lihat [Kunci API Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

138| `BASH_DEFAULT_TIMEOUT_MS` | Waktu tunggu default untuk perintah bash yang berjalan lama (default: 120000, atau 2 menit) |143| `BASH_DEFAULT_TIMEOUT_MS` | Waktu tunggu default untuk perintah bash yang berjalan lama (default: 120000, atau 2 menit) |

139| `BASH_MAX_OUTPUT_LENGTH` | Jumlah maksimal karakter dalam keluaran bash sebelum keluaran lengkap disimpan ke file dan Claude menerima jalur ditambah pratinjau singkat. Lihat [Perilaku alat Bash](/id/tools-reference#bash-tool-behavior) |144| `BASH_MAX_OUTPUT_LENGTH` | Jumlah maksimal karakter dalam keluaran bash sebelum keluaran lengkap disimpan ke file dan Claude menerima jalur ditambah pratinjau singkat. Lihat [Perilaku alat Bash](/id/tools-reference#bash-tool-behavior) |

140| `BASH_MAX_TIMEOUT_MS` | Waktu tunggu maksimal yang dapat diatur model untuk perintah bash yang berjalan lama (default: 600000, atau 10 menit) |145| `BASH_MAX_TIMEOUT_MS` | Waktu tunggu maksimal yang dapat diatur model untuk perintah bash yang berjalan lama (default: 600000, atau 10 menit) |

141| `CCR_FORCE_BUNDLE` | Atur ke `1` untuk memaksa [`claude --remote`](/id/claude-code-on-the-web#send-local-repositories-without-github) untuk menggabungkan dan mengunggah repositori lokal Anda bahkan saat akses GitHub tersedia |146| `CCR_FORCE_BUNDLE` | Atur ke `1` untuk memaksa [`claude --remote`](/id/claude-code-on-the-web#send-local-repositories-without-github) untuk menggabungkan dan mengunggah repositori lokal Anda bahkan saat akses GitHub tersedia |

142| `CLAUDECODE` | Atur ke `1` di subprocess yang Claude Code luncurkan (alat Bash dan PowerShell, sesi tmux, perintah [hook](/id/hooks), perintah [baris status](/id/statusline), subprocess server [MCP](/id/mcp) stdio). Gunakan untuk mendeteksi saat skrip berjalan di dalam subprocess yang diluncurkan oleh Claude Code |147| `CLAUDECODE` | Atur ke `1` di subprocess yang Claude Code luncurkan (alat Bash dan PowerShell, sesi tmux, perintah [hook](/id/hooks), perintah [baris status](/id/statusline), subprocess server [MCP](/id/mcp) stdio). Ekstensi IDE juga mengatur ini di terminal terintegrasi mereka. Gunakan untuk mendeteksi saat skrip berjalan di dalam subprocess yang diluncurkan oleh Claude Code. Untuk memeriksa apakah proses saat ini diluncurkan langsung oleh panggilan alat atau hook, daripada di dalam server MCP stdio yang Claude Code mulai, gunakan `CLAUDE_CODE_CHILD_SESSION` sebagai gantinya |

143| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Atur ke `1` untuk menonaktifkan semua tipe [subagent](/id/sub-agents) bawaan seperti Explore dan Plan. Hanya berlaku dalam mode non-interaktif (flag `-p`). Berguna untuk pengguna SDK yang menginginkan slate kosong |148| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Atur ke `1` untuk menonaktifkan semua tipe [subagent](/id/sub-agents) bawaan seperti Explore dan Plan. Hanya berlaku dalam mode non-interaktif (flag `-p`). Berguna untuk pengguna SDK yang menginginkan slate kosong |

144| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Atur ke `1` untuk melewati awalan `mcp__<server>__` pada nama alat dari server MCP yang dibuat SDK. Alat menggunakan nama asli mereka. Penggunaan SDK saja |149| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Atur ke `1` untuk melewati awalan `mcp__<server>__` pada nama alat dari server MCP yang dibuat SDK. Alat menggunakan nama asli mereka. Penggunaan SDK saja |

145| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Waktu tunggu stall dalam milidetik untuk subagent latar belakang. Default `600000` (10 menit). Timer disetel ulang pada setiap peristiwa kemajuan streaming; jika tidak ada kemajuan yang tiba dalam jendela, subagent dibatalkan dan tugas ditandai gagal, menampilkan hasil parsial apa pun ke induk |150| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Waktu tunggu stall dalam milidetik untuk subagent latar belakang. Default `600000` (10 menit). Timer disetel ulang pada setiap peristiwa kemajuan streaming; jika tidak ada kemajuan yang tiba dalam jendela, subagent dibatalkan dan tugas ditandai gagal, menampilkan hasil parsial apa pun ke induk |

146| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Atur persentase kapasitas konteks (1-100) di mana pemadatan otomatis dipicu. Secara default, pemadatan otomatis dipicu pada kapasitas sekitar 95%. Gunakan nilai yang lebih rendah seperti `50` untuk memadatkan lebih awal. Nilai di atas ambang batas default tidak berpengaruh. Berlaku untuk percakapan utama dan subagent. Persentase ini selaras dengan bidang `context_window.used_percentage` yang tersedia di [baris status](/id/statusline) |151| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Atur persentase (1-100) dari jendela pemadatan otomatis di mana pemadatan otomatis dipicu. Gunakan nilai yang lebih rendah seperti `50` untuk memadatkan lebih awal. Variabel ini hanya menyebabkan pemadatan lebih awal saat Claude Code memadatkan secara proaktif: saat `CLAUDE_CODE_AUTO_COMPACT_WINDOW` diatur, dalam [sesi cloud](/id/claude-code-on-the-web), dalam sesi [Remote Control](/id/remote-control), dan pada Sonnet 4.6 dan Opus 4.6 tanpa [konteks diperluas](/id/model-config#extended-context), yang memadatkan pada batas 200K secara default. Dalam kasus lain, seperti sesi lokal pada Opus 4.8 atau model apa pun dengan konteks diperluas, pemadatan otomatis dipicu saat percakapan mencapai batas konteks model. Override hanya dapat menurunkan ambang batas, jadi nilai di atas default tidak berpengaruh. Berlaku untuk percakapan utama dan subagent |

147| `CLAUDE_AUTO_BACKGROUND_TASKS` | Atur ke `1` untuk memaksa pengaktifan backgrounding otomatis tugas agent yang berjalan lama. Saat diaktifkan, subagent dipindahkan ke latar belakang setelah berjalan selama sekitar dua menit |152| `CLAUDE_AUTO_BACKGROUND_TASKS` | Atur ke `1` untuk memaksa pengaktifan backgrounding otomatis tugas agent yang berjalan lama. Saat diaktifkan, subagent dipindahkan ke latar belakang setelah berjalan selama sekitar dua menit |

148| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Kembali ke direktori kerja asli setelah setiap perintah Bash atau PowerShell dalam sesi utama |153| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Kembali ke direktori kerja asli setelah setiap perintah Bash atau PowerShell dalam sesi utama |

149| `CLAUDE_CODE_ACCESSIBILITY` | Atur ke `1` untuk menjaga kursor terminal asli tetap terlihat dan menonaktifkan indikator kursor teks terbalik. Memungkinkan pembesar layar seperti macOS Zoom untuk melacak posisi kursor |154| `CLAUDE_CODE_ACCESSIBILITY` | Atur ke `1` untuk menjaga kursor terminal asli tetap terlihat dan menonaktifkan indikator kursor teks terbalik. Memungkinkan pembesar layar seperti macOS Zoom untuk melacak posisi kursor |

150| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Atur ke `1` untuk memuat file memori dari direktori yang ditentukan dengan `--add-dir`. Memuat `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, dan `CLAUDE.local.md`. Secara default, direktori tambahan tidak memuat file memori |155| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Atur ke `1` untuk memuat file memori dari direktori yang ditentukan dengan `--add-dir`. Memuat `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, dan `CLAUDE.local.md`. Secara default, direktori tambahan tidak memuat file memori |

151| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | Atur ke `1` untuk mengecat ulang seluruh layar pada setiap frame dalam [rendering layar penuh](/id/fullscreen) alih-alih mengirim pembaruan inkremental. Gunakan ini jika mode layar penuh menunjukkan fragmen teks basi atau salah tempat. Claude Code mengaktifkan ini secara otomatis untuk sesi latar belakang dan [tampilan agent](/id/agent-view) di Windows |156| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | Atur ke `1` untuk mengecat ulang seluruh layar pada setiap frame dalam [rendering layar penuh](/id/fullscreen) alih-alih mengirim pembaruan inkremental. Gunakan ini jika mode layar penuh menunjukkan fragmen teks basi atau salah tempat. Claude Code mengaktifkan ini secara otomatis untuk sesi latar belakang dan [tampilan agent](/id/agent-view) di Windows |

157| `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` | Atur ke `1` untuk mengirim parameter [effort](/id/model-config#adjust-effort-level) dengan setiap permintaan, bahkan saat Claude Code tidak mengenali ID model sebagai mampu effort. Gunakan ini saat merutekan melalui [gateway LLM](/id/llm-gateway) atau penyedia pihak ketiga yang melayani model di bawah pengidentifikasi kustom. Model yang menolak parameter effort di API, termasuk model Claude 3, Sonnet 4.0 dan 4.5, Opus 4.0 dan 4.1, dan Haiku 4.5, masih dikecualikan sehingga permintaan tidak gagal |

152| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Interval dalam milidetik di mana kredensial harus disegarkan (saat menggunakan [`apiKeyHelper`](/id/settings#available-settings)) |158| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Interval dalam milidetik di mana kredensial harus disegarkan (saat menggunakan [`apiKeyHelper`](/id/settings#available-settings)) |

153| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Atur ke `0` untuk menghilangkan blok atribusi (versi klien dan sidik jari prompt) dari awal prompt sistem. Menonaktifkannya meningkatkan tingkat hit cache prompt saat merutekan melalui [gateway LLM](/id/llm-gateway). Caching API Anthropic tidak terpengaruh |159| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Atur ke `0` untuk menghilangkan blok atribusi (versi klien dan sidik jari prompt) dari awal prompt sistem. Menonaktifkannya meningkatkan tingkat hit cache prompt saat merutekan melalui [gateway LLM](/id/llm-gateway). Caching API Anthropic tidak terpengaruh |

154| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Atur kapasitas konteks dalam token yang digunakan untuk perhitungan pemadatan otomatis. Default ke jendela konteks model: 200K untuk model standar atau 1M untuk model [konteks diperluas](/id/model-config#extended-context). Gunakan nilai yang lebih rendah seperti `500000` pada model 1M untuk memperlakukan jendela sebagai 500K untuk tujuan pemadatan. Nilai dibatasi pada jendela konteks aktual model. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` diterapkan sebagai persentase dari nilai ini. Mengatur variabel ini memisahkan ambang batas pemadatan dari `used_percentage` baris status, yang selalu menggunakan jendela konteks penuh model |160| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Atur kapasitas konteks dalam token yang digunakan untuk perhitungan pemadatan otomatis. Default ke jendela konteks model: 200K untuk model standar atau 1M untuk model [konteks diperluas](/id/model-config#extended-context). Gunakan nilai yang lebih rendah seperti `500000` pada model 1M untuk memperlakukan jendela sebagai 500K untuk tujuan pemadatan. Nilai dibatasi pada jendela konteks aktual model. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` diterapkan sebagai persentase dari nilai ini. Mengatur variabel ini memisahkan ambang batas pemadatan dari `used_percentage` baris status, yang selalu menggunakan jendela konteks penuh model |

155| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Ganti [koneksi IDE](/id/vs-code) otomatis. Secara default, Claude Code terhubung secara otomatis saat diluncurkan di dalam terminal terintegrasi IDE yang didukung. Atur ke `false` untuk mencegah ini. Atur ke `true` untuk memaksa upaya koneksi saat deteksi otomatis gagal, seperti saat tmux mengaburkan terminal induk. Mengambil alih pengaturan global [`autoConnectIde`](/id/settings#global-config-settings) |161| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Ganti [koneksi IDE](/id/vs-code) otomatis. Secara default, Claude Code terhubung secara otomatis saat diluncurkan di dalam terminal terintegrasi IDE yang didukung. Atur ke `false` untuk mencegah ini. Atur ke `true` untuk memaksa upaya koneksi saat deteksi otomatis gagal, seperti saat tmux mengaburkan terminal induk. Mengambil alih pengaturan global [`autoConnectIde`](/id/settings#global-config-settings) |

156| `CLAUDE_CODE_CERT_STORE` | Daftar sumber sertifikat CA yang dipisahkan koma untuk koneksi TLS. `bundled` adalah set Mozilla CA yang dikirim dengan Claude Code. `system` adalah penyimpanan kepercayaan sistem operasi. Default adalah `bundled,system` |162| `CLAUDE_CODE_CERT_STORE` | Daftar sumber sertifikat CA yang dipisahkan koma untuk koneksi TLS. `bundled` adalah set Mozilla CA yang dikirim dengan Claude Code. `system` adalah penyimpanan kepercayaan sistem operasi. Default adalah `bundled,system` |

163| `CLAUDE_CODE_CHILD_SESSION` | {/* min-version: 2.1.172 */}Atur ke `1` di subprocess yang Claude Code luncurkan melalui alat Bash, PowerShell, dan Monitor, perintah [hook](/id/hooks), dan perintah [baris status](/id/statusline). Tidak diatur untuk subprocess server [MCP](/id/mcp) stdio, yang bersifat long-lived dan melampaui sesi yang meluncurkannya. Tidak seperti `CLAUDECODE`, ini hanya diatur oleh Claude Code sendiri saat meluncurkan subprocess dan bukan oleh ekstensi IDE, sehingga dapat diandalkan membedakan sesi bersarang dari `claude` tingkat atas yang diluncurkan di terminal terintegrasi IDE. Sesi `claude` TUI interaktif bersarang yang dimulai dengan cara ini secara otomatis dikecualikan dari `--resume`, `--continue`, riwayat panah-atas, dan daftar `claude agents`. Sesi `claude -p` non-interaktif masih bertahan. Atur `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` untuk mengganti pengecualian ini. Memerlukan Claude Code v2.1.172 atau lebih baru |

157| `CLAUDE_CODE_CLIENT_CERT` | Jalur ke file sertifikat klien untuk autentikasi mTLS |164| `CLAUDE_CODE_CLIENT_CERT` | Jalur ke file sertifikat klien untuk autentikasi mTLS |

158| `CLAUDE_CODE_CLIENT_KEY` | Jalur ke file kunci pribadi klien untuk autentikasi mTLS |165| `CLAUDE_CODE_CLIENT_KEY` | Jalur ke file kunci pribadi klien untuk autentikasi mTLS |

159| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Frasa sandi untuk `CLAUDE_CODE_CLIENT_KEY` terenkripsi (opsional) |166| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Frasa sandi untuk `CLAUDE_CODE_CLIENT_KEY` terenkripsi (opsional) |

160| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Ganti jalur file log debug. Meskipun namanya, ini adalah jalur file, bukan direktori. Memerlukan mode debug diaktifkan secara terpisah melalui `--debug`, `/debug`, atau variabel lingkungan `DEBUG`: mengatur variabel ini saja tidak mengaktifkan logging. Flag [`--debug-file`](/id/cli-reference#cli-flags) melakukan keduanya sekaligus. Default ke `~/.claude/debug/<session-id>.txt` |167| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Ganti jalur file log debug. Meskipun namanya, ini adalah jalur file, bukan direktori. Memerlukan mode debug diaktifkan secara terpisah melalui `--debug`, `/debug`, atau variabel lingkungan `DEBUG`: mengatur variabel ini saja tidak mengaktifkan logging. Flag [`--debug-file`](/id/cli-reference#cli-flags) melakukan keduanya sekaligus. Default ke `~/.claude/debug/<session-id>.txt` |

161| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Tingkat log minimum yang ditulis ke file log debug. Nilai: `verbose`, `debug` (default), `info`, `warn`, `error`. Atur ke `verbose` untuk menyertakan diagnostik volume tinggi seperti keluaran perintah baris status lengkap, atau naikkan ke `error` untuk mengurangi kebisingan |168| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Tingkat log minimum yang ditulis ke file log debug. Nilai: `verbose`, `debug` (default), `info`, `warn`, `error`. Atur ke `verbose` untuk menyertakan diagnostik volume tinggi seperti keluaran perintah baris status lengkap, atau naikkan ke `error` untuk mengurangi kebisingan |

162| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Atur ke `1` untuk menonaktifkan dukungan [jendela konteks 1M](/id/model-config#extended-context). Saat diatur, varian model 1M tidak tersedia di pemilih model. Berguna untuk lingkungan perusahaan dengan persyaratan kepatuhan |169| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Atur ke `1` untuk menonaktifkan dukungan [jendela konteks 1M](/id/model-config#extended-context). Saat diatur, varian model 1M tidak tersedia di pemilih model. Berguna untuk lingkungan perusahaan dengan persyaratan kepatuhan |

163| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Atur ke `1` untuk menonaktifkan [penalaran adaptif](/id/model-config#adjust-effort-level) pada Opus 4.6 dan Sonnet 4.6 dan kembali ke anggaran pemikiran tetap yang dikendalikan oleh `MAX_THINKING_TOKENS`. {/* min-version: 2.1.111 */}Tidak berpengaruh pada Opus 4.7 dan yang lebih baru, yang selalu menggunakan penalaran adaptif |170| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Atur ke `1` untuk menonaktifkan [penalaran adaptif](/id/model-config#adjust-effort-level) pada Opus 4.6 dan Sonnet 4.6 dan kembali ke anggaran pemikiran tetap yang dikendalikan oleh `MAX_THINKING_TOKENS`. {/* min-version: 2.1.111 */}Dari v2.1.111, tidak berpengaruh pada Fable 5, atau pada Opus 4.7 dan yang lebih baru, yang selalu menggunakan penalaran adaptif |

171| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | {/* min-version: 2.1.98 */}Atur ke `1` untuk menonaktifkan [alat advisor](/id/advisor). Perintah `/advisor` dan flag `--advisor` menjadi tidak tersedia dan `advisorModel` yang dikonfigurasi apa pun diabaikan. Memerlukan Claude Code v2.1.98 atau lebih baru |

164| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Atur ke `1` untuk mematikan [agent latar belakang dan tampilan agent](/id/agent-view): `claude agents`, `--bg`, `/background`, dan supervisor on-demand. Setara dengan pengaturan [`disableAgentView`](/id/settings#available-settings) |172| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Atur ke `1` untuk mematikan [agent latar belakang dan tampilan agent](/id/agent-view): `claude agents`, `--bg`, `/background`, dan supervisor on-demand. Setara dengan pengaturan [`disableAgentView`](/id/settings#available-settings) |

165| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Atur ke `1` untuk menonaktifkan [rendering layar penuh](/id/fullscreen) dan menggunakan renderer layar utama klasik. Percakapan tetap berada di scrollback asli terminal Anda sehingga `Cmd+f` dan mode copy tmux bekerja seperti biasanya. Mengambil alih `CLAUDE_CODE_NO_FLICKER` dan pengaturan [`tui`](/id/settings#available-settings). Anda juga dapat beralih dengan `/tui default` |173| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Atur ke `1` untuk menonaktifkan [rendering layar penuh](/id/fullscreen) dan menggunakan renderer layar utama klasik. Percakapan tetap berada di scrollback asli terminal Anda sehingga `Cmd+f` dan mode copy tmux bekerja seperti biasanya. Mengambil alih `CLAUDE_CODE_NO_FLICKER` dan pengaturan [`tui`](/id/settings#available-settings). Anda juga dapat beralih dengan `/tui default`. Tidak berlaku untuk sesi latar belakang yang dibuka dari [tampilan agent](/id/agent-view), yang selalu menggunakan rendering layar penuh |

166| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Atur ke `1` untuk menonaktifkan pemrosesan lampiran. Penyebutan file dengan sintaks `@` dikirim sebagai teks biasa alih-alih diperluas menjadi konten file |174| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Atur ke `1` untuk menonaktifkan pemrosesan lampiran. Penyebutan file dengan sintaks `@` dikirim sebagai teks biasa alih-alih diperluas menjadi konten file |

167| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Atur ke `1` untuk menonaktifkan [memori otomatis](/id/memory#auto-memory). Atur ke `0` untuk memaksa memori otomatis selama mode `--bare` atau [`autoMemoryEnabled: false`](/id/settings#available-settings) akan menonaktifkannya. Saat dinonaktifkan, Claude tidak membuat atau memuat file memori otomatis |175| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Atur ke `1` untuk menonaktifkan [memori otomatis](/id/memory#auto-memory). Atur ke `0` untuk memaksa memori otomatis selama mode `--bare` atau [`autoMemoryEnabled: false`](/id/settings#available-settings) akan menonaktifkannya. Saat dinonaktifkan, Claude tidak membuat atau memuat file memori otomatis |

168| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Atur ke `1` untuk menonaktifkan semua fungsi tugas latar belakang, termasuk parameter `run_in_background` pada alat Bash dan subagent, auto-backgrounding, dan pintasan Ctrl+B |176| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Atur ke `1` untuk menonaktifkan semua fungsi tugas latar belakang, termasuk parameter `run_in_background` pada alat Bash dan subagent, auto-backgrounding, dan pintasan Ctrl+B |

177| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Atur ke `1` untuk menonaktifkan [skills](/id/skills) dan workflows yang dikirim dengan Claude Code: skills bundel dan workflows dihapus sepenuhnya, sementara perintah slash bawaan seperti `/init` tetap dapat diketik tetapi disembunyikan dari model. Skills dari plugin, `.claude/skills/`, dan `.claude/commands/` tidak terpengaruh. Setara dengan pengaturan [`disableBundledSkills`](/id/settings#available-settings); `0` tidak mengganti itu |

169| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Atur ke `1` untuk mencegah memuat file memori CLAUDE.md apa pun ke dalam konteks, termasuk file pengguna, proyek, dan memori otomatis |178| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Atur ke `1` untuk mencegah memuat file memori CLAUDE.md apa pun ke dalam konteks, termasuk file pengguna, proyek, dan memori otomatis |

170| `CLAUDE_CODE_DISABLE_CRON` | Atur ke `1` untuk menonaktifkan [tugas terjadwal](/id/scheduled-tasks). Skill `/loop` dan alat cron menjadi tidak tersedia dan tugas yang sudah dijadwalkan berhenti berfungsi, termasuk tugas yang sudah berjalan di tengah sesi |179| `CLAUDE_CODE_DISABLE_CRON` | Atur ke `1` untuk menonaktifkan [tugas terjadwal](/id/scheduled-tasks). Skill `/loop` dan alat cron menjadi tidak tersedia dan tugas yang sudah dijadwalkan berhenti berfungsi, termasuk tugas yang sudah berjalan di tengah sesi |

171| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Atur ke `1` untuk menghapus header permintaan `anthropic-beta` spesifik Anthropic dan bidang skema alat beta (seperti `defer_loading` dan `eager_input_streaming`). Gunakan ini saat proxy gateway menolak permintaan dengan kesalahan seperti "Unexpected value(s) for the `anthropic-beta` header" atau "Extra inputs are not permitted". Bidang standar (`name`, `description`, `input_schema`, `cache_control`) dipertahankan. |180| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Atur ke `1` untuk menghapus header permintaan `anthropic-beta` spesifik Anthropic dan bidang skema alat beta (seperti `defer_loading` dan `eager_input_streaming`) dari permintaan API. Gunakan ini saat proxy gateway menolak permintaan dengan kesalahan seperti "Unexpected value(s) for the `anthropic-beta` header" atau "Extra inputs are not permitted". Bidang standar (`name`, `description`, `input_schema`, `cache_control`) dipertahankan. |

172| `CLAUDE_CODE_DISABLE_FAST_MODE` | Atur ke `1` untuk menonaktifkan [mode cepat](/id/fast-mode) |181| `CLAUDE_CODE_DISABLE_FAST_MODE` | Atur ke `1` untuk menonaktifkan [mode cepat](/id/fast-mode) |

173| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Atur ke `1` untuk menonaktifkan survei kualitas sesi "How is Claude doing?". Survei juga dinonaktifkan saat `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur, kecuali `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` memilih kembali. Untuk mengatur tingkat sampel alih-alih menonaktifkan sepenuhnya, gunakan pengaturan [`feedbackSurveyRate`](/id/settings#available-settings). Lihat [Survei kualitas sesi](/id/data-usage#session-quality-surveys) |182| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Atur ke `1` untuk menonaktifkan survei kualitas sesi "How is Claude doing?". Survei juga dinonaktifkan saat `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur, kecuali `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` memilih kembali. Untuk mengatur tingkat sampel alih-alih menonaktifkan sepenuhnya, gunakan pengaturan [`feedbackSurveyRate`](/id/settings#available-settings). Lihat [Survei kualitas sesi](/id/data-usage#session-quality-surveys) |

174| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Atur ke `1` untuk menonaktifkan file [checkpointing](/id/checkpointing). Perintah `/rewind` tidak akan dapat mengembalikan perubahan kode |183| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Atur ke `1` untuk menonaktifkan file [checkpointing](/id/checkpointing). Perintah `/rewind` tidak akan dapat mengembalikan perubahan kode |


180| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Atur ke `1` untuk melewati penambahan otomatis marketplace plugin resmi pada run pertama |189| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Atur ke `1` untuk melewati penambahan otomatis marketplace plugin resmi pada run pertama |

181| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Atur ke `1` untuk melewati pemuatan skill dari direktori skill terkelola di seluruh sistem. Berguna untuk sesi kontainer atau CI yang tidak boleh memuat skill yang disediakan operator |190| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Atur ke `1` untuk melewati pemuatan skill dari direktori skill terkelola di seluruh sistem. Berguna untuk sesi kontainer atau CI yang tidak boleh memuat skill yang disediakan operator |

182| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Atur ke `1` untuk menonaktifkan pembaruan judul terminal otomatis berdasarkan konteks percakapan. Dalam sesi Agent SDK dan `claude -p`, ini juga melewati permintaan Haiku latar belakang yang menghasilkan judul sesi |191| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Atur ke `1` untuk menonaktifkan pembaruan judul terminal otomatis berdasarkan konteks percakapan. Dalam sesi Agent SDK dan `claude -p`, ini juga melewati permintaan Haiku latar belakang yang menghasilkan judul sesi |

183| `CLAUDE_CODE_DISABLE_THINKING` | Atur ke `1` untuk memaksa menonaktifkan [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) terlepas dari dukungan model atau pengaturan lainnya. Lebih langsung daripada `MAX_THINKING_TOKENS=0` |192| `CLAUDE_CODE_DISABLE_THINKING` | Atur ke `1` untuk menghilangkan parameter `thinking` dari permintaan API sepenuhnya. Ini adalah opsi kompatibilitas untuk proxy dan gateway yang menolak parameter. Perilaku variabel tidak berubah dari versi sebelumnya; pada model yang berpikir secara default, menghilangkan parameter berarti model mungkin masih berpikir. Untuk secara eksplisit menonaktifkan [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) pada API Anthropic, gunakan `MAX_THINKING_TOKENS=0` sebagai gantinya, yang juga tidak efektif pada Fable 5 karena tidak dapat memiliki pemikiran dimatikan. Pada [penyedia pihak ketiga](/id/third-party-integrations), `0` demikian pula menghilangkan parameter, sehingga kedua variabel berperilaku sama di sana |

184| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Atur ke `1` untuk menonaktifkan pengguliran virtual dalam [rendering layar penuh](/id/fullscreen) dan merender setiap pesan dalam transkrip. Gunakan ini jika pengguliran dalam mode layar penuh menunjukkan wilayah kosong di mana pesan seharusnya muncul |193| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Atur ke `1` untuk menonaktifkan pengguliran virtual dalam [rendering layar penuh](/id/fullscreen) dan merender setiap pesan dalam transkrip. Gunakan ini jika pengguliran dalam mode layar penuh menunjukkan wilayah kosong di mana pesan seharusnya muncul |

185| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Atur ke `1` untuk menonaktifkan [workflows](/id/workflows#turn-workflows-off). Setara dengan pengaturan [`disableWorkflows`](/id/settings#available-settings) |194| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Atur ke `1` untuk menonaktifkan [workflows](/id/workflows#turn-workflows-off). Setara dengan pengaturan [`disableWorkflows`](/id/settings#available-settings) |

186| `CLAUDE_CODE_EFFORT_LEVEL` | Atur tingkat upaya untuk model yang didukung. Nilai: `low`, `medium`, `high`, `xhigh`, `max`, atau `auto` untuk menggunakan default model. Tingkat yang tersedia tergantung pada model. Mengambil alih `/effort` dan pengaturan `effortLevel`. Lihat [Sesuaikan tingkat upaya](/id/model-config#adjust-effort-level) |195| `CLAUDE_CODE_EFFORT_LEVEL` | Atur tingkat upaya untuk model yang didukung. Nilai: `low`, `medium`, `high`, `xhigh`, `max`, atau `auto` untuk menggunakan default model. Tingkat yang tersedia tergantung pada model. Mengambil alih `/effort` dan pengaturan `effortLevel`. Lihat [Sesuaikan tingkat upaya](/id/model-config#adjust-effort-level) |


198| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Atur ke `1` untuk mengaktifkan [tim agent](/id/agent-teams). Tim agent bersifat eksperimental dan dinonaktifkan secara default |207| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Atur ke `1` untuk mengaktifkan [tim agent](/id/agent-teams). Tim agent bersifat eksperimental dan dinonaktifkan secara default |

199| `CLAUDE_CODE_EXTRA_BODY` | Objek JSON untuk digabungkan ke tingkat atas dari setiap badan permintaan API. Berguna untuk meneruskan parameter spesifik penyedia yang Claude Code tidak mengekspos secara langsung |208| `CLAUDE_CODE_EXTRA_BODY` | Objek JSON untuk digabungkan ke tingkat atas dari setiap badan permintaan API. Berguna untuk meneruskan parameter spesifik penyedia yang Claude Code tidak mengekspos secara langsung |

200| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Ganti batas token default untuk pembacaan file. Berguna saat Anda perlu membaca file yang lebih besar secara lengkap |209| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Ganti batas token default untuk pembacaan file. Berguna saat Anda perlu membaca file yang lebih besar secara lengkap |

210| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | {/* min-version: 2.1.172 */}Atur ke `1` untuk memaksa persistensi transkrip, riwayat prompt, dan pendaftaran `claude agents` bahkan saat `claude` ini diluncurkan dari dalam sesi Claude Code lain. Gunakan saat nilai `CLAUDE_CODE_CHILD_SESSION` yang diwarisi, misalnya dari server tmux yang pertama kali dimulai oleh alat Bash Claude Code, menyebabkan sesi tingkat atas asli salah diklasifikasikan sebagai bersarang. Juga dihormati pada v2.1.169 dan lebih awal; tidak berpengaruh pada v2.1.170 dan v2.1.171, di mana deteksi sesi bersarang yang ditimpa dihapus |

201| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Atur ke `1` untuk memaksa pengaktifan mode privat DEC 2026 [synchronized output](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) saat terminal Anda mendukungnya tetapi tidak terdeteksi otomatis. Berguna untuk emulator seperti `eat` Emacs yang mengimplementasikan BSU/ESU tetapi tidak merespons probe kemampuan. Tidak berpengaruh di bawah tmux |211| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Atur ke `1` untuk memaksa pengaktifan mode privat DEC 2026 [synchronized output](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) saat terminal Anda mendukungnya tetapi tidak terdeteksi otomatis. Berguna untuk emulator seperti `eat` Emacs yang mengimplementasikan BSU/ESU tetapi tidak merespons probe kemampuan. Tidak berpengaruh di bawah tmux |

202| `CLAUDE_CODE_FORK_SUBAGENT` | Atur ke `1` untuk membuat [subagent yang di-fork](/id/sub-agents#fork-the-current-conversation) menjadi default model: Claude meluncurkan fork, subagent yang mewarisi konteks percakapan lengkap alih-alih memulai dari awal, kapan pun itu akan menggunakan subagent tujuan umum, dan semua peluncuran subagent berjalan di latar belakang. Perintah [`/fork`](/id/commands) eksplisit bekerja tanpa variabel ini. Bekerja dalam mode interaktif dan melalui SDK atau `claude -p` |212| `CLAUDE_CODE_FORK_SUBAGENT` | Atur ke `1` untuk membuat [subagent yang di-fork](/id/sub-agents#fork-the-current-conversation) dapat diluncurkan, atau `0` untuk menonaktifkannya, mengganti rollout sisi server apa pun. Saat diaktifkan, Claude dapat meminta tipe subagent `fork` untuk meluncurkan fork, subagent yang mewarisi konteks percakapan lengkap alih-alih memulai dari awal. Peluncuran tanpa tipe subagent masih menggunakan subagent tujuan umum, dan semua peluncuran subagent berjalan di latar belakang. Perintah [`/fork`](/id/commands) eksplisit bekerja tanpa variabel ini. Bekerja dalam mode interaktif dan melalui SDK atau `claude -p` |

203| `CLAUDE_CODE_GIT_BASH_PATH` | Hanya Windows: jalur ke executable Git Bash (`bash.exe`). Gunakan saat Git Bash diinstal tetapi tidak ada di PATH Anda. Lihat [Pengaturan Windows](/id/setup#set-up-on-windows) |213| `CLAUDE_CODE_GIT_BASH_PATH` | Hanya Windows: jalur ke executable Git Bash (`bash.exe`). Gunakan saat Git Bash diinstal tetapi tidak ada di PATH Anda. Lihat [Pengaturan Windows](/id/setup#set-up-on-windows) |

204| `CLAUDE_CODE_GLOB_HIDDEN` | Atur ke `false` untuk mengecualikan dotfile dari hasil saat Claude memanggil [alat Glob](/id/tools-reference#glob-tool-behavior). Disertakan secara default. Tidak mempengaruhi autocomplete file `@`, `ls`, Grep, atau Read |214| `CLAUDE_CODE_GLOB_HIDDEN` | Atur ke `false` untuk mengecualikan dotfile dari hasil saat Claude memanggil [alat Glob](/id/tools-reference#glob-tool-behavior). Disertakan secara default. Tidak mempengaruhi autocomplete file `@`, `ls`, Grep, atau Read |

205| `CLAUDE_CODE_GLOB_NO_IGNORE` | Atur ke `false` untuk membuat [alat Glob](/id/tools-reference#glob-tool-behavior) menghormati pola `.gitignore`. Secara default, Glob mengembalikan semua file yang cocok termasuk yang diabaikan git. Tidak mempengaruhi autocomplete file `@`, yang memiliki pengaturan [`respectGitignore`](/id/settings#available-settings) sendiri |215| `CLAUDE_CODE_GLOB_NO_IGNORE` | Atur ke `false` untuk membuat [alat Glob](/id/tools-reference#glob-tool-behavior) menghormati pola `.gitignore`. Secara default, Glob mengembalikan semua file yang cocok termasuk yang diabaikan git. Tidak mempengaruhi autocomplete file `@`, yang memiliki pengaturan [`respectGitignore`](/id/settings#available-settings) sendiri |


239| `CLAUDE_CODE_REMOTE_SESSION_ID` | Atur secara otomatis dalam [sesi cloud](/id/claude-code-on-the-web) ke ID sesi saat ini. Baca ini untuk membuat tautan kembali ke transkrip sesi. Lihat [Link artifacts back to the session](/id/claude-code-on-the-web#link-artifacts-back-to-the-session) |249| `CLAUDE_CODE_REMOTE_SESSION_ID` | Atur secara otomatis dalam [sesi cloud](/id/claude-code-on-the-web) ke ID sesi saat ini. Baca ini untuk membuat tautan kembali ke transkrip sesi. Lihat [Link artifacts back to the session](/id/claude-code-on-the-web#link-artifacts-back-to-the-session) |

240| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Atur ke `1` untuk melanjutkan secara otomatis jika sesi sebelumnya berakhir di tengah-tengah. Digunakan dalam mode SDK sehingga model melanjutkan tanpa memerlukan SDK untuk mengirim ulang prompt |250| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Atur ke `1` untuk melanjutkan secara otomatis jika sesi sebelumnya berakhir di tengah-tengah. Digunakan dalam mode SDK sehingga model melanjutkan tanpa memerlukan SDK untuk mengirim ulang prompt |

241| `CLAUDE_CODE_RESUME_PROMPT` | Ganti pesan kelanjutan yang disuntikkan saat melanjutkan sesi yang berakhir di tengah-tengah. Default ke `Continue from where you left off.`. Skrip spawn untuk agent yang berjalan lama dapat mengatur ini ke pesan boot yang lebih direktif. String kosong menggunakan default |251| `CLAUDE_CODE_RESUME_PROMPT` | Ganti pesan kelanjutan yang disuntikkan saat melanjutkan sesi yang berakhir di tengah-tengah. Default ke `Continue from where you left off.`. Skrip spawn untuk agent yang berjalan lama dapat mengatur ini ke pesan boot yang lebih direktif. String kosong menggunakan default |

252| `CLAUDE_CODE_SAFE_MODE` | Atur ke `1` untuk memulai dalam mode aman: CLAUDE.md, skill, plugin, hook, server MCP, perintah kustom dan agent, gaya keluaran, workflows, tema kustom, pintasan keyboard kustom, perintah baris status dan saran file, server LSP, dan memori otomatis tidak memuat, untuk pemecahan masalah konfigurasi yang rusak. Kebijakan pengaturan terkelola masih berlaku, termasuk hook, baris status, dan perintah saran file yang dikonfigurasi kebijakan; plugin terkelola, skill terkelola, CLAUDE.md terkelola, dan server MCP yang dikonfigurasi kebijakan tidak. Setara dengan meneruskan [`--safe-mode`](/id/cli-reference#cli-flags). Proses anak yang diluncurkan secara langsung mewarisi variabel |

242| `CLAUDE_CODE_SCRIPT_CAPS` | Objek JSON yang membatasi berapa kali skrip spesifik dapat dipanggil per sesi saat `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` diatur. Kunci adalah substring yang cocok dengan teks perintah; nilai adalah batas panggilan integer. Misalnya, `{"deploy.sh": 2}` memungkinkan `deploy.sh` dipanggil paling banyak dua kali. Pencocokan berbasis substring sehingga trik ekspansi shell seperti `./scripts/deploy.sh $(evil)` masih dihitung terhadap batas. Fan-out runtime melalui `xargs` atau `find -exec` tidak terdeteksi; ini adalah kontrol pertahanan mendalam |253| `CLAUDE_CODE_SCRIPT_CAPS` | Objek JSON yang membatasi berapa kali skrip spesifik dapat dipanggil per sesi saat `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` diatur. Kunci adalah substring yang cocok dengan teks perintah; nilai adalah batas panggilan integer. Misalnya, `{"deploy.sh": 2}` memungkinkan `deploy.sh` dipanggil paling banyak dua kali. Pencocokan berbasis substring sehingga trik ekspansi shell seperti `./scripts/deploy.sh $(evil)` masih dihitung terhadap batas. Fan-out runtime melalui `xargs` atau `find -exec` tidak terdeteksi; ini adalah kontrol pertahanan mendalam |

243| `CLAUDE_CODE_SCROLL_SPEED` | Atur pengali pengguliran roda mouse dalam [rendering layar penuh](/id/fullscreen#mouse-wheel-scrolling). Menerima nilai dari 1 hingga 20. Atur ke `3` untuk mencocokkan `vim` jika terminal Anda mengirim satu peristiwa roda per takik tanpa amplifikasi. Diabaikan di terminal IDE JetBrains, di mana Claude Code menggunakan penanganan pengguliran miliknya sendiri |254| `CLAUDE_CODE_SCROLL_SPEED` | Atur pengali pengguliran roda mouse dalam [rendering layar penuh](/id/fullscreen#mouse-wheel-scrolling). Menerima nilai dari 1 hingga 20, dan nilai fraksional di bawah 1 seperti `0.5` untuk memperlambat pengguliran trackpad dan roda yang dipercepat di terminal yang sudah memperkuat peristiwa roda. Atur ke `3` untuk mencocokkan `vim` jika terminal Anda mengirim satu peristiwa roda per takik tanpa amplifikasi. Diabaikan di terminal IDE JetBrains, di mana Claude Code menggunakan penanganan pengguliran miliknya sendiri |

244| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Ganti anggaran waktu dalam milidetik untuk hook [SessionEnd](/id/hooks#sessionend). Berlaku untuk keluar sesi, `/clear`, dan beralih sesi melalui `/resume` interaktif. Secara default anggaran adalah 1,5 detik, secara otomatis dinaikkan ke `timeout` per-hook tertinggi yang dikonfigurasi dalam file pengaturan, hingga 60 detik. Timeout pada hook yang disediakan plugin tidak menaikkan anggaran |255| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Ganti anggaran waktu dalam milidetik untuk hook [SessionEnd](/id/hooks#sessionend). Berlaku untuk keluar sesi, `/clear`, dan beralih sesi melalui `/resume` interaktif. Secara default anggaran adalah 1,5 detik, secara otomatis dinaikkan ke `timeout` per-hook tertinggi yang dikonfigurasi dalam file pengaturan, hingga 60 detik. Timeout pada hook yang disediakan plugin tidak menaikkan anggaran |

245| `CLAUDE_CODE_SESSION_ID` | Atur secara otomatis dalam subprocess alat Bash dan PowerShell ke ID sesi saat ini. Cocok dengan bidang `session_id` yang diteruskan ke [hooks](/id/hooks). Diperbarui pada `/clear`. Gunakan untuk menghubungkan skrip dan alat eksternal dengan sesi Claude Code yang meluncurkannya |256| `CLAUDE_CODE_SESSION_ID` | Atur secara otomatis ke ID sesi saat ini dalam subprocess alat Bash dan PowerShell, subprocess perintah [hook](/id/hooks), dan subprocess server [MCP](/id/mcp) stdio. Untuk Bash, PowerShell, dan hook ini cocok dengan bidang `session_id` dalam input JSON hook dan diperbarui pada `/clear`. Subprocess server MCP mempertahankan ID yang diluncurkan dengannya. Pada `--resume <session-id>` menerima ID yang dilanjutkan, cocok dengan hook dan Bash. Pada `--continue` atau `--resume` tanpa ID eksplisit mungkin menerima ID startup awal sebagai gantinya. Gunakan untuk menghubungkan skrip dan alat eksternal dengan sesi Claude Code yang meluncurkannya |

246| `CLAUDE_CODE_SHELL` | Ganti deteksi shell otomatis. Berguna saat shell login Anda berbeda dari shell kerja pilihan Anda (misalnya, `bash` vs `zsh`) |257| `CLAUDE_CODE_SHELL` | Ganti deteksi shell otomatis. Berguna saat shell login Anda berbeda dari shell kerja pilihan Anda (misalnya, `bash` vs `zsh`) |

247| `CLAUDE_CODE_SHELL_PREFIX` | Awalan perintah yang membungkus perintah shell Claude Code luncurkan: panggilan alat Bash, perintah [hook](/id/hooks), dan perintah startup server [MCP](/id/mcp) stdio. Berguna untuk logging atau audit. Contoh: mengatur `/path/to/logger.sh` menjalankan setiap perintah sebagai `/path/to/logger.sh <command>` |258| `CLAUDE_CODE_SHELL_PREFIX` | Awalan perintah yang membungkus perintah shell Claude Code luncurkan: panggilan alat Bash, perintah [hook](/id/hooks), perintah [baris status](/id/statusline), dan perintah startup server [MCP](/id/mcp) stdio. Hook PowerShell dan hook bentuk exec berjalan tanpa awalan. Berguna untuk logging atau audit. Mengatur jalur executable telanjang seperti `/path/to/logger.sh` menjalankan setiap perintah sebagai `/path/to/logger.sh '<command>'`. Wrapper menerima baris perintah sebagai argumen shell-quoted tunggal dalam `$1`, sehingga wrapper harus mengevaluasi ulang `$1` dengan shell, misalnya `exec bash -c "$1"`. Memperlakukan `$1` sebagai jalur executable telanjang merusak server MCP stdio yang meneruskan argumen seperti `npx -y <package>`. Untuk panggilan alat Bash, `$1` berisi invokasi shell lengkap yang Claude Code rakitkan, termasuk pengaturan lingkungan, bukan hanya perintah yang Claude jalankan |

248| `CLAUDE_CODE_SIMPLE` | Atur ke `1` untuk menjalankan dengan prompt sistem minimal dan hanya alat Bash, pembacaan file, dan pengeditan file. Alat MCP dari `--mcp-config` masih tersedia. Menonaktifkan penemuan otomatis hook, skill, plugin, server MCP, memori otomatis, dan CLAUDE.md. OAuth tokens dan kredensial keychain tidak dibaca, jadi autentikasi Anthropic harus berasal dari `ANTHROPIC_API_KEY` atau `apiKeyHelper` di `--settings`. Setara dengan meneruskan [`--bare`](/id/headless#start-faster-with-bare-mode) |259| `CLAUDE_CODE_SIMPLE` | Atur ke `1` untuk menjalankan dengan prompt sistem minimal dan hanya alat Bash, pembacaan file, dan pengeditan file. Alat MCP dari `--mcp-config` masih tersedia. Menonaktifkan penemuan otomatis hook, skill, plugin, server MCP, memori otomatis, dan CLAUDE.md. OAuth tokens dan kredensial keychain tidak dibaca, jadi autentikasi Anthropic harus berasal dari `ANTHROPIC_API_KEY` atau `apiKeyHelper` di `--settings`. Setara dengan meneruskan [`--bare`](/id/headless#start-faster-with-bare-mode) |

249| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Atur ke `1` untuk menggunakan prompt sistem yang lebih pendek dan deskripsi alat yang disingkat pada model apa pun. Atur ke `0`, `false`, `no`, atau `off` untuk menolak bahkan pada model di mana eksperimen atau konfigurasi server akan mengaktifkannya sebaliknya. Set alat lengkap, hook, server MCP, dan penemuan CLAUDE.md tetap diaktifkan |260| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Atur ke `1` untuk menggunakan prompt sistem yang lebih pendek dan deskripsi alat yang disingkat pada model apa pun. Atur ke `0`, `false`, `no`, atau `off` untuk menolak bahkan pada model di mana eksperimen atau konfigurasi server akan mengaktifkannya sebaliknya. Set alat lengkap, hook, server MCP, dan penemuan CLAUDE.md tetap diaktifkan |

250| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Lewati autentikasi sisi klien untuk [Claude Platform on AWS](/id/claude-platform-on-aws), untuk gateway yang menandatangani permintaan sendiri |261| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Lewati autentikasi sisi klien untuk [Claude Platform on AWS](/id/claude-platform-on-aws), untuk gateway yang menandatangani permintaan sendiri |


258| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Atur ke `1` untuk menghapus kredensial Anthropic dan penyedia cloud dari lingkungan subprocess (alat Bash, hook, server MCP stdio). Proses Claude induk menyimpan kredensial ini untuk panggilan API, tetapi proses anak tidak dapat membacanya, mengurangi paparan terhadap serangan injeksi prompt yang mencoba mengekstrak rahasia melalui ekspansi shell. Pada Linux, ini juga menjalankan subprocess Bash dalam namespace PID terisolasi sehingga mereka tidak dapat membaca lingkungan proses host melalui `/proc`; sebagai efek samping, `ps`, `pgrep`, dan `kill` tidak dapat melihat atau menandatangani proses host. `claude-code-action` mengatur ini secara otomatis saat `allowed_non_write_users` dikonfigurasi |269| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Atur ke `1` untuk menghapus kredensial Anthropic dan penyedia cloud dari lingkungan subprocess (alat Bash, hook, server MCP stdio). Proses Claude induk menyimpan kredensial ini untuk panggilan API, tetapi proses anak tidak dapat membacanya, mengurangi paparan terhadap serangan injeksi prompt yang mencoba mengekstrak rahasia melalui ekspansi shell. Pada Linux, ini juga menjalankan subprocess Bash dalam namespace PID terisolasi sehingga mereka tidak dapat membaca lingkungan proses host melalui `/proc`; sebagai efek samping, `ps`, `pgrep`, dan `kill` tidak dapat melihat atau menandatangani proses host. `claude-code-action` mengatur ini secara otomatis saat `allowed_non_write_users` dikonfigurasi |

259| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Atur ke `1` dalam mode non-interaktif (flag `-p`) untuk menunggu instalasi plugin selesai sebelum kueri pertama. Tanpa ini, plugin diinstal di latar belakang dan mungkin tidak tersedia pada giliran pertama. Gabungkan dengan `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` untuk membatasi waktu tunggu |270| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Atur ke `1` dalam mode non-interaktif (flag `-p`) untuk menunggu instalasi plugin selesai sebelum kueri pertama. Tanpa ini, plugin diinstal di latar belakang dan mungkin tidak tersedia pada giliran pertama. Gabungkan dengan `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` untuk membatasi waktu tunggu |

260| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk instalasi plugin sinkron. Saat terlampaui, Claude Code melanjutkan tanpa plugin dan mencatat kesalahan. Tidak ada default: tanpa variabel ini, instalasi sinkron menunggu sampai selesai |271| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk instalasi plugin sinkron. Saat terlampaui, Claude Code melanjutkan tanpa plugin dan mencatat kesalahan. Tidak ada default: tanpa variabel ini, instalasi sinkron menunggu sampai selesai |

261| `CLAUDE_CODE_SYNC_SKILLS` | Atur ke `1` untuk mengunduh skill claude.ai yang diaktifkan ke `~/.claude/skills/` sebelum kueri pertama dan resync setiap 10 menit. Berlaku hanya dalam mode non-interaktif dengan flag `-p`. Atur secara otomatis dalam sesi [Claude Code on the web](/id/claude-code-on-the-web). Memerlukan autentikasi claude.ai |272| `CLAUDE_CODE_SYNC_SKILLS` | Atur ke `1` untuk mengunduh skill claude.ai yang diaktifkan ke `~/.claude/skills/` sebelum kueri pertama dan resync setiap 10 menit. Berlaku hanya dalam mode non-interaktif dengan flag `-p`. Memerlukan autentikasi claude.ai. Sesi [Claude Code on the web](/id/claude-code-on-the-web) menerima skill claude.ai yang diaktifkan secara otomatis; Anda tidak perlu mengatur ini di sana |

273| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk resync skill mid-session saat `CLAUDE_CODE_SYNC_SKILLS` diatur (default: 30000). Membatasi unduhan yang dipicu saat host meminta reload skill selama sesi. Saat terlampaui, resync berhenti dan unduhan yang tersisa berlanjut di latar belakang |

262| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk kueri pertama menunggu sinkronisasi skill awal saat `CLAUDE_CODE_SYNC_SKILLS` diatur (default: 5000). Saat terlampaui, kueri melanjutkan dan unduhan skill yang tersisa berlanjut di latar belakang |274| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk kueri pertama menunggu sinkronisasi skill awal saat `CLAUDE_CODE_SYNC_SKILLS` diatur (default: 5000). Saat terlampaui, kueri melanjutkan dan unduhan skill yang tersisa berlanjut di latar belakang |

263| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Atur ke `false` untuk menonaktifkan penyorotan sintaks dalam keluaran diff. Berguna saat warna mengganggu pengaturan terminal Anda. Untuk juga menonaktifkan penyorotan dalam blok kode dan pratinjau file, gunakan pengaturan [`syntaxHighlightingDisabled`](/id/settings) |275| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Atur ke `false` untuk menonaktifkan penyorotan sintaks dalam keluaran diff. Berguna saat warna mengganggu pengaturan terminal Anda. Untuk juga menonaktifkan penyorotan dalam blok kode dan pratinjau file, gunakan pengaturan [`syntaxHighlightingDisabled`](/id/settings) |

264| `CLAUDE_CODE_TASK_LIST_ID` | Bagikan daftar tugas di seluruh sesi. Atur ID yang sama di beberapa instans Claude Code untuk berkoordinasi pada daftar tugas bersama. Lihat [Daftar tugas](/id/interactive-mode#task-list) |276| `CLAUDE_CODE_TASK_LIST_ID` | Bagikan daftar tugas di seluruh sesi. Atur ID yang sama di beberapa instans Claude Code untuk berkoordinasi pada daftar tugas bersama. Lihat [Daftar tugas](/id/interactive-mode#task-list) |

265| `CLAUDE_CODE_TEAM_NAME` | Nama tim agent yang menjadi anggota rekan kerja ini. Atur secara otomatis pada anggota [tim agent](/id/agent-teams) |277| `CLAUDE_CODE_TEAM_NAME` | Nama tim agent yang menjadi anggota rekan kerja ini. Atur secara otomatis pada anggota [tim agent](/id/agent-teams) |

266| `CLAUDE_CODE_TMPDIR` | Ganti direktori temp yang digunakan untuk file temp internal. Claude Code menambahkan `/claude-{uid}/` pada Unix atau `/claude/` pada Windows ke jalur ini. Default: `/tmp` pada macOS, `os.tmpdir()` pada Linux dan Windows. {/* min-version: 2.1.161 */}Sejak v2.1.161, pada macOS dan Linux, subprocess Bash menerima fallback `$TMPDIR` singkat di bawah default sistem saat override Anda adalah jalur panjang, karena beberapa alat gagal saat jalur temp menjadi terlalu panjang. File temp Claude Code sendiri selalu menggunakan override Anda |278| `CLAUDE_CODE_TMPDIR` | Ganti direktori temp yang digunakan untuk file temp internal. Claude Code menambahkan `/claude-{uid}/` pada Unix atau `/claude/` pada Windows ke jalur ini. Default: `/tmp` pada macOS, `os.tmpdir()` pada Linux dan Windows. {/* min-version: 2.1.161 */}Sejak v2.1.161, pada macOS dan Linux, subprocess Bash [sandboxed](/id/sandboxing) menerima fallback `$TMPDIR` singkat di bawah default sistem saat override Anda adalah jalur panjang, karena beberapa alat gagal saat jalur temp menjadi terlalu panjang. Perintah Bash yang tidak sandboxed mewarisi `$TMPDIR` shell Anda tidak berubah. File temp Claude Code sendiri selalu menggunakan override Anda |

267| `CLAUDE_CODE_TMUX_TRUECOLOR` | Atur ke `1` untuk memungkinkan keluaran truecolor 24-bit di dalam tmux. Secara default, Claude Code membatasi ke 256 warna saat `$TMUX` diatur karena tmux tidak melewatkan urutan escape truecolor kecuali dikonfigurasi untuk melakukannya. Atur ini setelah menambahkan `set -ga terminal-overrides ',*:Tc'` ke `~/.tmux.conf` Anda. Lihat [Konfigurasi Terminal](/id/terminal-config) untuk pengaturan tmux lainnya |279| `CLAUDE_CODE_TMUX_TRUECOLOR` | Atur ke `1` untuk memungkinkan keluaran truecolor 24-bit di dalam tmux. Secara default, Claude Code membatasi ke 256 warna saat `$TMUX` diatur karena tmux tidak melewatkan urutan escape truecolor kecuali dikonfigurasi untuk melakukannya. Atur ini setelah menambahkan `set -ga terminal-overrides ',*:Tc'` ke `~/.tmux.conf` Anda. Lihat [Konfigurasi Terminal](/id/terminal-config) untuk pengaturan tmux lainnya |

268| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | Gunakan [Claude Platform on AWS](/id/claude-platform-on-aws) |280| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | Gunakan [Claude Platform on AWS](/id/claude-platform-on-aws) |

269| `CLAUDE_CODE_USE_BEDROCK` | Gunakan [Bedrock](/id/amazon-bedrock) |281| `CLAUDE_CODE_USE_BEDROCK` | Gunakan [Bedrock](/id/amazon-bedrock) |


274| `CLAUDE_CODE_USE_VERTEX` | Gunakan [Vertex](/id/google-vertex-ai) |286| `CLAUDE_CODE_USE_VERTEX` | Gunakan [Vertex](/id/google-vertex-ai) |

275| `CLAUDE_CONFIG_DIR` | Ganti direktori konfigurasi (default: `~/.claude`). Semua pengaturan, kredensial, riwayat sesi, dan plugin disimpan di bawah jalur ini. Berguna untuk menjalankan beberapa akun berdampingan: misalnya, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |287| `CLAUDE_CONFIG_DIR` | Ganti direktori konfigurasi (default: `~/.claude`). Semua pengaturan, kredensial, riwayat sesi, dan plugin disimpan di bawah jalur ini. Berguna untuk menjalankan beberapa akun berdampingan: misalnya, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'` |

276| `CLAUDE_EFFORT` | Atur secara otomatis dalam subprocess alat Bash dan perintah hook ke [tingkat upaya](/id/model-config#adjust-effort-level) aktif untuk giliran: `low`, `medium`, `high`, `xhigh`, atau `max`. Ultracode bukan tingkat yang berbeda dan melaporkan sebagai `xhigh`. Cocok dengan bidang `effort.level` yang diteruskan ke [hooks](/id/hooks). Hanya diatur saat model saat ini mendukung parameter upaya |288| `CLAUDE_EFFORT` | Atur secara otomatis dalam subprocess alat Bash dan perintah hook ke [tingkat upaya](/id/model-config#adjust-effort-level) aktif untuk giliran: `low`, `medium`, `high`, `xhigh`, atau `max`. Ultracode bukan tingkat yang berbeda dan melaporkan sebagai `xhigh`. Cocok dengan bidang `effort.level` yang diteruskan ke [hooks](/id/hooks). Hanya diatur saat model saat ini mendukung parameter upaya |

277| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Atur ke `1` untuk memaksa pengaktifan byte-level streaming idle watchdog, atau atur ke `0` untuk memaksa menonaktifkannya. Saat tidak diatur, watchdog diaktifkan secara default untuk koneksi API Anthropic. Byte watchdog membatalkan koneksi saat tidak ada byte tiba di kawat untuk durasi yang diatur oleh `CLAUDE_STREAM_IDLE_TIMEOUT_MS`, dengan minimum 5 menit, terlepas dari watchdog tingkat peristiwa |289| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Atur ke `1` untuk memaksa pengaktifan byte-level streaming idle watchdog, atau atur ke `0` untuk memaksa menonaktifkannya. Saat tidak diatur, watchdog diaktifkan secara default untuk koneksi API Anthropic langsung dan [Claude Platform on AWS](/id/claude-platform-on-aws). Byte watchdog membatalkan koneksi saat tidak ada byte tiba di kawat selama 180 detik secara default pada koneksi API Anthropic langsung, 300 detik pada Claude Platform on AWS dan saat diaktifkan pada Bedrock, atau untuk nilai `CLAUDE_STREAM_IDLE_TIMEOUT_MS` saat itu diatur, yang diklem ke minimum 5 menit, terlepas dari watchdog tingkat peristiwa |

278| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Atur ke `1` untuk mengaktifkan byte-level streaming idle watchdog pada respons Amazon Bedrock `vnd.amazon.eventstream`. Dimatikan secara default. Konfigurasikan waktu tunggu dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |290| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Atur ke `1` untuk mengaktifkan byte-level streaming idle watchdog pada respons Amazon Bedrock `vnd.amazon.eventstream`. Dimatikan secara default. Konfigurasikan waktu tunggu dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

279| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Atur ke `1` untuk mengaktifkan event-level streaming idle watchdog. Dimatikan secara default. Berlaku untuk semua penyedia, termasuk Bedrock. Untuk Vertex dan Foundry, ini adalah satu-satunya idle watchdog yang tersedia. Pada Bedrock, Anda juga dapat mengaktifkan byte-level watchdog independen dengan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK`; keduanya berjalan bersama saat keduanya diatur. Konfigurasikan waktu tunggu dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |291| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Atur ke `1` untuk memaksa pengaktifan event-level streaming idle watchdog, atau atur ke `0` untuk memaksa menonaktifkannya. Saat tidak diatur, default dikendalikan server pada API Anthropic langsung dan dimatikan pada penyedia lain. {/* min-version: 2.1.169 */}Sejak v2.1.169, penyedia selain API Anthropic langsung dan Claude Platform on AWS juga memiliki body idle timeout 5 menit default-on independen dari variabel ini; lihat `API_FORCE_IDLE_TIMEOUT`. Pada Bedrock, Anda juga dapat mengaktifkan byte-level watchdog independen dengan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK`; keduanya berjalan bersama saat keduanya diatur. Konfigurasikan waktu tunggu dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

280| `CLAUDE_ENV_FILE` | Jalur ke skrip shell yang isinya Claude Code jalankan sebelum setiap perintah Bash dalam proses shell yang sama, sehingga ekspor dalam file terlihat oleh perintah. Gunakan untuk mempertahankan aktivasi virtualenv atau conda di seluruh perintah. Juga diisi secara dinamis oleh hook [SessionStart](/id/hooks#persist-environment-variables), [Setup](/id/hooks#setup), [CwdChanged](/id/hooks#cwdchanged), dan [FileChanged](/id/hooks#filechanged) |292| `CLAUDE_ENV_FILE` | Jalur ke skrip shell yang isinya Claude Code jalankan sebelum setiap perintah Bash dalam proses shell yang sama, sehingga ekspor dalam file terlihat oleh perintah. Gunakan untuk mempertahankan aktivasi virtualenv atau conda di seluruh perintah. Juga diisi secara dinamis oleh hook [SessionStart](/id/hooks#persist-environment-variables), [Setup](/id/hooks#setup), [CwdChanged](/id/hooks#cwdchanged), dan [FileChanged](/id/hooks#filechanged) |

281| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Awalan untuk nama sesi [Remote Control](/id/remote-control) yang dibuat otomatis saat tidak ada nama eksplisit yang disediakan. Default ke nama mesin Anda, menghasilkan nama seperti `myhost-graceful-unicorn`. Flag CLI `--remote-control-session-name-prefix` mengatur nilai yang sama untuk satu pemanggilan |293| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Awalan untuk nama sesi [Remote Control](/id/remote-control) yang dibuat otomatis saat tidak ada nama eksplisit yang disediakan. Default ke nama mesin Anda, menghasilkan nama seperti `myhost-graceful-unicorn`. Flag CLI `--remote-control-session-name-prefix` mengatur nilai yang sama untuk satu pemanggilan |

282| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Waktu tunggu dalam milidetik sebelum streaming idle watchdog menutup koneksi yang macet. Default dan minimum `300000` (5 menit) untuk byte-level dan event-level watchdog; nilai yang lebih rendah secara diam-diam diklem untuk menyerap jeda pemikiran yang diperluas dan buffering proxy. Untuk penyedia pihak ketiga, memerlukan `CLAUDE_ENABLE_STREAM_WATCHDOG=1`. Pada Bedrock, juga berlaku saat `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` |294| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Waktu tunggu dalam milidetik sebelum streaming idle watchdog menutup koneksi yang macet. Saat Anda mengatur variabel ini secara eksplisit, minimum adalah `300000` (5 menit); nilai yang lebih rendah secara diam-diam diklem untuk menyerap jeda pemikiran yang diperluas dan buffering proxy. Saat tidak diatur, event-level watchdog default ke 300 detik dan byte-level watchdog default ke 180 detik pada koneksi API Anthropic langsung (300 detik pada Claude Platform on AWS dan penyedia lain). Default byte-watchdog 180 detik yang tidak diatur adalah nilai terpisah dan tidak tunduk pada klem 5 menit. Untuk event-level watchdog pada penyedia pihak ketiga, memerlukan `CLAUDE_ENABLE_STREAM_WATCHDOG=1`; body idle timeout yang dijelaskan di bawah `API_FORCE_IDLE_TIMEOUT` berlaku secara independen. Pada Bedrock, juga berlaku saat `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` |

283| `DEBUG` | Atur ke `1` untuk mengaktifkan mode debug, setara dengan meluncurkan dengan [`--debug`](/id/cli-reference#cli-flags). Log debug ditulis ke `~/.claude/debug/<session-id>.txt`, atau ke jalur yang diatur oleh `CLAUDE_CODE_DEBUG_LOGS_DIR`. Hanya nilai truthy `1`, `true`, `yes`, dan `on` yang mengaktifkan mode debug, jadi pola namespace seperti `DEBUG=express:*` yang diatur untuk alat lain tidak memicunya |295| `DEBUG` | Atur ke `1` untuk mengaktifkan mode debug, setara dengan meluncurkan dengan [`--debug`](/id/cli-reference#cli-flags). Log debug ditulis ke `~/.claude/debug/<session-id>.txt`, atau ke jalur yang diatur oleh `CLAUDE_CODE_DEBUG_LOGS_DIR`. Hanya nilai truthy `1`, `true`, `yes`, dan `on` yang mengaktifkan mode debug, jadi pola namespace seperti `DEBUG=express:*` yang diatur untuk alat lain tidak memicunya |

284| `DISABLE_AUTOUPDATER` | Atur ke `1` untuk menonaktifkan pembaruan otomatis latar belakang. Manual `claude update` masih berfungsi. Gunakan `DISABLE_UPDATES` untuk memblokir keduanya |296| `DISABLE_AUTOUPDATER` | Atur ke `1` untuk menonaktifkan pembaruan otomatis latar belakang. Manual `claude update` masih berfungsi. Gunakan `DISABLE_UPDATES` untuk memblokir keduanya |

285| `DISABLE_AUTO_COMPACT` | Atur ke `1` untuk menonaktifkan pemadatan otomatis saat mendekati batas konteks. Perintah manual `/compact` tetap tersedia. Gunakan saat Anda menginginkan kontrol eksplisit atas kapan pemadatan terjadi |297| `DISABLE_AUTO_COMPACT` | Atur ke `1` untuk menonaktifkan pemadatan otomatis saat mendekati batas konteks. Perintah manual `/compact` tetap tersedia. Gunakan saat Anda menginginkan kontrol eksplisit atas kapan pemadatan terjadi |


295| `DISABLE_INTERLEAVED_THINKING` | Atur ke `1` untuk mencegah pengiriman header beta interleaved-thinking. Berguna saat gateway LLM atau penyedia Anda tidak mendukung [interleaved thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |307| `DISABLE_INTERLEAVED_THINKING` | Atur ke `1` untuk mencegah pengiriman header beta interleaved-thinking. Berguna saat gateway LLM atau penyedia Anda tidak mendukung [interleaved thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |

296| `DISABLE_LOGIN_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/login`. Berguna saat autentikasi ditangani secara eksternal melalui kunci API atau `apiKeyHelper` |308| `DISABLE_LOGIN_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/login`. Berguna saat autentikasi ditangani secara eksternal melalui kunci API atau `apiKeyHelper` |

297| `DISABLE_LOGOUT_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/logout` |309| `DISABLE_LOGOUT_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/logout` |

298| `DISABLE_PROMPT_CACHING` | Atur ke `1` untuk menonaktifkan prompt caching untuk semua model (mengambil alih pengaturan per-model) |310| `DISABLE_PROMPT_CACHING` | Atur ke `1` untuk menonaktifkan [prompt caching](/id/prompt-caching#disable-prompt-caching) untuk semua model (mengambil alih pengaturan per-model) |

311| `DISABLE_PROMPT_CACHING_FABLE` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Fable |

299| `DISABLE_PROMPT_CACHING_HAIKU` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Haiku |312| `DISABLE_PROMPT_CACHING_HAIKU` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Haiku |

300| `DISABLE_PROMPT_CACHING_OPUS` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Opus |313| `DISABLE_PROMPT_CACHING_OPUS` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Opus |

301| `DISABLE_PROMPT_CACHING_SONNET` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Sonnet |314| `DISABLE_PROMPT_CACHING_SONNET` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Sonnet |


307| `ENABLE_PROMPT_CACHING_1H` | Atur ke `1` untuk meminta TTL cache prompt 1 jam alih-alih default 5 menit. Dimaksudkan untuk pengguna kunci API, [Bedrock](/id/amazon-bedrock), [Vertex](/id/google-vertex-ai), [Foundry](/id/microsoft-foundry), dan [Claude Platform on AWS](/id/claude-platform-on-aws). Pengguna langganan menerima TTL 1 jam secara otomatis. Penulisan cache 1 jam ditagih dengan tarif yang lebih tinggi |320| `ENABLE_PROMPT_CACHING_1H` | Atur ke `1` untuk meminta TTL cache prompt 1 jam alih-alih default 5 menit. Dimaksudkan untuk pengguna kunci API, [Bedrock](/id/amazon-bedrock), [Vertex](/id/google-vertex-ai), [Foundry](/id/microsoft-foundry), dan [Claude Platform on AWS](/id/claude-platform-on-aws). Pengguna langganan menerima TTL 1 jam secara otomatis. Penulisan cache 1 jam ditagih dengan tarif yang lebih tinggi |

308| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |321| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |

309| `ENABLE_TOOL_SEARCH` | Mengontrol [pencarian alat MCP](/id/mcp#scale-with-mcp-tool-search). Tidak diatur: semua alat MCP ditangguhkan secara default, tetapi dimuat di muka pada Vertex AI atau saat `ANTHROPIC_BASE_URL` menunjuk ke host non-pihak pertama. Nilai: `true` (selalu tangguhkan dan kirim header beta, permintaan gagal pada model Vertex AI lebih awal dari Sonnet 4.5 atau Opus 4.5, atau pada proxy yang tidak mendukung `tool_reference`), `auto` (mode ambang batas: muat di muka jika alat sesuai dalam 10% konteks), `auto:N` (ambang batas kustom, misalnya `auto:5` untuk 5%), `false` (muat semua di muka) |322| `ENABLE_TOOL_SEARCH` | Mengontrol [pencarian alat MCP](/id/mcp#scale-with-mcp-tool-search). Tidak diatur: semua alat MCP ditangguhkan secara default, tetapi dimuat di muka pada Vertex AI atau saat `ANTHROPIC_BASE_URL` menunjuk ke host non-pihak pertama. Nilai: `true` (selalu tangguhkan dan kirim header beta, permintaan gagal pada model Vertex AI lebih awal dari Sonnet 4.5 atau Opus 4.5, atau pada proxy yang tidak mendukung `tool_reference`), `auto` (mode ambang batas: muat di muka jika alat sesuai dalam 10% konteks), `auto:N` (ambang batas kustom, misalnya `auto:5` untuk 5%), `false` (muat semua di muka) |

310| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Atur ke nilai non-kosong apa pun untuk memicu fallback ke [`--fallback-model`](/id/cli-reference#cli-flags) setelah kesalahan overload berulang pada model primer apa pun. Secara default, hanya model Opus yang memicu fallback |323| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Atur ke nilai non-kosong apa pun untuk membuat semua model, bukan hanya Opus, berhenti mencoba ulang dengan kesalahan overload berulang saat tidak ada fallback model yang dikonfigurasi. {/* min-version: 2.1.160 */}Sejak v2.1.160, [rantai model fallback](/id/model-config#fallback-model-chains) yang dikonfigurasi dipicu pada kesalahan overload berulang untuk model primer apa pun, jadi variabel ini tidak mempengaruhi beralih ke model fallback |

311| `FORCE_AUTOUPDATE_PLUGINS` | Atur ke `1` untuk memaksa pembaruan otomatis plugin bahkan saat auto-updater utama dinonaktifkan melalui `DISABLE_AUTOUPDATER` |324| `FORCE_AUTOUPDATE_PLUGINS` | Atur ke `1` untuk memaksa pembaruan otomatis plugin bahkan saat auto-updater utama dinonaktifkan melalui `DISABLE_AUTOUPDATER` |

312| `FORCE_PROMPT_CACHING_5M` | Atur ke `1` untuk memaksa TTL cache prompt 5 menit bahkan saat TTL 1 jam akan berlaku sebaliknya. Mengganti `ENABLE_PROMPT_CACHING_1H` |325| `FORCE_PROMPT_CACHING_5M` | Atur ke `1` untuk memaksa TTL cache prompt 5 menit bahkan saat TTL 1 jam akan berlaku sebaliknya. Mengganti `ENABLE_PROMPT_CACHING_1H` |

313| `HTTP_PROXY` | Tentukan server proxy HTTP untuk koneksi jaringan |326| `HTTP_PROXY` | Tentukan server proxy HTTP untuk koneksi jaringan |


315| `IS_DEMO` | Atur ke `1` untuk mengaktifkan mode demo: menyembunyikan email dan nama organisasi dari header dan keluaran `/status`, dan melewati onboarding. Berguna saat streaming atau merekam sesi |328| `IS_DEMO` | Atur ke `1` untuk mengaktifkan mode demo: menyembunyikan email dan nama organisasi dari header dan keluaran `/status`, dan melewati onboarding. Berguna saat streaming atau merekam sesi |

316| `MAX_MCP_OUTPUT_TOKENS` | Jumlah maksimal token yang diizinkan dalam respons alat MCP. Claude Code menampilkan peringatan saat keluaran melebihi 10.000 token. Alat yang mendeklarasikan [`anthropic/maxResultSizeChars`](/id/mcp#raise-the-limit-for-a-specific-tool) menggunakan batas karakter itu untuk konten teks sebagai gantinya, tetapi konten gambar dari alat tersebut masih tunduk pada variabel ini (default: 25000) |329| `MAX_MCP_OUTPUT_TOKENS` | Jumlah maksimal token yang diizinkan dalam respons alat MCP. Claude Code menampilkan peringatan saat keluaran melebihi 10.000 token. Alat yang mendeklarasikan [`anthropic/maxResultSizeChars`](/id/mcp#raise-the-limit-for-a-specific-tool) menggunakan batas karakter itu untuk konten teks sebagai gantinya, tetapi konten gambar dari alat tersebut masih tunduk pada variabel ini (default: 25000) |

317| `MAX_STRUCTURED_OUTPUT_RETRIES` | Jumlah kali untuk mencoba ulang saat respons model gagal validasi terhadap [`--json-schema`](/id/cli-reference#cli-flags) dalam mode non-interaktif (flag `-p`). Default ke 5 |330| `MAX_STRUCTURED_OUTPUT_RETRIES` | Jumlah kali untuk mencoba ulang saat respons model gagal validasi terhadap [`--json-schema`](/id/cli-reference#cli-flags) dalam mode non-interaktif (flag `-p`). Default ke 5 |

318| `MAX_THINKING_TOKENS` | Ganti anggaran token [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Batas maksimal adalah [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) model dikurangi satu. Atur ke `0` untuk menonaktifkan pemikiran sepenuhnya. Pada model dengan [penalaran adaptif](/id/model-config#adjust-effort-level), anggaran diabaikan kecuali penalaran adaptif dinonaktifkan melalui `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` |331| `MAX_THINKING_TOKENS` | Ganti anggaran token [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Batas maksimal adalah [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) model dikurangi satu. Atur ke `0` untuk menonaktifkan pemikiran pada API Anthropic kecuali pada Fable 5, yang tidak dapat memiliki pemikiran dimatikan. Pada [penyedia pihak ketiga](/id/third-party-integrations), `0` demikian pula menghilangkan parameter, dan model dengan [penalaran adaptif](/id/model-config#adjust-effort-level) mungkin masih berpikir. Untuk nilai nonzero pada model penalaran adaptif, anggaran diabaikan kecuali penalaran adaptif dinonaktifkan melalui `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` |

319| `MCP_CLIENT_SECRET` | Rahasia klien OAuth untuk server MCP yang memerlukan [kredensial yang dikonfigurasi sebelumnya](/id/mcp#use-pre-configured-oauth-credentials). Menghindari prompt interaktif saat menambahkan server dengan `--client-secret` |332| `MCP_CLIENT_SECRET` | Rahasia klien OAuth untuk server MCP yang memerlukan [kredensial yang dikonfigurasi sebelumnya](/id/mcp#use-pre-configured-oauth-credentials). Menghindari prompt interaktif saat menambahkan server dengan `--client-secret` |

320| `MCP_CONNECTION_NONBLOCKING` | Mengontrol apakah startup menunggu server MCP terhubung sebelum kueri pertama. {/* min-version: 2.1.142 */}Sejak Claude Code v2.1.142, startup MCP non-blocking secara default: server terhubung di latar belakang dan alat mereka menjadi tersedia saat mereka selesai. Atur ke `0` untuk mengembalikan penantian koneksi 5 detik yang memblokir. Server yang dikonfigurasi dengan [`alwaysLoad: true`](/id/mcp#exempt-a-server-from-deferral) masih memblokir startup terlepas dari ini, karena alat mereka harus ada saat prompt pertama dibangun |333| `MCP_CONNECTION_NONBLOCKING` | Mengontrol apakah startup menunggu server MCP terhubung sebelum kueri pertama. {/* min-version: 2.1.142 */}Sejak Claude Code v2.1.142, startup MCP non-blocking secara default: server terhubung di latar belakang dan alat mereka menjadi tersedia saat mereka selesai. Atur ke `0` untuk mengembalikan penantian koneksi 5 detik yang memblokir. Server yang dikonfigurasi dengan [`alwaysLoad: true`](/id/mcp#exempt-a-server-from-deferral) masih memblokir startup terlepas dari ini, karena alat mereka harus ada saat prompt pertama dibangun |

321| `MCP_CONNECT_TIMEOUT_MS` | Berapa lama startup yang memblokir menunggu, dalam milidetik, untuk batch koneksi sebelum mengambil snapshot daftar alat (default: 5000). Berlaku saat `MCP_CONNECTION_NONBLOCKING=0` atau untuk server yang ditandai [`alwaysLoad: true`](/id/mcp#exempt-a-server-from-deferral). Server yang masih tertunda pada batas waktu terus terhubung di latar belakang tetapi tidak akan muncul sampai kueri berikutnya. Berbeda dari `MCP_TIMEOUT`, yang membatasi upaya koneksi server individual |334| `MCP_CONNECT_TIMEOUT_MS` | Berapa lama startup yang memblokir menunggu, dalam milidetik, untuk batch koneksi sebelum mengambil snapshot daftar alat (default: 5000). Berlaku saat `MCP_CONNECTION_NONBLOCKING=0` atau untuk server yang ditandai [`alwaysLoad: true`](/id/mcp#exempt-a-server-from-deferral). Server yang masih tertunda pada batas waktu terus terhubung di latar belakang tetapi tidak akan muncul sampai kueri berikutnya. Berbeda dari `MCP_TIMEOUT`, yang membatasi upaya koneksi server individual |


323| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimal server MCP jarak jauh (HTTP/SSE) untuk terhubung secara paralel selama startup (default: 20) |336| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimal server MCP jarak jauh (HTTP/SSE) untuk terhubung secara paralel selama startup (default: 20) |

324| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimal server MCP lokal (stdio) untuk terhubung secara paralel selama startup (default: 3) |337| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimal server MCP lokal (stdio) untuk terhubung secara paralel selama startup (default: 3) |

325| `MCP_TIMEOUT` | Waktu tunggu dalam milidetik untuk startup server MCP (default: 30000, atau 30 detik) |338| `MCP_TIMEOUT` | Waktu tunggu dalam milidetik untuk startup server MCP (default: 30000, atau 30 detik) |

326| `MCP_TOOL_TIMEOUT` | Waktu tunggu dalam milidetik untuk eksekusi alat MCP (default: 100000000, sekitar 28 jam). Bidang `timeout` per-server di `.mcp.json` mengganti ini untuk server itu. Nilai di bawah 1000 dibulatkan ke satu detik |339| `MCP_TOOL_TIMEOUT` | Waktu tunggu dalam milidetik untuk eksekusi alat MCP (default: 100000000, sekitar 28 jam). Bidang `timeout` per-server di `.mcp.json` mengganti ini untuk server itu. Untuk variabel env, nilai di bawah 1000 dibulatkan ke satu detik; untuk bidang per-server, nilai di bawah 1000 diabaikan |

327| `NO_PROXY` | Daftar domain dan IP ke mana permintaan akan dikeluarkan secara langsung, melewati proxy |340| `NO_PROXY` | Daftar domain dan IP ke mana permintaan akan dikeluarkan secara langsung, melewati proxy |

328| `OTEL_LOG_RAW_API_BODIES` | Memancarkan permintaan dan respons JSON API Anthropic Messages lengkap sebagai peristiwa log `api_request_body` / `api_response_body`. Atur ke `1` untuk badan inline dipotong pada 60 KB, atau `file:<dir>` untuk menulis badan yang tidak dipotong ke disk dan memancarkan referensi `body_ref` sebagai gantinya. Dinonaktifkan secara default; badan menyertakan seluruh riwayat percakapan. Lihat [Monitoring](/id/monitoring-usage#api-request-body-event) |341| `OTEL_LOG_RAW_API_BODIES` | Memancarkan permintaan dan respons JSON API Anthropic Messages lengkap sebagai peristiwa log `api_request_body` / `api_response_body`. Atur ke `1` untuk badan inline dipotong pada 60 KB, atau `file:<dir>` untuk menulis badan yang tidak dipotong ke disk dan memancarkan referensi `body_ref` sebagai gantinya. Dinonaktifkan secara default; badan menyertakan seluruh riwayat percakapan. Lihat [Monitoring](/id/monitoring-usage#api-request-body-event) |

329| `OTEL_LOG_TOOL_CONTENT` | Atur ke `1` untuk menyertakan konten input dan output alat dalam peristiwa span OpenTelemetry. Dinonaktifkan secara default untuk melindungi data sensitif. Lihat [Monitoring](/id/monitoring-usage) |342| `OTEL_LOG_TOOL_CONTENT` | Atur ke `1` untuk menyertakan konten input dan output alat dalam peristiwa span OpenTelemetry. Dinonaktifkan secara default untuk melindungi data sensitif. Lihat [Monitoring](/id/monitoring-usage) |


348| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Ganti wilayah untuk Claude Opus 4.6 saat menggunakan Vertex AI |361| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Ganti wilayah untuk Claude Opus 4.6 saat menggunakan Vertex AI |

349| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Ganti wilayah untuk Claude Sonnet 4.6 saat menggunakan Vertex AI |362| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Ganti wilayah untuk Claude Sonnet 4.6 saat menggunakan Vertex AI |

350| `VERTEX_REGION_CLAUDE_4_7_OPUS` | {/* min-version: 2.1.111 */}Ganti wilayah untuk Claude Opus 4.7 saat menggunakan Vertex AI. Ditambahkan di v2.1.111 |363| `VERTEX_REGION_CLAUDE_4_7_OPUS` | {/* min-version: 2.1.111 */}Ganti wilayah untuk Claude Opus 4.7 saat menggunakan Vertex AI. Ditambahkan di v2.1.111 |

364| `VERTEX_REGION_CLAUDE_4_8_OPUS` | {/* min-version: 2.1.154 */}Ganti wilayah untuk Claude Opus 4.8 saat menggunakan Vertex AI. Ditambahkan di v2.1.154 |

365| `VERTEX_REGION_CLAUDE_FABLE_5` | {/* min-version: 2.1.170 */}Ganti wilayah untuk Claude Fable 5 saat menggunakan Vertex AI. Ditambahkan di v2.1.170 |

351| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Ganti wilayah untuk Claude Haiku 4.5 saat menggunakan Vertex AI |366| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Ganti wilayah untuk Claude Haiku 4.5 saat menggunakan Vertex AI |

352 367 

353Variabel pengekspor OpenTelemetry standar (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES`, dan varian spesifik sinyal) juga didukung. Lihat [Monitoring](/id/monitoring-usage) untuk detail konfigurasi.368Variabel pengekspor OpenTelemetry standar (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES`, dan varian spesifik sinyal) juga didukung. Lihat [Monitoring](/id/monitoring-usage) untuk detail konfigurasi.

errors.md +199 −48

Details

14 Claude Code memanggil Claude API untuk respons model, jadi sebagian besar kesalahan runtime memetakan ke kode kesalahan API yang mendasar. Halaman ini mencakup apa arti setiap kesalahan di dalam Claude Code dan cara memulihkan. Untuk definisi kode status HTTP mentah, lihat [referensi kesalahan Platform Claude](https://platform.claude.com/docs/en/api/errors).14 Claude Code memanggil Claude API untuk respons model, jadi sebagian besar kesalahan runtime memetakan ke kode kesalahan API yang mendasar. Halaman ini mencakup apa arti setiap kesalahan di dalam Claude Code dan cara memulihkan. Untuk definisi kode status HTTP mentah, lihat [referensi kesalahan Platform Claude](https://platform.claude.com/docs/en/api/errors).

15</Note>15</Note>

16 16 

17## Temukan kesalahan Anda17<h2 id="find-your-error">

18 Temukan kesalahan Anda

19</h2>

18 20 

19Cocokkan pesan yang Anda lihat di terminal dengan bagian di bawah ini.21Cocokkan pesan yang Anda lihat di terminal dengan bagian di bawah ini.

20 22 


26| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |28| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |

27| `Auto mode could not evaluate this action and is blocking it for safety` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |29| `Auto mode could not evaluate this action and is blocking it for safety` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |

28| `Auto mode classifier transcript exceeded context window` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |30| `Auto mode classifier transcript exceeded context window` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |

29| `You've hit your session limit` / `You've hit your weekly limit` | [Batas penggunaan](#youve-hit-your-session-limit) |31| `You've hit your session limit` / `You've hit your weekly limit` | [Batas penggunaan](#you%E2%80%99ve-hit-your-session-limit) |

32| `Usage credits required for 1M context` | [Batas penggunaan](#usage-credits-required-for-1m-context) |

30| `Server is temporarily limiting requests` | [Batas penggunaan](#server-is-temporarily-limiting-requests) |33| `Server is temporarily limiting requests` | [Batas penggunaan](#server-is-temporarily-limiting-requests) |

31| `Request rejected (429)` | [Batas penggunaan](#request-rejected-429) |34| `Request rejected (429)` | [Batas penggunaan](#request-rejected-429) |

32| `Credit balance is too low` | [Batas penggunaan](#credit-balance-is-too-low) |35| `Credit balance is too low` | [Batas penggunaan](#credit-balance-is-too-low) |

33| `Not logged in · Please run /login` | [Autentikasi](#not-logged-in) |36| `Not logged in · Please run /login` | [Autentikasi](#not-logged-in) |

37| `Could not resolve authentication method` | [Autentikasi](#could-not-resolve-authentication-method) |

34| `Invalid API key` | [Autentikasi](#invalid-api-key) |38| `Invalid API key` | [Autentikasi](#invalid-api-key) |

35| `This organization has been disabled` | [Autentikasi](#this-organization-has-been-disabled) |39| `This organization has been disabled` | [Autentikasi](#this-organization-has-been-disabled) |

40| `Your organization has disabled API key authentication` | [Autentikasi](#your-organization-has-disabled-api-key-authentication) |

36| `Your organization has disabled Claude subscription access` | [Autentikasi](#your-organization-has-disabled-claude-subscription-access) |41| `Your organization has disabled Claude subscription access` | [Autentikasi](#your-organization-has-disabled-claude-subscription-access) |

37| `Routines are disabled by your organization's policy` | [Autentikasi](#routines-are-disabled-by-your-organizations-policy) |42| `Routines are disabled by your organization's policy` | [Autentikasi](#routines-are-disabled-by-your-organization%E2%80%99s-policy) |

38| `OAuth token revoked` / `OAuth token has expired` | [Autentikasi](#oauth-token-revoked-or-expired) |43| `OAuth token revoked` / `OAuth token has expired` | [Autentikasi](#oauth-token-revoked-or-expired) |

39| `does not meet scope requirement user:profile` | [Autentikasi](#oauth-scope-requirement) |44| `does not meet scope requirement user:profile` | [Autentikasi](#oauth-scope-requirement) |

40| `Unable to connect to API` | [Jaringan](#unable-to-connect-to-api) |45| `Unable to connect to API` | [Jaringan](#unable-to-connect-to-api) |


47| `Unable to resize image` | [Kesalahan permintaan](#unable-to-resize-image) |52| `Unable to resize image` | [Kesalahan permintaan](#unable-to-resize-image) |

48| `PDF too large` / `PDF is password protected` | [Kesalahan permintaan](#pdf-errors) |53| `PDF too large` / `PDF is password protected` | [Kesalahan permintaan](#pdf-errors) |

49| `Extra inputs are not permitted` | [Kesalahan permintaan](#extra-inputs-are-not-permitted) |54| `Extra inputs are not permitted` | [Kesalahan permintaan](#extra-inputs-are-not-permitted) |

50| `There's an issue with the selected model` | [Kesalahan permintaan](#theres-an-issue-with-the-selected-model) |55| `There's an issue with the selected model` | [Kesalahan permintaan](#there%E2%80%99s-an-issue-with-the-selected-model) |

51| `Claude Opus is not available with the Claude Pro plan` | [Kesalahan permintaan](#claude-opus-is-not-available-with-the-claude-pro-plan) |56| `Claude Opus is not available with the Claude Pro plan` | [Kesalahan permintaan](#claude-opus-is-not-available-with-the-claude-pro-plan) |

52| `thinking.type.enabled is not supported for this model` | [Kesalahan permintaan](#thinking-type-enabled-is-not-supported-for-this-model) |57| `thinking.type.enabled is not supported for this model` | [Kesalahan permintaan](#thinking-type-enabled-is-not-supported-for-this-model) |

53| `max_tokens must be greater than thinking.budget_tokens` | [Kesalahan permintaan](#thinking-budget-exceeds-output-limit) |58| `max_tokens must be greater than thinking.budget_tokens` | [Kesalahan permintaan](#thinking-budget-exceeds-output-limit) |


55| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Kesalahan permintaan](#usage-policy-refusal) |60| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Kesalahan permintaan](#usage-policy-refusal) |

56| Respons tampak berkualitas lebih rendah dari biasanya | [Kualitas respons](#responses-seem-lower-quality-than-usual) |61| Respons tampak berkualitas lebih rendah dari biasanya | [Kualitas respons](#responses-seem-lower-quality-than-usual) |

57 62 

58## Percobaan ulang otomatis63<h2 id="automatic-retries">

64 Percobaan ulang otomatis

65</h2>

59 66 

60Claude Code mencoba ulang kegagalan transien sebelum menampilkan kesalahan kepada Anda. Kesalahan server, respons kelebihan beban, waktu tunggu permintaan, throttle 429 sementara, dan koneksi yang terputus semuanya dicoba ulang hingga 10 kali dengan backoff eksponensial. Saat mencoba ulang, spinner menampilkan hitungan mundur `Retrying in Ns · attempt x/y`.67Claude Code mencoba ulang kegagalan transien sebelum menampilkan kesalahan kepada Anda. Kesalahan server, respons kelebihan beban, waktu tunggu permintaan, throttle 429 sementara, dan koneksi yang terputus semuanya dicoba ulang hingga 10 kali dengan backoff eksponensial. Saat mencoba ulang, spinner menampilkan hitungan mundur `Retrying in Ns · attempt x/y`.

61 68 


66| [`CLAUDE_CODE_MAX_RETRIES`](/id/env-vars) | 10 | Jumlah percobaan ulang. Turunkan untuk menampilkan kegagalan lebih cepat dalam skrip; naikkan untuk menunggu insiden yang lebih lama. |73| [`CLAUDE_CODE_MAX_RETRIES`](/id/env-vars) | 10 | Jumlah percobaan ulang. Turunkan untuk menampilkan kegagalan lebih cepat dalam skrip; naikkan untuk menunggu insiden yang lebih lama. |

67| [`API_TIMEOUT_MS`](/id/env-vars) | 600000 | Waktu tunggu per permintaan dalam milidetik. Naikkan untuk jaringan lambat atau proxy. |74| [`API_TIMEOUT_MS`](/id/env-vars) | 600000 | Waktu tunggu per permintaan dalam milidetik. Naikkan untuk jaringan lambat atau proxy. |

68 75 

69## Kesalahan server76<h2 id="server-errors">

77 Kesalahan server

78</h2>

70 79 

71Kesalahan ini berasal dari penyedia inferensi daripada akun atau permintaan Anda. Pada API Anthropic itu berarti infrastruktur Anthropic. Pada Bedrock, Vertex AI, Foundry, atau gateway khusus itu berarti infrastruktur penyedia tersebut.80Kesalahan ini berasal dari penyedia inferensi daripada akun atau permintaan Anda. Pada API Anthropic itu berarti infrastruktur Anthropic. Pada Bedrock, Vertex AI, Foundry, atau gateway khusus itu berarti infrastruktur penyedia tersebut.

72 81 

73### API Error: 500 Internal server error82<h3 id="api-error-500-internal-server-error">

83 API Error: 500 Internal server error

84</h3>

74 85 

75Claude Code menampilkan kode status dan pesan kesalahan API untuk respons 5xx apa pun. Contoh di bawah menunjukkan respons 500 pada API Anthropic:86Claude Code menampilkan kode status dan pesan kesalahan API untuk respons 5xx apa pun. Contoh di bawah menunjukkan respons 500 pada API Anthropic:

76 87 


88* Tunggu satu menit, kemudian kirim pesan Anda lagi. Pesan asli Anda masih ada dalam percakapan, jadi untuk prompt panjang Anda dapat mengetik `try again` daripada menempel seluruh hal.99* Tunggu satu menit, kemudian kirim pesan Anda lagi. Pesan asli Anda masih ada dalam percakapan, jadi untuk prompt panjang Anda dapat mengetik `try again` daripada menempel seluruh hal.

89* Jika kesalahan berlanjut tanpa insiden yang diposting, jalankan `/feedback` sehingga Anthropic dapat menyelidiki dengan detail permintaan Anda. Lihat [Laporkan kesalahan](#report-an-error) jika `/feedback` tidak tersedia di lingkungan Anda.100* Jika kesalahan berlanjut tanpa insiden yang diposting, jalankan `/feedback` sehingga Anthropic dapat menyelidiki dengan detail permintaan Anda. Lihat [Laporkan kesalahan](#report-an-error) jika `/feedback` tidak tersedia di lingkungan Anda.

90 101 

91### API Error: Repeated 529 Overloaded errors102<h3 id="api-error-repeated-529-overloaded-errors">

103 API Error: Repeated 529 Overloaded errors

104</h3>

92 105 

93API sementara pada kapasitas di semua pengguna. Claude Code telah mencoba ulang beberapa kali sebelum menampilkan pesan ini:106API sementara pada kapasitas di semua pengguna. Claude Code telah mencoba ulang beberapa kali sebelum menampilkan pesan ini:

94 107 


104* Coba lagi dalam beberapa menit117* Coba lagi dalam beberapa menit

105* Jalankan `/model` dan beralih ke model berbeda untuk terus bekerja, karena kapasitas dilacak per model. Claude Code meminta Anda melakukan ini ketika satu model mengalami beban yang sangat tinggi, misalnya `Opus is experiencing high load, please use /model to switch to Sonnet`.118* Jalankan `/model` dan beralih ke model berbeda untuk terus bekerja, karena kapasitas dilacak per model. Claude Code meminta Anda melakukan ini ketika satu model mengalami beban yang sangat tinggi, misalnya `Opus is experiencing high load, please use /model to switch to Sonnet`.

106 119 

107### Request timed out120<h3 id="request-timed-out">

121 Request timed out

122</h3>

108 123 

109API tidak merespons sebelum batas waktu koneksi.124API tidak merespons sebelum batas waktu koneksi.

110 125 


121* Jika jaringan lambat atau proxy adalah penyebabnya, naikkan `API_TIMEOUT_MS` seperti yang dijelaskan dalam [Percobaan ulang otomatis](#automatic-retries)136* Jika jaringan lambat atau proxy adalah penyebabnya, naikkan `API_TIMEOUT_MS` seperti yang dijelaskan dalam [Percobaan ulang otomatis](#automatic-retries)

122* Jika waktu tunggu sering terjadi dan jaringan Anda sehat, lihat [Kesalahan jaringan dan koneksi](#network-and-connection-errors) di bawah137* Jika waktu tunggu sering terjadi dan jaringan Anda sehat, lihat [Kesalahan jaringan dan koneksi](#network-and-connection-errors) di bawah

123 138 

124### Auto mode cannot determine the safety of an action139<h3 id="auto-mode-cannot-determine-the-safety-of-an-action">

140 Auto mode cannot determine the safety of an action

141</h3>

125 142 

126Model yang digunakan [auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) untuk mengklasifikasikan tindakan tidak dapat menghasilkan keputusan, jadi auto mode tidak menyetujui tindakan secara otomatis. Pesan yang Anda lihat tergantung pada alasan pengklasifikasi gagal.143Model yang digunakan [auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) untuk mengklasifikasikan tindakan tidak dapat menghasilkan keputusan, jadi auto mode tidak menyetujui tindakan secara otomatis. Pesan yang Anda lihat tergantung pada alasan pengklasifikasi gagal.

127 144 


163* Setujui atau tolak tindakan dalam prompt yang muncul180* Setujui atau tolak tindakan dalam prompt yang muncul

164* Jalankan `/compact` untuk mengurangi ukuran percakapan sehingga tindakan berikutnya sesuai dengan jendela pengklasifikasi lagi181* Jalankan `/compact` untuk mengurangi ukuran percakapan sehingga tindakan berikutnya sesuai dengan jendela pengklasifikasi lagi

165 182 

166## Batas penggunaan183<h2 id="usage-limits">

184 Batas penggunaan

185</h2>

167 186 

168Kesalahan ini berarti kuota yang terikat pada akun atau paket Anda telah tercapai. Mereka berbeda dari [kesalahan server](#server-errors), yang mempengaruhi semua orang.187Kesalahan ini berarti kuota yang terikat pada akun atau paket Anda telah tercapai. Mereka berbeda dari [kesalahan server](#server-errors), yang mempengaruhi semua orang.

169 188 

170### You've hit your session limit189<h3 id="you’ve-hit-your-session-limit">

190 You've hit your session limit

191</h3>

171 192 

172Paket langganan mencakup tunjangan penggunaan bergulir. Ketika habis Anda melihat salah satu pesan ini:193Paket langganan mencakup tunjangan penggunaan bergulir. Ketika habis Anda melihat salah satu pesan ini:

173 194 


188 209 

189Untuk menonton tunjangan sisa Anda sebelum Anda mencapai batas, tambahkan bidang `rate_limits` ke [baris status kustom](/id/statusline#rate-limit-usage), atau di aplikasi Desktop klik [cincin penggunaan](/id/desktop#check-usage) di sebelah pemilih model.210Untuk menonton tunjangan sisa Anda sebelum Anda mencapai batas, tambahkan bidang `rate_limits` ke [baris status kustom](/id/statusline#rate-limit-usage), atau di aplikasi Desktop klik [cincin penggunaan](/id/desktop#check-usage) di sebelah pemilih model.

190 211 

191### Server is temporarily limiting requests212<h3 id="usage-credits-required-for-1m-context">

213 Usage credits required for 1M context

214</h3>

215 

216Model yang dipilih menggunakan jendela konteks diperluas 1M-token, dan paket Anda hanya mencakupnya melalui kredit penggunaan.

217 

218```text theme={null}

219API Error: Usage credits required for 1M context · run /usage-credits to turn them on, or /model to switch to standard context

220```

221 

222Ini adalah pemeriksaan hak, bukan kelelahan kuota. Ini terjadi bahkan ketika tunjangan sesi dan mingguan Anda memiliki kapasitas yang tersisa. Lihat [Extended context](/id/model-config#extended-context) untuk paket mana yang mencakup konteks 1M secara langsung dan mana yang memerlukan kredit penggunaan.

223 

224{/* min-version: 2.1.172 */}Ketika kesalahan ini muncul di tengah percakapan karena konteks tumbuh melampaui 200K token, Claude Code secara otomatis mengompres percakapan kembali di bawah batas konteks standar dan menjaga sesi pada batas itu setelahnya, jadi tidak ada tindakan yang diperlukan. Pada versi sebelum v2.1.172, kesalahan berulang pada setiap permintaan berikutnya termasuk `/compact`; jalankan `/clear` pada versi tersebut untuk pulih. Langkah-langkah di bawah berlaku ketika Anda secara eksplisit memilih model `[1m]`.

225 

226**Yang harus dilakukan:**

227 

228* Jalankan `/model` dan pilih varian tanpa akhiran `[1m]` untuk kembali ke jendela konteks standar

229* Jalankan `/usage-credits` untuk mengaktifkan penagihan terukur untuk varian 1M di Pro dan Max, atau untuk memintanya dari admin Anda di Team dan Enterprise

230* Jika kesalahan berlanjut setelah `/model`, ID model 1M mungkin diatur di tempat lain. Lihat [There's an issue with the selected model](#there%E2%80%99s-an-issue-with-the-selected-model) untuk lokasi konfigurasi yang harus diperiksa dalam urutan prioritas.

231* Untuk menghapus varian 1M dari pemilih model sepenuhnya, atur [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/id/env-vars)

232 

233<h3 id="server-is-temporarily-limiting-requests">

234 Server is temporarily limiting requests

235</h3>

192 236 

193API menerapkan throttle berumur pendek yang tidak terkait dengan kuota paket Anda.237API menerapkan throttle berumur pendek yang tidak terkait dengan kuota paket Anda.

194 238 


203* Tunggu sebentar dan coba lagi247* Tunggu sebentar dan coba lagi

204* Periksa [status.claude.com](https://status.claude.com) jika berlanjut248* Periksa [status.claude.com](https://status.claude.com) jika berlanjut

205 249 

206### Request rejected (429)250<h3 id="request-rejected-429">

251 Request rejected (429)

252</h3>

207 253 

208Anda telah mencapai batas laju yang dikonfigurasi untuk kunci API, proyek Amazon Bedrock, atau proyek Google Vertex AI Anda.254Anda telah mencapai batas laju yang dikonfigurasi untuk kunci API, proyek Amazon Bedrock, atau proyek Google Vertex AI Anda.

209 255 


220* Untuk kunci API Anthropic, lihat [referensi batas laju](https://platform.claude.com/docs/en/api/rate-limits) untuk cara kerja tingkat dan cara menetapkan batas per-workspace266* Untuk kunci API Anthropic, lihat [referensi batas laju](https://platform.claude.com/docs/en/api/rate-limits) untuk cara kerja tingkat dan cara menetapkan batas per-workspace

221* Kurangi konkurensi: turunkan [`CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`](/id/env-vars), hindari menjalankan banyak subagen paralel, atau beralih ke model yang lebih kecil dengan `/model` untuk run skrip volume tinggi267* Kurangi konkurensi: turunkan [`CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`](/id/env-vars), hindari menjalankan banyak subagen paralel, atau beralih ke model yang lebih kecil dengan `/model` untuk run skrip volume tinggi

222 268 

223### Credit balance is too low269<h3 id="credit-balance-is-too-low">

270 Credit balance is too low

271</h3>

224 272 

225Organisasi Console Anda telah kehabisan kredit prabayar.273Organisasi Console Anda telah kehabisan kredit prabayar.

226 274 


234* Beralih ke autentikasi langganan dengan `/login` jika Anda memiliki paket Pro, Max, Team, atau Enterprise282* Beralih ke autentikasi langganan dengan `/login` jika Anda memiliki paket Pro, Max, Team, atau Enterprise

235* Tetapkan batas pengeluaran per-workspace di Console untuk mencegah satu proyek menguras saldo org. Lihat [Manage costs effectively](/id/costs).283* Tetapkan batas pengeluaran per-workspace di Console untuk mencegah satu proyek menguras saldo org. Lihat [Manage costs effectively](/id/costs).

236 284 

237## Kesalahan autentikasi285<h2 id="authentication-errors">

286 Kesalahan autentikasi

287</h2>

238 288 

239Kesalahan ini berarti Claude Code tidak dapat membuktikan siapa Anda kepada API. Jalankan `/status` kapan saja untuk melihat kredensial mana yang saat ini aktif.289Kesalahan ini berarti Claude Code tidak dapat membuktikan siapa Anda kepada API. Jalankan `/status` kapan saja untuk melihat kredensial mana yang saat ini aktif.

240 290 

241### Not logged in291<h3 id="not-logged-in">

292 Not logged in

293</h3>

242 294 

243Tidak ada kredensial yang valid tersedia untuk sesi ini.295Tidak ada kredensial yang valid tersedia untuk sesi ini.

244 296 


255 307 

256Jika Anda diminta untuk masuk berulang kali, lihat [Not logged in or token expired](/id/troubleshoot-install#not-logged-in-or-token-expired) untuk perbaikan jam sistem dan macOS Keychain.308Jika Anda diminta untuk masuk berulang kali, lihat [Not logged in or token expired](/id/troubleshoot-install#not-logged-in-or-token-expired) untuk perbaikan jam sistem dan macOS Keychain.

257 309 

258### Invalid API key310<h3 id="could-not-resolve-authentication-method">

311 Could not resolve authentication method

312</h3>

313 

314Sesi mencapai klien API tanpa kredensial apa pun. Ini muncul di [background sessions](/id/agent-view), sesi cloud, dan konteks Agent SDK di mana pemeriksaan login interaktif tidak berjalan sebelum permintaan pertama.

315 

316```text theme={null}

317Could not resolve authentication method. Expected one of apiKey, authToken, credentials, config, or profile to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted

318```

319 

320{/* min-version: 2.1.174 */}Sebelum v2.1.174, sesi latar belakang atau cloud yang ditugaskan ke pekerja pra-inisialisasi yang menganggur dapat gagal dengan cara ini bahkan ketika kredensial yang valid dikonfigurasi. Tingkatkan untuk memulihkan. Pada versi saat ini, kesalahan berarti tidak ada kredensial yang tersedia untuk proses pekerja.

321 

322**Yang harus dilakukan:**

323 

324* Tingkatkan ke v2.1.174 atau lebih baru jika ini muncul di sesi latar belakang atau cloud dan kredensial Anda sudah dikonfigurasi

325* Konfirmasi `ANTHROPIC_API_KEY`, `CLAUDE_CODE_OAUTH_TOKEN`, atau kredensial penyedia cloud Anda diatur di lingkungan yang meluncurkan pekerja, bukan hanya di shell interaktif Anda

326* Untuk Agent SDK, lihat [authentication setup](/id/agent-sdk/overview#get-started)

327* Jalankan `/status` di sesi interaktif di lingkungan yang sama untuk mengonfirmasi sumber kredensial mana yang diselesaikan

328 

329<h3 id="invalid-api-key">

330 Invalid API key

331</h3>

259 332 

260Variabel lingkungan `ANTHROPIC_API_KEY` atau skrip `apiKeyHelper` mengembalikan kunci yang ditolak API.333Variabel lingkungan `ANTHROPIC_API_KEY` atau skrip `apiKeyHelper` mengembalikan kunci yang ditolak API.

261 334 


271* Jika kunci berasal dari skrip [`apiKeyHelper`](/id/settings#available-settings), jalankan skrip secara langsung untuk mengonfirmasi itu mencetak kunci yang valid di stdout344* Jika kunci berasal dari skrip [`apiKeyHelper`](/id/settings#available-settings), jalankan skrip secara langsung untuk mengonfirmasi itu mencetak kunci yang valid di stdout

272* Jalankan `/status` untuk mengonfirmasi sumber kredensial mana yang sebenarnya digunakan Claude Code345* Jalankan `/status` untuk mengonfirmasi sumber kredensial mana yang sebenarnya digunakan Claude Code

273 346 

274### This organization has been disabled347<h3 id="this-organization-has-been-disabled">

348 This organization has been disabled

349</h3>

275 350 

276`ANTHROPIC_API_KEY` basi dari organisasi Console yang dinonaktifkan menimpa login langganan Anda.351`ANTHROPIC_API_KEY` basi dari organisasi Console yang dinonaktifkan menimpa login langganan Anda.

277 352 


288* Jalankan `/status` setelahnya untuk mengonfirmasi kredensial aktif adalah langganan Anda363* Jalankan `/status` setelahnya untuk mengonfirmasi kredensial aktif adalah langganan Anda

289* Jika tidak ada variabel lingkungan yang diatur dan kesalahan berlanjut, organisasi yang dinonaktifkan adalah yang terikat pada `/login` Anda. Hubungi dukungan atau masuk dengan akun berbeda.364* Jika tidak ada variabel lingkungan yang diatur dan kesalahan berlanjut, organisasi yang dinonaktifkan adalah yang terikat pada `/login` Anda. Hubungi dukungan atau masuk dengan akun berbeda.

290 365 

291### Your organization has disabled Claude subscription access366<h3 id="your-organization-has-disabled-api-key-authentication">

367 Your organization has disabled API key authentication

368</h3>

369 

370Admin organisasi Console Anda telah mematikan autentikasi kunci API, jadi API menolak kunci yang dikirim Claude Code. Petunjuk pemulihan setelah `·` bervariasi tergantung dari mana kunci berasal:

371 

372```text theme={null}

373Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account

374Your organization has disabled API key authentication · Unset ANTHROPIC_API_KEY to use your claude.ai account instead

375Your organization has disabled API key authentication · Unset ANTHROPIC_API_KEY and run /login to sign in with your claude.ai account

376Your organization has disabled API key authentication · Unset the apiKeyHelper setting and run /login to sign in with your claude.ai account

377```

378 

379Variabel lingkungan dan `apiKeyHelper` memiliki prioritas daripada `/login`, jadi menjalankan `/login` saja tidak membantu sementara salah satu masih menyuplai kunci. Lihat [Authentication precedence](/id/authentication#authentication-precedence).

380 

381**Yang harus dilakukan:**

382 

383* Jika pesan menyebutkan `ANTHROPIC_API_KEY`, batalkan pengaturannya di shell saat ini dan hapus dari profil shell Anda atau file `.env`, kemudian luncurkan ulang `claude`

384* Jika pesan menyebutkan `apiKeyHelper`, hapus pengaturan [`apiKeyHelper`](/id/settings#available-settings) dari `settings.json` Anda

385* Jalankan `/login` untuk masuk dengan akun claude.ai Anda

386* Jalankan `/status` setelahnya untuk mengonfirmasi kredensial aktif adalah langganan Anda daripada kunci API

387* Jika Anda memerlukan autentikasi kunci API untuk otomasi, minta admin organisasi Anda untuk mengaktifkannya kembali di Console

388 

389<h3 id="your-organization-has-disabled-claude-subscription-access">

390 Your organization has disabled Claude subscription access

391</h3>

292 392 

293Organisasi Claude Anda tidak memungkinkan masuk ke Claude Code dengan login langganan. Menjalankan `/login` lagi dengan akun yang sama mengembalikan kesalahan yang sama.393Organisasi Claude Anda tidak memungkinkan masuk ke Claude Code dengan login langganan. Menjalankan `/login` lagi dengan akun yang sama mengembalikan kesalahan yang sama.

294 394 


304* Autentikasi dengan kunci API Console sebagai gantinya dari langganan Anda. Lihat [Claude Console authentication](/id/authentication#claude-console-authentication) untuk setup.404* Autentikasi dengan kunci API Console sebagai gantinya dari langganan Anda. Lihat [Claude Console authentication](/id/authentication#claude-console-authentication) untuk setup.

305* Jika Anda adalah admin dan tidak melihat opsi untuk mengaktifkan akses, hubungi [Anthropic support](https://support.claude.com)405* Jika Anda adalah admin dan tidak melihat opsi untuk mengaktifkan akses, hubungi [Anthropic support](https://support.claude.com)

306 406 

307### Routines are disabled by your organization's policy407<h3 id="routines-are-disabled-by-your-organizations-policy">

408 Routines are disabled by your organization's policy

409</h3>

308 410 

309Admin Tim atau Enterprise Anda telah mematikan routines di tingkat organisasi. Kesalahan muncul ketika Anda mencoba membuat atau menjalankan routine, termasuk dari `/schedule` dan UI [Routines](/id/routines) di claude.ai/code.411Admin Tim atau Enterprise Anda telah mematikan routines di tingkat organisasi. Kesalahan muncul ketika Anda mencoba membuat atau menjalankan routine, termasuk dari `/schedule` dan UI [Routines](/id/routines) di claude.ai/code.

310 412 


319* Minta admin Anda untuk mengaktifkan toggle **Routines** di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)421* Minta admin Anda untuk mengaktifkan toggle **Routines** di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

320* Untuk pekerjaan terjadwal sekali pakai yang tidak memerlukan routines tingkat organisasi, lihat [scheduled tasks](/id/scheduled-tasks)422* Untuk pekerjaan terjadwal sekali pakai yang tidak memerlukan routines tingkat organisasi, lihat [scheduled tasks](/id/scheduled-tasks)

321 423 

322### OAuth token revoked or expired424<h3 id="oauth-token-revoked-or-expired">

425 OAuth token revoked or expired

426</h3>

323 427 

324Login yang disimpan tidak lagi valid. Token yang dicabut berarti Anda keluar di mana-mana atau admin menghapus akses; token yang kedaluwarsa berarti penyegaran otomatis gagal di tengah sesi.428Login yang disimpan tidak lagi valid. Token yang dicabut berarti Anda keluar di mana-mana atau admin menghapus akses; token yang kedaluwarsa berarti penyegaran otomatis gagal di tengah sesi.

325 429 


336* Untuk prompt berulang untuk masuk di seluruh peluncuran, lihat pemeriksaan jam sistem dan macOS Keychain di [Troubleshooting](/id/troubleshoot-install#not-logged-in-or-token-expired)440* Untuk prompt berulang untuk masuk di seluruh peluncuran, lihat pemeriksaan jam sistem dan macOS Keychain di [Troubleshooting](/id/troubleshoot-install#not-logged-in-or-token-expired)

337* Untuk kegagalan lainnya termasuk `403 Forbidden` dan masalah browser OAuth, lihat [Login and authentication](/id/troubleshoot-install#login-and-authentication)441* Untuk kegagalan lainnya termasuk `403 Forbidden` dan masalah browser OAuth, lihat [Login and authentication](/id/troubleshoot-install#login-and-authentication)

338 442 

339### OAuth scope requirement443<h3 id="oauth-scope-requirement">

444 OAuth scope requirement

445</h3>

340 446 

341Token yang disimpan mendahului cakupan izin yang diperlukan fitur yang lebih baru. Anda melihat ini paling sering dari `/usage` dan indikator penggunaan baris status:447Token yang disimpan mendahului cakupan izin yang diperlukan fitur yang lebih baru. Anda melihat ini paling sering dari `/usage` dan indikator penggunaan baris status:

342 448 


348 454 

349* Jalankan `/login` untuk membuat token baru dengan cakupan saat ini. Anda tidak perlu keluar terlebih dahulu.455* Jalankan `/login` untuk membuat token baru dengan cakupan saat ini. Anda tidak perlu keluar terlebih dahulu.

350 456 

351## Kesalahan jaringan dan koneksi457<h2 id="network-and-connection-errors">

458 Kesalahan jaringan dan koneksi

459</h2>

352 460 

353Kesalahan ini berarti permintaan jaringan dari Claude Code gagal menjangkau tujuannya. Mereka biasanya berasal dari jaringan lokal, proxy, atau firewall Anda, atau dari kebijakan jaringan lingkungan cloud.461Kesalahan ini berarti permintaan jaringan dari Claude Code gagal menjangkau tujuannya. Mereka biasanya berasal dari jaringan lokal, proxy, atau firewall Anda, atau dari kebijakan jaringan lingkungan cloud.

354 462 

355### Unable to connect to API463<h3 id="unable-to-connect-to-api">

464 Unable to connect to API

465</h3>

356 466 

357Koneksi TCP ke API gagal atau tidak pernah selesai.467Koneksi TCP ke API gagal atau tidak pernah selesai.

358 468 


381* Di macOS, klien VPN yang terputus atau dihapus dapat meninggalkan antarmuka terowongan atau aturan perutean. Periksa `ifconfig` untuk antarmuka `utun` basi dan hapus ekstensi jaringan VPN di System Settings.491* Di macOS, klien VPN yang terputus atau dihapus dapat meninggalkan antarmuka terowongan atau aturan perutean. Periksa `ifconfig` untuk antarmuka `utun` basi dan hapus ekstensi jaringan VPN di System Settings.

382* Docker Desktop dan runtime kontainer serupa dapat mencegat lalu lintas keluar. Keluar dari mereka dan coba ulang untuk mengesampingkan ini.492* Docker Desktop dan runtime kontainer serupa dapat mencegat lalu lintas keluar. Keluar dari mereka dan coba ulang untuk mengesampingkan ini.

383 493 

384### SSL certificate errors494<h3 id="ssl-certificate-errors">

495 SSL certificate errors

496</h3>

385 497 

386Proxy atau perangkat keamanan di jaringan Anda mencegat lalu lintas TLS dengan sertifikatnya sendiri, dan Claude Code tidak mempercayainya.498Proxy atau perangkat keamanan di jaringan Anda mencegat lalu lintas TLS dengan sertifikatnya sendiri, dan Claude Code tidak mempercayainya.

387 499 


396* Lihat [Network configuration](/id/network-config#custom-ca-certificates) untuk instruksi penyiapan lengkap508* Lihat [Network configuration](/id/network-config#custom-ca-certificates) untuk instruksi penyiapan lengkap

397* Jangan atur `NODE_TLS_REJECT_UNAUTHORIZED=0`, yang menonaktifkan validasi sertifikat sepenuhnya509* Jangan atur `NODE_TLS_REJECT_UNAUTHORIZED=0`, yang menonaktifkan validasi sertifikat sepenuhnya

398 510 

399### Host not allowed in a cloud session511<h3 id="host-not-allowed-in-a-cloud-session">

512 Host not allowed in a cloud session

513</h3>

400 514 

401Permintaan HTTP keluar dari sesi cloud atau routine diblokir oleh kebijakan jaringan lingkungan.515Permintaan HTTP keluar dari sesi cloud atau routine diblokir oleh kebijakan jaringan lingkungan.

402 516 


417 531 

418Lihat [Network access](/id/claude-code-on-the-web#network-access) untuk tingkat akses dan daftar izin default. Sesi CLI lokal tidak terpengaruh oleh kebijakan ini.532Lihat [Network access](/id/claude-code-on-the-web#network-access) untuk tingkat akses dan daftar izin default. Sesi CLI lokal tidak terpengaruh oleh kebijakan ini.

419 533 

420## Kesalahan permintaan534<h2 id="request-errors">

535 Kesalahan permintaan

536</h2>

421 537 

422Kesalahan ini berarti API menerima permintaan Anda tetapi menolak kontennya.538Kesalahan ini berarti API menerima permintaan Anda tetapi menolak kontennya.

423 539 

424### Prompt is too long540<h3 id="prompt-is-too-long">

541 Prompt is too long

542</h3>

425 543 

426Percakapan ditambah file terlampir melebihi jendela konteks model.544Percakapan ditambah file terlampir melebihi jendela konteks model.

427 545 


440 558 

441Lihat [Jelajahi jendela konteks](/id/context-window) untuk tampilan interaktif tentang bagaimana konteks terisi.559Lihat [Jelajahi jendela konteks](/id/context-window) untuk tampilan interaktif tentang bagaimana konteks terisi.

442 560 

443### Error during compaction: Conversation too long561<h3 id="error-during-compaction-conversation-too-long">

562 Error during compaction: Conversation too long

563</h3>

444 564 

445`/compact` itu sendiri gagal karena tidak ada cukup konteks gratis untuk menampung ringkasan yang dihasilkannya.565`/compact` itu sendiri gagal karena tidak ada cukup konteks gratis untuk menampung ringkasan yang dihasilkannya.

446 566 


455* Tekan Esc dua kali untuk membuka daftar pesan dan mundur beberapa putaran. Ini menghapus pesan terbaru dari konteks. Kemudian jalankan `/compact` lagi.575* Tekan Esc dua kali untuk membuka daftar pesan dan mundur beberapa putaran. Ini menghapus pesan terbaru dari konteks. Kemudian jalankan `/compact` lagi.

456* Jika mundur tidak membebaskan cukup ruang, jalankan `/clear` untuk memulai sesi segar. Percakapan sebelumnya Anda dipertahankan dan dapat dibuka kembali dengan `/resume`.576* Jika mundur tidak membebaskan cukup ruang, jalankan `/clear` untuk memulai sesi segar. Percakapan sebelumnya Anda dipertahankan dan dapat dibuka kembali dengan `/resume`.

457 577 

458### Request too large578<h3 id="request-too-large">

579 Request too large

580</h3>

459 581 

460Badan permintaan mentah melebihi batas byte API sebelum tokenisasi, biasanya karena file atau lampiran besar yang ditempel.582Badan permintaan mentah melebihi batas byte API sebelum tokenisasi, biasanya karena file atau lampiran besar yang ditempel.

461 583 


471* Referensikan file besar berdasarkan jalur daripada menempel kontennya, sehingga Claude dapat membacanya dalam potongan593* Referensikan file besar berdasarkan jalur daripada menempel kontennya, sehingga Claude dapat membacanya dalam potongan

472* Untuk gambar, lihat [Image was too large](#image-was-too-large) di bawah594* Untuk gambar, lihat [Image was too large](#image-was-too-large) di bawah

473 595 

474### Image was too large596<h3 id="image-was-too-large">

597 Image was too large

598</h3>

475 599 

476Gambar yang ditempel atau dilampirkan melebihi batas ukuran atau dimensi API.600Gambar yang ditempel atau dilampirkan melebihi batas ukuran atau dimensi API.

477 601 


480API Error: 400 ... image dimensions exceed max allowed size604API Error: 400 ... image dimensions exceed max allowed size

481```605```

482 606 

483Gambar tetap dalam riwayat percakapan setelah kesalahan, jadi setiap pesan berikutnya gagal dengan kesalahan yang sama sampai Anda menghapusnya.607{/* min-version: 2.1.142 */}Claude Code mengganti gambar yang tidak dapat diproses dengan placeholder teks dan mencoba lagi, sehingga pesan berikutnya berhasil. Pada versi sebelum 2.1.142, gambar yang ditempel dapat tetap berada dalam percakapan dan mengulangi kesalahan yang sama pada setiap pesan berikutnya. Untuk pulih pada versi tersebut, tekan Esc dua kali dan mundur melewati putaran tempat gambar ditambahkan.

484 608 

485**Yang harus dilakukan:**609**Yang harus dilakukan:**

486 610 

487* Tekan Esc dua kali dan mundur melewati putaran tempat gambar ditambahkan

488* Ubah ukuran gambar sebelum menempel. API menerima gambar hingga 8000 piksel di tepi terpanjang untuk satu gambar, atau 2000 piksel ketika banyak gambar ada dalam konteks.611* Ubah ukuran gambar sebelum menempel. API menerima gambar hingga 8000 piksel di tepi terpanjang untuk satu gambar, atau 2000 piksel ketika banyak gambar ada dalam konteks.

489* Ambil tangkapan layar yang lebih ketat dari wilayah yang relevan daripada layar penuh612* Ambil tangkapan layar yang lebih ketat dari wilayah yang relevan daripada layar penuh

490 613 

491### Unable to resize image614<h3 id="unable-to-resize-image">

615 Unable to resize image

616</h3>

492 617 

493Claude Code tidak dapat memperkecil gambar yang dilampirkan sebelum mengirimnya ke API.618Claude Code tidak dapat memperkecil gambar yang dilampirkan sebelum mengirimnya ke API.

494 619 


506* Jika pesan meminta Anda untuk mengonversi gambar, konversikan ke PNG, JPEG, GIF, atau WebP dan lampirkan lagi. Claude Code dapat memverifikasi dimensi untuk format ini tanpa pemroses gambar.631* Jika pesan meminta Anda untuk mengonversi gambar, konversikan ke PNG, JPEG, GIF, atau WebP dan lampirkan lagi. Claude Code dapat memverifikasi dimensi untuk format ini tanpa pemroses gambar.

507* Jika pesan melaporkan batas dimensi atau ukuran, ubah ukuran atau kompres ulang gambar di bawah batas tersebut sebelum melampirkan.632* Jika pesan melaporkan batas dimensi atau ukuran, ubah ukuran atau kompres ulang gambar di bawah batas tersebut sebelum melampirkan.

508 633 

509### PDF errors634<h3 id="pdf-errors">

635 PDF errors

636</h3>

510 637 

511PDF yang Anda lampirkan tidak dapat diproses.638PDF yang Anda lampirkan tidak dapat diproses.

512 639 


521* Untuk PDF yang terlalu besar, minta Claude untuk membaca rentang halaman dengan alat Read daripada melampirkan seluruh file, atau ekstrak teks dengan alat seperti `pdftotext` dan referensikan file output berdasarkan jalur648* Untuk PDF yang terlalu besar, minta Claude untuk membaca rentang halaman dengan alat Read daripada melampirkan seluruh file, atau ekstrak teks dengan alat seperti `pdftotext` dan referensikan file output berdasarkan jalur

522* Untuk PDF yang dilindungi atau tidak valid, hapus kata sandi atau ekspor ulang file dari aplikasi sumbernya, kemudian coba lagi649* Untuk PDF yang dilindungi atau tidak valid, hapus kata sandi atau ekspor ulang file dari aplikasi sumbernya, kemudian coba lagi

523 650 

524### Extra inputs are not permitted651<h3 id="extra-inputs-are-not-permitted">

652 Extra inputs are not permitted

653</h3>

525 654 

526Proxy atau gateway LLM antara Claude Code dan API menghapus header permintaan `anthropic-beta`, jadi API menolak bidang yang bergantung padanya.655Proxy atau gateway LLM antara Claude Code dan API menghapus header permintaan `anthropic-beta`, jadi API menolak bidang yang bergantung padanya.

527 656 


538* Konfigurasikan gateway Anda untuk meneruskan header `anthropic-beta`. Lihat [Konfigurasi gateway LLM](/id/llm-gateway).667* Konfigurasikan gateway Anda untuk meneruskan header `anthropic-beta`. Lihat [Konfigurasi gateway LLM](/id/llm-gateway).

539* Sebagai fallback, atur [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/id/env-vars) sebelum meluncurkan. Ini menonaktifkan fitur yang memerlukan header beta sehingga permintaan berhasil melalui gateway yang tidak dapat meneruskannya.668* Sebagai fallback, atur [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/id/env-vars) sebelum meluncurkan. Ini menonaktifkan fitur yang memerlukan header beta sehingga permintaan berhasil melalui gateway yang tidak dapat meneruskannya.

540 669 

541### There's an issue with the selected model670<h3 id="there’s-an-issue-with-the-selected-model">

671 There's an issue with the selected model

672</h3>

542 673 

543Nama model yang dikonfigurasi tidak dikenali atau akun Anda tidak memiliki akses ke sana. Mulai dari v2.1.160, petunjuk trailing yang ditampilkan di sini dalam bentuk interaktifnya, bervariasi menurut permukaan.674Nama model yang dikonfigurasi tidak dikenali atau akun Anda tidak memiliki akses ke sana. Mulai dari v2.1.160, petunjuk trailing yang ditampilkan di sini dalam bentuk interaktifnya, bervariasi menurut permukaan.

544 675 


555* Jika model yang salah terus kembali di CLI, ID basi diatur di suatu tempat. Periksa dalam [urutan prioritas](/id/model-config#setting-your-model): flag `--model`, variabel lingkungan `ANTHROPIC_MODEL`, kemudian bidang `model` di `.claude/settings.local.json`, `.claude/settings.json` proyek Anda, dan `~/.claude/settings.json`. Hapus nilai basi dan Claude Code kembali ke default akun Anda.686* Jika model yang salah terus kembali di CLI, ID basi diatur di suatu tempat. Periksa dalam [urutan prioritas](/id/model-config#setting-your-model): flag `--model`, variabel lingkungan `ANTHROPIC_MODEL`, kemudian bidang `model` di `.claude/settings.local.json`, `.claude/settings.json` proyek Anda, dan `~/.claude/settings.json`. Hapus nilai basi dan Claude Code kembali ke default akun Anda.

556* Untuk penyebaran Vertex AI, lihat [Pemecahan masalah Vertex AI](/id/google-vertex-ai#troubleshooting).687* Untuk penyebaran Vertex AI, lihat [Pemecahan masalah Vertex AI](/id/google-vertex-ai#troubleshooting).

557 688 

558### Claude Opus is not available with the Claude Pro plan689<h3 id="claude-opus-is-not-available-with-the-claude-pro-plan">

690 Claude Opus is not available with the Claude Pro plan

691</h3>

559 692 

560Paket langganan aktif Anda tidak menyertakan model yang Anda pilih.693Paket langganan aktif Anda tidak menyertakan model yang Anda pilih.

561 694 


569* Jika Anda baru-baru ini meningkatkan paket dan masih melihat ini, jalankan `/logout` kemudian `/login`. Token yang disimpan mencerminkan paket Anda pada saat Anda masuk, jadi meningkatkan di web tidak berlaku dalam sesi yang ada sampai Anda autentikasi ulang.702* Jika Anda baru-baru ini meningkatkan paket dan masih melihat ini, jalankan `/logout` kemudian `/login`. Token yang disimpan mencerminkan paket Anda pada saat Anda masuk, jadi meningkatkan di web tidak berlaku dalam sesi yang ada sampai Anda autentikasi ulang.

570* Lihat [claude.com/pricing](https://claude.com/pricing) untuk model mana yang disertakan setiap paket703* Lihat [claude.com/pricing](https://claude.com/pricing) untuk model mana yang disertakan setiap paket

571 704 

572### thinking.type.enabled is not supported for this model705<h3 id="thinking-type-enabled-is-not-supported-for-this-model">

706 thinking.type.enabled is not supported for this model

707</h3>

573 708 

574Versi Claude Code Anda lebih lama dari minimum untuk Opus 4.7 atau Opus 4.8. CLI mengirim konfigurasi pemikiran yang tidak lagi diterima model.709Versi Claude Code Anda lebih lama dari minimum untuk Opus 4.7 atau Opus 4.8. CLI mengirim konfigurasi pemikiran yang tidak lagi diterima model.

575 710 


583* Jika Anda tidak dapat meningkatkan, jalankan `/model` dan pilih Opus 4.6 atau Sonnet sebagai gantinya718* Jika Anda tidak dapat meningkatkan, jalankan `/model` dan pilih Opus 4.6 atau Sonnet sebagai gantinya

584* Jika Anda mengalami ini di Agent SDK, lihat [Pemecahan masalah SDK](/id/agent-sdk/quickstart#troubleshooting)719* Jika Anda mengalami ini di Agent SDK, lihat [Pemecahan masalah SDK](/id/agent-sdk/quickstart#troubleshooting)

585 720 

586### Thinking budget exceeds output limit721<h3 id="thinking-budget-exceeds-output-limit">

722 Thinking budget exceeds output limit

723</h3>

587 724 

588Anggaran pemikiran yang diperluas yang dikonfigurasi melebihi panjang respons maksimum, jadi tidak ada ruang yang tersisa untuk jawaban sebenarnya.725Anggaran pemikiran yang diperluas yang dikonfigurasi melebihi panjang respons maksimum, jadi tidak ada ruang yang tersisa untuk jawaban sebenarnya.

589 726 


598* Turunkan `MAX_THINKING_TOKENS`, atau naikkan [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/id/env-vars) di atas anggaran pemikiran735* Turunkan `MAX_THINKING_TOKENS`, atau naikkan [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/id/env-vars) di atas anggaran pemikiran

599* Lihat [Pemikiran yang diperluas](/id/model-config#extended-thinking) untuk cara anggaran berinteraksi dengan panjang output736* Lihat [Pemikiran yang diperluas](/id/model-config#extended-thinking) untuk cara anggaran berinteraksi dengan panjang output

600 737 

601### Tool use or thinking block mismatch738<h3 id="tool-use-or-thinking-block-mismatch">

739 Tool use or thinking block mismatch

740</h3>

602 741 

603Riwayat percakapan mencapai API dalam keadaan tidak konsisten, biasanya setelah panggilan alat terputus atau putaran diedit di tengah aliran.742Riwayat percakapan mencapai API dalam keadaan tidak konsisten, biasanya setelah panggilan alat terputus atau putaran diedit di tengah aliran.

604 743 


615* {/* max-version: 2.1.155 */}Jika Anda menggunakan Opus 4.7 atau Opus 4.8, jalankan `claude update` terlebih dahulu. Versi sebelum v2.1.156 dapat memicu kesalahan ini selama penggunaan alat normal, dan `/rewind` tidak menghapusnya.754* {/* max-version: 2.1.155 */}Jika Anda menggunakan Opus 4.7 atau Opus 4.8, jalankan `claude update` terlebih dahulu. Versi sebelum v2.1.156 dapat memicu kesalahan ini selama penggunaan alat normal, dan `/rewind` tidak menghapusnya.

616* Jalankan `/rewind`, atau tekan Esc dua kali, untuk mundur ke checkpoint sebelum putaran yang rusak dan lanjutkan dari sana. Lihat [Checkpointing](/id/checkpointing) untuk cara checkpoint dibuat dan dipulihkan.755* Jalankan `/rewind`, atau tekan Esc dua kali, untuk mundur ke checkpoint sebelum putaran yang rusak dan lanjutkan dari sana. Lihat [Checkpointing](/id/checkpointing) untuk cara checkpoint dibuat dan dipulihkan.

617 756 

618### Usage Policy refusal757<h3 id="usage-policy-refusal">

758 Usage Policy refusal

759</h3>

619 760 

620API menolak untuk merespons karena konten dalam percakapan memicu pemeriksaan [Usage Policy](https://www.anthropic.com/legal/aup). Pesan tersebut menyertakan ID Permintaan yang dapat Anda kutip ke dukungan jika Anda percaya penolakan itu salah.761API menolak untuk merespons karena konten dalam percakapan memicu pemeriksaan [Usage Policy](https://www.anthropic.com/legal/aup). Pesan tersebut menyertakan ID Permintaan yang dapat Anda kutip ke dukungan jika Anda percaya penolakan itu salah.

621 762 


629 770 

630* Tekan Esc dua kali atau jalankan `/rewind` untuk mundur ke checkpoint sebelum putaran yang memicu penolakan, kemudian rephrase atau ambil pendekatan yang berbeda. Lihat [Checkpointing](/id/checkpointing).771* Tekan Esc dua kali atau jalankan `/rewind` untuk mundur ke checkpoint sebelum putaran yang memicu penolakan, kemudian rephrase atau ambil pendekatan yang berbeda. Lihat [Checkpointing](/id/checkpointing).

631* Jika Anda tidak dapat mengidentifikasi putaran mana yang menyebabkannya, jalankan `/clear` untuk memulai percakapan segar dalam proyek yang sama. Percakapan sebelumnya Anda dipertahankan di disk dan tetap tersedia di `/resume`.772* Jika Anda tidak dapat mengidentifikasi putaran mana yang menyebabkannya, jalankan `/clear` untuk memulai percakapan segar dalam proyek yang sama. Percakapan sebelumnya Anda dipertahankan di disk dan tetap tersedia di `/resume`.

632* Dalam [mode non-interaktif](/id/headless) (`-p`), di mana rewind tidak tersedia, coba lagi dengan prompt yang diubah atau mulai sesi baru tanpa `--continue`.773* Dalam [mode non-interaktif](/id/headless) (`-p`), di mana rewind tidak tersedia, coba lagi dengan prompt yang diubah atau mulai sesi baru tanpa `--continue`. Pemeriksaan kebijakan bervariasi menurut model, jadi beralih ke model yang berbeda dengan `--model` juga dapat menyelesaikan penolakan dalam beberapa kasus.

774 

775<h2 id="responses-seem-lower-quality-than-usual">

776 Responses seem lower quality than usual

777</h2>

778 

779Jika jawaban Claude tampak kurang mampu dari yang Anda harapkan tetapi tidak ada kesalahan yang ditampilkan, penyebabnya biasanya keadaan percakapan daripada model itu sendiri. Claude Code tidak secara diam-diam mengubah versi model. Ini dapat beralih ke model fallback dalam tiga kasus spesifik:

633 780 

634## Responses seem lower quality than usual781* Sebuah [`--fallback-model`](/id/cli-reference#cli-flags) yang dikonfigurasi mengambil alih setelah kesalahan ketersediaan, untuk giliran itu saja, dengan pemberitahuan dalam transkrip

782* Pemeriksaan startup Bedrock atau Vertex AI menemukan model default Anda tidak tersedia

783* [Automatic model fallback](/id/model-config#automatic-model-fallback) pada Fable 5 memindahkan sesi ke model Opus default dan menampilkan pemberitahuan dalam transkrip

635 784 

636Jika jawaban Claude tampak kurang mampu dari yang Anda harapkan tetapi tidak ada kesalahan yang ditampilkan, penyebabnya biasanya keadaan percakapan daripada model itu sendiri. Claude Code tidak secara diam-diam mengubah versi model. Ini dapat beralih ke model fallback dalam kasus spesifik seperti kuota Opus tercapai atau Bedrock atau Vertex AI region tidak memiliki model Anda; pemeriksaan Model selection di bawah menangkap keduanya, dan [Model configuration](/id/model-config) menjelaskan kapan fallback berlaku.785Pemeriksaan Model selection di bawah menangkap kasus kedua dan ketiga; kasus pertama muncul sebagai pemberitahuan transkrip daripada perubahan `/model`. [Model configuration](/id/model-config) menjelaskan kapan setiap fallback berlaku.

637 786 

638Periksa ini terlebih dahulu:787Periksa ini terlebih dahulu:

639 788 


646 795 

647Jika kualitas masih tampak tidak normal setelah memeriksa di atas, jalankan `/feedback` dan jelaskan apa yang Anda harapkan versus apa yang Anda dapatkan. Umpan balik yang dikirimkan dengan cara ini mencakup transkrip percakapan, yang merupakan cara tercepat bagi Anthropic untuk mendiagnosis regresi nyata. Lihat [Report an error](#report-an-error) jika `/feedback` tidak tersedia di lingkungan Anda.796Jika kualitas masih tampak tidak normal setelah memeriksa di atas, jalankan `/feedback` dan jelaskan apa yang Anda harapkan versus apa yang Anda dapatkan. Umpan balik yang dikirimkan dengan cara ini mencakup transkrip percakapan, yang merupakan cara tercepat bagi Anthropic untuk mendiagnosis regresi nyata. Lihat [Report an error](#report-an-error) jika `/feedback` tidak tersedia di lingkungan Anda.

648 797 

649## Laporkan kesalahan798<h2 id="report-an-error">

799 Laporkan kesalahan

800</h2>

650 801 

651Halaman ini mencakup kesalahan dari Claude API. Untuk kesalahan dari komponen Claude Code lainnya, lihat panduan yang relevan:802Halaman ini mencakup kesalahan dari Claude API. Untuk kesalahan dari komponen Claude Code lainnya, lihat panduan yang relevan:

652 803 

653* Server MCP gagal terhubung atau autentikasi: [MCP](/id/mcp)804* Server MCP gagal terhubung atau autentikasi: [MCP](/id/mcp)

654* Skrip hook gagal atau memblokir alat: [Debug hooks](/id/hooks#debug-hooks)805* Skrip hook gagal atau memblokir alat: [Debug hooks](/id/hooks#debug-hooks)

655* Izin ditolak atau kesalahan filesystem selama instalasi: [Troubleshooting installation and login](/id/troubleshoot-install)806* Izin ditolak atau kesalahan filesystem selama instalasi: [Troubleshoot installation and login](/id/troubleshoot-install)

656 807 

657Jika kesalahan tidak tercantum di sini atau perbaikan yang disarankan tidak membantu:808Jika kesalahan tidak tercantum di sini atau perbaikan yang disarankan tidak membantu:

658 809 

fast-mode.md +1 −1

Details

115* **Aktivasi admin untuk Teams dan Enterprise**: mode cepat dinonaktifkan secara default untuk organisasi Teams dan Enterprise. Admin harus secara eksplisit [mengaktifkan mode cepat](#enable-fast-mode-for-your-organization) sebelum pengguna dapat mengaksesnya.115* **Aktivasi admin untuk Teams dan Enterprise**: mode cepat dinonaktifkan secara default untuk organisasi Teams dan Enterprise. Admin harus secara eksplisit [mengaktifkan mode cepat](#enable-fast-mode-for-your-organization) sebelum pengguna dapat mengaksesnya.

116 116 

117<Note>117<Note>

118 Jika admin Anda belum mengaktifkan mode cepat untuk organisasi Anda, perintah `/fast` akan menampilkan "Fast mode has been disabled by your organization."118 Jika admin Anda belum mengaktifkan mode cepat untuk organisasi Anda, perintah `/fast` akan menampilkan "Fast mode has been disabled by your organization." Jika daftar allowlist [`availableModels`](/id/model-config#restrict-model-selection) organisasi Anda mengecualikan model Opus mode cepat, `/fast` ditolak dengan "is not in your organization's allowed models".

119</Note>119</Note>

120 120 

121<h3 id="enable-fast-mode-for-your-organization">121<h3 id="enable-fast-mode-for-your-organization">

Details

109 109 

110 **Letakkan di skill** jika itu materi referensi yang Claude butuhkan kadang-kadang (dokumen API, panduan gaya) atau alur kerja yang Anda picu dengan `/<name>` (deploy, review, release).110 **Letakkan di skill** jika itu materi referensi yang Claude butuhkan kadang-kadang (dokumen API, panduan gaya) atau alur kerja yang Anda picu dengan `/<name>` (deploy, review, release).

111 111 

112 **Aturan praktis:** Jaga CLAUDE.md di bawah 200 baris. Jika berkembang, pindahkan konten referensi ke skills atau pisahkan ke file [`.claude/rules/`](/id/memory#organize-rules-with-clauderules).112 **Aturan praktis:** Jaga CLAUDE.md di bawah 200 baris. Jika berkembang, pindahkan konten referensi ke skills atau pisahkan ke file [`.claude/rules/`](/id/memory#organize-rules-with-claude%2Frules%2F).

113 </Tab>113 </Tab>

114 114 

115 <Tab title="CLAUDE.md vs Rules vs Skills">115 <Tab title="CLAUDE.md vs Rules vs Skills">


198 198 

199Fitur dapat didefinisikan di beberapa tingkat: seluruh pengguna, per-proyek, melalui plugins, atau melalui kebijakan terkelola. Anda juga dapat menyarangkan file CLAUDE.md di subdirektori atau menempatkan skills di paket tertentu dari monorepo. Ketika fitur yang sama ada di beberapa tingkat, berikut cara mereka berlapis:199Fitur dapat didefinisikan di beberapa tingkat: seluruh pengguna, per-proyek, melalui plugins, atau melalui kebijakan terkelola. Anda juga dapat menyarangkan file CLAUDE.md di subdirektori atau menempatkan skills di paket tertentu dari monorepo. Ketika fitur yang sama ada di beberapa tingkat, berikut cara mereka berlapis:

200 200 

201* **File CLAUDE.md** bersifat aditif: semua tingkat berkontribusi konten ke konteks Claude secara bersamaan. File dari direktori kerja Anda dan di atas dimuat saat peluncuran; subdirektori dimuat saat Anda bekerja di dalamnya. Ketika instruksi bertentangan, Claude menggunakan penilaian untuk merekonsiliasi mereka, dengan instruksi yang lebih spesifik biasanya mengambil alih. Lihat [bagaimana file CLAUDE.md dimuat](/id/memory#how-claudemd-files-load).201* **File CLAUDE.md** bersifat aditif: semua tingkat berkontribusi konten ke konteks Claude secara bersamaan. File dari direktori kerja Anda dan di atas dimuat saat peluncuran; subdirektori dimuat saat Anda bekerja di dalamnya. Ketika instruksi bertentangan, Claude menggunakan penilaian untuk merekonsiliasi mereka, dengan instruksi yang lebih spesifik biasanya mengambil alih. Lihat [bagaimana file CLAUDE.md dimuat](/id/memory#how-claude-md-files-load).

202* **Skills dan subagents** menimpa berdasarkan nama: ketika nama yang sama ada di beberapa tingkat, satu definisi menang berdasarkan prioritas (terkelola > pengguna > proyek untuk skills; terkelola > bendera CLI > proyek > pengguna > plugin untuk subagents). Plugin skills adalah [namespaced](/id/plugins#add-skills-to-your-plugin) untuk menghindari konflik. Lihat [penemuan skill](/id/skills#where-skills-live) dan [cakupan subagent](/id/sub-agents#choose-the-subagent-scope).202* **Skills dan subagents** menimpa berdasarkan nama: ketika nama yang sama ada di beberapa tingkat, satu definisi menang berdasarkan prioritas (terkelola > pengguna > proyek untuk skills; terkelola > bendera CLI > proyek > pengguna > plugin untuk subagents). Plugin skills adalah [namespaced](/id/plugins#add-skills-to-your-plugin) untuk menghindari konflik. Lihat [penemuan skill](/id/skills#where-skills-live) dan [cakupan subagent](/id/sub-agents#choose-the-subagent-scope).

203* **Server MCP** menimpa berdasarkan nama: lokal > proyek > pengguna. Lihat [cakupan MCP](/id/mcp#scope-hierarchy-and-precedence).203* **Server MCP** menimpa berdasarkan nama: lokal > proyek > pengguna. Lihat [cakupan MCP](/id/mcp#scope-hierarchy-and-precedence).

204* **Hooks** bergabung: semua hook terdaftar berjalan untuk acara pencocokan mereka terlepas dari sumber. Lihat [hooks](/id/hooks-guide).204* **Hooks** bergabung: semua hook terdaftar berjalan untuk acara pencocokan mereka terlepas dari sumber. Lihat [hooks](/id/hooks-guide).

fullscreen.md +22 −3

Details

104export CLAUDE_CODE_SCROLL_SPEED=3104export CLAUDE_CODE_SCROLL_SPEED=3

105```105```

106 106 

107Nilai `3` cocok dengan default di `vim` dan aplikasi serupa. Pengaturan menerima nilai dari 1 hingga 20.107Nilai `3` cocok dengan default di `vim` dan aplikasi serupa. Pengaturan menerima nilai dari 1 hingga 20, dan nilai fraksional di bawah 1 seperti `0.5` untuk memperlambat scrolling trackpad dan roda yang dipercepat di terminal yang sudah memperkuat peristiwa roda.

108 108 

109Untuk menyesuaikan kecepatan scroll secara interaktif, jalankan `/scroll-speed`. Dialog menampilkan penggaris yang dapat Anda gulir saat terbuka sehingga Anda dapat merasakan perubahan segera. Tekan `←` dan `→` untuk menyesuaikan, `r` untuk mengatur ulang ke default yang terdeteksi otomatis, dan `Enter` untuk menyimpan. Perintah menulis nilai yang sama yang ditetapkan variabel lingkungan `CLAUDE_CODE_SCROLL_SPEED`, disimpan ke `~/.claude/settings.json`. Perintah tidak tersedia di terminal IDE JetBrains.109Untuk menyesuaikan kecepatan scroll secara interaktif, jalankan `/scroll-speed`. Dialog menampilkan penggaris yang dapat Anda gulir saat terbuka sehingga Anda dapat merasakan perubahan segera. Tekan `←` dan `→` untuk menyesuaikan, `r` untuk mengatur ulang ke default yang terdeteksi otomatis, dan `Enter` untuk menyimpan. Perintah menulis nilai yang sama yang ditetapkan variabel lingkungan `CLAUDE_CODE_SCROLL_SPEED`, disimpan ke `~/.claude/settings.json`. Perintah tidak tersedia di terminal IDE JetBrains.

110 110 

111Terpisah dari kecepatan dasar, Claude Code mempercepat laju scroll ketika Anda memutar roda dengan cepat, sehingga putaran cepat mencakup jarak lebih jauh daripada jumlah takik lambat yang sama. {/* min-version: 2.1.174 */}Untuk mematikan akselerasi dan mempertahankan laju konstan per takik, atur `wheelScrollAccelerationEnabled` ke `false` di [`settings.json`](/id/settings#available-settings). Pengaturan ini memerlukan Claude Code v2.1.174 atau lebih baru.

112 

111<h3 id="scroll-in-the-jetbrains-ide-terminal">113<h3 id="scroll-in-the-jetbrains-ide-terminal">

112 Scroll di terminal IDE JetBrains114 Scroll di terminal IDE JetBrains

113</h3>115</h3>


171 173 

172Penangkapan mouse adalah titik gesekan paling umum, terutama melalui SSH atau di dalam tmux. Ketika Claude Code menangkap peristiwa mouse, copy-on-select asli terminal Anda berhenti bekerja. Pemilihan yang Anda buat dengan klik-dan-seret ada di dalam Claude Code, bukan di buffer pemilihan terminal Anda, sehingga mode salinan tmux, petunjuk Kitty, dan alat serupa tidak melihatnya.174Penangkapan mouse adalah titik gesekan paling umum, terutama melalui SSH atau di dalam tmux. Ketika Claude Code menangkap peristiwa mouse, copy-on-select asli terminal Anda berhenti bekerja. Pemilihan yang Anda buat dengan klik-dan-seret ada di dalam Claude Code, bukan di buffer pemilihan terminal Anda, sehingga mode salinan tmux, petunjuk Kitty, dan alat serupa tidak melihatnya.

173 175 

174Claude Code mencoba menulis pemilihan ke clipboard Anda, tetapi jalur yang digunakan tergantung pada pengaturan Anda. Di dalam tmux itu menulis ke buffer pasta tmux. Melalui SSH itu kembali ke urutan escape OSC 52, yang beberapa terminal blokir secara default. iTerm2 memblokir mereka sampai Anda mengaktifkan Settings → General → Selection → Applications in terminal may access clipboard. Menjalankan [`/terminal-setup`](/id/terminal-config) di iTerm2 mengaktifkan ini untuk Anda. Claude Code mencetak toast setelah setiap salinan memberi tahu Anda jalur mana yang digunakan.176Claude Code menulis pemilihan ke clipboard sistem Anda, dan jalur yang digunakan tergantung pada pengaturan Anda. Pada sesi lokal, ia menjalankan alat clipboard asli:

177 

178* **macOS**: `pbcopy`

179* **Linux**: `wl-copy` di Wayland, atau `xclip` atau `xsel` di X11, mana pun yang terinstal. Claude Code menulis baik clipboard maupun pemilihan PRIMARY, sehingga paste tengah-klik berfungsi.

180* **Windows dan WSL**: PowerShell `Set-Clipboard`

181 

182Di dalam tmux, ia juga menulis ke buffer pasta tmux. Melalui SSH, ia kembali ke urutan escape OSC 52. Claude Code mencetak toast setelah setiap salinan memberi tahu Anda jalur mana yang digunakan.

183 

184Beberapa terminal memblokir OSC 52 secara default. iTerm2 memblokirnya sampai Anda mengaktifkan Settings → General → Selection → Applications in terminal may access clipboard; menjalankan [`/terminal-setup`](/id/terminal-config) di iTerm2 mengaktifkan ini untuk Anda.

185 

186Untuk pemilihan asli sekali pakai, kunci yang digunakan tergantung pada terminal Anda:

187 

188* **Terminal.app**: `Fn`

189* **iTerm2**: `Option`

190* **VS Code, Cursor, dan Devin Desktop**: `Shift`, atau `Option` di macOS dengan pengaturan `terminal.integrated.macOptionClickForcesSelection` diaktifkan

191* **Sebagian besar terminal lainnya**: `Shift`

192 

193Tahan kunci itu sambil Anda klik dan seret. Terminal Anda menangani pemilihan itu sendiri alih-alih meneruskannya ke Claude Code, sehingga pintasan salinan seperti `Cmd+C` bekerja pada apa yang Anda pilih. Claude Code juga menampilkan kunci yang benar dalam petunjuk on-screen-nya.

175 194 

176Untuk pemilihan asli sekali pakai, tahan pengubah bypass terminal Anda sambil Anda klik dan seret: `Option` di iTerm2, atau `Shift` di sebagian besar terminal Linux dan Windows. Pengubah memberi tahu terminal Anda untuk menangani pemilihan itu sendiri alih-alih meneruskan peristiwa mouse ke Claude Code, sehingga `Cmd+C` dan pintasan salinan lainnya dari terminal Anda bekerja padanya.195Melalui SSH atau di dalam tmux, Claude Code tidak selalu dapat mendeteksi terminal yang Anda hubungkan, jadi petunjuk mencantumkan kunci kandidat sebagai gantinya.

177 196 

178Jika Anda mengandalkan pemilihan asli sepanjang waktu, atur `CLAUDE_CODE_DISABLE_MOUSE=1` untuk keluar dari penangkapan mouse sambil mempertahankan rendering bebas flicker dan memori datar:197Jika Anda mengandalkan pemilihan asli sepanjang waktu, atur `CLAUDE_CODE_DISABLE_MOUSE=1` untuk keluar dari penangkapan mouse sambil mempertahankan rendering bebas flicker dan memori datar:

179 198 

github-actions.md +102 −38

Details

12 Claude Code GitHub Actions dibangun di atas [Claude Agent SDK](/id/agent-sdk/overview), yang memungkinkan integrasi programatik Claude Code ke dalam aplikasi Anda. Anda dapat menggunakan SDK untuk membangun alur kerja otomasi kustom di luar GitHub Actions.12 Claude Code GitHub Actions dibangun di atas [Claude Agent SDK](/id/agent-sdk/overview), yang memungkinkan integrasi programatik Claude Code ke dalam aplikasi Anda. Anda dapat menggunakan SDK untuk membangun alur kerja otomasi kustom di luar GitHub Actions.

13</Note>13</Note>

14 14 

15<Info>15<h2 id="why-use-claude-code-github-actions">

16 **Claude Opus 4.8 sekarang tersedia.** Claude Code GitHub Actions default ke Sonnet. Untuk menggunakan Opus 4.8, konfigurasikan [parameter model](#breaking-changes-reference) untuk menggunakan `claude-opus-4-8`.16 Mengapa menggunakan Claude Code GitHub Actions?

17</Info>17</h2>

18 

19## Mengapa menggunakan Claude Code GitHub Actions?

20 18 

21* **Pembuatan PR instan**: Jelaskan apa yang Anda butuhkan, dan Claude membuat PR lengkap dengan semua perubahan yang diperlukan19* **Pembuatan PR instan**: Jelaskan apa yang Anda butuhkan, dan Claude membuat PR lengkap dengan semua perubahan yang diperlukan

22* **Implementasi kode otomatis**: Ubah issue menjadi kode yang berfungsi dengan satu perintah20* **Implementasi kode otomatis**: Ubah issue menjadi kode yang berfungsi dengan satu perintah


24* **Penyiapan sederhana**: Mulai dalam hitungan menit dengan installer dan kunci API kami22* **Penyiapan sederhana**: Mulai dalam hitungan menit dengan installer dan kunci API kami

25* **Aman secara default**: Kode Anda tetap berada di runner Github23* **Aman secara default**: Kode Anda tetap berada di runner Github

26 24 

27## Apa yang dapat dilakukan Claude?25<h2 id="what-can-claude-do">

26 Apa yang dapat dilakukan Claude?

27</h2>

28 28 

29Claude Code menyediakan GitHub Action yang kuat yang mengubah cara Anda bekerja dengan kode:29Claude Code menyediakan GitHub Action yang kuat yang mengubah cara Anda bekerja dengan kode:

30 30 

31### Claude Code Action31<h3 id="claude-code-action">

32 Claude Code Action

33</h3>

32 34 

33GitHub Action ini memungkinkan Anda menjalankan Claude Code dalam alur kerja GitHub Actions Anda. Anda dapat menggunakannya untuk membangun alur kerja kustom apa pun di atas Claude Code.35GitHub Action ini memungkinkan Anda menjalankan Claude Code dalam alur kerja GitHub Actions Anda. Anda dapat menggunakannya untuk membangun alur kerja kustom apa pun di atas Claude Code.

34 36 

35[Lihat repositori →](https://github.com/anthropics/claude-code-action)37[Lihat repositori →](https://github.com/anthropics/claude-code-action)

36 38 

37## Penyiapan39<h2 id="setup">

40 Penyiapan

41</h2>

38 42 

39## Penyiapan cepat43<h2 id="quick-setup">

44 Penyiapan cepat

45</h2>

40 46 

41Cara termudah untuk menyiapkan action ini adalah melalui Claude Code di terminal. Cukup buka claude dan jalankan `/install-github-app`.47Cara termudah untuk menyiapkan action ini adalah melalui Claude Code di terminal. Cukup buka claude dan jalankan `/install-github-app`.

42 48 


48 * Metode quickstart ini hanya tersedia untuk pengguna Claude API langsung. Jika Anda menggunakan Amazon Bedrock atau Google Vertex AI, silakan lihat bagian [Using with Amazon Bedrock & Google Vertex AI](#using-with-amazon-bedrock-%26-google-vertex-ai).54 * Metode quickstart ini hanya tersedia untuk pengguna Claude API langsung. Jika Anda menggunakan Amazon Bedrock atau Google Vertex AI, silakan lihat bagian [Using with Amazon Bedrock & Google Vertex AI](#using-with-amazon-bedrock-%26-google-vertex-ai).

49</Note>55</Note>

50 56 

51## Penyiapan manual57<h2 id="manual-setup">

58 Penyiapan manual

59</h2>

52 60 

53Jika perintah `/install-github-app` gagal atau Anda lebih suka penyiapan manual, silakan ikuti instruksi penyiapan manual ini:61Jika perintah `/install-github-app` gagal atau Anda lebih suka penyiapan manual, silakan ikuti instruksi penyiapan manual ini:

54 62 


68 Setelah menyelesaikan penyiapan cepat atau manual, uji action dengan menandai `@claude` dalam komentar issue atau PR.76 Setelah menyelesaikan penyiapan cepat atau manual, uji action dengan menandai `@claude` dalam komentar issue atau PR.

69</Tip>77</Tip>

70 78 

71## Upgrade dari Beta79<h2 id="upgrading-from-beta">

80 Upgrade dari Beta

81</h2>

72 82 

73<Warning>83<Warning>

74 Claude Code GitHub Actions v1.0 memperkenalkan perubahan breaking yang memerlukan pembaruan file workflow Anda untuk upgrade ke v1.0 dari versi beta.84 Claude Code GitHub Actions v1.0 memperkenalkan perubahan breaking yang memerlukan pembaruan file workflow Anda untuk upgrade ke v1.0 dari versi beta.


76 86 

77Jika Anda saat ini menggunakan versi beta Claude Code GitHub Actions, kami merekomendasikan untuk memperbarui workflow Anda agar menggunakan versi GA. Versi baru menyederhanakan konfigurasi sambil menambahkan fitur baru yang kuat seperti deteksi mode otomatis.87Jika Anda saat ini menggunakan versi beta Claude Code GitHub Actions, kami merekomendasikan untuk memperbarui workflow Anda agar menggunakan versi GA. Versi baru menyederhanakan konfigurasi sambil menambahkan fitur baru yang kuat seperti deteksi mode otomatis.

78 88 

79### Perubahan penting89<h3 id="essential-changes">

90 Perubahan penting

91</h3>

80 92 

81Semua pengguna beta harus membuat perubahan ini pada file workflow mereka untuk upgrade:93Semua pengguna beta harus membuat perubahan ini pada file workflow mereka untuk upgrade:

82 94 


853. **Perbarui input prompt**: Ganti `direct_prompt` dengan `prompt`973. **Perbarui input prompt**: Ganti `direct_prompt` dengan `prompt`

864. **Pindahkan opsi CLI**: Konversi `max_turns`, `model`, `custom_instructions`, dll. ke `claude_args`984. **Pindahkan opsi CLI**: Konversi `max_turns`, `model`, `custom_instructions`, dll. ke `claude_args`

87 99 

88### Breaking Changes Reference100<h3 id="breaking-changes-reference">

101 Breaking Changes Reference

102</h3>

89 103 

90| Old Beta Input | New v1.0 Input |104| Old Beta Input | New v1.0 Input |

91| --------------------- | ------------------------------------- |105| --------------------- | ------------------------------------- |


99| `disallowed_tools` | `claude_args: --disallowedTools` |113| `disallowed_tools` | `claude_args: --disallowedTools` |

100| `claude_env` | `settings` JSON format |114| `claude_env` | `settings` JSON format |

101 115 

102### Contoh Sebelum dan Sesudah116<h3 id="before-and-after-example">

117 Contoh Sebelum dan Sesudah

118</h3>

103 119 

104**Versi beta:**120**Versi beta:**

105 121 


131 Action sekarang secara otomatis mendeteksi apakah akan dijalankan dalam mode interaktif (merespons penyebutan `@claude`) atau mode otomasi (berjalan segera dengan prompt) berdasarkan konfigurasi Anda.147 Action sekarang secara otomatis mendeteksi apakah akan dijalankan dalam mode interaktif (merespons penyebutan `@claude`) atau mode otomasi (berjalan segera dengan prompt) berdasarkan konfigurasi Anda.

132</Tip>148</Tip>

133 149 

134## Contoh kasus penggunaan150<h2 id="example-use-cases">

151 Contoh kasus penggunaan

152</h2>

135 153 

136Claude Code GitHub Actions dapat membantu Anda dengan berbagai tugas. Direktori [examples](https://github.com/anthropics/claude-code-action/tree/main/examples) berisi workflow siap pakai untuk skenario berbeda.154Claude Code GitHub Actions dapat membantu Anda dengan berbagai tugas. Direktori [examples](https://github.com/anthropics/claude-code-action/tree/main/examples) berisi workflow siap pakai untuk skenario berbeda.

137 155 

138### Workflow dasar156<h3 id="basic-workflow">

157 Workflow dasar

158</h3>

139 159 

140```yaml theme={null}160```yaml theme={null}

141name: Claude Code161name: Claude Code


154 # Responds to @claude mentions in comments174 # Responds to @claude mentions in comments

155```175```

156 176 

157### Menggunakan skills177<h3 id="using-skills">

178 Menggunakan skills

179</h3>

158 180 

159Input `prompt` menerima [skill](/id/skills) invocation serta teks biasa:181Input `prompt` menerima [skill](/id/skills) invocation serta teks biasa:

160 182 


180 prompt: "/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"202 prompt: "/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"

181```203```

182 204 

183### Otomasi kustom dengan prompt205<h3 id="custom-automation-with-prompts">

206 Otomasi kustom dengan prompt

207</h3>

184 208 

185```yaml theme={null}209```yaml theme={null}

186name: Daily Report210name: Daily Report


198 claude_args: "--model opus"222 claude_args: "--model opus"

199```223```

200 224 

201### Kasus penggunaan umum225<h3 id="common-use-cases">

226 Kasus penggunaan umum

227</h3>

202 228 

203Dalam komentar issue atau PR:229Dalam komentar issue atau PR:

204 230 


210 236 

211Claude akan secara otomatis menganalisis konteks dan merespons dengan tepat.237Claude akan secara otomatis menganalisis konteks dan merespons dengan tepat.

212 238 

213## Praktik terbaik239<h2 id="best-practices">

240 Praktik terbaik

241</h2>

214 242 

215### Konfigurasi CLAUDE.md243<h3 id="claude-md-configuration">

244 Konfigurasi CLAUDE.md

245</h3>

216 246 

217Buat file `CLAUDE.md` di root repositori Anda untuk mendefinisikan panduan gaya kode, kriteria ulasan, aturan khusus proyek, dan pola yang disukai. File ini memandu pemahaman Claude tentang standar proyek Anda.247Buat file `CLAUDE.md` di root repositori Anda untuk mendefinisikan panduan gaya kode, kriteria ulasan, aturan khusus proyek, dan pola yang disukai. File ini memandu pemahaman Claude tentang standar proyek Anda.

218 248 

219### Pertimbangan keamanan249<h3 id="security-considerations">

250 Pertimbangan keamanan

251</h3>

220 252 

221<Warning>Jangan pernah commit kunci API langsung ke repositori Anda.</Warning>253<Warning>Jangan pernah commit kunci API langsung ke repositori Anda.</Warning>

222 254 


231 263 

232Selalu gunakan GitHub Secrets (misalnya, `${{ secrets.ANTHROPIC_API_KEY }}`) daripada hardcoding kunci API langsung dalam file workflow Anda.264Selalu gunakan GitHub Secrets (misalnya, `${{ secrets.ANTHROPIC_API_KEY }}`) daripada hardcoding kunci API langsung dalam file workflow Anda.

233 265 

234### Mengoptimalkan kinerja266<h3 id="optimizing-performance">

267 Mengoptimalkan kinerja

268</h3>

235 269 

236Gunakan template issue untuk memberikan konteks, jaga `CLAUDE.md` Anda ringkas dan terfokus, dan konfigurasikan timeout yang sesuai untuk workflow Anda.270Gunakan template issue untuk memberikan konteks, jaga `CLAUDE.md` Anda ringkas dan terfokus, dan konfigurasikan timeout yang sesuai untuk workflow Anda.

237 271 

238### Biaya CI272<h3 id="ci-costs">

273 Biaya CI

274</h3>

239 275 

240Saat menggunakan Claude Code GitHub Actions, waspadai biaya terkait:276Saat menggunakan Claude Code GitHub Actions, waspadai biaya terkait:

241 277 


257* Atur timeout tingkat workflow untuk menghindari pekerjaan yang tidak terkontrol293* Atur timeout tingkat workflow untuk menghindari pekerjaan yang tidak terkontrol

258* Pertimbangkan menggunakan kontrol concurrency GitHub untuk membatasi run paralel294* Pertimbangkan menggunakan kontrol concurrency GitHub untuk membatasi run paralel

259 295 

260## Contoh konfigurasi296<h2 id="configuration-examples">

297 Contoh konfigurasi

298</h2>

261 299 

262Claude Code Action v1 menyederhanakan konfigurasi dengan parameter terpadu:300Claude Code Action v1 menyederhanakan konfigurasi dengan parameter terpadu:

263 301 


282 Saat merespons komentar issue atau PR, Claude secara otomatis merespons penyebutan @claude. Untuk event lainnya, gunakan parameter `prompt` untuk memberikan instruksi.320 Saat merespons komentar issue atau PR, Claude secara otomatis merespons penyebutan @claude. Untuk event lainnya, gunakan parameter `prompt` untuk memberikan instruksi.

283</Tip>321</Tip>

284 322 

285## Menggunakan dengan Amazon Bedrock & Google Vertex AI323<h2 id="using-with-amazon-bedrock--google-vertex-ai">

324 Menggunakan dengan Amazon Bedrock & Google Vertex AI

325</h2>

286 326 

287Untuk lingkungan enterprise, Anda dapat menggunakan Claude Code GitHub Actions dengan infrastruktur cloud Anda sendiri. Pendekatan ini memberi Anda kontrol atas residensi data dan penagihan sambil mempertahankan fungsionalitas yang sama.327Untuk lingkungan enterprise, Anda dapat menggunakan Claude Code GitHub Actions dengan infrastruktur cloud Anda sendiri. Pendekatan ini memberi Anda kontrol atas residensi data dan penagihan sambil mempertahankan fungsionalitas yang sama.

288 328 

289### Prasyarat329<h3 id="prerequisites">

330 Prasyarat

331</h3>

290 332 

291Sebelum menyiapkan Claude Code GitHub Actions dengan penyedia cloud, Anda memerlukan:333Sebelum menyiapkan Claude Code GitHub Actions dengan penyedia cloud, Anda memerlukan:

292 334 

293#### Untuk Google Cloud Vertex AI:335<h4 id="for-google-cloud-vertex-ai">

336 Untuk Google Cloud Vertex AI:

337</h4>

294 338 

2951. Proyek Google Cloud dengan Vertex AI diaktifkan3391. Proyek Google Cloud dengan Vertex AI diaktifkan

2962. Workload Identity Federation dikonfigurasi untuk GitHub Actions3402. Workload Identity Federation dikonfigurasi untuk GitHub Actions

2973. Akun layanan dengan izin yang diperlukan3413. Akun layanan dengan izin yang diperlukan

2984. Aplikasi GitHub (direkomendasikan) atau gunakan GITHUB\_TOKEN default3424. Aplikasi GitHub (direkomendasikan) atau gunakan GITHUB\_TOKEN default

299 343 

300#### Untuk Amazon Bedrock:344<h4 id="for-amazon-bedrock">

345 Untuk Amazon Bedrock:

346</h4>

301 347 

3021. Akun AWS dengan Amazon Bedrock diaktifkan3481. Akun AWS dengan Amazon Bedrock diaktifkan

3032. GitHub OIDC Identity Provider dikonfigurasi di AWS3492. GitHub OIDC Identity Provider dikonfigurasi di AWS


609 </Step>655 </Step>

610</Steps>656</Steps>

611 657 

612## Troubleshooting658<h2 id="troubleshooting">

659 Troubleshooting

660</h2>

613 661 

614### Claude tidak merespons perintah @claude662<h3 id="claude-not-responding-to-claude-commands">

663 Claude tidak merespons perintah @claude

664</h3>

615 665 

616Verifikasi aplikasi GitHub terinstal dengan benar, periksa bahwa workflow diaktifkan, pastikan kunci API diatur dalam rahasia repositori, dan konfirmkan komentar berisi `@claude` (bukan `/claude`).666Verifikasi aplikasi GitHub terinstal dengan benar, periksa bahwa workflow diaktifkan, pastikan kunci API diatur dalam rahasia repositori, dan konfirmkan komentar berisi `@claude` (bukan `/claude`).

617 667 

618### CI tidak berjalan pada commit Claude668<h3 id="ci-not-running-on-claude’s-commits">

669 CI tidak berjalan pada commit Claude

670</h3>

619 671 

620Pastikan Anda menggunakan aplikasi GitHub atau aplikasi kustom (bukan pengguna Actions), periksa pemicu workflow mencakup event yang diperlukan, dan verifikasi izin aplikasi mencakup pemicu CI.672Pastikan Anda menggunakan aplikasi GitHub atau aplikasi kustom (bukan pengguna Actions), periksa pemicu workflow mencakup event yang diperlukan, dan verifikasi izin aplikasi mencakup pemicu CI.

621 673 

622### Kesalahan autentikasi674<h3 id="authentication-errors">

675 Kesalahan autentikasi

676</h3>

623 677 

624Konfirmkan kunci API valid dan memiliki izin yang cukup. Untuk Bedrock/Vertex, periksa konfigurasi kredensial dan pastikan rahasia dinamai dengan benar dalam workflow.678Konfirmkan kunci API valid dan memiliki izin yang cukup. Untuk Bedrock/Vertex, periksa konfigurasi kredensial dan pastikan rahasia dinamai dengan benar dalam workflow.

625 679 

626## Konfigurasi lanjutan680<h2 id="advanced-configuration">

681 Konfigurasi lanjutan

682</h2>

627 683 

628### Parameter action684<h3 id="action-parameters">

685 Parameter action

686</h3>

629 687 

630Claude Code Action v1 menggunakan konfigurasi yang disederhanakan:688Claude Code Action v1 menggunakan konfigurasi yang disederhanakan:

631 689 


644\*Prompt opsional - saat dihilangkan untuk komentar issue/PR, Claude merespons frasa pemicu\702\*Prompt opsional - saat dihilangkan untuk komentar issue/PR, Claude merespons frasa pemicu\

645\*\*Diperlukan untuk Claude API langsung, bukan untuk Bedrock/Vertex703\*\*Diperlukan untuk Claude API langsung, bukan untuk Bedrock/Vertex

646 704 

647#### Teruskan argumen CLI705<h4 id="pass-cli-arguments">

706 Teruskan argumen CLI

707</h4>

648 708 

649Parameter `claude_args` menerima argumen Claude Code CLI apa pun:709Parameter `claude_args` menerima argumen Claude Code CLI apa pun:

650 710 


660* `--allowedTools`: Daftar tools yang diizinkan dipisahkan koma. Alias `--allowed-tools` juga berfungsi.720* `--allowedTools`: Daftar tools yang diizinkan dipisahkan koma. Alias `--allowed-tools` juga berfungsi.

661* `--debug`: Aktifkan output debug721* `--debug`: Aktifkan output debug

662 722 

663### Metode integrasi alternatif723<h3 id="alternative-integration-methods">

724 Metode integrasi alternatif

725</h3>

664 726 

665Meskipun perintah `/install-github-app` adalah pendekatan yang direkomendasikan, Anda juga dapat:727Meskipun perintah `/install-github-app` adalah pendekatan yang direkomendasikan, Anda juga dapat:

666 728 


670 732 

671Lihat [dokumentasi Claude Code Action](https://github.com/anthropics/claude-code-action/blob/main/docs) untuk panduan terperinci tentang autentikasi, keamanan, dan konfigurasi lanjutan.733Lihat [dokumentasi Claude Code Action](https://github.com/anthropics/claude-code-action/blob/main/docs) untuk panduan terperinci tentang autentikasi, keamanan, dan konfigurasi lanjutan.

672 734 

673### Menyesuaikan perilaku Claude735<h3 id="customizing-claude’s-behavior">

736 Menyesuaikan perilaku Claude

737</h3>

674 738 

675Anda dapat mengonfigurasi perilaku Claude dengan dua cara:739Anda dapat mengonfigurasi perilaku Claude dengan dua cara:

676 740 

Details

122 Pasar plugin di GHES122 Pasar plugin di GHES

123</h2>123</h2>

124 124 

125Hosting pasar plugin di instans GHES Anda untuk mendistribusikan alat internal di seluruh organisasi Anda. Struktur pasar identik dengan pasar yang dihosting github.com; satu-satunya perbedaan adalah cara Anda mereferensikannya.125Host pasar plugin di instans GHES Anda untuk mendistribusikan alat internal di seluruh organisasi Anda. Struktur pasar identik dengan pasar yang dihosting github.com; satu-satunya perbedaan adalah cara Anda mereferensikannya.

126 126 

127<h3 id="add-a-ghes-marketplace">127<h3 id="add-a-ghes-marketplace">

128 Tambahkan pasar GHES128 Tambahkan pasar GHES

gitlab-ci-cd.md +85 −29

Details

16 Integrasi ini dibangun di atas [Claude Code CLI dan Agent SDK](/id/agent-sdk/overview), memungkinkan penggunaan Claude secara terprogram dalam pekerjaan CI/CD dan alur kerja otomasi khusus Anda.16 Integrasi ini dibangun di atas [Claude Code CLI dan Agent SDK](/id/agent-sdk/overview), memungkinkan penggunaan Claude secara terprogram dalam pekerjaan CI/CD dan alur kerja otomasi khusus Anda.

17</Note>17</Note>

18 18 

19## Mengapa menggunakan Claude Code dengan GitLab?19<h2 id="why-use-claude-code-with-gitlab">

20 Mengapa menggunakan Claude Code dengan GitLab?

21</h2>

20 22 

21* **Pembuatan MR instan**: Jelaskan apa yang Anda butuhkan, dan Claude mengusulkan MR lengkap dengan perubahan dan penjelasan23* **Pembuatan MR instan**: Jelaskan apa yang Anda butuhkan, dan Claude mengusulkan MR lengkap dengan perubahan dan penjelasan

22* **Implementasi otomatis**: Ubah masalah menjadi kode yang berfungsi dengan satu perintah atau penyebutan24* **Implementasi otomatis**: Ubah masalah menjadi kode yang berfungsi dengan satu perintah atau penyebutan


25* **Siap untuk perusahaan**: Pilih Claude API, Amazon Bedrock, atau Google Vertex AI untuk memenuhi kebutuhan residensi data dan pengadaan27* **Siap untuk perusahaan**: Pilih Claude API, Amazon Bedrock, atau Google Vertex AI untuk memenuhi kebutuhan residensi data dan pengadaan

26* **Aman secara default**: Berjalan di runner GitLab Anda dengan perlindungan cabang dan persetujuan Anda28* **Aman secara default**: Berjalan di runner GitLab Anda dengan perlindungan cabang dan persetujuan Anda

27 29 

28## Cara kerjanya30<h2 id="how-it-works">

31 Cara kerjanya

32</h2>

29 33 

30Claude Code menggunakan GitLab CI/CD untuk menjalankan tugas AI dalam pekerjaan terisolasi dan melakukan commit hasil kembali melalui MR:34Claude Code menggunakan GitLab CI/CD untuk menjalankan tugas AI dalam pekerjaan terisolasi dan melakukan commit hasil kembali melalui MR:

31 35 


40 44 

41Pilih titik akhir regional untuk mengurangi latensi dan memenuhi persyaratan kedaulatan data sambil menggunakan perjanjian cloud yang ada.45Pilih titik akhir regional untuk mengurangi latensi dan memenuhi persyaratan kedaulatan data sambil menggunakan perjanjian cloud yang ada.

42 46 

43## Apa yang dapat dilakukan Claude?47<h2 id="what-can-claude-do">

48 Apa yang dapat dilakukan Claude?

49</h2>

44 50 

45Claude Code memungkinkan alur kerja CI/CD yang kuat yang mengubah cara Anda bekerja dengan kode:51Claude Code memungkinkan alur kerja CI/CD yang kuat yang mengubah cara Anda bekerja dengan kode:

46 52 


50* Perbaiki bug dan regresi yang diidentifikasi oleh tes atau komentar56* Perbaiki bug dan regresi yang diidentifikasi oleh tes atau komentar

51* Merespons komentar lanjutan untuk mengulangi perubahan yang diminta57* Merespons komentar lanjutan untuk mengulangi perubahan yang diminta

52 58 

53## Pengaturan59<h2 id="setup">

60 Pengaturan

61</h2>

54 62 

55### Pengaturan cepat63<h3 id="quick-setup">

64 Pengaturan cepat

65</h3>

56 66 

57Cara tercepat untuk memulai adalah menambahkan pekerjaan minimal ke `.gitlab-ci.yml` Anda dan menetapkan kunci API Anda sebagai variabel yang disembunyikan.67Cara tercepat untuk memulai adalah menambahkan pekerjaan minimal ke `.gitlab-ci.yml` Anda dan menetapkan kunci API Anda sebagai variabel yang disembunyikan.

58 68 


98Setelah menambahkan pekerjaan dan variabel `ANTHROPIC_API_KEY` Anda, uji dengan menjalankan pekerjaan secara manual dari **CI/CD** → **Pipelines**, atau picu dari MR untuk membiarkan Claude mengusulkan pembaruan di cabang dan membuka MR jika diperlukan.108Setelah menambahkan pekerjaan dan variabel `ANTHROPIC_API_KEY` Anda, uji dengan menjalankan pekerjaan secara manual dari **CI/CD** → **Pipelines**, atau picu dari MR untuk membiarkan Claude mengusulkan pembaruan di cabang dan membuka MR jika diperlukan.

99 109 

100<Note>110<Note>

101 Untuk menjalankan di Amazon Bedrock atau Google Vertex AI alih-alih Claude API, lihat bagian [Menggunakan dengan Amazon Bedrock & Google Vertex AI](#menggunakan-dengan-amazon-bedrock--google-vertex-ai) di bawah untuk pengaturan autentikasi dan lingkungan.111 Untuk menjalankan di Amazon Bedrock atau Google Vertex AI alih-alih Claude API, lihat bagian [Menggunakan dengan Amazon Bedrock & Google Vertex AI](#using-with-amazon-bedrock-%26-google-vertex-ai) di bawah untuk pengaturan autentikasi dan lingkungan.

102</Note>112</Note>

103 113 

104### Pengaturan manual (direkomendasikan untuk produksi)114<h3 id="manual-setup-recommended-for-production">

115 Pengaturan manual (direkomendasikan untuk produksi)

116</h3>

105 117 

106Jika Anda lebih suka pengaturan yang lebih terkontrol atau memerlukan penyedia perusahaan:118Jika Anda lebih suka pengaturan yang lebih terkontrol atau memerlukan penyedia perusahaan:

107 119 


120 * Tambahkan webhook proyek untuk "Comments (notes)" ke pendengar peristiwa Anda (jika Anda menggunakannya)132 * Tambahkan webhook proyek untuk "Comments (notes)" ke pendengar peristiwa Anda (jika Anda menggunakannya)

121 * Buat pendengar memanggil API pemicu pipeline dengan variabel seperti `AI_FLOW_INPUT` dan `AI_FLOW_CONTEXT` ketika komentar berisi `@claude`133 * Buat pendengar memanggil API pemicu pipeline dengan variabel seperti `AI_FLOW_INPUT` dan `AI_FLOW_CONTEXT` ketika komentar berisi `@claude`

122 134 

123## Contoh kasus penggunaan135<h2 id="example-use-cases">

136 Contoh kasus penggunaan

137</h2>

124 138 

125### Ubah masalah menjadi MR139<h3 id="turn-issues-into-mrs">

140 Ubah masalah menjadi MR

141</h3>

126 142 

127Dalam komentar masalah:143Dalam komentar masalah:

128 144 


132 148 

133Claude menganalisis masalah dan basis kode, menulis perubahan di cabang, dan membuka MR untuk ditinjau.149Claude menganalisis masalah dan basis kode, menulis perubahan di cabang, dan membuka MR untuk ditinjau.

134 150 

135### Dapatkan bantuan implementasi151<h3 id="get-implementation-help">

152 Dapatkan bantuan implementasi

153</h3>

136 154 

137Dalam diskusi MR:155Dalam diskusi MR:

138 156 


142 160 

143Claude mengusulkan perubahan, menambahkan kode dengan caching yang sesuai, dan memperbarui MR.161Claude mengusulkan perubahan, menambahkan kode dengan caching yang sesuai, dan memperbarui MR.

144 162 

145### Perbaiki bug dengan cepat163<h3 id="fix-bugs-quickly">

164 Perbaiki bug dengan cepat

165</h3>

146 166 

147Dalam komentar masalah atau MR:167Dalam komentar masalah atau MR:

148 168 


152 172 

153Claude menemukan bug, mengimplementasikan perbaikan, dan memperbarui cabang atau membuka MR baru.173Claude menemukan bug, mengimplementasikan perbaikan, dan memperbarui cabang atau membuka MR baru.

154 174 

155## Menggunakan dengan Amazon Bedrock & Google Vertex AI175<h2 id="using-with-amazon-bedrock--google-vertex-ai">

176 Menggunakan dengan Amazon Bedrock & Google Vertex AI

177</h2>

156 178 

157Untuk lingkungan perusahaan, Anda dapat menjalankan Claude Code sepenuhnya di infrastruktur cloud Anda dengan pengalaman pengembang yang sama.179Untuk lingkungan perusahaan, Anda dapat menjalankan Claude Code sepenuhnya di infrastruktur cloud Anda dengan pengalaman pengembang yang sama.

158 180 


238 </Tab>260 </Tab>

239</Tabs>261</Tabs>

240 262 

241## Contoh konfigurasi263<h2 id="configuration-examples">

264 Contoh konfigurasi

265</h2>

242 266 

243Di bawah ini adalah cuplikan siap pakai yang dapat Anda sesuaikan dengan pipeline Anda.267Di bawah ini adalah cuplikan siap pakai yang dapat Anda sesuaikan dengan pipeline Anda.

244 268 

245### .gitlab-ci.yml dasar (Claude API)269<h3 id="basic-gitlab-ci-yml-claude-api">

270 .gitlab-ci.yml dasar (Claude API)

271</h3>

246 272 

247```yaml theme={null}273```yaml theme={null}

248stages:274stages:


271 # Claude Code akan menggunakan ANTHROPIC_API_KEY dari variabel CI/CD297 # Claude Code akan menggunakan ANTHROPIC_API_KEY dari variabel CI/CD

272```298```

273 299 

274### Contoh pekerjaan Amazon Bedrock (OIDC)300<h3 id="amazon-bedrock-job-example-oidc">

301 Contoh pekerjaan Amazon Bedrock (OIDC)

302</h3>

275 303 

276**Prasyarat:**304**Prasyarat:**

277 305 


322 ID model untuk Bedrock mencakup awalan khusus wilayah (misalnya, `us.anthropic.claude-sonnet-4-6`). Teruskan model yang diinginkan melalui konfigurasi pekerjaan atau prompt Anda jika alur kerja Anda mendukungnya.350 ID model untuk Bedrock mencakup awalan khusus wilayah (misalnya, `us.anthropic.claude-sonnet-4-6`). Teruskan model yang diinginkan melalui konfigurasi pekerjaan atau prompt Anda jika alur kerja Anda mendukungnya.

323</Note>351</Note>

324 352 

325### Contoh pekerjaan Google Vertex AI (Workload Identity Federation)353<h3 id="google-vertex-ai-job-example-workload-identity-federation">

354 Contoh pekerjaan Google Vertex AI (Workload Identity Federation)

355</h3>

326 356 

327**Prasyarat:**357**Prasyarat:**

328 358 


375 Dengan Workload Identity Federation, Anda tidak perlu menyimpan kunci akun layanan. Gunakan kondisi kepercayaan khusus repositori dan akun layanan dengan hak istimewa minimal.405 Dengan Workload Identity Federation, Anda tidak perlu menyimpan kunci akun layanan. Gunakan kondisi kepercayaan khusus repositori dan akun layanan dengan hak istimewa minimal.

376</Note>406</Note>

377 407 

378## Praktik terbaik408<h2 id="best-practices">

409 Praktik terbaik

410</h2>

379 411 

380### Konfigurasi CLAUDE.md412<h3 id="claude-md-configuration">

413 Konfigurasi CLAUDE.md

414</h3>

381 415 

382Buat file `CLAUDE.md` di akar repositori untuk menentukan standar pengkodean, kriteria ulasan, dan aturan khusus proyek. Claude membaca file ini selama berjalan dan mengikuti konvensi Anda saat mengusulkan perubahan.416Buat file `CLAUDE.md` di akar repositori untuk menentukan standar pengkodean, kriteria ulasan, dan aturan khusus proyek. Claude membaca file ini selama berjalan dan mengikuti konvensi Anda saat mengusulkan perubahan.

383 417 

384### Pertimbangan keamanan418<h3 id="security-considerations">

419 Pertimbangan keamanan

420</h3>

385 421 

386**Jangan pernah melakukan commit kunci API atau kredensial cloud ke repositori Anda**. Selalu gunakan variabel GitLab CI/CD:422**Jangan pernah melakukan commit kunci API atau kredensial cloud ke repositori Anda**. Selalu gunakan variabel GitLab CI/CD:

387 423 


390* Batasi izin pekerjaan dan egress jaringan426* Batasi izin pekerjaan dan egress jaringan

391* Tinjau MR Claude seperti kontributor lainnya427* Tinjau MR Claude seperti kontributor lainnya

392 428 

393### Mengoptimalkan kinerja429<h3 id="optimizing-performance">

430 Mengoptimalkan kinerja

431</h3>

394 432 

395* Jaga `CLAUDE.md` tetap fokus dan ringkas433* Jaga `CLAUDE.md` tetap fokus dan ringkas

396* Berikan deskripsi masalah/MR yang jelas untuk mengurangi iterasi434* Berikan deskripsi masalah/MR yang jelas untuk mengurangi iterasi

397* Konfigurasi timeout pekerjaan yang masuk akal untuk menghindari lari liar435* Konfigurasi timeout pekerjaan yang masuk akal untuk menghindari lari liar

398* Cache npm dan instalasi paket di runner jika memungkinkan436* Cache npm dan instalasi paket di runner jika memungkinkan

399 437 

400### Biaya CI438<h3 id="ci-costs">

439 Biaya CI

440</h3>

401 441 

402Saat menggunakan Claude Code dengan GitLab CI/CD, waspadai biaya terkait:442Saat menggunakan Claude Code dengan GitLab CI/CD, waspadai biaya terkait:

403 443 


415 * Tetapkan nilai `max_turns` dan timeout pekerjaan yang sesuai455 * Tetapkan nilai `max_turns` dan timeout pekerjaan yang sesuai

416 * Batasi keselarasan untuk mengontrol lari paralel456 * Batasi keselarasan untuk mengontrol lari paralel

417 457 

418## Keamanan dan tata kelola458<h2 id="security-and-governance">

459 Keamanan dan tata kelola

460</h2>

419 461 

420* Setiap pekerjaan berjalan dalam kontainer terisolasi dengan akses jaringan terbatas462* Setiap pekerjaan berjalan dalam kontainer terisolasi dengan akses jaringan terbatas

421* Perubahan Claude mengalir melalui MR sehingga pengulas melihat setiap diff463* Perubahan Claude mengalir melalui MR sehingga pengulas melihat setiap diff


423* Claude Code menggunakan izin berskop ruang kerja untuk membatasi penulisan465* Claude Code menggunakan izin berskop ruang kerja untuk membatasi penulisan

424* Biaya tetap di bawah kontrol Anda karena Anda membawa kredensial penyedia Anda sendiri466* Biaya tetap di bawah kontrol Anda karena Anda membawa kredensial penyedia Anda sendiri

425 467 

426## Pemecahan masalah468<h2 id="troubleshooting">

469 Pemecahan masalah

470</h2>

427 471 

428### Claude tidak merespons perintah @claude472<h3 id="claude-not-responding-to-claude-commands">

473 Claude tidak merespons perintah @claude

474</h3>

429 475 

430* Verifikasi pipeline Anda dipicu (secara manual, peristiwa MR, atau melalui pendengar peristiwa catatan/webhook)476* Verifikasi pipeline Anda dipicu (secara manual, peristiwa MR, atau melalui pendengar peristiwa catatan/webhook)

431* Pastikan variabel CI/CD (`ANTHROPIC_API_KEY` atau pengaturan penyedia cloud) ada dan tidak disembunyikan477* Pastikan variabel CI/CD (`ANTHROPIC_API_KEY` atau pengaturan penyedia cloud) ada dan tidak disembunyikan

432* Periksa bahwa komentar berisi `@claude` (bukan `/claude`) dan pemicu penyebutan Anda dikonfigurasi478* Periksa bahwa komentar berisi `@claude` (bukan `/claude`) dan pemicu penyebutan Anda dikonfigurasi

433 479 

434### Pekerjaan tidak dapat menulis komentar atau membuka MR480<h3 id="job-can’t-write-comments-or-open-mrs">

481 Pekerjaan tidak dapat menulis komentar atau membuka MR

482</h3>

435 483 

436* Pastikan `CI_JOB_TOKEN` memiliki izin yang cukup untuk proyek, atau gunakan Project Access Token dengan cakupan `api`484* Pastikan `CI_JOB_TOKEN` memiliki izin yang cukup untuk proyek, atau gunakan Project Access Token dengan cakupan `api`

437* Periksa alat `mcp__gitlab` diaktifkan dalam `--allowedTools`485* Periksa alat `mcp__gitlab` diaktifkan dalam `--allowedTools`

438* Konfirmasi pekerjaan berjalan dalam konteks MR atau memiliki konteks yang cukup melalui variabel `AI_FLOW_*`486* Konfirmasi pekerjaan berjalan dalam konteks MR atau memiliki konteks yang cukup melalui variabel `AI_FLOW_*`

439 487 

440### Kesalahan autentikasi488<h3 id="authentication-errors">

489 Kesalahan autentikasi

490</h3>

441 491 

442* **Untuk Claude API**: Konfirmasi `ANTHROPIC_API_KEY` valid dan tidak kedaluwarsa492* **Untuk Claude API**: Konfirmasi `ANTHROPIC_API_KEY` valid dan tidak kedaluwarsa

443* **Untuk Bedrock/Vertex**: Verifikasi konfigurasi OIDC/WIF, impersonasi peran, dan nama rahasia; konfirmasi ketersediaan wilayah dan model493* **Untuk Bedrock/Vertex**: Verifikasi konfigurasi OIDC/WIF, impersonasi peran, dan nama rahasia; konfirmasi ketersediaan wilayah dan model

444 494 

445## Konfigurasi lanjutan495<h2 id="advanced-configuration">

496 Konfigurasi lanjutan

497</h2>

446 498 

447### Parameter dan variabel umum499<h3 id="common-parameters-and-variables">

500 Parameter dan variabel umum

501</h3>

448 502 

449Claude Code mendukung input yang umum digunakan ini:503Claude Code mendukung input yang umum digunakan ini:

450 504 


458 Bendera dan parameter yang tepat dapat bervariasi menurut versi `@anthropic-ai/claude-code`. Jalankan `claude --help` dalam pekerjaan Anda untuk melihat opsi yang didukung.512 Bendera dan parameter yang tepat dapat bervariasi menurut versi `@anthropic-ai/claude-code`. Jalankan `claude --help` dalam pekerjaan Anda untuk melihat opsi yang didukung.

459</Note>513</Note>

460 514 

461### Menyesuaikan perilaku Claude515<h3 id="customizing-claude’s-behavior">

516 Menyesuaikan perilaku Claude

517</h3>

462 518 

463Anda dapat memandu Claude dengan dua cara utama:519Anda dapat memandu Claude dengan dua cara utama:

464 520 

glossary.md +8 −8

Details

6 6 

7> Definisi untuk terminologi Claude Code. Pelajari apa itu agentic loop, compaction, CLAUDE.md, hooks, subagents, MCP, dan konsep inti lainnya.7> Definisi untuk terminologi Claude Code. Pelajari apa itu agentic loop, compaction, CLAUDE.md, hooks, subagents, MCP, dan konsep inti lainnya.

8 8 

9Glosarium ini mendefinisikan terminologi Claude Code. Setiap entri menghubungkan ke halaman tempat konsep dibahas secara mendalam. Untuk konsep tingkat model seperti tokens, temperature, dan RAG, lihat [glosarium platform](https://platform.claude.com/docs/en/about-claude/glossary).9Glosarium ini mendefinisikan terminologi Claude Code. Setiap entri menghubungkan ke halaman tempat konsep dibahas secara mendalam. Untuk konsep tingkat model seperti tokens, temperature, dan RAG, lihat [glosarium platform](https://platform.claude.com/docs/id/about-claude/glossary).

10 10 

11<h2 id="a">11<h2 id="a">

12 A12 A


112 CLAUDE.md112 CLAUDE.md

113</h3>113</h3>

114 114 

115File markdown dari instruksi persisten yang Anda tulis untuk Claude, dimuat di awal setiap sesi sebagai pesan pengguna setelah system prompt. Letakkan konvensi proyek, catatan arsitektur, dan aturan "selalu lakukan X" di sini. CLAUDE.md bertahan [compaction](#compaction) dan dibaca ulang segar dari disk sesudahnya.115File markdown dari instruksi persisten yang Anda tulis untuk Claude, dimuat di awal setiap sesi sebagai pesan pengguna setelah system prompt. Letakkan konvensi proyek, catatan arsitektur, dan aturan "selalu lakukan X" di sini. Project-root CLAUDE.md bertahan [compaction](#compaction) dan dibaca ulang segar dari disk sesudahnya.

116 116 

117Anda dapat menempatkan CLAUDE.md di scope proyek di `./CLAUDE.md` atau `./.claude/CLAUDE.md`, di scope pengguna di `~/.claude/CLAUDE.md`, atau sebagai [managed policy](#managed-settings) untuk organisasi Anda. Semua file yang ditemukan digabungkan ke dalam konteks daripada menimpa satu sama lain, diurutkan dari scope terluas ke paling spesifik.117Anda dapat menempatkan CLAUDE.md di scope proyek di `./CLAUDE.md` atau `./.claude/CLAUDE.md`, di scope pengguna di `~/.claude/CLAUDE.md`, atau sebagai [managed policy](#managed-settings) untuk organisasi Anda. Semua file yang ditemukan digabungkan ke dalam konteks daripada menimpa satu sama lain, diurutkan dari scope terluas ke paling spesifik.

118 118 


130 Compaction130 Compaction

131</h3>131</h3>

132 132 

133Ringkasan otomatis percakapan Anda ketika [context window](#context-window) mendekati batasnya. Output tool yang lebih lama dihapus terlebih dahulu, kemudian percakapan diringkas. CLAUDE.md akar proyek dan auto memory bertahan compaction dan dimuat ulang dari disk; instruksi yang diberikan hanya dalam percakapan mungkin hilang. Jalankan `/compact` untuk memicu secara manual, secara opsional dengan fokus seperti `/compact focus on the API changes`.133Ringkasan otomatis percakapan Anda ketika [context window](#context-window) mendekati batasnya. Output tool yang lebih lama dihapus terlebih dahulu, kemudian percakapan diringkas. Project-root CLAUDE.md dan auto memory bertahan compaction dan dimuat ulang dari disk; instruksi yang diberikan hanya dalam percakapan mungkin hilang. Jalankan `/compact` untuk memicu secara manual, secara opsional dengan fokus seperti `/compact focus on the API changes`.

134 134 

135Pelajari lebih lanjut: [What survives compaction](/id/context-window#what-survives-compaction) · [When context fills up](/id/how-claude-code-works#when-context-fills-up)135Pelajari lebih lanjut: [What survives compaction](/id/context-window#what-survives-compaction) · [When context fills up](/id/how-claude-code-works#when-context-fills-up)

136 136 


162 Effort level162 Effort level

163</h3>163</h3>

164 164 

165Pengaturan yang mengontrol berapa banyak anggaran thinking adaptive-reasoning yang Claude gunakan pada setiap giliran. Effort yang lebih tinggi berarti lebih banyak thinking tokens dan reasoning yang lebih dalam; effort yang lebih rendah lebih cepat dan lebih murah. Effort didukung di Opus 4.6 dan yang lebih baru, serta di Sonnet 4.6.165Pengaturan yang mengontrol berapa banyak anggaran thinking adaptive-reasoning yang Claude gunakan pada setiap giliran. Effort yang lebih tinggi berarti lebih banyak thinking tokens dan reasoning yang lebih dalam; effort yang lebih rendah lebih cepat dan lebih murah. Effort didukung di Fable 5, di Opus 4.6 dan yang lebih baru, serta di Sonnet 4.6.

166 166 

167Pelajari lebih lanjut: [Adjust effort level](/id/model-config#adjust-effort-level)167Pelajari lebih lanjut: [Adjust effort level](/id/model-config#adjust-effort-level)

168 168 


170 Extended thinking170 Extended thinking

171</h3>171</h3>

172 172 

173Reasoning step-by-step yang terlihat yang dilakukan model sebelum merespons. Anda dapat membatasi thinking tokens dengan `MAX_THINKING_TOKENS` atau menyesuaikan [effort level](#effort-level). Thinking muncul dalam teks italic abu-abu di terminal.173Reasoning step-by-step yang terlihat yang dilakukan model sebelum merespons. Anda dapat menyesuaikannya dengan [effort level](#effort-level), atau membatasi thinking tokens dengan `MAX_THINKING_TOKENS` pada model dengan anggaran thinking tetap. Thinking muncul dalam teks italic abu-abu di terminal.

174 174 

175Pelajari lebih lanjut: [Use extended thinking](/id/model-config#extended-thinking)175Pelajari lebih lanjut: [Use extended thinking](/id/model-config#extended-thinking)

176 176 


292 Prompt injection292 Prompt injection

293</h3>293</h3>

294 294 

295Instruksi bermusuhan yang tertanam dalam file, halaman web, atau hasil tool yang mencoba mengalihkan Claude ke arah tindakan yang tidak pernah Anda minta. Pertahanan Claude Code termasuk sistem izin, blocklists perintah, dan verifikasi kepercayaan. [Auto mode](#auto-mode) menambahkan probe sisi server yang memindai hasil tool untuk konten mencurigakan dan classifier yang tidak pernah melihat hasil tool, jadi teks yang disuntikkan tidak dapat mempengaruhi keputusan persetujuannya.295Instruksi bermusuhan yang tertanam dalam file, halaman web, atau hasil tool yang mencoba mengalihkan Claude ke arah tindakan yang tidak pernah Anda minta. Pertahanan Claude Code termasuk sistem izin, deteksi injeksi perintah, dan verifikasi kepercayaan. [Auto mode](#auto-mode) menambahkan probe sisi server yang memindai hasil tool untuk konten mencurigakan dan classifier yang tidak pernah melihat hasil tool, jadi teks yang disuntikkan tidak dapat mempengaruhi keputusan persetujuannya.

296 296 

297Pelajari lebih lanjut: [Lindungi dari prompt injection](/id/security#protect-against-prompt-injection)297Pelajari lebih lanjut: [Lindungi dari prompt injection](/id/security#protect-against-prompt-injection)

298 298 


410 410 

411Bagaimana sesi mengetahui pekerjaan benar-benar selesai daripada hanya masuk akal. Anda memberi Claude pemeriksaan yang dapat dijalankan, seperti suite test, build, atau perbandingan screenshot, dan Claude melakukan iterasi sampai pemeriksaan lulus alih-alih berhenti setelah satu percobaan. Loop verifikasi adalah prasyarat untuk [`/goal`](/id/goal), unattended runs, dan [dynamic workflows](/id/workflows): tanpa satu, satu-satunya hal yang memutuskan agen selesai adalah agen itu sendiri.411Bagaimana sesi mengetahui pekerjaan benar-benar selesai daripada hanya masuk akal. Anda memberi Claude pemeriksaan yang dapat dijalankan, seperti suite test, build, atau perbandingan screenshot, dan Claude melakukan iterasi sampai pemeriksaan lulus alih-alih berhenti setelah satu percobaan. Loop verifikasi adalah prasyarat untuk [`/goal`](/id/goal), unattended runs, dan [dynamic workflows](/id/workflows): tanpa satu, satu-satunya hal yang memutuskan agen selesai adalah agen itu sendiri.

412 412 

413Pelajari lebih lanjut: [Give Claude a way to verify its work](/id/best-practices#give-claude-a-way-to-verify-its-work)413Pelajari lebih lanjut: [Berikan Claude cara untuk memverifikasi pekerjaannya](/id/best-practices#give-claude-a-way-to-verify-its-work)

414 414 

415<h2 id="w">415<h2 id="w">

416 W416 W


427***427***

428 428 

429<h2 id="deprecated-and-renamed-terms">429<h2 id="deprecated-and-renamed-terms">

430 Deprecated and renamed terms430 Istilah yang sudah usang dan diganti nama

431</h2>431</h2>

432 432 

433Istilah-istilah ini muncul dalam docs yang lebih lama, posting blog, dan konten komunitas. Gunakan nama saat ini saat mencari di situs ini.433Istilah-istilah ini muncul dalam docs yang lebih lama, posting blog, dan konten komunitas. Gunakan nama saat ini saat mencari di situs ini.

Details

6 6 

7> Pelajari tentang mengonfigurasi Claude Code melalui Google Vertex AI, termasuk pengaturan, konfigurasi IAM, dan pemecahan masalah.7> Pelajari tentang mengonfigurasi Claude Code melalui Google Vertex AI, termasuk pengaturan, konfigurasi IAM, dan pemecahan masalah.

8 8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79<ContactSalesCard surface="vertex" />

80 

9<h2 id="prerequisites">81<h2 id="prerequisites">

10 Prasyarat82 Prasyarat

11</h2>83</h2>


155</h3>227</h3>

156 228 

157<Warning>229<Warning>

158 Pin versi model spesifik saat menerapkan ke beberapa pengguna. Tanpa pinning, alias model seperti `sonnet` dan `opus` diselesaikan ke versi terbaru, yang mungkin belum diaktifkan di proyek Vertex AI Anda ketika Anthropic merilis pembaruan. Claude Code [kembali](#startup-model-checks) ke versi sebelumnya saat startup ketika versi terbaru tidak tersedia, tetapi pinning memungkinkan Anda mengontrol kapan pengguna Anda pindah ke model baru.230 Pin versi model spesifik saat menerapkan ke beberapa pengguna. Tanpa pinning, alias model seperti `sonnet` dan `opus` diselesaikan ke default bawaan Claude Code untuk Vertex AI, yang dapat tertinggal dari rilis terbaru dan mungkin belum diaktifkan di proyek Anda. Claude Code [kembali](#startup-model-checks) ke versi sebelumnya saat startup ketika default tidak tersedia, tetapi pinning memungkinkan Anda mengontrol kapan pengguna Anda pindah ke model baru.

159</Warning>231</Warning>

160 232 

161Atur variabel lingkungan ini ke ID model Vertex AI spesifik.233Atur variabel lingkungan ini ke ID model Vertex AI spesifik.


192 264 

193Ketika Claude Code dimulai dengan Vertex AI dikonfigurasi, ia memverifikasi bahwa model yang dimaksudkan untuk digunakan dapat diakses di proyek Anda. Pemeriksaan ini memerlukan Claude Code v2.1.98 atau lebih baru.265Ketika Claude Code dimulai dengan Vertex AI dikonfigurasi, ia memverifikasi bahwa model yang dimaksudkan untuk digunakan dapat diakses di proyek Anda. Pemeriksaan ini memerlukan Claude Code v2.1.98 atau lebih baru.

194 266 

195Jika Anda telah mempinkan versi model yang lebih lama dari default Claude Code saat ini, dan proyek Anda dapat memanggil versi yang lebih baru, Claude Code akan meminta Anda untuk memperbarui pin. Menerima menulis ID model baru ke [file pengaturan pengguna Anda](/id/settings) dan memulai ulang Claude Code. Menolak diingat sampai perubahan versi default berikutnya.267Jika Anda telah mempinkan versi model yang lebih lama dari default Claude Code saat ini, dan proyek Anda dapat memanggil versi yang lebih baru, Claude Code meminta Anda untuk memperbarui pin. Menerima menulis ID model baru ke [file pengaturan pengguna Anda](/id/settings) dan memulai ulang Claude Code. Menolak diingat sampai perubahan versi default berikutnya.

196 268 

197Jika Anda belum mempinkan model dan default saat ini tidak tersedia di proyek Anda, Claude Code kembali ke versi sebelumnya untuk sesi saat ini dan menampilkan pemberitahuan. Fallback tidak disimpan. Aktifkan model yang lebih baru di [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) atau [pin versi](#5-pin-model-versions) untuk membuat pilihan permanen.269Jika Anda belum mempinkan model dan default saat ini tidak tersedia di proyek Anda, Claude Code kembali ke versi sebelumnya untuk sesi saat ini dan menampilkan pemberitahuan. Fallback tidak disimpan. Aktifkan model yang lebih baru di [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) atau [pin versi](#5-pin-model-versions) untuk membuat pilihan permanen.

198 270 

headless.md +11 −3

Details

62 `--bare` adalah mode yang direkomendasikan untuk panggilan skrip dan SDK, dan akan menjadi default untuk `-p` di rilis mendatang.62 `--bare` adalah mode yang direkomendasikan untuk panggilan skrip dan SDK, dan akan menjadi default untuk `-p` di rilis mendatang.

63</Note>63</Note>

64 64 

65<h3 id="background-tasks-at-exit">

66 Tugas latar belakang saat keluar

67</h3>

68 

69Jika Claude memulai [tugas Bash latar belakang](/id/tools-reference#bash-tool-behavior) selama jalankan `claude -p`, misalnya server dev atau build watch, tugas tersebut dihentikan sekitar lima detik setelah Claude mengembalikan hasil akhirnya dan stdin telah ditutup. Periode grace memungkinkan tugas yang selesai tepat setelah hasil masih memberikan outputnya. Sebelum v2.1.163, proses latar belakang yang tidak pernah keluar akan membuat invokasi `claude -p` tetap terbuka tanpa batas.

70 

65<h2 id="examples">71<h2 id="examples">

66 Contoh72 Contoh

67</h2>73</h2>


163Ketika permintaan API gagal dengan kesalahan yang dapat dicoba ulang, Claude Code memancarkan acara `system/api_retry` sebelum mencoba ulang. Anda dapat menggunakan ini untuk menampilkan kemajuan percobaan ulang atau menerapkan logika backoff kustom.169Ketika permintaan API gagal dengan kesalahan yang dapat dicoba ulang, Claude Code memancarkan acara `system/api_retry` sebelum mencoba ulang. Anda dapat menggunakan ini untuk menampilkan kemajuan percobaan ulang atau menerapkan logika backoff kustom.

164 170 

165| Bidang | Tipe | Deskripsi |171| Bidang | Tipe | Deskripsi |

166| ---------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |172| ---------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

167| `type` | `"system"` | tipe pesan |173| `type` | `"system"` | tipe pesan |

168| `subtype` | `"api_retry"` | mengidentifikasi ini sebagai acara percobaan ulang |174| `subtype` | `"api_retry"` | mengidentifikasi ini sebagai acara percobaan ulang |

169| `attempt` | integer | nomor percobaan saat ini, dimulai dari 1 |175| `attempt` | integer | nomor percobaan saat ini, dimulai dari 1 |

170| `max_retries` | integer | total percobaan ulang yang diizinkan |176| `max_retries` | integer | total percobaan ulang yang diizinkan |

171| `retry_delay_ms` | integer | milidetik hingga percobaan berikutnya |177| `retry_delay_ms` | integer | milidetik hingga percobaan berikutnya |

172| `error_status` | integer atau null | kode status HTTP, atau `null` untuk kesalahan koneksi tanpa respons HTTP |178| `error_status` | integer atau null | kode status HTTP, atau `null` untuk kesalahan koneksi tanpa respons HTTP |

173| `error` | string | kategori kesalahan: `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `rate_limit`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, atau `unknown` |179| `error` | string | kategori kesalahan: `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, atau `unknown` |

174| `uuid` | string | pengidentifikasi acara unik |180| `uuid` | string | pengidentifikasi acara unik |

175| `session_id` | string | sesi yang dimiliki acara |181| `session_id` | string | sesi yang dimiliki acara |

176 182 


226Bendera `--allowedTools` menggunakan [sintaks aturan izin](/id/settings#permission-rule-syntax). Spasi di akhir ` *` memungkinkan pencocokan awalan, jadi `Bash(git diff *)` memungkinkan perintah apa pun yang dimulai dengan `git diff`. Spasi sebelum `*` penting: tanpanya, `Bash(git diff*)` juga akan cocok dengan `git diff-index`.232Bendera `--allowedTools` menggunakan [sintaks aturan izin](/id/settings#permission-rule-syntax). Spasi di akhir ` *` memungkinkan pencocokan awalan, jadi `Bash(git diff *)` memungkinkan perintah apa pun yang dimulai dengan `git diff`. Spasi sebelum `*` penting: tanpanya, `Bash(git diff*)` juga akan cocok dengan `git diff-index`.

227 233 

228<Note>234<Note>

229 [skills](/id/skills) yang dipanggil pengguna seperti `/code-review` dan [perintah bawaan](/id/commands) hanya tersedia dalam mode interaktif. Dalam mode `-p`, jelaskan tugas yang ingin Anda capai.235 [skills](/id/skills) yang dipanggil pengguna dan perintah kustom bekerja dalam mode `-p`: sertakan `/skill-name` dalam string prompt dan Claude Code memperluasnya sebelum menjalankan. Perintah bawaan yang membuka dialog interaktif, seperti `/config` dan `/login`, tidak tersedia dalam mode `-p`.

230</Note>236</Note>

231 237 

232<h3 id="customize-the-system-prompt">238<h3 id="customize-the-system-prompt">


265claude -p "Continue that review" --resume "$session_id"271claude -p "Continue that review" --resume "$session_id"

266```272```

267 273 

274Jalankan kedua perintah dari direktori yang sama: pencarian ID sesi dibatasi pada direktori proyek saat ini dan git worktrees-nya. Lihat [Resume a session](/id/sessions#resume-a-session) untuk aturan cakupan lengkap.

275 

268<h2 id="next-steps">276<h2 id="next-steps">

269 Langkah berikutnya277 Langkah berikutnya

270</h2>278</h2>

hooks.md +119 −80

Details

108Sekarang anggaplah Claude Code memutuskan untuk menjalankan `Bash "rm -rf /tmp/build"`. Inilah yang terjadi:108Sekarang anggaplah Claude Code memutuskan untuk menjalankan `Bash "rm -rf /tmp/build"`. Inilah yang terjadi:

109 109 

110<Frame>110<Frame>

111 <img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/hook-resolution.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=be0bf3053550c26de5f54cd64674c197" alt="Alur resolusi hook: event PreToolUse dijalankan, matcher memeriksa kecocokan Bash, kondisi if memeriksa kecocokan Bash(rm *), handler hook dijalankan, hasil dikembalikan ke Claude Code" width="930" height="270" data-path="images/hook-resolution.svg" />111 <img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/hook-resolution.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=be0bf3053550c26de5f54cd64674c197" alt="Diagram resolusi hook: event PreToolUse dijalankan, matcher memeriksa kecocokan Bash, kemudian kondisi if memeriksa kecocokan Bash(rm *). Jika keduanya cocok, perintah hook dijalankan dan mengembalikan permissionDecision deny, jadi pemanggilan tool diblokir dan Claude Code melanjutkan. Jika salah satu pemeriksaan gagal cocok, hook dilewati dan pemanggilan tool diizinkan untuk melanjutkan." width="930" height="270" data-path="images/hook-resolution.svg" />

112</Frame>112</Frame>

113 113 

114<Steps>114<Steps>


174Tempat Anda mendefinisikan hook menentukan cakupannya:174Tempat Anda mendefinisikan hook menentukan cakupannya:

175 175 

176| Lokasi | Cakupan | Dapat Dibagikan |176| Lokasi | Cakupan | Dapat Dibagikan |

177| :----------------------------------------------------------- | :----------------------- | :------------------------------------ |177| :----------------------------------------------------------- | :----------------------- | :-------------------------------------------- |

178| `~/.claude/settings.json` | Semua proyek Anda | Tidak, lokal ke mesin Anda |178| `~/.claude/settings.json` | Semua proyek Anda | Tidak, lokal ke mesin Anda |

179| `.claude/settings.json` | Proyek tunggal | Ya, dapat dikomit ke repo |179| `.claude/settings.json` | Proyek tunggal | Ya, dapat dikomit ke repo |

180| `.claude/settings.local.json` | Proyek tunggal | Tidak, gitignored |180| `.claude/settings.local.json` | Proyek tunggal | Tidak, gitignored saat Claude Code membuatnya |

181| Pengaturan kebijakan terkelola | Seluruh organisasi | Ya, dikendalikan admin |181| Pengaturan kebijakan terkelola | Seluruh organisasi | Ya, dikendalikan admin |

182| [Plugin](/id/plugins) `hooks/hooks.json` | Ketika plugin diaktifkan | Ya, dibundel dengan plugin |182| [Plugin](/id/plugins) `hooks/hooks.json` | Ketika plugin diaktifkan | Ya, dibundel dengan plugin |

183| [Skill](/id/skills) atau [agent](/id/sub-agents) frontmatter | Saat komponen aktif | Ya, didefinisikan dalam file komponen |183| [Skill](/id/skills) atau [agent](/id/sub-agents) frontmatter | Saat komponen aktif | Ya, didefinisikan dalam file komponen |


311Bidang-bidang ini berlaku untuk semua tipe hook:311Bidang-bidang ini berlaku untuk semua tipe hook:

312 312 

313| Bidang | Diperlukan | Deskripsi |313| Bidang | Diperlukan | Deskripsi |

314| :-------------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |314| :-------------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

315| `type` | ya | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"`, atau `"agent"` |315| `type` | ya | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"`, atau `"agent"` |

316| `if` | tidak | Sintaks aturan izin untuk memfilter kapan hook ini dijalankan, seperti `"Bash(git *)"` atau `"Edit(*.ts)"`. Hook hanya spawn jika pemanggilan tool cocok dengan pola, atau jika perintah Bash terlalu kompleks untuk diurai. Hanya dievaluasi pada tool events: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, dan `PermissionDenied`. Pada event lain, hook dengan `if` yang ditetapkan tidak akan pernah dijalankan. Menggunakan sintaks yang sama seperti [aturan izin](/id/permissions) |316| `if` | tidak | Sintaks aturan izin untuk memfilter kapan hook ini dijalankan, seperti `"Bash(git *)"` atau `"Edit(*.ts)"`. Hook command hanya dijalankan jika pemanggilan tool cocok dengan pola. Lihat tabel [Bash matching](#bash-if-matching) di bawah untuk bagaimana pola Bash dievaluasi terhadap subperintah, `$()`, dan backticks. Hanya dievaluasi pada tool events: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, dan `PermissionDenied`. Pada event lain, hook dengan `if` yang ditetapkan tidak akan pernah dijalankan. Menggunakan sintaks yang sama seperti [aturan izin](/id/permissions) |

317| `timeout` | tidak | Detik sebelum membatalkan. Default: 600 untuk `command`, `http`, dan `mcp_tool`; 30 untuk `prompt`; 60 untuk `agent`. [`UserPromptSubmit`](#userpromptsubmit) menurunkan default `command`, `http`, dan `mcp_tool` menjadi 30, dan [`MessageDisplay`](#messagedisplay) menurunkannya menjadi 10 |317| `timeout` | tidak | Detik sebelum membatalkan. Default: 600 untuk `command`, `http`, dan `mcp_tool`; 30 untuk `prompt`; 60 untuk `agent`. [`UserPromptSubmit`](#userpromptsubmit) menurunkan default `command`, `http`, dan `mcp_tool` menjadi 30, dan [`MessageDisplay`](#messagedisplay) menurunkannya menjadi 10 |

318| `statusMessage` | tidak | Pesan spinner kustom ditampilkan saat hook dijalankan |318| `statusMessage` | tidak | Pesan spinner kustom ditampilkan saat hook dijalankan |

319| `once` | tidak | Jika `true`, dijalankan hanya sekali per sesi kemudian dihapus. Hanya dihormati untuk hooks yang dideklarasikan dalam [skill frontmatter](#hooks-in-skills-and-agents); diabaikan dalam file pengaturan dan agent frontmatter |319| `once` | tidak | Jika `true`, dijalankan hanya sekali per sesi kemudian dihapus. Hanya dihormati untuk hooks yang dideklarasikan dalam [skill frontmatter](#hooks-in-skills-and-agents); diabaikan dalam file pengaturan dan agent frontmatter |

320 320 

321Bidang `if` menyimpan tepat satu aturan izin. Tidak ada sintaks `&&`, `||`, atau list untuk menggabungkan aturan; untuk menerapkan beberapa kondisi, tentukan handler hook terpisah untuk masing-masing. Untuk Bash, aturan dicocokkan terhadap setiap subperintah dari input tool setelah penugasan `VAR=value` terkemuka dihapus, jadi `if: "Bash(git push *)"` cocok dengan `FOO=bar git push` dan `npm test && git push`. Hook dijalankan jika ada subperintah yang cocok, dan selalu dijalankan ketika perintah terlalu kompleks untuk diurai.321Bidang `if` menyimpan tepat satu aturan izin. Tidak ada sintaks `&&`, `||`, atau list untuk menggabungkan aturan; untuk menerapkan beberapa kondisi, tentukan handler hook terpisah untuk masing-masing.

322 

323<span id="bash-if-matching" />Untuk pola Bash, apakah hook command Anda dijalankan tergantung pada bentuk pola dan perintah Bash yang Claude panggil. Penugasan `VAR=value` terkemuka dihapus sebelum pencocokan.

324 

325| Pola `if` | Perintah Bash | Hook dijalankan? | Mengapa |

326| :----------------- | :--------------------- | :--------------- | :------------------------------------------------------------------------------------------------------------- |

327| `Bash(git *)` | `FOO=bar git push` | ya | penugasan terkemuka dihapus; `git push` cocok |

328| `Bash(git *)` | `npm test && git push` | ya | setiap subperintah diperiksa; `git push` cocok |

329| `Bash(rm *)` | `echo $(rm -rf /)` | ya | perintah di dalam `$()` dan backticks diperiksa; `rm -rf /` cocok |

330| `Bash(rm *)` | `echo $(date)` | tidak | tidak ada subperintah yang cocok dengan `rm *` |

331| `Bash(git push *)` | `echo $(date)` | ya | pola yang menentukan lebih dari nama perintah menjalankan hook bagaimanapun pada `$()`, backticks, atau `$VAR` |

332 

333Filter juga gagal terbuka, menjalankan hook Anda terlepas dari pola, ketika perintah Bash tidak dapat diurai. Karena filter `if` adalah best-effort, gunakan [sistem izin](/id/permissions) daripada hook untuk memberlakukan allow atau deny yang keras.

322 334 

323<h4 id="command-hook-fields">335<h4 id="command-hook-fields">

324 Bidang command hook336 Bidang command hook


461Selain [bidang umum](#common-fields), prompt dan agent hooks menerima bidang-bidang ini:473Selain [bidang umum](#common-fields), prompt dan agent hooks menerima bidang-bidang ini:

462 474 

463| Bidang | Diperlukan | Deskripsi |475| Bidang | Diperlukan | Deskripsi |

464| :------- | :--------- | :------------------------------------------------------------------------------------------------- |476| :------- | :--------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

465| `prompt` | ya | Teks prompt untuk dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook |477| `prompt` | ya | Teks prompt untuk dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Escape dengan backslash untuk menyertakan teks literal: `\$1.00` dirender sebagai `$1.00` |

466| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |478| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |

467 479 

468Semua matching hooks dijalankan secara paralel, dan handler identik dideduplikasi secara otomatis. Command hooks dideduplikasi berdasarkan string perintah dan `args`, dan HTTP hooks dideduplikasi berdasarkan URL. Handlers dijalankan di direktori saat ini dengan lingkungan Claude Code. Variabel lingkungan `$CLAUDE_CODE_REMOTE` diatur ke `"true"` di lingkungan web jarak jauh dan tidak diatur di CLI lokal.480Semua matching hooks dijalankan secara paralel, dan handler identik dideduplikasi secara otomatis. Command hooks dideduplikasi berdasarkan string perintah dan `args`, dan HTTP hooks dideduplikasi berdasarkan URL. Handlers dijalankan di direktori saat ini dengan lingkungan Claude Code. Variabel lingkungan `$CLAUDE_CODE_REMOTE` diatur ke `"true"` di lingkungan web jarak jauh dan tidak diatur di CLI lokal.


619| `agent_id` | Pengenal unik untuk subagent. Hadir hanya ketika hook dijalankan di dalam pemanggilan subagent. Gunakan ini untuk membedakan pemanggilan hook subagent dari pemanggilan thread utama. |631| `agent_id` | Pengenal unik untuk subagent. Hadir hanya ketika hook dijalankan di dalam pemanggilan subagent. Gunakan ini untuk membedakan pemanggilan hook subagent dari pemanggilan thread utama. |

620| `agent_type` | Nama agent (misalnya, `"Explore"` atau `"security-reviewer"`). Hadir ketika sesi menggunakan `--agent` atau hook dijalankan di dalam subagent. Untuk subagents, tipe subagent mengambil alih nilai `--agent` sesi. Untuk [custom subagents](/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file. |632| `agent_type` | Nama agent (misalnya, `"Explore"` atau `"security-reviewer"`). Hadir ketika sesi menggunakan `--agent` atau hook dijalankan di dalam subagent. Untuk subagents, tipe subagent mengambil alih nilai `--agent` sesi. Untuk [custom subagents](/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file. |

621 633 

622Hanya hooks [`SessionStart`](#sessionstart) yang menerima bidang `model`. Tidak ada variabel lingkungan `$CLAUDE_MODEL`. Proses hook mewarisi lingkungan induk, jadi dapat membaca `$ANTHROPIC_MODEL` jika Anda menetapkannya di shell Anda, tetapi nilai itu tidak berubah ketika Anda beralih model dengan `/model` selama sesi.634Hanya hooks [`SessionStart`](#sessionstart) yang dapat menerima bidang `model`, dan tidak dijamin ada. Tidak ada variabel lingkungan `$CLAUDE_MODEL`. Proses hook mewarisi lingkungan induk, jadi dapat membaca `$ANTHROPIC_MODEL` jika Anda menetapkannya di shell Anda, tetapi nilai itu tidak berubah ketika Anda beralih model dengan `/model` selama sesi.

623 635 

624Misalnya, hook `PreToolUse` untuk perintah Bash menerima ini di stdin:636Misalnya, hook `PreToolUse` untuk perintah Bash menerima ini di stdin:

625 637 


782# Notification hook: ping desktop ketika Claude Code membutuhkan perhatian.794# Notification hook: ping desktop ketika Claude Code membutuhkan perhatian.

783input=$(cat)795input=$(cat)

784title="Claude Code'796title="Claude Code'

785body=$(jq -r '.message // 'Needs your attention'' <<<"$input")797body=$(jq -r '.message // 'Needs your attention'' <<<'$input")

786seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")798seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")

787jq -nc --arg seq "$seq" '{terminalSequence: $seq}'799jq -nc --arg seq "$seq" '{terminalSequence: $seq}'

788```800```


815* [SessionStart](#sessionstart), [Setup](#setup), dan [SubagentStart](#subagentstart): di awal percakapan, sebelum prompt pertama827* [SessionStart](#sessionstart), [Setup](#setup), dan [SubagentStart](#subagentstart): di awal percakapan, sebelum prompt pertama

816* [UserPromptSubmit](#userpromptsubmit) dan [UserPromptExpansion](#userpromptexpansion): bersama prompt yang dikirimkan828* [UserPromptSubmit](#userpromptsubmit) dan [UserPromptExpansion](#userpromptexpansion): bersama prompt yang dikirimkan

817* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure), dan [PostToolBatch](#posttoolbatch): di sebelah hasil tool829* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure), dan [PostToolBatch](#posttoolbatch): di sebelah hasil tool

830* [Stop](#stop) dan [SubagentStop](#subagentstop): di akhir giliran. Percakapan berlanjut sehingga Claude dapat bertindak atas umpan balik. Lihat [Stop decision control](#stop-decision-control)

818 831 

819Ketika beberapa hooks mengembalikan `additionalContext` untuk event yang sama, Claude menerima semua nilai. Jika nilai melebihi 10.000 karakter, Claude Code menulis teks lengkap ke file di direktori sesi dan meneruskan Claude path file dengan pratinjau singkat sebagai gantinya.832Ketika beberapa hooks mengembalikan `additionalContext` untuk event yang sama, Claude menerima semua nilai. Jika nilai melebihi 10.000 karakter, Claude Code menulis teks lengkap ke file di direktori sesi dan meneruskan Claude path file dengan pratinjau singkat sebagai gantinya.

820 833 


838 851 

839| Events | Pola keputusan | Bidang kunci |852| Events | Pola keputusan | Bidang kunci |

840| :---------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |853| :---------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

841| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | Top-level `decision` | `decision: "block"`, `reason` |854| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | Top-level `decision` | `decision: "block"`, `reason`. Stop dan SubagentStop juga menerima `hookSpecificOutput.additionalContext` untuk [umpan balik non-error yang melanjutkan percakapan](#stop-decision-control) |

842| TeammateIdle, TaskCreated, TaskCompleted | Kode keluar atau `continue: false` | Kode keluar 2 memblokir tindakan dengan umpan balik stderr. JSON `{"continue": false, "stopReason": "..."}` juga menghentikan teammate sepenuhnya, mencocokkan perilaku hook `Stop` |855| TeammateIdle, TaskCreated, TaskCompleted | Kode keluar atau `continue: false` | Kode keluar 2 memblokir tindakan dengan umpan balik stderr. JSON `{"continue": false, "stopReason": "..."}` juga menghentikan teammate sepenuhnya, mencocokkan perilaku hook `Stop` |

843| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |856| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |

844| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |857| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |


850| SessionStart, Setup, SubagentStart | Context only | `hookSpecificOutput.additionalContext` menambahkan konteks untuk Claude. SessionStart juga menerima [`initialUserMessage`, `watchPaths`, `sessionTitle`, dan `reloadSkills`](#sessionstart-decision-control). Tidak ada kontrol blocking atau decision |863| SessionStart, Setup, SubagentStart | Context only | `hookSpecificOutput.additionalContext` menambahkan konteks untuk Claude. SessionStart juga menerima [`initialUserMessage`, `watchPaths`, `sessionTitle`, dan `reloadSkills`](#sessionstart-decision-control). Tidak ada kontrol blocking atau decision |

851| WorktreeRemove, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, FileChanged | Tidak ada | Tidak ada kontrol keputusan. Digunakan untuk efek samping seperti logging atau cleanup |864| WorktreeRemove, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, FileChanged | Tidak ada | Tidak ada kontrol keputusan. Digunakan untuk efek samping seperti logging atau cleanup |

852 865 

866Beberapa events juga dapat menulis ulang konten daripada hanya mengizinkan atau memblokir:

867 

868* `PreToolUse` — `updatedInput` langsung di bawah `hookSpecificOutput` menggantikan argumen tool sebelum dijalankan ([details](#pretooluse-decision-control))

869* `PermissionRequest` — `updatedInput` di dalam objek `decision` ([details](#permissionrequest-decision-control))

870* `PostToolUse` — `updatedToolOutput` menggantikan hasil tool ([details](#posttooluse-decision-control))

871* `UserPromptSubmit` — tidak dapat mengganti prompt; hanya menyuntikkan `additionalContext` di sampingnya

872 

873Untuk kasus penggunaan redaksi atau transformasi, intersep di `PreToolUse` untuk input tool keluar dan `PostToolUse` untuk hasil tool masuk.

874 

853Berikut adalah contoh setiap pola dalam aksi:875Berikut adalah contoh setiap pola dalam aksi:

854 876 

855<Tabs>877<Tabs>


923| `compact` | Compaction otomatis atau manual |945| `compact` | Compaction otomatis atau manual |

924 946 

925<h4 id="sessionstart-input">947<h4 id="sessionstart-input">

926 Input SessionStart948 SessionStart input

927</h4>949</h4>

928 950 

929Selain [bidang input umum](#common-input-fields), SessionStart hooks menerima `source`, `model`, dan secara opsional `agent_type` dan `session_title`. Bidang `source` menunjukkan bagaimana sesi dimulai: `"startup"` untuk sesi baru, `"resume"` untuk sesi yang dilanjutkan, `"clear"` setelah `/clear`, atau `"compact"` setelah compaction. Bidang `model` berisi pengenal model. Jika Anda memulai Claude Code dengan `claude --agent <name>`, bidang `agent_type` berisi nama agent. Bidang `session_title` membawa judul sesi saat ini jika sudah ditetapkan, misalnya melalui `--name` atau `/rename`. Hook yang memancarkan `sessionTitle` dapat memeriksa `session_title` terlebih dahulu untuk menghindari menimpa judul yang ditetapkan pengguna secara eksplisit.951Selain [bidang input umum](#common-input-fields), SessionStart hooks menerima `source` dan secara opsional `model`, `agent_type`, dan `session_title`. Bidang `source` menunjukkan bagaimana sesi dimulai: `"startup"` untuk sesi baru, `"resume"` untuk sesi yang dilanjutkan, `"clear"` setelah `/clear`, atau `"compact"` setelah compaction. Bidang `model` berisi pengenal model aktif. Itu dapat dihilangkan, misalnya setelah `/clear` atau ketika sesi dipulihkan melalui conversation recovery, jadi periksa bidang sebelum membacanya. Jika Anda memulai Claude Code dengan `claude --agent <name>`, bidang `agent_type` berisi nama agent. Bidang `session_title` membawa judul sesi saat ini jika sudah ditetapkan, misalnya melalui `--name` atau `/rename`. Hook yang memancarkan `sessionTitle` dapat memeriksa `session_title` terlebih dahulu untuk menghindari menimpa judul yang ditetapkan pengguna secara eksplisit.

930 952 

931```json theme={null}953```json theme={null}

932{954{


940```962```

941 963 

942<h4 id="sessionstart-decision-control">964<h4 id="sessionstart-decision-control">

943 Kontrol keputusan SessionStart965 SessionStart decision control

944</h4>966</h4>

945 967 

946Teks apa pun yang dicetak skrip hook ke stdout ditambahkan sebagai konteks untuk Claude. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan bidang spesifik event ini:968Teks apa pun yang dicetak skrip hook ke stdout ditambahkan sebagai konteks untuk Claude. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan bidang spesifik event ini:


977```999```

978 1000 

979<h4 id="persist-environment-variables">1001<h4 id="persist-environment-variables">

980 Pertahankan variabel lingkungan1002 Persist environment variables

981</h4>1003</h4>

982 1004 

983SessionStart hooks memiliki akses ke variabel lingkungan `CLAUDE_ENV_FILE`, yang menyediakan path file di mana Anda dapat mempertahankan variabel lingkungan untuk perintah Bash berikutnya.1005SessionStart hooks memiliki akses ke variabel lingkungan `CLAUDE_ENV_FILE`, yang menyediakan path file di mana Anda dapat mempertahankan variabel lingkungan untuk perintah Bash berikutnya.


1039Karena Setup tidak dijalankan pada setiap peluncuran, plugin yang memerlukan dependensi yang diinstal tidak dapat mengandalkan Setup saja. Pola praktis adalah memeriksa dependensi pada penggunaan pertama dan menginstal jika tidak ada, misalnya hook atau skill yang menguji `${CLAUDE_PLUGIN_DATA}/node_modules` dan menjalankan `npm install` jika tidak ada. Lihat [direktori data persisten](/id/plugins-reference#persistent-data-directory) untuk tempat menyimpan dependensi yang diinstal.1061Karena Setup tidak dijalankan pada setiap peluncuran, plugin yang memerlukan dependensi yang diinstal tidak dapat mengandalkan Setup saja. Pola praktis adalah memeriksa dependensi pada penggunaan pertama dan menginstal jika tidak ada, misalnya hook atau skill yang menguji `${CLAUDE_PLUGIN_DATA}/node_modules` dan menjalankan `npm install` jika tidak ada. Lihat [direktori data persisten](/id/plugins-reference#persistent-data-directory) untuk tempat menyimpan dependensi yang diinstal.

1040 1062 

1041<h4 id="setup-input">1063<h4 id="setup-input">

1042 Input Setup1064 Setup input

1043</h4>1065</h4>

1044 1066 

1045Selain [bidang input umum](#common-input-fields), Setup hooks menerima bidang `trigger` yang diatur ke `"init"` atau `"maintenance"`:1067Selain [bidang input umum](#common-input-fields), Setup hooks menerima bidang `trigger` yang diatur ke `"init"` atau `"maintenance"`:


1055```1077```

1056 1078 

1057<h4 id="setup-decision-control">1079<h4 id="setup-decision-control">

1058 Kontrol keputusan Setup1080 Setup decision control

1059</h4>1081</h4>

1060 1082 

1061Setup hooks tidak dapat memblokir. Pada kode keluar 2, stderr ditampilkan kepada pengguna; pada kode keluar non-nol lainnya, stderr muncul hanya ketika Anda meluncurkan dengan `--verbose`. Dalam kedua kasus eksekusi berlanjut. Untuk meneruskan informasi ke konteks Claude, kembalikan `additionalContext` dalam output JSON; plain stdout ditulis ke debug log saja. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan bidang spesifik event ini:1083Setup hooks tidak dapat memblokir. Pada kode keluar 2, stderr ditampilkan kepada pengguna; pada kode keluar non-nol lainnya, stderr muncul hanya ketika Anda meluncurkan dengan `--verbose`. Dalam kedua kasus eksekusi berlanjut. Untuk meneruskan informasi ke konteks Claude, kembalikan `additionalContext` dalam output JSON; plain stdout ditulis ke debug log saja. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan bidang spesifik event ini:


1084Matcher dijalankan terhadap `load_reason`. Misalnya, gunakan `"matcher": "session_start"` untuk dijalankan hanya untuk file yang dimuat saat startup sesi, atau `"matcher": "path_glob_match|nested_traversal"` untuk dijalankan hanya untuk lazy loads.1106Matcher dijalankan terhadap `load_reason`. Misalnya, gunakan `"matcher": "session_start"` untuk dijalankan hanya untuk file yang dimuat saat startup sesi, atau `"matcher": "path_glob_match|nested_traversal"` untuk dijalankan hanya untuk lazy loads.

1085 1107 

1086<h4 id="instructionsloaded-input">1108<h4 id="instructionsloaded-input">

1087 Input InstructionsLoaded1109 InstructionsLoaded input

1088</h4>1110</h4>

1089 1111 

1090Selain [bidang input umum](#common-input-fields), InstructionsLoaded hooks menerima bidang-bidang ini:1112Selain [bidang input umum](#common-input-fields), InstructionsLoaded hooks menerima bidang-bidang ini:


1111```1133```

1112 1134 

1113<h4 id="instructionsloaded-decision-control">1135<h4 id="instructionsloaded-decision-control">

1114 Kontrol keputusan InstructionsLoaded1136 InstructionsLoaded decision control

1115</h4>1137</h4>

1116 1138 

1117InstructionsLoaded hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir atau memodifikasi pemuatan instruksi. Gunakan event ini untuk audit logging, compliance tracking, atau observabilitas.1139InstructionsLoaded hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir atau memodifikasi pemuatan instruksi. Gunakan event ini untuk audit logging, compliance tracking, atau observabilitas.


1125Hooks `UserPromptSubmit` memiliki timeout default 30 detik untuk tipe `command`, `http`, dan `mcp_tool`, lebih pendek dari default 600 detik untuk tipe tersebut pada event lain. Karena hook ini dijalankan sebelum setiap prompt dan memblokir pemrosesan model sampai selesai, hook yang macet menghentikan sesi. Jika hook Anda memerlukan lebih banyak waktu, atur bidang `timeout` dalam entri hook.1147Hooks `UserPromptSubmit` memiliki timeout default 30 detik untuk tipe `command`, `http`, dan `mcp_tool`, lebih pendek dari default 600 detik untuk tipe tersebut pada event lain. Karena hook ini dijalankan sebelum setiap prompt dan memblokir pemrosesan model sampai selesai, hook yang macet menghentikan sesi. Jika hook Anda memerlukan lebih banyak waktu, atur bidang `timeout` dalam entri hook.

1126 1148 

1127<h4 id="userpromptsubmit-input">1149<h4 id="userpromptsubmit-input">

1128 Input UserPromptSubmit1150 UserPromptSubmit input

1129</h4>1151</h4>

1130 1152 

1131Selain [bidang input umum](#common-input-fields), UserPromptSubmit hooks menerima bidang `prompt` yang berisi teks yang dikirimkan pengguna.1153Selain [bidang input umum](#common-input-fields), UserPromptSubmit hooks menerima bidang `prompt` yang berisi teks yang dikirimkan pengguna.


1142```1164```

1143 1165 

1144<h4 id="userpromptsubmit-decision-control">1166<h4 id="userpromptsubmit-decision-control">

1145 Kontrol keputusan UserPromptSubmit1167 UserPromptSubmit decision control

1146</h4>1168</h4>

1147 1169 

1148Hooks `UserPromptSubmit` dapat mengontrol apakah prompt pengguna diproses dan menambahkan konteks. Semua [bidang output JSON](#json-output) tersedia.1170Hooks `UserPromptSubmit` dapat mengontrol apakah prompt pengguna diproses dan menambahkan konteks. Semua [bidang output JSON](#json-output) tersedia.


1191Cocok pada `command_name`. Biarkan matcher kosong untuk dijalankan pada setiap slash command prompt-type.1213Cocok pada `command_name`. Biarkan matcher kosong untuk dijalankan pada setiap slash command prompt-type.

1192 1214 

1193<h4 id="userpromptexpansion-input">1215<h4 id="userpromptexpansion-input">

1194 Input UserPromptExpansion1216 UserPromptExpansion input

1195</h4>1217</h4>

1196 1218 

1197Selain [bidang input umum](#common-input-fields), UserPromptExpansion hooks menerima `expansion_type`, `command_name`, `command_args`, `command_source`, dan string `prompt` asli. Bidang `expansion_type` adalah `slash_command` untuk skill dan custom commands, atau `mcp_prompt` untuk MCP server prompts.1219Selain [bidang input umum](#common-input-fields), UserPromptExpansion hooks menerima `expansion_type`, `command_name`, `command_args`, `command_source`, dan string `prompt` asli. Bidang `expansion_type` adalah `slash_command` untuk skill dan custom commands, atau `mcp_prompt` untuk MCP server prompts.


1212```1234```

1213 1235 

1214<h4 id="userpromptexpansion-decision-control">1236<h4 id="userpromptexpansion-decision-control">

1215 Kontrol keputusan UserPromptExpansion1237 UserPromptExpansion decision control

1216</h4>1238</h4>

1217 1239 

1218Hooks `UserPromptExpansion` dapat memblokir ekspansi atau menambahkan konteks. Semua [bidang output JSON](#json-output) tersedia.1240Hooks `UserPromptExpansion` dapat memblokir ekspansi atau menambahkan konteks. Semua [bidang output JSON](#json-output) tersedia.


1255Dalam run non-interaktif, termasuk kueri Agent SDK dan `claude -p`, MessageDisplay dijalankan sekali per pesan asisten alih-alih sekali per batch baris. Panggilan tunggal tiba setelah pesan selesai dan membawa teks pesan lengkap: `index` adalah `0`, `final` adalah `true`, dan `delta` menyimpan seluruh pesan. Hook yang mengumpulkan teks `delta` untuk setiap pesan menerima teks total yang sama dalam kedua mode.1277Dalam run non-interaktif, termasuk kueri Agent SDK dan `claude -p`, MessageDisplay dijalankan sekali per pesan asisten alih-alih sekali per batch baris. Panggilan tunggal tiba setelah pesan selesai dan membawa teks pesan lengkap: `index` adalah `0`, `final` adalah `true`, dan `delta` menyimpan seluruh pesan. Hook yang mengumpulkan teks `delta` untuk setiap pesan menerima teks total yang sama dalam kedua mode.

1256 1278 

1257<h4 id="messagedisplay-input">1279<h4 id="messagedisplay-input">

1258 Input MessageDisplay1280 MessageDisplay input

1259</h4>1281</h4>

1260 1282 

1261Selain [bidang input umum](#common-input-fields), MessageDisplay hooks menerima pengenal untuk giliran dan pesan, posisi panggilan ini dalam pesan, dan teks baru dalam `delta`. Batas batch tergantung pada bagaimana teks mengalir, jadi gunakan `index` dan `final` untuk melacak kemajuan melalui pesan daripada mengharapkan baris dikelompokkan dengan cara tertentu.1283Selain [bidang input umum](#common-input-fields), MessageDisplay hooks menerima pengenal untuk giliran dan pesan, posisi panggilan ini dalam pesan, dan teks baru dalam `delta`. Batas batch tergantung pada bagaimana teks mengalir, jadi gunakan `index` dan `final` untuk melacak kemajuan melalui pesan daripada mengharapkan baris dikelompokkan dengan cara tertentu.


1283```1305```

1284 1306 

1285<h4 id="messagedisplay-output">1307<h4 id="messagedisplay-output">

1286 Output MessageDisplay1308 MessageDisplay output

1287</h4>1309</h4>

1288 1310 

1289Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, MessageDisplay hooks dapat mengembalikan `displayContent` untuk mengganti delta di layar:1311Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, MessageDisplay hooks dapat mengembalikan `displayContent` untuk mengganti delta di layar:


1383Gunakan [PreToolUse decision control](#pretooluse-decision-control) untuk mengizinkan, menolak, menanyakan, atau menunda pemanggilan tool.1405Gunakan [PreToolUse decision control](#pretooluse-decision-control) untuk mengizinkan, menolak, menanyakan, atau menunda pemanggilan tool.

1384 1406 

1385<h4 id="pretooluse-input">1407<h4 id="pretooluse-input">

1386 Input PreToolUse1408 PreToolUse input

1387</h4>1409</h4>

1388 1410 

1389Selain [bidang input umum](#common-input-fields), PreToolUse hooks menerima `tool_name`, `tool_input`, dan `tool_use_id`. Bidang `tool_input` tergantung pada tool:1411Selain [bidang input umum](#common-input-fields), PreToolUse hooks menerima `tool_name`, `tool_input`, dan `tool_use_id`. Bidang `tool_input` tergantung pada tool:


1502Dalam `PostToolUse`, `tool_response` untuk panggilan Agent yang selesai membawa teks akhir subagent bersama dengan telemetri penggunaan. Baca bidang-bidang ini untuk mencatat biaya per-subagent dari hook:1524Dalam `PostToolUse`, `tool_response` untuk panggilan Agent yang selesai membawa teks akhir subagent bersama dengan telemetri penggunaan. Baca bidang-bidang ini untuk mencatat biaya per-subagent dari hook:

1503 1525 

1504| Bidang | Tipe | Contoh | Deskripsi |1526| Bidang | Tipe | Contoh | Deskripsi |

1505| :------------------ | :----- | :---------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------ |1527| :------------------ | :----- | :---------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |

1506| `status` | string | `"completed"` | `"completed"` untuk panggilan sinkron, `"async_launched"` untuk `run_in_background: true` |1528| `status` | string | `"completed"` | `"completed"` untuk panggilan sinkron, `"async_launched"` untuk `run_in_background: true` |

1507| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengenal untuk run subagent |1529| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengenal untuk run subagent |

1508| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks akhir subagent |1530| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks akhir subagent |

1531| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model yang dijalankan subagent, yang mungkin berbeda dari model yang diminta. {/* min-version: 2.1.174 */}Memerlukan Claude Code v2.1.174 atau lebih baru |

1509| `totalTokens` | number | `12450` | Total tokens yang ditagih di seluruh giliran subagent |1532| `totalTokens` | number | `12450` | Total tokens yang ditagih di seluruh giliran subagent |

1510| `totalDurationMs` | number | `48211` | Durasi wall-clock dari run subagent |1533| `totalDurationMs` | number | `48211` | Durasi wall-clock dari run subagent |

1511| `totalToolUseCount` | number | `7` | Jumlah pemanggilan tool yang dibuat subagent |1534| `totalToolUseCount` | number | `7` | Jumlah pemanggilan tool yang dibuat subagent |

1512| `usage` | object | `{"input_tokens": 8320, ...}` | Breakdown token per-tipe: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |1535| `usage` | object | `{"input_tokens": 8320, ...}` | Breakdown token per-tipe: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |

1513 1536 

1514Untuk panggilan `run_in_background: true`, tool mengembalikan segera setelah meluncurkan subagent, jadi `tool_response` tidak membawa bidang penggunaan. Itu memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, dan `outputFile` sebagai gantinya.1537Untuk panggilan `run_in_background: true`, tool mengembalikan segera setelah meluncurkan subagent, jadi `tool_response` tidak membawa bidang penggunaan. Itu memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.

1538 

1539Bidang `resolvedModel` menamai model yang sebenarnya dijalankan subagent, yang dapat berbeda dari nilai `model` dalam `tool_input`. Itu memerlukan Claude Code v2.1.174 atau lebih baru.

1540 

1541<a id="askuserquestion" />

1515 1542 

1516<h5 id="askuserquestion">1543<h5 id="askuserquestion">

1517 AskUserQuestion1544 AskUserQuestion


1539Dalam `PostToolUse`, `tool_response` adalah objek dengan bidang `plan` dan `filePath` yang menyimpan rencana yang disetujui, ditambah flag status internal. Baca `tool_response.plan` untuk konten rencana daripada membaca ulang file dari disk.1566Dalam `PostToolUse`, `tool_response` adalah objek dengan bidang `plan` dan `filePath` yang menyimpan rencana yang disetujui, ditambah flag status internal. Baca `tool_response.plan` untuk konten rencana daripada membaca ulang file dari disk.

1540 1567 

1541<h4 id="pretooluse-decision-control">1568<h4 id="pretooluse-decision-control">

1542 Kontrol keputusan PreToolUse1569 PreToolUse decision control

1543</h4>1570</h4>

1544 1571 

1545Hooks `PreToolUse` dapat mengontrol apakah pemanggilan tool dilanjutkan. Tidak seperti hooks lain yang menggunakan bidang `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberikannya kontrol yang lebih kaya: empat hasil (izinkan, tolak, tanya, atau tunda) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.1572Hooks `PreToolUse` dapat mengontrol apakah pemanggilan tool dilanjutkan. Tidak seperti hooks lain yang menggunakan bidang `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberikannya kontrol yang lebih kaya: empat hasil (izinkan, tolak, tanya, atau tunda) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.


1576</Note>1603</Note>

1577 1604 

1578<h4 id="defer-a-tool-call-for-later">1605<h4 id="defer-a-tool-call-for-later">

1579 Tunda pemanggilan tool untuk nanti1606 Defer a tool call for later

1580</h4>1607</h4>

1581 1608 

1582`"defer"` adalah untuk integrasi yang menjalankan `claude -p` sebagai subprocess dan membaca output JSON-nya, seperti aplikasi Agent SDK atau UI kustom yang dibangun di atas Claude Code. Ini memungkinkan proses pemanggil itu menjeda Claude pada pemanggilan tool, mengumpulkan input melalui antarmuka miliknya sendiri, dan melanjutkan di mana ia berhenti. Claude Code menghormati nilai ini hanya dalam [mode non-interaktif](/id/headless) dengan flag `-p`. Dalam sesi interaktif itu mencatat peringatan dan mengabaikan hasil hook.1609`"defer"` adalah untuk integrasi yang menjalankan `claude -p` sebagai subprocess dan membaca output JSON-nya, seperti aplikasi Agent SDK atau UI kustom yang dibangun di atas Claude Code. Ini memungkinkan proses pemanggil itu menjeda Claude pada pemanggilan tool, mengumpulkan input melalui antarmuka miliknya sendiri, dan melanjutkan di mana ia berhenti. Claude Code menghormati nilai ini hanya dalam [mode non-interaktif](/id/headless) dengan flag `-p`. Dalam sesi interaktif itu mencatat peringatan dan mengabaikan hasil hook.


1629Cocok pada nama tool, nilai yang sama seperti PreToolUse.1656Cocok pada nama tool, nilai yang sama seperti PreToolUse.

1630 1657 

1631<h4 id="permissionrequest-input">1658<h4 id="permissionrequest-input">

1632 Input PermissionRequest1659 PermissionRequest input

1633</h4>1660</h4>

1634 1661 

1635PermissionRequest hooks menerima bidang `tool_name` dan `tool_input` seperti PreToolUse hooks, tetapi tanpa `tool_use_id`. Array `permission_suggestions` opsional berisi opsi "selalu izinkan" yang biasanya dilihat pengguna dalam dialog izin. Perbedaannya adalah kapan hook dijalankan: PermissionRequest hooks dijalankan ketika dialog izin akan ditampilkan ke pengguna, sementara PreToolUse hooks dijalankan sebelum eksekusi tool terlepas dari status izin.1662PermissionRequest hooks menerima bidang `tool_name` dan `tool_input` seperti PreToolUse hooks, tetapi tanpa `tool_use_id`. Array `permission_suggestions` opsional berisi opsi "selalu izinkan" yang biasanya dilihat pengguna dalam dialog izin. Perbedaannya adalah kapan hook dijalankan: PermissionRequest hooks dijalankan ketika dialog izin akan ditampilkan ke pengguna, sementara PreToolUse hooks dijalankan sebelum eksekusi tool terlepas dari status izin.


1658```1685```

1659 1686 

1660<h4 id="permissionrequest-decision-control">1687<h4 id="permissionrequest-decision-control">

1661 Kontrol keputusan PermissionRequest1688 PermissionRequest decision control

1662</h4>1689</h4>

1663 1690 

1664Hooks `PermissionRequest` dapat mengizinkan atau menolak permintaan izin. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan objek `decision` dengan bidang spesifik event ini:1691Hooks `PermissionRequest` dapat mengizinkan atau menolak permintaan izin. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan objek `decision` dengan bidang spesifik event ini:


1724Cocok pada nama tool, nilai yang sama seperti PreToolUse.1751Cocok pada nama tool, nilai yang sama seperti PreToolUse.

1725 1752 

1726<h4 id="posttooluse-input">1753<h4 id="posttooluse-input">

1727 Input PostToolUse1754 PostToolUse input

1728</h4>1755</h4>

1729 1756 

1730Hooks `PostToolUse` dijalankan setelah tool sudah dijalankan dengan sukses. Input mencakup `tool_input`, argumen yang dikirim ke tool, dan `tool_response`, hasil yang dikembalikan. Skema yang tepat untuk keduanya tergantung pada tool.1757Hooks `PostToolUse` dijalankan setelah tool sudah dijalankan dengan sukses. Input mencakup `tool_input`, argumen yang dikirim ke tool, dan `tool_response`, hasil yang dikembalikan. Skema yang tepat untuk keduanya tergantung pada tool.


1755| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Mengecualikan waktu yang dihabiskan dalam prompt izin dan PreToolUse hooks |1782| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Mengecualikan waktu yang dihabiskan dalam prompt izin dan PreToolUse hooks |

1756 1783 

1757<h4 id="posttooluse-decision-control">1784<h4 id="posttooluse-decision-control">

1758 Kontrol keputusan PostToolUse1785 PostToolUse decision control

1759</h4>1786</h4>

1760 1787 

1761Hooks `PostToolUse` dapat memberikan umpan balik ke Claude setelah eksekusi tool. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:1788Hooks `PostToolUse` dapat memberikan umpan balik ke Claude setelah eksekusi tool. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:


1800Cocok pada nama tool, nilai yang sama seperti PreToolUse.1827Cocok pada nama tool, nilai yang sama seperti PreToolUse.

1801 1828 

1802<h4 id="posttoolusefailure-input">1829<h4 id="posttoolusefailure-input">

1803 Input PostToolUseFailure1830 PostToolUseFailure input

1804</h4>1831</h4>

1805 1832 

1806PostToolUseFailure hooks menerima bidang `tool_name` dan `tool_input` yang sama seperti PostToolUse, bersama dengan informasi kesalahan sebagai bidang tingkat atas:1833PostToolUseFailure hooks menerima bidang `tool_name` dan `tool_input` yang sama seperti PostToolUse, bersama dengan informasi kesalahan sebagai bidang tingkat atas:


1831| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Mengecualikan waktu yang dihabiskan dalam prompt izin dan PreToolUse hooks |1858| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Mengecualikan waktu yang dihabiskan dalam prompt izin dan PreToolUse hooks |

1832 1859 

1833<h4 id="posttoolusefailure-decision-control">1860<h4 id="posttoolusefailure-decision-control">

1834 Kontrol keputusan PostToolUseFailure1861 PostToolUseFailure decision control

1835</h4>1862</h4>

1836 1863 

1837Hooks `PostToolUseFailure` dapat memberikan konteks ke Claude setelah kegagalan tool. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:1864Hooks `PostToolUseFailure` dapat memberikan konteks ke Claude setelah kegagalan tool. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:


1856Dijalankan sekali setelah setiap tool call dalam batch telah terselesaikan, sebelum Claude Code mengirimkan permintaan berikutnya ke model. `PostToolUse` dijalankan sekali per tool, yang berarti dijalankan secara bersamaan ketika Claude membuat pemanggilan tool paralel. `PostToolBatch` dijalankan tepat sekali dengan batch lengkap, jadi ini adalah tempat yang tepat untuk menyuntikkan konteks yang bergantung pada set tools yang dijalankan daripada pada tool tunggal. Tidak ada matcher untuk event ini.1883Dijalankan sekali setelah setiap tool call dalam batch telah terselesaikan, sebelum Claude Code mengirimkan permintaan berikutnya ke model. `PostToolUse` dijalankan sekali per tool, yang berarti dijalankan secara bersamaan ketika Claude membuat pemanggilan tool paralel. `PostToolBatch` dijalankan tepat sekali dengan batch lengkap, jadi ini adalah tempat yang tepat untuk menyuntikkan konteks yang bergantung pada set tools yang dijalankan daripada pada tool tunggal. Tidak ada matcher untuk event ini.

1857 1884 

1858<h4 id="posttoolbatch-input">1885<h4 id="posttoolbatch-input">

1859 Input PostToolBatch1886 PostToolBatch input

1860</h4>1887</h4>

1861 1888 

1862Selain [bidang input umum](#common-input-fields), PostToolBatch hooks menerima `tool_calls`, array yang menjelaskan setiap pemanggilan tool dalam batch:1889Selain [bidang input umum](#common-input-fields), PostToolBatch hooks menerima `tool_calls`, array yang menjelaskan setiap pemanggilan tool dalam batch:


1892</Note>1919</Note>

1893 1920 

1894<h4 id="posttoolbatch-decision-control">1921<h4 id="posttoolbatch-decision-control">

1895 Kontrol keputusan PostToolBatch1922 PostToolBatch decision control

1896</h4>1923</h4>

1897 1924 

1898Hooks `PostToolBatch` dapat menyuntikkan konteks untuk Claude. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:1925Hooks `PostToolBatch` dapat menyuntikkan konteks untuk Claude. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:


1921Cocok pada nama tool, nilai yang sama seperti PreToolUse.1948Cocok pada nama tool, nilai yang sama seperti PreToolUse.

1922 1949 

1923<h4 id="permissiondenied-input">1950<h4 id="permissiondenied-input">

1924 Input PermissionDenied1951 PermissionDenied input

1925</h4>1952</h4>

1926 1953 

1927Selain [bidang input umum](#common-input-fields), PermissionDenied hooks menerima `tool_name`, `tool_input`, `tool_use_id`, dan `reason`.1954Selain [bidang input umum](#common-input-fields), PermissionDenied hooks menerima `tool_name`, `tool_input`, `tool_use_id`, dan `reason`.


1948| `reason` | Penjelasan pengklasifikasi tentang mengapa pemanggilan tool ditolak |1975| `reason` | Penjelasan pengklasifikasi tentang mengapa pemanggilan tool ditolak |

1949 1976 

1950<h4 id="permissiondenied-decision-control">1977<h4 id="permissiondenied-decision-control">

1951 Kontrol keputusan PermissionDenied1978 PermissionDenied decision control

1952</h4>1979</h4>

1953 1980 

1954PermissionDenied hooks dapat memberitahu model itu dapat mencoba lagi pemanggilan tool yang ditolak. Kembalikan objek JSON dengan `hookSpecificOutput.retry` diatur ke `true`:1981PermissionDenied hooks dapat memberitahu model itu dapat mencoba lagi pemanggilan tool yang ditolak. Kembalikan objek JSON dengan `hookSpecificOutput.retry` diatur ke `true`:


2000```2027```

2001 2028 

2002<h4 id="notification-input">2029<h4 id="notification-input">

2003 Input Notification2030 Notification input

2004</h4>2031</h4>

2005 2032 

2006Selain [bidang input umum](#common-input-fields), Notification hooks menerima `message` dengan teks notifikasi, `title` opsional, dan `notification_type` menunjukkan tipe mana yang dijalankan.2033Selain [bidang input umum](#common-input-fields), Notification hooks menerima `message` dengan teks notifikasi, `title` opsional, dan `notification_type` menunjukkan tipe mana yang dijalankan.


2026Dijalankan ketika subagent Claude Code dispawn melalui tool Agent. Mendukung matchers untuk memfilter berdasarkan nama tipe agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [custom subagents](/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file.2053Dijalankan ketika subagent Claude Code dispawn melalui tool Agent. Mendukung matchers untuk memfilter berdasarkan nama tipe agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [custom subagents](/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file.

2027 2054 

2028<h4 id="subagentstart-input">2055<h4 id="subagentstart-input">

2029 Input SubagentStart2056 SubagentStart input

2030</h4>2057</h4>

2031 2058 

2032Selain [bidang input umum](#common-input-fields), SubagentStart hooks menerima `agent_id` dengan pengenal unik untuk subagent dan `agent_type` dengan nama agent (agent bawaan seperti `"general-purpose"`, `"Explore"`, `"Plan"`, atau nama agent kustom).2059Selain [bidang input umum](#common-input-fields), SubagentStart hooks menerima `agent_id` dengan pengenal unik untuk subagent dan `agent_type` dengan nama agent (agent bawaan seperti `"general-purpose"`, `"Explore"`, `"Plan"`, atau nama agent kustom).


2064Dijalankan ketika subagent Claude Code telah selesai merespons. Cocok pada tipe agent, nilai yang sama seperti SubagentStart.2091Dijalankan ketika subagent Claude Code telah selesai merespons. Cocok pada tipe agent, nilai yang sama seperti SubagentStart.

2065 2092 

2066<h4 id="subagentstop-input">2093<h4 id="subagentstop-input">

2067 Input SubagentStop2094 SubagentStop input

2068</h4>2095</h4>

2069 2096 

2070Selain [bidang input umum](#common-input-fields), SubagentStop hooks menerima `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, dan `last_assistant_message`. Bidang `agent_type` adalah nilai yang digunakan untuk pemfilteran matcher. `transcript_path` adalah transkrip sesi utama, sementara `agent_transcript_path` adalah transkrip subagent sendiri yang disimpan dalam folder `subagents/` bersarang. Bidang `last_assistant_message` berisi konten teks respons akhir subagent, jadi hooks dapat mengaksesnya tanpa mengurai file transkrip.2097Selain [bidang input umum](#common-input-fields), SubagentStop hooks menerima `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, dan `last_assistant_message`. Bidang `agent_type` adalah nilai yang digunakan untuk pemfilteran matcher. `transcript_path` adalah transkrip sesi utama, sementara `agent_transcript_path` adalah transkrip subagent sendiri yang disimpan dalam folder `subagents/` bersarang. Bidang `last_assistant_message` berisi konten teks respons akhir subagent, jadi hooks dapat mengaksesnya tanpa mengurai file transkrip.


2088}2115}

2089```2116```

2090 2117 

2091SubagentStop hooks menggunakan format kontrol keputusan yang sama seperti [Stop hooks](#stop-decision-control). Mereka tidak mendukung `additionalContext`. Mengembalikan `decision: "block"` dengan `reason` membuat subagent tetap berjalan dan mengirimkan `reason` ke subagent sebagai instruksi berikutnya. Untuk menyuntikkan konteks ke sesi induk setelah subagent kembali, gunakan hook [`PostToolUse`](#posttooluse) pada tool `Agent` sebagai gantinya.2118SubagentStop hooks menggunakan format kontrol keputusan yang sama seperti [Stop hooks](#stop-decision-control), termasuk `hookSpecificOutput.additionalContext` dengan `hookEventName` diatur ke `"SubagentStop"`, untuk umpan balik non-error yang membuat subagent tetap berjalan. Mengembalikan `decision: "block"` dengan `reason` membuat subagent tetap berjalan dan mengirimkan `reason` ke subagent sebagai instruksi berikutnya. Untuk menyuntikkan konteks ke sesi induk setelah subagent kembali, gunakan hook [`PostToolUse`](#posttooluse) pada tool `Agent` sebagai gantinya.

2092 2119 

2093<h3 id="taskcreated">2120<h3 id="taskcreated">

2094 TaskCreated2121 TaskCreated


2099Ketika hook `TaskCreated` keluar dengan kode 2, tugas tidak dibuat dan pesan stderr diumpankan kembali ke model sebagai umpan balik. Untuk menghentikan teammate sepenuhnya alih-alih menjalankannya kembali, kembalikan JSON dengan `{"continue": false, "stopReason": "..."}`. TaskCreated hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.2126Ketika hook `TaskCreated` keluar dengan kode 2, tugas tidak dibuat dan pesan stderr diumpankan kembali ke model sebagai umpan balik. Untuk menghentikan teammate sepenuhnya alih-alih menjalankannya kembali, kembalikan JSON dengan `{"continue": false, "stopReason": "..."}`. TaskCreated hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.

2100 2127 

2101<h4 id="taskcreated-input">2128<h4 id="taskcreated-input">

2102 Input TaskCreated2129 TaskCreated input

2103</h4>2130</h4>

2104 2131 

2105Selain [bidang input umum](#common-input-fields), TaskCreated hooks menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.2132Selain [bidang input umum](#common-input-fields), TaskCreated hooks menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.


2115 "task_subject": "Implement user authentication",2142 "task_subject": "Implement user authentication",

2116 "task_description": "Add login and signup endpoints",2143 "task_description": "Add login and signup endpoints",

2117 "teammate_name": "implementer",2144 "teammate_name": "implementer",

2118 "team_name": "my-project"2145 "team_name": "session-a1b2c3d4"

2119}2146}

2120```2147```

2121 2148 

2122| Bidang | Deskripsi |2149| Bidang | Deskripsi |

2123| :----------------- | :-------------------------------------------------- |2150| :----------------- | :---------------------------------------------------------------------- |

2124| `task_id` | Pengenal tugas yang sedang dibuat |2151| `task_id` | Pengenal tugas yang sedang dibuat |

2125| `task_subject` | Judul tugas |2152| `task_subject` | Judul tugas |

2126| `task_description` | Deskripsi detail tugas. Mungkin tidak ada |2153| `task_description` | Deskripsi detail tugas. Mungkin tidak ada |

2127| `teammate_name` | Nama teammate yang membuat tugas. Mungkin tidak ada |2154| `teammate_name` | Nama teammate yang membuat tugas. Mungkin tidak ada |

2128| `team_name` | Nama team. Mungkin tidak ada |2155| `team_name` | Nama team yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2129 2156 

2130<h4 id="taskcreated-decision-control">2157<h4 id="taskcreated-decision-control">

2131 Kontrol keputusan TaskCreated2158 TaskCreated decision control

2132</h4>2159</h4>

2133 2160 

2134TaskCreated hooks mendukung dua cara untuk mengontrol pembuatan tugas:2161TaskCreated hooks mendukung dua cara untuk mengontrol pembuatan tugas:


2160Ketika hook `TaskCompleted` keluar dengan kode 2, tugas tidak ditandai sebagai selesai dan pesan stderr diumpankan kembali ke model sebagai umpan balik. Untuk menghentikan teammate sepenuhnya alih-alih menjalankannya kembali, kembalikan JSON dengan `{"continue": false, "stopReason": "..."}`. TaskCompleted hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.2187Ketika hook `TaskCompleted` keluar dengan kode 2, tugas tidak ditandai sebagai selesai dan pesan stderr diumpankan kembali ke model sebagai umpan balik. Untuk menghentikan teammate sepenuhnya alih-alih menjalankannya kembali, kembalikan JSON dengan `{"continue": false, "stopReason": "..."}`. TaskCompleted hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.

2161 2188 

2162<h4 id="taskcompleted-input">2189<h4 id="taskcompleted-input">

2163 Input TaskCompleted2190 TaskCompleted input

2164</h4>2191</h4>

2165 2192 

2166Selain [bidang input umum](#common-input-fields), TaskCompleted hooks menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.2193Selain [bidang input umum](#common-input-fields), TaskCompleted hooks menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.


2176 "task_subject": "Implement user authentication",2203 "task_subject": "Implement user authentication",

2177 "task_description": "Add login and signup endpoints",2204 "task_description": "Add login and signup endpoints",

2178 "teammate_name": "implementer",2205 "teammate_name": "implementer",

2179 "team_name": "my-project"2206 "team_name": "session-a1b2c3d4"

2180}2207}

2181```2208```

2182 2209 

2183| Bidang | Deskripsi |2210| Bidang | Deskripsi |

2184| :----------------- | :-------------------------------------------------------- |2211| :----------------- | :---------------------------------------------------------------------- |

2185| `task_id` | Pengenal tugas yang sedang diselesaikan |2212| `task_id` | Pengenal tugas yang sedang diselesaikan |

2186| `task_subject` | Judul tugas |2213| `task_subject` | Judul tugas |

2187| `task_description` | Deskripsi detail tugas. Mungkin tidak ada |2214| `task_description` | Deskripsi detail tugas. Mungkin tidak ada |

2188| `teammate_name` | Nama teammate yang menyelesaikan tugas. Mungkin tidak ada |2215| `teammate_name` | Nama teammate yang menyelesaikan tugas. Mungkin tidak ada |

2189| `team_name` | Nama team. Mungkin tidak ada |2216| `team_name` | Nama team yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2190 2217 

2191<h4 id="taskcompleted-decision-control">2218<h4 id="taskcompleted-decision-control">

2192 Kontrol keputusan TaskCompleted2219 TaskCompleted decision control

2193</h4>2220</h4>

2194 2221 

2195TaskCompleted hooks mendukung dua cara untuk mengontrol penyelesaian tugas:2222TaskCompleted hooks mendukung dua cara untuk mengontrol penyelesaian tugas:


2224</Tip>2251</Tip>

2225 2252 

2226<h4 id="stop-input">2253<h4 id="stop-input">

2227 Input Stop2254 Stop input

2228</h4>2255</h4>

2229 2256 

2230Selain [bidang input umum](#common-input-fields), Stop hooks menerima `stop_hook_active`, `last_assistant_message`, `background_tasks`, dan `session_crons`. Bidang `stop_hook_active` adalah `true` ketika Claude Code sudah melanjutkan sebagai hasil dari stop hook. Periksa nilai ini atau proses transkrip untuk menghindari memblokir pada kondisi yang tidak akan pernah terselesaikan. Claude Code menimpa hook dan mengakhiri giliran setelah 8 blok berturut-turut.2257Selain [bidang input umum](#common-input-fields), Stop hooks menerima `stop_hook_active`, `last_assistant_message`, `background_tasks`, dan `session_crons`. Bidang `stop_hook_active` adalah `true` ketika Claude Code sudah melanjutkan sebagai hasil dari stop hook. Periksa nilai ini atau proses transkrip untuk menghindari memblokir pada kondisi yang tidak akan pernah terselesaikan. Claude Code menimpa hook dan mengakhiri giliran setelah 8 blok berturut-turut.


2288```2315```

2289 2316 

2290<h4 id="stop-decision-control">2317<h4 id="stop-decision-control">

2291 Kontrol keputusan Stop2318 Stop decision control

2292</h4>2319</h4>

2293 2320 

2294Hooks `Stop` dan `SubagentStop` dapat mengontrol apakah Claude melanjutkan. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:2321Hooks `Stop` dan `SubagentStop` dapat mengontrol apakah Claude melanjutkan. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:

2295 2322 

2296| Bidang | Deskripsi |2323| Bidang | Deskripsi |

2297| :--------- | :-------------------------------------------------------------------------------------------- |2324| :------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2298| `decision` | `"block"` mencegah Claude berhenti. Hilangkan untuk mengizinkan Claude berhenti |2325| `decision` | `"block"` mencegah Claude berhenti. Hilangkan untuk mengizinkan Claude berhenti |

2299| `reason` | Diperlukan saat `decision` adalah `"block"`. Memberitahu Claude mengapa itu harus melanjutkan |2326| `reason` | Diperlukan saat `decision` adalah `"block"`. Memberitahu Claude mengapa itu harus melanjutkan |

2327| `hookSpecificOutput.additionalContext` | Umpan balik non-error untuk Claude. Percakapan berlanjut sehingga Claude dapat bertindak atas itu, tetapi tidak seperti `decision: "block"` itu ditampilkan dalam transkrip sebagai umpan balik hook daripada kesalahan hook |

2300 2328 

2301```json theme={null}2329```json theme={null}

2302{2330{


2305}2333}

2306```2334```

2307 2335 

2336Gunakan `additionalContext` ketika hook bekerja seperti yang dirancang dan memberikan panduan Claude, seperti "jalankan test suite sebelum selesai". Ini membuat percakapan terus berlanjut melalui proteksi loop yang sama seperti `decision: "block"`, yaitu input `stop_hook_active` dan batas 8-kontinuasi berturut-turut, tetapi transkrip memberi label `Stop hook feedback` dan tidak ada notifikasi kesalahan hook yang ditampilkan:

2337 

2338```json theme={null}

2339{

2340 "hookSpecificOutput": {

2341 "hookEventName": "Stop",

2342 "additionalContext": "Please run the test suite before finishing"

2343 }

2344}

2345```

2346 

2308<h3 id="stopfailure">2347<h3 id="stopfailure">

2309 StopFailure2348 StopFailure

2310</h3>2349</h3>


2312Dijalankan alih-alih [Stop](#stop) ketika giliran berakhir karena kesalahan API. Output dan kode keluar diabaikan. Gunakan ini untuk mencatat kegagalan, mengirim alert, atau mengambil tindakan pemulihan ketika Claude tidak dapat menyelesaikan respons karena rate limits, masalah autentikasi, atau kesalahan API lainnya.2351Dijalankan alih-alih [Stop](#stop) ketika giliran berakhir karena kesalahan API. Output dan kode keluar diabaikan. Gunakan ini untuk mencatat kegagalan, mengirim alert, atau mengambil tindakan pemulihan ketika Claude tidak dapat menyelesaikan respons karena rate limits, masalah autentikasi, atau kesalahan API lainnya.

2313 2352 

2314<h4 id="stopfailure-input">2353<h4 id="stopfailure-input">

2315 Input StopFailure2354 StopFailure input

2316</h4>2355</h4>

2317 2356 

2318Selain [bidang input umum](#common-input-fields), StopFailure hooks menerima `error`, `error_details` opsional, dan `last_assistant_message` opsional. Bidang `error` mengidentifikasi tipe kesalahan dan digunakan untuk pemfilteran matcher.2357Selain [bidang input umum](#common-input-fields), StopFailure hooks menerima `error`, `error_details` opsional, dan `last_assistant_message` opsional. Bidang `error` mengidentifikasi tipe kesalahan dan digunakan untuk pemfilteran matcher.


2346Ketika hook `TeammateIdle` keluar dengan kode 2, teammate menerima pesan stderr sebagai umpan balik dan terus bekerja alih-alih menjadi idle. Untuk menghentikan teammate sepenuhnya alih-alih menjalankannya kembali, kembalikan JSON dengan `{"continue": false, "stopReason": "..."}`. TeammateIdle hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.2385Ketika hook `TeammateIdle` keluar dengan kode 2, teammate menerima pesan stderr sebagai umpan balik dan terus bekerja alih-alih menjadi idle. Untuk menghentikan teammate sepenuhnya alih-alih menjalankannya kembali, kembalikan JSON dengan `{"continue": false, "stopReason": "..."}`. TeammateIdle hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.

2347 2386 

2348<h4 id="teammateidle-input">2387<h4 id="teammateidle-input">

2349 Input TeammateIdle2388 TeammateIdle input

2350</h4>2389</h4>

2351 2390 

2352Selain [bidang input umum](#common-input-fields), TeammateIdle hooks menerima `teammate_name` dan `team_name`.2391Selain [bidang input umum](#common-input-fields), TeammateIdle hooks menerima `teammate_name` dan `team_name`.


2359 "permission_mode": "default",2398 "permission_mode": "default",

2360 "hook_event_name": "TeammateIdle",2399 "hook_event_name": "TeammateIdle",

2361 "teammate_name": "researcher",2400 "teammate_name": "researcher",

2362 "team_name": "my-project"2401 "team_name": "session-a1b2c3d4"

2363}2402}

2364```2403```

2365 2404 

2366| Bidang | Deskripsi |2405| Bidang | Deskripsi |

2367| :-------------- | :----------------------------------- |2406| :-------------- | :---------------------------------------------------------------------- |

2368| `teammate_name` | Nama teammate yang akan menjadi idle |2407| `teammate_name` | Nama teammate yang akan menjadi idle |

2369| `team_name` | Nama team |2408| `team_name` | Nama team yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2370 2409 

2371<h4 id="teammateidle-decision-control">2410<h4 id="teammateidle-decision-control">

2372 Kontrol keputusan TeammateIdle2411 TeammateIdle decision control

2373</h4>2412</h4>

2374 2413 

2375TeammateIdle hooks mendukung dua cara untuk mengontrol perilaku teammate:2414TeammateIdle hooks mendukung dua cara untuk mengontrol perilaku teammate:


2429```2468```

2430 2469 

2431<h4 id="configchange-input">2470<h4 id="configchange-input">

2432 Input ConfigChange2471 ConfigChange input

2433</h4>2472</h4>

2434 2473 

2435Selain [bidang input umum](#common-input-fields), ConfigChange hooks menerima `source` dan secara opsional `file_path`. Bidang `source` menunjukkan tipe konfigurasi mana yang berubah, dan `file_path` menyediakan path ke file spesifik yang dimodifikasi.2474Selain [bidang input umum](#common-input-fields), ConfigChange hooks menerima `source` dan secara opsional `file_path`. Bidang `source` menunjukkan tipe konfigurasi mana yang berubah, dan `file_path` menyediakan path ke file spesifik yang dimodifikasi.


2446```2485```

2447 2486 

2448<h4 id="configchange-decision-control">2487<h4 id="configchange-decision-control">

2449 Kontrol keputusan ConfigChange2488 ConfigChange decision control

2450</h4>2489</h4>

2451 2490 

2452ConfigChange hooks dapat memblokir perubahan konfigurasi dari berlaku. Gunakan kode keluar 2 atau JSON `decision` untuk mencegah perubahan. Ketika diblokir, pengaturan baru tidak diterapkan ke sesi yang berjalan.2491ConfigChange hooks dapat memblokir perubahan konfigurasi dari berlaku. Gunakan kode keluar 2 atau JSON `decision` untuk mencegah perubahan. Ketika diblokir, pengaturan baru tidak diterapkan ke sesi yang berjalan.


2476CwdChanged tidak mendukung matchers dan dijalankan pada setiap perubahan direktori.2515CwdChanged tidak mendukung matchers dan dijalankan pada setiap perubahan direktori.

2477 2516 

2478<h4 id="cwdchanged-input">2517<h4 id="cwdchanged-input">

2479 Input CwdChanged2518 CwdChanged input

2480</h4>2519</h4>

2481 2520 

2482Selain [bidang input umum](#common-input-fields), CwdChanged hooks menerima `old_cwd` dan `new_cwd`.2521Selain [bidang input umum](#common-input-fields), CwdChanged hooks menerima `old_cwd` dan `new_cwd`.


2493```2532```

2494 2533 

2495<h4 id="cwdchanged-output">2534<h4 id="cwdchanged-output">

2496 Output CwdChanged2535 CwdChanged output

2497</h4>2536</h4>

2498 2537 

2499Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, CwdChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis menetapkan path file mana yang [FileChanged](#filechanged) pantau:2538Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, CwdChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis menetapkan path file mana yang [FileChanged](#filechanged) pantau:


2518FileChanged hooks memiliki akses ke `CLAUDE_ENV_FILE`. Variabel yang ditulis ke file itu bertahan ke perintah Bash berikutnya untuk sesi, sama seperti dalam [SessionStart hooks](#persist-environment-variables).2557FileChanged hooks memiliki akses ke `CLAUDE_ENV_FILE`. Variabel yang ditulis ke file itu bertahan ke perintah Bash berikutnya untuk sesi, sama seperti dalam [SessionStart hooks](#persist-environment-variables).

2519 2558 

2520<h4 id="filechanged-input">2559<h4 id="filechanged-input">

2521 Input FileChanged2560 FileChanged input

2522</h4>2561</h4>

2523 2562 

2524Selain [bidang input umum](#common-input-fields), FileChanged hooks menerima `file_path` dan `event`.2563Selain [bidang input umum](#common-input-fields), FileChanged hooks menerima `file_path` dan `event`.


2540```2579```

2541 2580 

2542<h4 id="filechanged-output">2581<h4 id="filechanged-output">

2543 Output FileChanged2582 FileChanged output

2544</h4>2583</h4>

2545 2584 

2546Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, FileChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis memperbarui path file mana yang dipantau:2585Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, FileChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis memperbarui path file mana yang dipantau:


2583Hook membaca `name` worktree dari input JSON di stdin, melakukan checkout salinan segar ke direktori baru, dan mencetak path direktori. `echo` pada baris terakhir adalah apa yang Claude Code baca sebagai path worktree. Alihkan output lainnya ke stderr sehingga tidak mengganggu path.2622Hook membaca `name` worktree dari input JSON di stdin, melakukan checkout salinan segar ke direktori baru, dan mencetak path direktori. `echo` pada baris terakhir adalah apa yang Claude Code baca sebagai path worktree. Alihkan output lainnya ke stderr sehingga tidak mengganggu path.

2584 2623 

2585<h4 id="worktreecreate-input">2624<h4 id="worktreecreate-input">

2586 Input WorktreeCreate2625 WorktreeCreate input

2587</h4>2626</h4>

2588 2627 

2589Selain [bidang input umum](#common-input-fields), WorktreeCreate hooks menerima bidang `name`. Ini adalah pengenal slug untuk worktree baru, baik ditentukan oleh pengguna atau auto-generated (misalnya, `bold-oak-a3f2`).2628Selain [bidang input umum](#common-input-fields), WorktreeCreate hooks menerima bidang `name`. Ini adalah pengenal slug untuk worktree baru, baik ditentukan oleh pengguna atau auto-generated (misalnya, `bold-oak-a3f2`).


2599```2638```

2600 2639 

2601<h4 id="worktreecreate-output">2640<h4 id="worktreecreate-output">

2602 Output WorktreeCreate2641 WorktreeCreate output

2603</h4>2642</h4>

2604 2643 

2605WorktreeCreate hooks tidak menggunakan model keputusan allow/block standar. Sebaliknya, kesuksesan atau kegagalan hook menentukan hasil. Hook harus mengembalikan path absolut ke direktori worktree yang dibuat:2644WorktreeCreate hooks tidak menggunakan model keputusan allow/block standar. Sebaliknya, kesuksesan atau kegagalan hook menentukan hasil. Hook harus mengembalikan path absolut ke direktori worktree yang dibuat:


2635```2674```

2636 2675 

2637<h4 id="worktreeremove-input">2676<h4 id="worktreeremove-input">

2638 Input WorktreeRemove2677 WorktreeRemove input

2639</h4>2678</h4>

2640 2679 

2641Selain [bidang input umum](#common-input-fields), WorktreeRemove hooks menerima bidang `worktree_path`, yang merupakan path absolut ke worktree yang sedang dihapus.2680Selain [bidang input umum](#common-input-fields), WorktreeRemove hooks menerima bidang `worktree_path`, yang merupakan path absolut ke worktree yang sedang dihapus.


2670Memblokir automatic compaction memiliki efek berbeda tergantung pada kapan dijalankan. Jika compaction dipicu secara proaktif sebelum batas konteks, Claude Code melewatinya dan percakapan berlanjut tanpa compaction. Jika compaction dipicu untuk pulih dari kesalahan batas konteks yang sudah dikembalikan oleh API, kesalahan yang mendasar muncul dan permintaan saat ini gagal.2709Memblokir automatic compaction memiliki efek berbeda tergantung pada kapan dijalankan. Jika compaction dipicu secara proaktif sebelum batas konteks, Claude Code melewatinya dan percakapan berlanjut tanpa compaction. Jika compaction dipicu untuk pulih dari kesalahan batas konteks yang sudah dikembalikan oleh API, kesalahan yang mendasar muncul dan permintaan saat ini gagal.

2671 2710 

2672<h4 id="precompact-input">2711<h4 id="precompact-input">

2673 Input PreCompact2712 PreCompact input

2674</h4>2713</h4>

2675 2714 

2676Selain [bidang input umum](#common-input-fields), PreCompact hooks menerima `trigger` dan `custom_instructions`. Untuk `manual`, `custom_instructions` berisi apa yang diteruskan pengguna ke `/compact`. Untuk `auto`, `custom_instructions` kosong.2715Selain [bidang input umum](#common-input-fields), PreCompact hooks menerima `trigger` dan `custom_instructions`. Untuk `manual`, `custom_instructions` berisi apa yang diteruskan pengguna ke `/compact`. Untuk `auto`, `custom_instructions` kosong.


2700| `auto` | Setelah auto-compact ketika context window penuh |2739| `auto` | Setelah auto-compact ketika context window penuh |

2701 2740 

2702<h4 id="postcompact-input">2741<h4 id="postcompact-input">

2703 Input PostCompact2742 PostCompact input

2704</h4>2743</h4>

2705 2744 

2706Selain [bidang input umum](#common-input-fields), PostCompact hooks menerima `trigger` dan `compact_summary`. Bidang `compact_summary` berisi ringkasan percakapan yang dihasilkan oleh operasi compact.2745Selain [bidang input umum](#common-input-fields), PostCompact hooks menerima `trigger` dan `compact_summary`. Bidang `compact_summary` berisi ringkasan percakapan yang dihasilkan oleh operasi compact.


2736| `other` | Alasan keluar lainnya |2775| `other` | Alasan keluar lainnya |

2737 2776 

2738<h4 id="sessionend-input">2777<h4 id="sessionend-input">

2739 Input SessionEnd2778 SessionEnd input

2740</h4>2779</h4>

2741 2780 

2742Selain [bidang input umum](#common-input-fields), SessionEnd hooks menerima bidang `reason` menunjukkan mengapa sesi berakhir. Lihat [tabel reason](#sessionend) di atas untuk semua nilai.2781Selain [bidang input umum](#common-input-fields), SessionEnd hooks menerima bidang `reason` menunjukkan mengapa sesi berakhir. Lihat tabel reason di atas untuk semua nilai.

2743 2782 

2744```json theme={null}2783```json theme={null}

2745{2784{


2768Bidang matcher mencocokkan nama server MCP.2807Bidang matcher mencocokkan nama server MCP.

2769 2808 

2770<h4 id="elicitation-input">2809<h4 id="elicitation-input">

2771 Input Elicitation2810 Elicitation input

2772</h4>2811</h4>

2773 2812 

2774Selain [bidang input umum](#common-input-fields), Elicitation hooks menerima `mcp_server_name`, `message`, dan bidang opsional `mode`, `url`, `elicitation_id`, dan `requested_schema`.2813Selain [bidang input umum](#common-input-fields), Elicitation hooks menerima `mcp_server_name`, `message`, dan bidang opsional `mode`, `url`, `elicitation_id`, dan `requested_schema`.


2811```2850```

2812 2851 

2813<h4 id="elicitation-output">2852<h4 id="elicitation-output">

2814 Output Elicitation2853 Elicitation output

2815</h4>2854</h4>

2816 2855 

2817Untuk merespons secara programatis tanpa menampilkan dialog, kembalikan objek JSON dengan `hookSpecificOutput`:2856Untuk merespons secara programatis tanpa menampilkan dialog, kembalikan objek JSON dengan `hookSpecificOutput`:


2844Bidang matcher mencocokkan nama server MCP.2883Bidang matcher mencocokkan nama server MCP.

2845 2884 

2846<h4 id="elicitationresult-input">2885<h4 id="elicitationresult-input">

2847 Input ElicitationResult2886 ElicitationResult input

2848</h4>2887</h4>

2849 2888 

2850Selain [bidang input umum](#common-input-fields), ElicitationResult hooks menerima `mcp_server_name`, `action`, dan bidang opsional `mode`, `elicitation_id`, dan `content`.2889Selain [bidang input umum](#common-input-fields), ElicitationResult hooks menerima `mcp_server_name`, `action`, dan bidang opsional `mode`, `elicitation_id`, dan `content`.


2865```2904```

2866 2905 

2867<h4 id="elicitationresult-output">2906<h4 id="elicitationresult-output">

2868 Output ElicitationResult2907 ElicitationResult output

2869</h4>2908</h4>

2870 2909 

2871Untuk menimpa respons pengguna, kembalikan objek JSON dengan `hookSpecificOutput`:2910Untuk menimpa respons pengguna, kembalikan objek JSON dengan `hookSpecificOutput`:

hooks-guide.md +18 −6

Details

506 506 

507Ketika beberapa hooks cocok dengan acara yang sama, setiap perintah hook berjalan hingga selesai sebelum Claude Code menggabungkan hasilnya. Satu hook yang mengembalikan `deny` tidak menghentikan hook sibling dari eksekusi. Jangan andalkan `deny` dari satu hook untuk menekan efek samping di hook lain.507Ketika beberapa hooks cocok dengan acara yang sama, setiap perintah hook berjalan hingga selesai sebelum Claude Code menggabungkan hasilnya. Satu hook yang mengembalikan `deny` tidak menghentikan hook sibling dari eksekusi. Jangan andalkan `deny` dari satu hook untuk menekan efek samping di hook lain.

508 508 

509Setelah semua hooks yang cocok selesai, Claude Code menggabungkan output mereka. Untuk keputusan izin `PreToolUse`, jawaban yang paling ketat menang: `deny` mengesampingkan `ask`, yang mengesampingkan `allow`. Teks dari `additionalContext` disimpan dari setiap hook dan diteruskan ke Claude bersama-sama.509Setelah semua hooks yang cocok selesai, Claude Code menggabungkan output mereka. Untuk keputusan izin `PreToolUse`, jawaban yang paling ketat menang, dalam urutan `deny`, `defer`, `ask`, `allow`. Teks dari `additionalContext` disimpan dari setiap hook dan diteruskan ke Claude bersama-sama.

510 510 

511Contoh di bawah mendaftarkan dua hooks `PreToolUse` pada `Bash`. Yang pertama menambahkan setiap perintah ke file log dan keluar 0. Yang kedua menjalankan skrip yang keluar 2 untuk menolak ketika perintah berisi `rm -rf`:511Contoh di bawah mendaftarkan dua hooks `PreToolUse` pada `Bash`. Yang pertama menambahkan setiap perintah ke file log dan keluar 0. Yang kedua menjalankan skrip yang keluar 2 untuk menolak ketika perintah berisi `rm -rf`:

512 512 


751 Bidang `if` memerlukan Claude Code v2.1.85 atau lebih baru. Versi sebelumnya mengabaikannya dan menjalankan hook pada setiap panggilan yang cocok.751 Bidang `if` memerlukan Claude Code v2.1.85 atau lebih baru. Versi sebelumnya mengabaikannya dan menjalankan hook pada setiap panggilan yang cocok.

752</Note>752</Note>

753 753 

754Bidang `if` menggunakan [sintaks aturan izin](/id/permissions) untuk memfilter hooks berdasarkan nama alat dan argumen bersama-sama, sehingga proses hook hanya muncul ketika panggilan alat cocok, atau ketika perintah Bash terlalu kompleks untuk diurai. Ini melampaui `matcher`, yang memfilter pada tingkat grup berdasarkan nama alat saja.754Bidang `if` menggunakan [sintaks aturan izin](/id/permissions) untuk memfilter hooks berdasarkan nama alat dan argumen bersama-sama, sehingga proses hook hanya muncul ketika panggilan alat cocok. Ini melampaui `matcher`, yang memfilter pada tingkat grup berdasarkan nama alat saja.

755 755 

756Misalnya, untuk menjalankan hook hanya ketika Claude menggunakan perintah `git` daripada semua perintah Bash:756Misalnya, untuk menjalankan hook hanya ketika Claude menggunakan perintah `git` daripada semua perintah Bash:

757 757 


774}774}

775```775```

776 776 

777Proses hook hanya muncul ketika subperintah dari perintah Bash cocok dengan `git *`, atau ketika perintah terlalu kompleks untuk diurai menjadi subperintah. Untuk perintah gabungan seperti `npm test && git push`, Claude Code mengevaluasi setiap subperintah dan menjalankan hook karena `git push` cocok. Bidang `if` menerima pola yang sama seperti aturan izin: `"Bash(git *)"`, `"Edit(*.ts)"`, dan seterusnya. Untuk mencocokkan beberapa nama alat, gunakan handler terpisah masing-masing dengan nilai `if` sendiri, atau cocokkan pada tingkat `matcher` di mana alternasi pipa didukung.777Apakah proses hook Anda berjalan tergantung pada bentuk pola `if` Anda dan perintah Bash yang Claude panggil:

778 

779| Pola `if` | Perintah Bash | Hook berjalan? | Mengapa |

780| :----------------- | :--------------------- | :------------- | :------------------------------------------------------------------------------------------------------------- |

781| `Bash(git *)` | `git push` | ya | nama perintah cocok |

782| `Bash(git *)` | `npm test && git push` | ya | setiap subperintah diperiksa; `git push` cocok |

783| `Bash(git *)` | `echo $(git log)` | ya | perintah di dalam `$()` dan backticks diperiksa; `git log` cocok |

784| `Bash(git *)` | `echo $(date)` | tidak | tidak ada subperintah yang cocok dengan `git *` |

785| `Bash(git push *)` | `echo $(date)` | ya | pola yang menentukan lebih dari nama perintah menjalankan hook bagaimanapun pada `$()`, backticks, atau `$VAR` |

786 

787Filter juga gagal terbuka, menjalankan hook Anda terlepas dari pola, ketika perintah Bash tidak dapat diurai. Karena filter adalah best-effort, gunakan [sistem izin](/id/permissions) daripada hook untuk memberlakukan allow atau deny yang keras.

788 

789Bidang `if` menerima pola yang sama seperti aturan izin: `"Bash(git *)"`, `"Edit(*.ts)"`, dan seterusnya. Untuk mencocokkan beberapa nama alat, gunakan handler terpisah masing-masing dengan nilai `if` sendiri, atau cocokkan pada tingkat `matcher` di mana alternasi pipa didukung.

778 790 

779`if` hanya bekerja pada acara alat: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, dan `PermissionDenied`. Menambahkannya ke acara lain mencegah hook dari berjalan.791`if` hanya bekerja pada acara alat: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, dan `PermissionDenied`. Menambahkannya ke acara lain mencegah hook dari berjalan.

780 792 


785Di mana Anda menambahkan hook menentukan cakupannya:797Di mana Anda menambahkan hook menentukan cakupannya:

786 798 

787| Lokasi | Cakupan | Dapat Dibagikan |799| Lokasi | Cakupan | Dapat Dibagikan |

788| :----------------------------------------------------------- | :-------------------------- | :------------------------------------ |800| :----------------------------------------------------------- | :-------------------------- | :---------------------------------------------- |

789| `~/.claude/settings.json` | Semua proyek Anda | Tidak, lokal ke mesin Anda |801| `~/.claude/settings.json` | Semua proyek Anda | Tidak, lokal ke mesin Anda |

790| `.claude/settings.json` | Proyek tunggal | Ya, dapat dikomit ke repo |802| `.claude/settings.json` | Proyek tunggal | Ya, dapat dikomit ke repo |

791| `.claude/settings.local.json` | Proyek tunggal | Tidak, gitignored |803| `.claude/settings.local.json` | Proyek tunggal | Tidak, gitignored ketika Claude Code membuatnya |

792| Pengaturan kebijakan terkelola | Seluruh organisasi | Ya, dikendalikan admin |804| Pengaturan kebijakan terkelola | Seluruh organisasi | Ya, dikendalikan admin |

793| [Plugin](/id/plugins) `hooks/hooks.json` | Ketika plugin diaktifkan | Ya, dikemas dengan plugin |805| [Plugin](/id/plugins) `hooks/hooks.json` | Ketika plugin diaktifkan | Ya, dikemas dengan plugin |

794| [Skill](/id/skills) atau [agent](/id/sub-agents) frontmatter | Saat skill atau agent aktif | Ya, didefinisikan dalam file komponen |806| [Skill](/id/skills) atau [agent](/id/sub-agents) frontmatter | Saat skill atau agent aktif | Ya, didefinisikan dalam file komponen |

795 807 

796Jalankan [`/hooks`](/id/hooks#the-hooks-menu) di Claude Code untuk menjelajahi semua hooks yang dikonfigurasi dikelompokkan berdasarkan acara. Untuk menonaktifkan hooks, atur `"disableAllHooks": true` dalam file pengaturan Anda. Hooks yang dikonfigurasi dalam pengaturan terkelola masih berjalan kecuali `disableAllHooks` juga diatur di sana.808Jalankan [`/hooks`](/id/hooks#the-%2Fhooks-menu) di Claude Code untuk menjelajahi semua hooks yang dikonfigurasi dikelompokkan berdasarkan acara. Untuk menonaktifkan hooks, atur `"disableAllHooks": true` dalam file pengaturan Anda. Hooks yang dikonfigurasi dalam pengaturan terkelola masih berjalan kecuali `disableAllHooks` juga diatur di sana.

797 809 

798Jika Anda mengedit file pengaturan secara langsung saat Claude Code berjalan, file watcher biasanya mengambil perubahan hook secara otomatis.810Jika Anda mengedit file pengaturan secara langsung saat Claude Code berjalan, file watcher biasanya mengambil perubahan hook secara otomatis.

799 811 

Details

16 16 

17Ketika Anda memberikan tugas kepada Claude, Claude bekerja melalui tiga fase: **mengumpulkan konteks**, **mengambil tindakan**, dan **memverifikasi hasil**. Fase-fase ini berpadu bersama. Claude menggunakan tools di seluruh proses, baik mencari file untuk memahami kode Anda, mengedit untuk membuat perubahan, atau menjalankan test untuk memeriksa pekerjaannya.17Ketika Anda memberikan tugas kepada Claude, Claude bekerja melalui tiga fase: **mengumpulkan konteks**, **mengambil tindakan**, dan **memverifikasi hasil**. Fase-fase ini berpadu bersama. Claude menggunakan tools di seluruh proses, baik mencari file untuk memahami kode Anda, mengedit untuk membuat perubahan, atau menjalankan test untuk memeriksa pekerjaannya.

18 18 

19<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agentic-loop.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=4a30fb7ce2815012a9f27c955e2c6bb0" alt="Loop agentic: Prompt Anda mengarah ke Claude mengumpulkan konteks, mengambil tindakan, memverifikasi hasil, dan mengulangi sampai tugas selesai. Anda dapat mengganggu kapan saja." width="720" height="280" data-path="images/agentic-loop.svg" />19<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agentic-loop.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=4a30fb7ce2815012a9f27c955e2c6bb0" alt="Diagram loop agentic: Prompt Anda mengarah ke Claude mengumpulkan konteks, mengambil tindakan, memverifikasi hasil, dan mengulangi sampai tugas selesai. Anda dapat mengganggu kapan saja." width="720" height="280" data-path="images/agentic-loop.svg" />

20 20 

21Loop beradaptasi dengan apa yang Anda minta. Pertanyaan tentang codebase Anda mungkin hanya memerlukan pengumpulan konteks. Perbaikan bug melakukan siklus melalui ketiga fase berulang kali. Refactor mungkin melibatkan verifikasi ekstensif. Claude memutuskan apa yang setiap langkah perlukan berdasarkan apa yang dipelajarinya dari langkah sebelumnya, menghubungkan puluhan tindakan bersama-sama dan melakukan koreksi jalur di sepanjang jalan.21Loop beradaptasi dengan apa yang Anda minta. Pertanyaan tentang codebase Anda mungkin hanya memerlukan pengumpulan konteks. Perbaikan bug melakukan siklus melalui ketiga fase berulang kali. Refactor mungkin melibatkan verifikasi ekstensif. Claude memutuskan apa yang setiap langkah perlukan berdasarkan apa yang dipelajarinya dari langkah sebelumnya, menghubungkan puluhan tindakan bersama-sama dan melakukan koreksi jalur di sepanjang jalan.

22 22 


130 130 

131Melanjutkan session dengan `claude --continue` atau `claude --resume` membuka kembali session di bawah session ID yang sama dan menambahkan pesan baru ke percakapan yang ada. Forking dengan `--fork-session` atau `/branch` menyalin riwayat ke session ID baru, meninggalkan yang asli tidak berubah.131Melanjutkan session dengan `claude --continue` atau `claude --resume` membuka kembali session di bawah session ID yang sama dan menambahkan pesan baru ke percakapan yang ada. Forking dengan `--fork-session` atau `/branch` menyalin riwayat ke session ID baru, meninggalkan yang asli tidak berubah.

132 132 

133<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/session-continuity.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=04ed0984a58e4127e05b3640265241a3" alt="Kontinuitas session: resume melanjutkan session yang sama, fork membuat branch baru dengan ID baru." width="560" height="280" data-path="images/session-continuity.svg" />133<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/session-continuity.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=04ed0984a58e4127e05b3640265241a3" alt="Diagram kontinuitas session: resume melanjutkan session yang sama, fork membuat branch baru dengan ID baru." width="560" height="280" data-path="images/session-continuity.svg" />

134 134 

135Untuk flag resume, picker `/resume`, naming, dan apa yang terjadi ketika session yang sama terbuka di dua terminal, lihat [Manage sessions](/id/sessions).135Untuk flag resume, picker `/resume`, naming, dan apa yang terjadi ketika session yang sama terbuka di dua terminal, lihat [Manage sessions](/id/sessions).

136 136 


188 188 

189* **Default**: Claude bertanya sebelum edit file dan perintah shell189* **Default**: Claude bertanya sebelum edit file dan perintah shell

190* **Auto-accept edits**: Claude mengedit file dan menjalankan perintah filesystem umum seperti `mkdir` dan `mv` tanpa bertanya, masih bertanya untuk perintah lain190* **Auto-accept edits**: Claude mengedit file dan menjalankan perintah filesystem umum seperti `mkdir` dan `mv` tanpa bertanya, masih bertanya untuk perintah lain

191* **Plan mode**: Claude hanya menggunakan tools read-only, membuat rencana yang dapat Anda setujui sebelum eksekusi191* **Plan Mode**: Claude mengeksplorasi dan mengusulkan rencana tanpa mengedit file sumber Anda; prompt permission masih berlaku seperti dalam mode default

192* **Auto mode**: Claude mengevaluasi semua tindakan dengan pemeriksaan keamanan latar belakang. Saat ini preview penelitian192* **Auto mode**: Claude mengevaluasi semua tindakan dengan pemeriksaan keamanan latar belakang. Saat ini preview penelitian

193 193 

194Anda juga dapat mengizinkan perintah spesifik di `.claude/settings.json` sehingga Claude tidak bertanya setiap kali. Ini berguna untuk perintah terpercaya seperti `npm test` atau `git status`. Settings dapat dibatasi dari kebijakan organisasi-luas hingga preferensi pribadi. Lihat [Permissions](/id/permissions) untuk detail.194Anda juga dapat mengizinkan perintah spesifik di `.claude/settings.json` sehingga Claude tidak bertanya setiap kali. Ini berguna untuk perintah terpercaya seperti `npm test` atau `git status`. Settings dapat dibatasi dari kebijakan organisasi-luas hingga preferensi pribadi. Lihat [Permissions](/id/permissions) untuk detail.


213* `/agents` membantu Anda mengonfigurasi subagents kustom213* `/agents` membantu Anda mengonfigurasi subagents kustom

214* `/doctor` mendiagnosis masalah umum dengan instalasi Anda214* `/doctor` mendiagnosis masalah umum dengan instalasi Anda

215 215 

216<h3 id="it-s-a-conversation">216<h3 id="its-a-conversation">

217 Ini adalah percakapan217 Ini adalah percakapan

218</h3>218</h3>

219 219 


282 282 

283Tinjau rencana, perbaiki melalui percakapan, kemudian biarkan Claude mengimplementasikan. Pendekatan dua fase ini menghasilkan hasil yang lebih baik daripada langsung melompat ke kode.283Tinjau rencana, perbaiki melalui percakapan, kemudian biarkan Claude mengimplementasikan. Pendekatan dua fase ini menghasilkan hasil yang lebih baik daripada langsung melompat ke kode.

284 284 

285<h3 id="delegate-don-t-dictate">285<h3 id="delegate-dont-dictate">

286 Delegasikan, jangan mendikte286 Delegasikan, jangan mendikte

287</h3>287</h3>

288 288 


295 295 

296Anda tidak perlu menentukan file mana yang harus dibaca atau perintah mana yang harus dijalankan. Claude mengetahui itu.296Anda tidak perlu menentukan file mana yang harus dibaca atau perintah mana yang harus dijalankan. Claude mengetahui itu.

297 297 

298<h2 id="what-s-next">298<h2 id="whats-next">

299 Apa selanjutnya299 Apa selanjutnya

300</h2>300</h2>

301 301 


304 Tambahkan Skills, koneksi MCP, dan perintah kustom304 Tambahkan Skills, koneksi MCP, dan perintah kustom

305 </Card>305 </Card>

306 306 

307 <Card title="Common workflows" icon="graduation-cap" href="/id/common-workflows">307 <Card title="Alur kerja umum" icon="graduation-cap" href="/id/common-workflows">

308 Panduan langkah demi langkah untuk tugas khas308 Panduan langkah demi langkah untuk tugas khas

309 </Card>309 </Card>

310</CardGroup>310</CardGroup>

Details

27</h3>27</h3>

28 28 

29| Pintasan | Deskripsi | Konteks |29| Pintasan | Deskripsi | Konteks |

30| :------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |30| :------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

31| `Ctrl+C` | Interupsi, atau hapus input | Mengganggu operasi yang sedang berjalan. Jika tidak ada yang berjalan, tekan pertama kali menghapus input prompt dan tekan kedua kali keluar dari Claude Code |31| `Ctrl+C` | Interupsi, atau hapus input | Mengganggu operasi yang sedang berjalan. Jika tidak ada yang berjalan, tekan pertama kali menghapus input prompt dan tekan kedua kali keluar dari Claude Code |

32| `Ctrl+X Ctrl+K` | Matikan semua [subagen latar belakang](/id/sub-agents#run-subagents-in-foreground-or-background) yang berjalan dalam sesi ini. Tekan dua kali dalam 3 detik untuk mengonfirmasi | Kontrol subagen |32| `Ctrl+X Ctrl+K` | Matikan semua [subagen latar belakang](/id/sub-agents#run-subagents-in-foreground-or-background) yang berjalan dalam sesi ini. Tekan dua kali dalam 3 detik untuk mengonfirmasi | Kontrol subagen |

33| `Ctrl+D` | Keluar dari sesi Claude Code | Sinyal EOF |33| `Ctrl+D` | Keluar dari sesi Claude Code | Sinyal EOF |


39| `Ctrl+B` | Tugas yang berjalan di latar belakang | Menjalankan perintah bash dan agen di latar belakang. Pengguna Tmux tekan dua kali |39| `Ctrl+B` | Tugas yang berjalan di latar belakang | Menjalankan perintah bash dan agen di latar belakang. Pengguna Tmux tekan dua kali |

40| `Ctrl+T` | Alihkan daftar tugas | Tampilkan atau sembunyikan [daftar tugas](#task-list) di area status terminal |40| `Ctrl+T` | Alihkan daftar tugas | Tampilkan atau sembunyikan [daftar tugas](#task-list) di area status terminal |

41| `Left/Right arrows` | Siklus melalui tab dialog | Navigasi antar tab dalam dialog izin dan menu |41| `Left/Right arrows` | Siklus melalui tab dialog | Navigasi antar tab dalam dialog izin dan menu |

42| `Up/Down arrows` atau `Ctrl+P`/`Ctrl+N` | Pindahkan kursor atau navigasi riwayat perintah | Dalam input multiline, pertama-tama memindahkan kursor dalam prompt. Setelah kursor sudah berada di tepi atas atau bawah, menekan lagi menavigasi riwayat perintah |42| `Up/Down arrows` atau `Ctrl+P`/`Ctrl+N` | Pindahkan kursor atau navigasi riwayat perintah | Ketika input mencakup lebih dari satu baris visual, baik dibungkus atau multiline, pertama-tama memindahkan kursor dalam prompt. Setelah kursor berada di baris visual pertama atau terakhir, menekan lagi menavigasi riwayat perintah. Mulai dari v2.1.169, input single-line yang dibungkus berperilaku sama dengan multiline |

43| `Esc` | Interupsi Claude | Hentikan respons atau panggilan alat saat ini di tengah-tengah giliran sehingga Anda dapat mengalihkan. Claude menyimpan pekerjaan yang telah dilakukan sejauh ini |43| `Esc` | Interupsi Claude | Hentikan respons atau panggilan alat saat ini di tengah-tengah giliran sehingga Anda dapat mengalihkan. Claude menyimpan pekerjaan yang telah dilakukan sejauh ini |

44| `Esc` + `Esc` | Hapus draft input, atau putar ulang | Ketika input prompt berisi teks, tekan `Esc` dua kali menghapusnya dan menyimpan draft ke riwayat sehingga `Up` dapat mengingatnya. Ketika input kosong, tekan `Esc` dua kali membuka [menu putar ulang](/id/checkpointing) untuk memulihkan atau merangkum kode dan percakapan dari titik sebelumnya |44| `Esc` + `Esc` | Hapus draft input, atau putar ulang | Ketika input prompt berisi teks, tekan `Esc` dua kali menghapusnya dan menyimpan draft ke riwayat sehingga `Up` dapat mengingatnya. Ketika input kosong, tekan `Esc` dua kali membuka [menu putar ulang](/id/checkpointing) untuk memulihkan atau merangkum kode dan percakapan dari titik sebelumnya |

45| `Shift+Tab` atau `Alt+M` (beberapa konfigurasi) | Alihkan mode izin | Beralih antara `default`, `acceptEdits`, `plan`, dan mode apa pun yang telah Anda aktifkan, seperti `auto` atau `bypassPermissions`. Lihat [permission modes](/id/permission-modes). |45| `Shift+Tab` atau `Alt+M` (beberapa konfigurasi) | Alihkan mode izin | Beralih antara `default`, `acceptEdits`, `plan`, dan mode apa pun yang telah Anda aktifkan, seperti `auto` atau `bypassPermissions`. Lihat [permission modes](/id/permission-modes). |

46| `Option+P` (macOS) atau `Alt+P` (Windows/Linux) | Alihkan model | Alihkan model tanpa menghapus prompt Anda |46| `Option+P` (macOS) atau `Alt+P` (Windows/Linux) | Alihkan model | Alihkan model tanpa menghapus prompt Anda |

47| `Option+T` (macOS) atau `Alt+T` (Windows/Linux) | Alihkan extended thinking | Aktifkan atau nonaktifkan mode extended thinking. Mulai dari v2.1.132 pintasan ini berfungsi di macOS tanpa mengonfigurasi Option sebagai Meta |47| `Option+T` (macOS) atau `Alt+T` (Windows/Linux) | Alihkan extended thinking | Aktifkan atau nonaktifkan mode extended thinking. Tidak berpengaruh pada Fable 5, yang selalu menggunakan extended thinking. Mulai dari v2.1.132 pintasan ini berfungsi di macOS tanpa mengonfigurasi Option sebagai Meta |

48| `Option+O` (macOS) atau `Alt+O` (Windows/Linux) | Alihkan mode cepat | Aktifkan atau nonaktifkan [fast mode](/id/fast-mode) |48| `Option+O` (macOS) atau `Alt+O` (Windows/Linux) | Alihkan mode cepat | Aktifkan atau nonaktifkan [fast mode](/id/fast-mode) |

49 49 

50<h3 id="text-editing">50<h3 id="text-editing">


247 247 

248* Riwayat input disimpan per direktori kerja248* Riwayat input disimpan per direktori kerja

249* Riwayat input direset ketika Anda menjalankan `/clear` untuk memulai sesi baru. Percakapan sesi sebelumnya disimpan dan dapat dilanjutkan.249* Riwayat input direset ketika Anda menjalankan `/clear` untuk memulai sesi baru. Percakapan sesi sebelumnya disimpan dan dapat dilanjutkan.

250* Mengirimkan prompt yang sama dua kali berturut-turut mencatat satu entri riwayat, jadi menekan Atas melangkah ke prompt berbeda sebelumnya250* Mengirimkan prompt yang sama dua kali berturut-turut mencatat satu entri riwayat, jadi menekan Up melangkah ke prompt berbeda sebelumnya

251* Gunakan panah Atas/Bawah untuk menavigasi (lihat pintasan keyboard di atas)251* Gunakan panah Up/Down untuk menavigasi (lihat pintasan keyboard di atas)

252* **Catatan**: ekspansi riwayat (`!`) dinonaktifkan secara default252* **Catatan**: ekspansi riwayat (`!`) dinonaktifkan secara default

253 253 

254<h3 id="reverse-search-with-ctrl-r">254<h3 id="reverse-search-with-ctrl-r">


305* Proses yang berjalan lama (docker, terraform)305* Proses yang berjalan lama (docker, terraform)

306 306 

307<h3 id="shell-mode-with-prefix">307<h3 id="shell-mode-with-prefix">

308 Mode Bash dengan awalan `!`308 Mode shell dengan awalan `!`

309</h3>309</h3>

310 310 

311Jalankan perintah bash secara langsung tanpa melalui Claude dengan menambahkan awalan input Anda dengan `!`:311Jalankan perintah shell secara langsung tanpa melalui Claude dengan menambahkan awalan input Anda dengan `!`:

312 312 

313```bash theme={null}313```bash theme={null}

314! npm test314! npm test


316! ls -la316! ls -la

317```317```

318 318 

319Mode Bash:319Mode shell:

320 320 

321* Menambahkan perintah dan outputnya ke konteks percakapan321* Menambahkan perintah dan outputnya ke konteks percakapan

322* Menampilkan kemajuan dan output secara real-time322* Menampilkan kemajuan dan output secara real-time


324* Tidak memerlukan Claude untuk menginterpretasi atau menyetujui perintah324* Tidak memerlukan Claude untuk menginterpretasi atau menyetujui perintah

325* Mendukung pelengkapan otomatis berbasis riwayat: ketik perintah parsial dan tekan **Tab** untuk melengkapi dari perintah `!` sebelumnya dalam proyek saat ini325* Mendukung pelengkapan otomatis berbasis riwayat: ketik perintah parsial dan tekan **Tab** untuk melengkapi dari perintah `!` sebelumnya dalam proyek saat ini

326* Keluar dengan `Escape`, `Backspace`, atau `Ctrl+U` pada prompt kosong326* Keluar dengan `Escape`, `Backspace`, atau `Ctrl+U` pada prompt kosong

327* Menempel teks yang dimulai dengan `!` ke prompt kosong memasuki mode bash secara otomatis, sesuai dengan perilaku `!` yang diketik327* Menempel teks yang dimulai dengan `!` ke prompt kosong memasuki mode shell secara otomatis, sesuai dengan perilaku `!` yang diketik

328 328 

329Ini berguna untuk operasi shell cepat sambil mempertahankan konteks percakapan.329Ini berguna untuk operasi shell cepat sambil mempertahankan konteks percakapan.

330 330 


372| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |372| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

373| `Space`, `Enter`, `Escape` | Tutup jawaban dan kembali ke prompt |373| `Space`, `Enter`, `Escape` | Tutup jawaban dan kembali ke prompt |

374| `Up` / `Down` | Gulir jawaban |374| `Up` / `Down` | Gulir jawaban |

375| `c` | Salin jawaban ke papan klip Anda sebagai Markdown mentah. Gunakan ini alih-alih pemilihan mouse, yang menangkap rendering terminal yang dibungkus keras daripada teks sumber |

375| `f` | Pisahkan ke sesi baru. Pemisahan mewarisi percakapan induk ditambah pertanyaan dan jawaban ini sebagai giliran transkrip nyata, sehingga Anda dapat melanjutkan dengan akses alat penuh. Sesi asli disimpan di bawah [`/resume`](/id/commands). Tersedia hanya dalam sesi lokal |376| `f` | Pisahkan ke sesi baru. Pemisahan mewarisi percakapan induk ditambah pertanyaan dan jawaban ini sebagai giliran transkrip nyata, sehingga Anda dapat melanjutkan dengan akses alat penuh. Sesi asli disimpan di bawah [`/resume`](/id/commands). Tersedia hanya dalam sesi lokal |

376| `x` | Hapus daftar pertukaran `/btw` sebelumnya yang ditampilkan di atas jawaban saat ini |377| `x` | Hapus daftar pertukaran `/btw` sebelumnya yang ditampilkan di atas jawaban saat ini |

377 378 

jetbrains.md +13 −5

Details

35 Instalasi35 Instalasi

36</h2>36</h2>

37 37 

38<h3 id="marketplace-installation">38Plugin menjalankan perintah `claude` di terminal terintegrasi IDE Anda dan terhubung dengannya. Plugin tidak menyertakan salinan CLI-nya sendiri, jadi instal kedua bagian:

39 Instalasi Marketplace39 

40</h3>40<Steps>

41 <Step title="Instal Claude Code CLI">

42 Ikuti [quickstart](/id/quickstart) untuk menginstal CLI jika Anda belum melakukannya. Plugin menampilkan notifikasi "Cannot launch Claude Code" ketika `claude` tidak ada di PATH Anda.

43 </Step>

44 

45 <Step title="Instal plugin JetBrains">

46 Instal [plugin Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) dari JetBrains Marketplace dan mulai ulang IDE Anda.

47 </Step>

48</Steps>

41 49 

42Temukan dan instal [plugin Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) dari marketplace JetBrains dan mulai ulang IDE Anda.50Jika `claude` diinstal di tempat yang tidak dapat ditemukan IDE Anda, atur jalur lengkap di [pengaturan perintah Claude](#general-settings) plugin.

43 51 

44Jika Anda belum menginstal Claude Code, lihat [panduan quickstart](/id/quickstart) untuk instruksi instalasi.52Claude Code bekerja dengan langganan Claude berbayar apa pun (Pro, Max, Team, atau Enterprise) atau akun Claude Console, dan tidak ada kunci API yang diperlukan. Anda akan diminta untuk [masuk](/id/authentication#log-in-to-claude-code) pertama kali Anda menjalankan `claude`.

45 53 

46<Note>54<Note>

47 Setelah menginstal plugin, Anda mungkin perlu memulai ulang IDE Anda sepenuhnya agar dapat diterapkan.55 Setelah menginstal plugin, Anda mungkin perlu memulai ulang IDE Anda sepenuhnya agar dapat diterapkan.

keybindings.md +4 −4

Details

16 File konfigurasi16 File konfigurasi

17</h2>17</h2>

18 18 

19File konfigurasi keybindings adalah objek dengan array `bindings`. Setiap blok menentukan konteks dan peta dari keystroke ke tindakan.19File konfigurasi pintasan keyboard adalah objek dengan array `bindings`. Setiap blok menentukan konteks dan peta dari keystroke ke tindakan.

20 20 

21<Note>Perubahan pada file keybindings secara otomatis terdeteksi dan diterapkan tanpa perlu memulai ulang Claude Code.</Note>21<Note>Perubahan pada file pintasan keyboard secara otomatis terdeteksi dan diterapkan tanpa perlu memulai ulang Claude Code.</Note>

22 22 

23| Field | Deskripsi |23| Field | Deskripsi |

24| :--------- | :---------------------------------------------------------- |24| :--------- | :---------------------------------------------------------- |


203Tindakan yang tersedia dalam konteks `Task`:203Tindakan yang tersedia dalam konteks `Task`:

204 204 

205| Tindakan | Default | Deskripsi |205| Tindakan | Default | Deskripsi |

206| :---------------- | :------ | :---------------------------- |206| :---------------- | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |

207| `task:background` | Ctrl+B | Tugas latar belakang saat ini |207| `task:background` | Ctrl+B, Ctrl+X Ctrl+B | Tugas latar belakang saat ini. {/* min-version: 2.1.169 */}Akord Ctrl+X Ctrl+B memerlukan v2.1.169 atau lebih baru dan menghindari konflik awalan tmux |

208 208 

209<h3 id="theme-actions">209<h3 id="theme-actions">

210 Tindakan tema210 Tindakan tema

Details

148 148 

149Gunakan ini untuk direktori yang tidak pernah Anda kerjakan, seperti paket tim lain, kode legacy, atau subtree yang di-vendor. Daftar pengecualian bersifat statis, bukan switch per-tugas. Untuk fokus pada satu paket hari ini dan paket lain besok, [mulai Claude dari direktori paket itu](#choose-where-to-start-claude) bukan mengedit pengecualian.149Gunakan ini untuk direktori yang tidak pernah Anda kerjakan, seperti paket tim lain, kode legacy, atau subtree yang di-vendor. Daftar pengecualian bersifat statis, bukan switch per-tugas. Untuk fokus pada satu paket hari ini dan paket lain besok, [mulai Claude dari direktori paket itu](#choose-where-to-start-claude) bukan mengedit pengecualian.

150 150 

151Jika Anda hanya menginginkan pengecualian ini untuk diri sendiri, letakkan pengaturan di `.claude/settings.local.json`, yang gitignored dan tidak berkomitmen. Pola menggunakan sintaks glob yang cocok dengan jalur file absolut, jadi mulai pola gaya-relatif dengan `**/` untuk cocok di mana saja di pohon. Contoh di bawah mengecualikan paket yang dimiliki oleh tim lain:151Jika Anda hanya menginginkan pengecualian ini untuk diri sendiri, letakkan pengaturan di `.claude/settings.local.json`. Claude Code mengabaikan file itu ketika membuatnya; karena Anda membuatnya dengan tangan di sini, tambahkan ke gitignore Anda. Pola menggunakan sintaks glob yang cocok dengan jalur file absolut, jadi mulai pola gaya-relatif dengan `**/` untuk cocok di mana saja di pohon. Contoh di bawah mengecualikan paket yang dimiliki oleh tim lain:

152 152 

153```json .claude/settings.local.json theme={null}153```json .claude/settings.local.json theme={null}

154{154{


326Untuk direktori sibling yang semua orang di area ini butuhkan, komitkan `additionalDirectories` ke `.claude/settings.json`. Untuk pilihan pribadi atau akses satu kali, gunakan `.claude/settings.local.json` atau lewatkan `--add-dir` saat peluncuran.326Untuk direktori sibling yang semua orang di area ini butuhkan, komitkan `additionalDirectories` ke `.claude/settings.json`. Untuk pilihan pribadi atau akses satu kali, gunakan `.claude/settings.local.json` atau lewatkan `--add-dir` saat peluncuran.

327 327 

328<h2 id="add-per-directory-skills">328<h2 id="add-per-directory-skills">

329 Add per-directory skills329 Tambahkan skills per-direktori

330</h2>330</h2>

331 331 

332Subdirektori apa pun dapat mendefinisikan [skills](/id/skills) yang dibatasi pada stack-nya sendiri. Skill dimuat sesuai permintaan ketika Claude menentukan itu relevan, jadi tooling spesifik API tidak menghabiskan konteks selama pekerjaan frontend.332Subdirektori apa pun dapat mendefinisikan [skills](/id/skills) yang dibatasi pada stack-nya sendiri. Skill dimuat sesuai permintaan ketika Claude menentukan itu relevan, jadi tooling spesifik API tidak menghabiskan konteks selama pekerjaan frontend.


377Untuk lebih lanjut tentang membuat dan mengorganisir skills, lihat [Skills](/id/skills).377Untuk lebih lanjut tentang membuat dan mengorganisir skills, lihat [Skills](/id/skills).

378 378 

379<h3 id="keep-skills-discoverable">379<h3 id="keep-skills-discoverable">

380 Keep skills discoverable380 Jaga skills tetap dapat ditemukan

381</h3>381</h3>

382 382 

383Dengan skills tersebar di banyak direktori, daftar Claude pilih dari dapat tumbuh besar. Claude memilih skill dengan membaca nama dan deskripsi setiap skill yang ditemukan, dan hanya konten skill yang dipilih dimuat penuh ke dalam konteks. Bagian ini mencakup cara menjaga daftar itu tetap kecil dan menulis deskripsi yang bertahan pemendekkan.383Dengan skills tersebar di banyak direktori, daftar yang Claude pilih dari dapat tumbuh besar. Claude memilih skill dengan membaca nama dan deskripsi setiap skill yang ditemukan, dan hanya konten skill yang dipilih dimuat penuh ke dalam konteks. Bagian ini mencakup cara menjaga daftar itu tetap kecil dan menulis deskripsi yang bertahan pemendekkan.

384 384 

385Skill mana yang dalam scope tergantung pada di mana Anda memulai Claude:385Skill mana yang dalam scope tergantung pada di mana Anda memulai Claude:

386 386 

llm-gateway.md +2 −0

Details

14* **Pencatatan audit** - Lacak semua interaksi model untuk kepatuhan14* **Pencatatan audit** - Lacak semua interaksi model untuk kepatuhan

15* **Perutean model** - Beralih antar penyedia tanpa perubahan kode15* **Perutean model** - Beralih antar penyedia tanpa perubahan kode

16 16 

17Halaman ini mencakup persyaratan gateway dan konfigurasi untuk Claude Code CLI. Penyebaran Enterprise Desktop dapat mengonfigurasi penyedia gateway melalui [pengaturan terkelola](https://support.claude.com/id/articles/12622667-enterprise-configuration). Aplikasi Claude Desktop juga dapat berjalan terhadap gateway yang di-host sendiri melalui [Cowork on 3P research preview](https://claude.com/docs/cowork/3p/gateway), yang menggunakan kunci konfigurasi tersendiri.

18 

17<h2 id="gateway-requirements">19<h2 id="gateway-requirements">

18 Persyaratan gateway20 Persyaratan gateway

19</h2>21</h2>

mcp.md +158 −72

Details

12 12 

13Jika Anda menghubungkan server pertama Anda, mulai dengan [panduan cepat MCP](/id/mcp-quickstart) untuk panduan langkah demi langkah. Halaman ini adalah referensi lengkap.13Jika Anda menghubungkan server pertama Anda, mulai dengan [panduan cepat MCP](/id/mcp-quickstart) untuk panduan langkah demi langkah. Halaman ini adalah referensi lengkap.

14 14 

15## Apa yang dapat Anda lakukan dengan MCP15<h2 id="what-you-can-do-with-mcp">

16 Apa yang dapat Anda lakukan dengan MCP

17</h2>

16 18 

17Dengan server MCP yang terhubung, Anda dapat meminta Claude Code untuk:19Dengan server MCP yang terhubung, Anda dapat meminta Claude Code untuk:

18 20 


23* **Mengotomatisasi alur kerja**: "Buat draf Gmail mengundang 10 pengguna ini ke sesi umpan balik tentang fitur baru."25* **Mengotomatisasi alur kerja**: "Buat draf Gmail mengundang 10 pengguna ini ke sesi umpan balik tentang fitur baru."

24* **Bereaksi terhadap peristiwa eksternal**: Server MCP juga dapat bertindak sebagai [saluran](/id/channels) yang mendorong pesan ke dalam sesi Anda, sehingga Claude bereaksi terhadap pesan Telegram, obrolan Discord, atau peristiwa webhook saat Anda sedang pergi.26* **Bereaksi terhadap peristiwa eksternal**: Server MCP juga dapat bertindak sebagai [saluran](/id/channels) yang mendorong pesan ke dalam sesi Anda, sehingga Claude bereaksi terhadap pesan Telegram, obrolan Discord, atau peristiwa webhook saat Anda sedang pergi.

25 27 

26## Temukan dan bangun server MCP28<h2 id="find-and-build-mcp-servers">

29 Temukan dan bangun server MCP

30</h2>

27 31 

28Jelajahi konektor yang telah ditinjau di [Direktori Anthropic](https://claude.ai/directory). Konektor Direktori menggunakan infrastruktur MCP yang sama dengan Claude Code, jadi Anda dapat menambahkan server jarak jauh apa pun yang terdaftar di sana dengan `claude mcp add`.32Jelajahi konektor yang telah ditinjau di [Direktori Anthropic](https://claude.ai/directory). Konektor Direktori menggunakan infrastruktur MCP yang sama dengan Claude Code, jadi Anda dapat menambahkan server jarak jauh apa pun yang terdaftar di sana dengan `claude mcp add`.

29 33 


55 </Step>59 </Step>

56</Steps>60</Steps>

57 61 

58## Menginstal server MCP62<h2 id="installing-mcp-servers">

63 Menginstal server MCP

64</h2>

59 65 

60Server MCP dapat dikonfigurasi dengan beberapa cara berbeda tergantung pada kebutuhan Anda:66Server MCP dapat dikonfigurasi dengan beberapa cara berbeda tergantung pada kebutuhan Anda:

61 67 

62### Opsi 1: Tambahkan server HTTP jarak jauh68<h3 id="option-1-add-a-remote-http-server">

69 Opsi 1: Tambahkan server HTTP jarak jauh

70</h3>

63 71 

64Server HTTP adalah opsi yang direkomendasikan untuk terhubung ke server MCP jarak jauh. Ini adalah transport yang paling banyak didukung untuk layanan berbasis cloud.72Server HTTP adalah opsi yang direkomendasikan untuk terhubung ke server MCP jarak jauh. Ini adalah transport yang paling banyak didukung untuk layanan berbasis cloud.

65 73 


77 85 

78Saat mengonfigurasi server MCP melalui JSON dalam `.mcp.json`, `~/.claude.json`, atau `claude mcp add-json`, bidang `type` menerima `streamable-http` sebagai alias untuk `http`. Spesifikasi MCP menggunakan nama `streamable-http` untuk transport ini, jadi konfigurasi yang disalin dari dokumentasi server berfungsi tanpa modifikasi.86Saat mengonfigurasi server MCP melalui JSON dalam `.mcp.json`, `~/.claude.json`, atau `claude mcp add-json`, bidang `type` menerima `streamable-http` sebagai alias untuk `http`. Spesifikasi MCP menggunakan nama `streamable-http` untuk transport ini, jadi konfigurasi yang disalin dari dokumentasi server berfungsi tanpa modifikasi.

79 87 

80### Opsi 2: Tambahkan server SSE jarak jauh88<h3 id="option-2-add-a-remote-sse-server">

89 Opsi 2: Tambahkan server SSE jarak jauh

90</h3>

81 91 

82<Warning>92<Warning>

83 Transport SSE (Server-Sent Events) sudah usang. Gunakan server HTTP sebagai gantinya, jika tersedia.93 Transport SSE (Server-Sent Events) sudah usang. Gunakan server HTTP sebagai gantinya, jika tersedia.


95 --header "X-API-Key: your-key-here"105 --header "X-API-Key: your-key-here"

96```106```

97 107 

98### Opsi 3: Tambahkan server stdio lokal108<h3 id="option-3-add-a-local-stdio-server">

109 Opsi 3: Tambahkan server stdio lokal

110</h3>

99 111 

100Server stdio berjalan sebagai proses lokal di mesin Anda. Mereka ideal untuk alat yang memerlukan akses sistem langsung atau skrip khusus.112Server stdio berjalan sebagai proses lokal di mesin Anda. Mereka ideal untuk alat yang memerlukan akses sistem langsung atau skrip khusus.

101 113 


108claude mcp add [options] <name> -- <command> [args...]120claude mcp add [options] <name> -- <command> [args...]

109 121 

110# Contoh nyata: Tambahkan server Airtable122# Contoh nyata: Tambahkan server Airtable

111claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \123claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \

112 -- npx -y airtable-mcp-server124 -- npx -y airtable-mcp-server

113```125```

114 126 

115<Note>127<Note>

116 **Penting: Urutan opsi**128 **Penting: Pisahkan argumen server dengan `--`**

117 129 

118 Semua opsi (`--transport`, `--env`, `--scope`, `--header`) harus datang **sebelum** nama server. `--` (tanda hubung ganda) kemudian memisahkan nama server dari perintah dan argumen yang diteruskan ke server MCP.130 Untuk server stdio, `--` (tanda hubung ganda) memisahkan opsi Claude sendiri, seperti `--transport`, `--env`, dan `--scope`, dari perintah dan argumen yang menjalankan server. Semuanya setelah `--` diteruskan ke server tanpa diubah.

119 131 

120 Sebagai contoh:132 Sebagai contoh:

121 133 

122 * `claude mcp add --transport stdio myserver -- npx server` → menjalankan `npx server`134 * `claude mcp add --transport stdio myserver -- npx server` → menjalankan `npx server`

123 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → menjalankan `python server.py --port 8080` dengan `KEY=value` di lingkungan135 * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → menjalankan `python server.py --port 8080` dengan `KEY=value` di lingkungan

124 136 

125 Ini mencegah konflik antara flag Claude dan flag server.137 Tanpa `--`, Claude Code akan mencoba mengurai flag server, seperti `--port` di atas, sebagai opsinya sendiri.

138 

139 `--env` menerima beberapa pasangan `KEY=value`. Jika nama server datang langsung setelah `--env`, CLI membaca nama sebagai pasangan lain dan menolaknya, jadi tempatkan setidaknya satu opsi lain antara `--env` dan nama server, seperti dalam contoh di atas.

126</Note>140</Note>

127 141 

128### Opsi 4: Tambahkan server WebSocket jarak jauh142<h3 id="option-4-add-a-remote-websocket-server">

143 Opsi 4: Tambahkan server WebSocket jarak jauh

144</h3>

129 145 

130Server WebSocket mempertahankan koneksi bidirectional yang persisten, yang cocok untuk server MCP jarak jauh yang mendorong peristiwa ke Claude tanpa diminta. Gunakan HTTP sebagai gantinya ketika server Anda hanya merespons permintaan, karena HTTP mendukung OAuth dan flag `claude mcp add --transport`, sementara WebSocket tidak mendukung keduanya.146Server WebSocket mempertahankan koneksi bidirectional yang persisten, yang cocok untuk server MCP jarak jauh yang mendorong peristiwa ke Claude tanpa diminta. Gunakan HTTP sebagai gantinya ketika server Anda hanya merespons permintaan, karena HTTP mendukung OAuth dan flag `claude mcp add --transport`, sementara WebSocket tidak mendukung keduanya.

131 147 


138 154 

139Entri `type: "ws"` menerima bidang `url`, `headers`, `headersHelper`, `timeout`, dan `alwaysLoad` yang sama seperti `http`. Autentikasi hanya header, jadi teruskan token statis dalam `headers` atau buat satu pada waktu koneksi dengan [`headersHelper`](#use-dynamic-headers-for-custom-authentication). Flag `claude mcp add --transport` tidak menerima `ws`.155Entri `type: "ws"` menerima bidang `url`, `headers`, `headersHelper`, `timeout`, dan `alwaysLoad` yang sama seperti `http`. Autentikasi hanya header, jadi teruskan token statis dalam `headers` atau buat satu pada waktu koneksi dengan [`headersHelper`](#use-dynamic-headers-for-custom-authentication). Flag `claude mcp add --transport` tidak menerima `ws`.

140 156 

141### Mengelola server Anda157<h3 id="managing-your-servers">

158 Mengelola server Anda

159</h3>

142 160 

143Setelah dikonfigurasi, Anda dapat mengelola server MCP Anda dengan perintah ini:161Setelah dikonfigurasi, Anda dapat mengelola server MCP Anda dengan perintah ini:

144 162 


164 182 

165Nama server `workspace` dicadangkan untuk penggunaan internal. Jika konfigurasi Anda menentukan server dengan nama tersebut, Claude Code melewatinya saat waktu muat dan menampilkan peringatan yang meminta Anda untuk mengganti namanya.183Nama server `workspace` dicadangkan untuk penggunaan internal. Jika konfigurasi Anda menentukan server dengan nama tersebut, Claude Code melewatinya saat waktu muat dan menampilkan peringatan yang meminta Anda untuk mengganti namanya.

166 184 

167### Pembaruan alat dinamis185<h3 id="dynamic-tool-updates">

186 Pembaruan alat dinamis

187</h3>

168 188 

169Claude Code mendukung notifikasi `list_changed` MCP, memungkinkan server MCP untuk secara dinamis memperbarui alat, prompt, dan sumber daya yang tersedia tanpa memerlukan Anda untuk memutuskan dan menghubungkan kembali. Ketika server MCP mengirim notifikasi `list_changed`, Claude Code secara otomatis menyegarkan kemampuan yang tersedia dari server tersebut.189Claude Code mendukung notifikasi `list_changed` MCP, memungkinkan server MCP untuk secara dinamis memperbarui alat, prompt, dan sumber daya yang tersedia tanpa memerlukan Anda untuk memutuskan dan menghubungkan kembali. Ketika server MCP mengirim notifikasi `list_changed`, Claude Code secara otomatis menyegarkan kemampuan yang tersedia dari server tersebut.

170 190 

171### Koneksi ulang otomatis191<h3 id="automatic-reconnection">

192 Koneksi ulang otomatis

193</h3>

172 194 

173Jika server HTTP atau SSE terputus di tengah sesi, Claude Code secara otomatis menghubungkan kembali dengan backoff eksponensial: hingga lima upaya, dimulai dengan penundaan satu detik dan berlipat ganda setiap kali. Server muncul sebagai tertunda dalam `/mcp` saat koneksi ulang sedang berlangsung. Setelah lima upaya gagal, server ditandai sebagai gagal dan Anda dapat mencoba lagi secara manual dari `/mcp`. Server stdio adalah proses lokal dan tidak dihubungkan kembali secara otomatis.195Jika server HTTP atau SSE terputus di tengah sesi, Claude Code secara otomatis menghubungkan kembali dengan backoff eksponensial: hingga lima upaya, dimulai dengan penundaan satu detik dan berlipat ganda setiap kali. Server muncul sebagai tertunda dalam `/mcp` saat koneksi ulang sedang berlangsung. Setelah lima upaya gagal, server ditandai sebagai gagal dan Anda dapat mencoba lagi secara manual dari `/mcp`. Server stdio adalah proses lokal dan tidak dihubungkan kembali secara otomatis.

174 196 

175Backoff yang sama berlaku ketika server HTTP atau SSE gagal koneksi awalnya saat startup. Mulai dari v2.1.121, Claude Code mencoba ulang koneksi awal hingga tiga kali pada kesalahan transien seperti respons 5xx, koneksi ditolak, atau timeout, kemudian menandai server sebagai gagal jika masih tidak dapat terhubung. Kesalahan autentikasi dan not-found tidak dicoba ulang karena memerlukan perubahan konfigurasi untuk diselesaikan.197Backoff yang sama berlaku ketika server HTTP atau SSE gagal koneksi awalnya saat startup. Mulai dari v2.1.121, Claude Code mencoba ulang koneksi awal hingga tiga kali pada kesalahan transien seperti respons 5xx, koneksi ditolak, atau timeout, kemudian menandai server sebagai gagal jika masih tidak dapat terhubung. Kesalahan autentikasi dan not-found tidak dicoba ulang karena memerlukan perubahan konfigurasi untuk diselesaikan.

176 198 

177### Dorong pesan dengan saluran199<h3 id="push-messages-with-channels">

200 Dorong pesan dengan saluran

201</h3>

178 202 

179Server MCP juga dapat mendorong pesan langsung ke dalam sesi Anda sehingga Claude dapat bereaksi terhadap peristiwa eksternal seperti hasil CI, peringatan pemantauan, atau pesan obrolan. Untuk mengaktifkan ini, server Anda mendeklarasikan kemampuan `claude/channel` dan Anda memilihnya dengan flag `--channels` saat startup. Lihat [Saluran](/id/channels) untuk menggunakan saluran yang didukung secara resmi, atau [Referensi saluran](/id/channels-reference) untuk membangun saluran Anda sendiri.203Server MCP juga dapat mendorong pesan langsung ke dalam sesi Anda sehingga Claude dapat bereaksi terhadap peristiwa eksternal seperti hasil CI, peringatan pemantauan, atau pesan obrolan. Untuk mengaktifkan ini, server Anda mendeklarasikan kemampuan `claude/channel` dan Anda memilihnya dengan flag `--channels` saat startup. Lihat [Saluran](/id/channels) untuk menggunakan saluran yang didukung secara resmi, atau [Referensi saluran](/id/channels-reference) untuk membangun saluran Anda sendiri.

180 204 


192 * Gunakan `/mcp` untuk autentikasi dengan server jarak jauh yang memerlukan autentikasi OAuth 2.0216 * Gunakan `/mcp` untuk autentikasi dengan server jarak jauh yang memerlukan autentikasi OAuth 2.0

193</Tip>217</Tip>

194 218 

195Waktu tunggu per-server `timeout` adalah batas dinding jam yang keras per panggilan alat, dan notifikasi kemajuan dari server tidak memperpanjangnya. Nilai di bawah 1000 dibulatkan ke satu detik. Untuk server HTTP dan SSE, anggaran first-byte fetch per-permintaan memiliki minimum 60 detik terlepas dari nilai ini, jadi hanya watchdog panggilan alat yang menghormati nilai yang lebih kecil.219Waktu tunggu per-server `timeout` adalah batas dinding jam yang keras per panggilan alat, dan notifikasi kemajuan dari server tidak memperpanjangnya. Nilai di bawah 1000 diabaikan dan jatuh melalui `MCP_TOOL_TIMEOUT`, atau ke default-nya sekitar 28 jam ketika variabel tersebut tidak diatur. {/* min-version: 2.1.162 */}Sebelum v2.1.162, nilai di bawah 1000 dibulatkan ke satu detik sebagai gantinya. Untuk server HTTP dan SSE, anggaran first-byte fetch per-permintaan memiliki minimum 60 detik.

196 220 

197### Server MCP yang disediakan plugin221<h3 id="plugin-provided-mcp-servers">

222 Server MCP yang disediakan plugin

223</h3>

198 224 

199[Plugin](/id/plugins) dapat menggabungkan server MCP, secara otomatis menyediakan alat dan integrasi ketika plugin diaktifkan. Server MCP plugin bekerja identik dengan server yang dikonfigurasi pengguna.225[Plugin](/id/plugins) dapat menggabungkan server MCP, secara otomatis menyediakan alat dan integrasi ketika plugin diaktifkan. Server MCP plugin bekerja identik dengan server yang dikonfigurasi pengguna.

200 226 


253 279 

254Server plugin muncul dalam daftar dengan indikator yang menunjukkan mereka berasal dari plugin.280Server plugin muncul dalam daftar dengan indikator yang menunjukkan mereka berasal dari plugin.

255 281 

282**Nama alat MCP plugin**:

283 

284Alat dari server MCP bundel plugin mencakup nama plugin dan kunci server dalam nama yang dapat dipanggil. Bentuk lengkapnya adalah `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, di mana karakter apa pun di luar `A-Z`, `a-z`, `0-9`, `_`, dan `-` diganti dengan `_`. Untuk server `database-tools` yang dibundel dalam plugin bernama `my-plugin`, alat `query` dapat dipanggil sebagai:

285 

286```

287mcp__plugin_my-plugin_database-tools__query

288```

289 

290Gunakan nama lengkap ini saat mereferensikan alat dalam [aturan izin](/id/permissions), daftar `allowed-tools` skill, atau [bidang `tools` subagent](/id/sub-agents#available-tools).

291 

256**Manfaat server MCP plugin**:292**Manfaat server MCP plugin**:

257 293 

258* **Distribusi bundel**: Alat dan server dikemas bersama294* **Distribusi bundel**: Alat dan server dikemas bersama


261 297 

262Lihat [referensi komponen plugin](/id/plugins-reference#mcp-servers) untuk detail tentang penggabungan server MCP dengan plugin.298Lihat [referensi komponen plugin](/id/plugins-reference#mcp-servers) untuk detail tentang penggabungan server MCP dengan plugin.

263 299 

264## Cakupan instalasi MCP300<h2 id="mcp-installation-scopes">

301 Cakupan instalasi MCP

302</h2>

265 303 

266Server MCP dapat dikonfigurasi pada tiga cakupan berbeda. Cakupan yang Anda pilih mengontrol proyek mana tempat server dimuat dan apakah konfigurasi dibagikan dengan tim Anda. Administrator juga dapat menerapkan server di tingkat enterprise melalui [konfigurasi terkelola](#managed-mcp-configuration).304Server MCP dapat dikonfigurasi pada tiga cakupan berbeda. Cakupan yang Anda pilih mengontrol proyek mana tempat server dimuat dan apakah konfigurasi dibagikan dengan tim Anda. Administrator juga dapat menerapkan server di tingkat enterprise melalui [konfigurasi terkelola](#managed-mcp-configuration).

267 305 


271| [Proyek](#project-scope) | Hanya proyek saat ini | Ya, melalui kontrol versi | `.mcp.json` di root proyek |309| [Proyek](#project-scope) | Hanya proyek saat ini | Ya, melalui kontrol versi | `.mcp.json` di root proyek |

272| [Pengguna](#user-scope) | Semua proyek Anda | Tidak | `~/.claude.json` |310| [Pengguna](#user-scope) | Semua proyek Anda | Tidak | `~/.claude.json` |

273 311 

274### Cakupan lokal312<h3 id="local-scope">

313 Cakupan lokal

314</h3>

275 315 

276Cakupan lokal adalah default. Server dengan cakupan lokal hanya dimuat di proyek tempat Anda menambahkannya dan tetap pribadi untuk Anda. Claude Code menyimpannya dalam `~/.claude.json` di bawah jalur proyek tersebut, jadi server yang sama tidak akan muncul di proyek lain Anda. Gunakan cakupan lokal untuk server pengembangan pribadi, konfigurasi eksperimental, atau server dengan kredensial yang tidak ingin Anda masukkan ke dalam kontrol versi.316Cakupan lokal adalah default. Server dengan cakupan lokal hanya dimuat di proyek tempat Anda menambahkannya dan tetap pribadi untuk Anda. Claude Code menyimpannya dalam `~/.claude.json` di bawah jalur proyek tersebut, jadi server yang sama tidak akan muncul di proyek lain Anda. Gunakan cakupan lokal untuk server pengembangan pribadi, konfigurasi eksperimental, atau server dengan kredensial yang tidak ingin Anda masukkan ke dalam kontrol versi.

277 317 


304}344}

305```345```

306 346 

307### Cakupan proyek347<h3 id="project-scope">

348 Cakupan proyek

349</h3>

308 350 

309Server dengan cakupan proyek memungkinkan kolaborasi tim dengan menyimpan konfigurasi dalam file `.mcp.json` di direktori root proyek Anda. File ini dirancang untuk diperiksa ke dalam kontrol versi, memastikan semua anggota tim memiliki akses ke alat dan layanan MCP yang sama. Ketika Anda menambahkan server dengan cakupan proyek, Claude Code secara otomatis membuat atau memperbarui file ini dengan struktur konfigurasi yang sesuai.351Server dengan cakupan proyek memungkinkan kolaborasi tim dengan menyimpan konfigurasi dalam file `.mcp.json` di direktori root proyek Anda. File ini dirancang untuk diperiksa ke dalam kontrol versi, memastikan semua anggota tim memiliki akses ke alat dan layanan MCP yang sama. Ketika Anda menambahkan server dengan cakupan proyek, Claude Code secara otomatis membuat atau memperbarui file ini dengan struktur konfigurasi yang sesuai.

310 352 


329 371 

330Untuk alasan keamanan, Claude Code meminta persetujuan sebelum menggunakan server dengan cakupan proyek dari file `.mcp.json`. Jika Anda perlu mengatur ulang pilihan persetujuan ini, gunakan perintah `claude mcp reset-project-choices`.372Untuk alasan keamanan, Claude Code meminta persetujuan sebelum menggunakan server dengan cakupan proyek dari file `.mcp.json`. Jika Anda perlu mengatur ulang pilihan persetujuan ini, gunakan perintah `claude mcp reset-project-choices`.

331 373 

332### Cakupan pengguna374<h3 id="user-scope">

375 Cakupan pengguna

376</h3>

333 377 

334Server dengan cakupan pengguna disimpan dalam `~/.claude.json` dan menyediakan aksesibilitas lintas proyek, menjadikannya tersedia di semua proyek di mesin Anda sambil tetap pribadi untuk akun pengguna Anda. Cakupan ini bekerja dengan baik untuk server utilitas pribadi, alat pengembangan, atau layanan yang sering Anda gunakan di berbagai proyek.378Server dengan cakupan pengguna disimpan dalam `~/.claude.json` dan menyediakan aksesibilitas lintas proyek, menjadikannya tersedia di semua proyek di mesin Anda sambil tetap pribadi untuk akun pengguna Anda. Cakupan ini bekerja dengan baik untuk server utilitas pribadi, alat pengembangan, atau layanan yang sering Anda gunakan di berbagai proyek.

335 379 


338claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic382claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

339```383```

340 384 

341### Hierarki cakupan dan prioritas385<h3 id="scope-hierarchy-and-precedence">

386 Hierarki cakupan dan prioritas

387</h3>

342 388 

343Ketika server yang sama ditentukan di lebih dari satu tempat, Claude Code terhubung ke server tersebut sekali, menggunakan definisi dari sumber dengan prioritas tertinggi. Seluruh entri server dari sumber tersebut digunakan; bidang tidak digabungkan di seluruh cakupan.389Ketika server yang sama ditentukan di lebih dari satu tempat, Claude Code terhubung ke server tersebut sekali, menggunakan definisi dari sumber dengan prioritas tertinggi. Seluruh entri server dari sumber tersebut digunakan; bidang tidak digabungkan di seluruh cakupan.

344 390 


350 396 

351Tiga cakupan mencocokkan duplikat berdasarkan nama. Plugin dan konektor mencocokkan berdasarkan endpoint, jadi yang menunjuk ke URL atau perintah yang sama dengan server di atas diperlakukan sebagai duplikat.397Tiga cakupan mencocokkan duplikat berdasarkan nama. Plugin dan konektor mencocokkan berdasarkan endpoint, jadi yang menunjuk ke URL atau perintah yang sama dengan server di atas diperlakukan sebagai duplikat.

352 398 

353### Ekspansi variabel lingkungan dalam `.mcp.json`399<h3 id="environment-variable-expansion-in-mcp-json">

400 Ekspansi variabel lingkungan dalam `.mcp.json`

401</h3>

354 402 

355Claude Code mendukung ekspansi variabel lingkungan dalam file `.mcp.json`, memungkinkan tim untuk berbagi konfigurasi sambil mempertahankan fleksibilitas untuk jalur spesifik mesin dan nilai sensitif seperti kunci API.403Claude Code mendukung ekspansi variabel lingkungan dalam file `.mcp.json`, memungkinkan tim untuk berbagi konfigurasi sambil mempertahankan fleksibilitas untuk jalur spesifik mesin dan nilai sensitif seperti kunci API.

356 404 


386 434 

387Jika variabel lingkungan yang diperlukan tidak diatur dan tidak memiliki nilai default, Claude Code akan gagal mengurai konfigurasi.435Jika variabel lingkungan yang diperlukan tidak diatur dan tidak memiliki nilai default, Claude Code akan gagal mengurai konfigurasi.

388 436 

389## Contoh praktis437<h2 id="practical-examples">

438 Contoh praktis

439</h2>

390 440 

391{/* ### Contoh: Otomatisasi pengujian browser dengan Playwright441<h3 id="example-monitor-errors-with-sentry">

392 442 Contoh: Pantau kesalahan dengan Sentry

393```bash443</h3>

394claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest

395```

396 

397Kemudian tulis dan jalankan tes browser:

398 

399```text

400Test if the login flow works with test@example.com

401```

402```text

403Take a screenshot of the checkout page on mobile

404```

405```text

406Verify that the search feature returns results

407``` */}

408 

409### Contoh: Pantau kesalahan dengan Sentry

410 444 

411```bash theme={null}445```bash theme={null}

412claude mcp add --transport http sentry https://mcp.sentry.dev/mcp446claude mcp add --transport http sentry https://mcp.sentry.dev/mcp


432Which deployment introduced these new errors?466Which deployment introduced these new errors?

433```467```

434 468 

435### Contoh: Hubungkan ke GitHub untuk tinjauan kode469<h3 id="example-connect-to-github-for-code-reviews">

470 Contoh: Hubungkan ke GitHub untuk tinjauan kode

471</h3>

436 472 

437Token akses pribadi GitHub MCP server jarak jauh diautentikasi dengan token akses pribadi GitHub yang diteruskan sebagai header. Untuk mendapatkan satu, buka [pengaturan token GitHub Anda](https://github.com/settings/personal-access-tokens), hasilkan token baru yang bagus dengan akses ke repositori yang ingin Claude kerjakan, kemudian tambahkan server:473Server MCP jarak jauh GitHub diautentikasi dengan token akses pribadi GitHub yang diteruskan sebagai header. Untuk mendapatkan satu, buka [pengaturan token GitHub Anda](https://github.com/settings/personal-access-tokens), hasilkan token baru yang bersifat fine-grained dengan akses ke repositori yang ingin Claude kerjakan, kemudian tambahkan server:

438 474 

439```bash theme={null}475```bash theme={null}

440claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \476claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \


455Show me all open PRs assigned to me491Show me all open PRs assigned to me

456```492```

457 493 

458### Contoh: Tanyakan database PostgreSQL Anda494<h3 id="example-query-your-postgresql-database">

495 Contoh: Tanyakan database PostgreSQL Anda

496</h3>

459 497 

460```bash theme={null}498```bash theme={null}

461claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \499claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \


476Find customers who haven't made a purchase in 90 days514Find customers who haven't made a purchase in 90 days

477```515```

478 516 

479## Autentikasi dengan server MCP jarak jauh517<h2 id="authenticate-with-remote-mcp-servers">

518 Autentikasi dengan server MCP jarak jauh

519</h2>

480 520 

481Banyak server MCP berbasis cloud memerlukan autentikasi. Claude Code mendukung OAuth 2.0 untuk koneksi yang aman.521Banyak server MCP berbasis cloud memerlukan autentikasi. Claude Code mendukung OAuth 2.0 untuk koneksi yang aman.

482 522 


514 * Autentikasi OAuth bekerja dengan server HTTP554 * Autentikasi OAuth bekerja dengan server HTTP

515</Tip>555</Tip>

516 556 

517### Gunakan port callback OAuth tetap557<h3 id="use-a-fixed-oauth-callback-port">

558 Gunakan port callback OAuth tetap

559</h3>

518 560 

519Beberapa server MCP memerlukan URI pengalihan tertentu yang terdaftar sebelumnya. Secara default, Claude Code memilih port acak yang tersedia untuk callback OAuth. Gunakan `--callback-port` untuk memperbaiki port sehingga cocok dengan URI pengalihan yang telah terdaftar sebelumnya dalam bentuk `http://localhost:PORT/callback`.561Beberapa server MCP memerlukan URI pengalihan tertentu yang terdaftar sebelumnya. Secara default, Claude Code memilih port acak yang tersedia untuk callback OAuth. Gunakan `--callback-port` untuk memperbaiki port sehingga cocok dengan URI pengalihan yang telah terdaftar sebelumnya dalam bentuk `http://localhost:PORT/callback`.

520 562 


527 my-server https://mcp.example.com/mcp569 my-server https://mcp.example.com/mcp

528```570```

529 571 

530### Gunakan kredensial OAuth yang telah dikonfigurasi sebelumnya572<h3 id="use-pre-configured-oauth-credentials">

573 Gunakan kredensial OAuth yang telah dikonfigurasi sebelumnya

574</h3>

531 575 

532Beberapa server MCP tidak mendukung pengaturan OAuth otomatis melalui Dynamic Client Registration. Jika Anda melihat kesalahan seperti "Incompatible auth server: does not support dynamic client registration," server memerlukan kredensial yang telah dikonfigurasi sebelumnya. Claude Code juga mendukung server yang menggunakan Client ID Metadata Document (CIMD) alih-alih Dynamic Client Registration, dan menemukan ini secara otomatis. Jika penemuan otomatis gagal, daftarkan aplikasi OAuth melalui portal pengembang server terlebih dahulu, kemudian berikan kredensial saat menambahkan server.576Beberapa server MCP tidak mendukung pengaturan OAuth otomatis melalui Dynamic Client Registration. Jika Anda melihat kesalahan seperti "Incompatible auth server: does not support dynamic client registration," server memerlukan kredensial yang telah dikonfigurasi sebelumnya. Claude Code juga mendukung server yang menggunakan Client ID Metadata Document (CIMD) alih-alih Dynamic Client Registration, dan menemukan ini secara otomatis. Jika penemuan otomatis gagal, daftarkan aplikasi OAuth melalui portal pengembang server terlebih dahulu, kemudian berikan kredensial saat menambahkan server.

533 577 


598 * Gunakan `claude mcp get <name>` untuk memverifikasi bahwa kredensial OAuth dikonfigurasi untuk server642 * Gunakan `claude mcp get <name>` untuk memverifikasi bahwa kredensial OAuth dikonfigurasi untuk server

599</Tip>643</Tip>

600 644 

601### Ganti penemuan metadata OAuth645<h3 id="override-oauth-metadata-discovery">

646 Ganti penemuan metadata OAuth

647</h3>

602 648 

603Arahkan Claude Code ke URL metadata otorisasi OAuth tertentu untuk melewati rantai penemuan default. Atur `authServerMetadataUrl` ketika endpoint standar server MCP mengembalikan kesalahan, atau ketika Anda ingin merutekan penemuan melalui proxy internal. Secara default, Claude Code pertama kali memeriksa Protected Resource Metadata RFC 9728 di `/.well-known/oauth-protected-resource`, kemudian kembali ke metadata server otorisasi RFC 8414 di `/.well-known/oauth-authorization-server`.649Arahkan Claude Code ke URL metadata otorisasi OAuth tertentu untuk melewati rantai penemuan default. Atur `authServerMetadataUrl` ketika endpoint standar server MCP mengembalikan kesalahan, atau ketika Anda ingin merutekan penemuan melalui proxy internal. Secara default, Claude Code pertama kali memeriksa Protected Resource Metadata RFC 9728 di `/.well-known/oauth-protected-resource`, kemudian kembali ke metadata server otorisasi RFC 8414 di `/.well-known/oauth-authorization-server`.

604 650 


620 666 

621URL harus menggunakan `https://`. `authServerMetadataUrl` memerlukan Claude Code v2.1.64 atau lebih baru. `scopes_supported` dari URL metadata mengganti cakupan yang diiklankan server upstream.667URL harus menggunakan `https://`. `authServerMetadataUrl` memerlukan Claude Code v2.1.64 atau lebih baru. `scopes_supported` dari URL metadata mengganti cakupan yang diiklankan server upstream.

622 668 

623### Batasi cakupan OAuth669<h3 id="restrict-oauth-scopes">

670 Batasi cakupan OAuth

671</h3>

624 672 

625Atur `oauth.scopes` untuk menyematkan cakupan yang diminta Claude Code selama alur otorisasi. Ini adalah cara yang didukung untuk membatasi server MCP ke subset yang disetujui tim keamanan ketika server otorisasi upstream mengiklankan lebih banyak cakupan daripada yang ingin Anda berikan. Nilainya adalah string tunggal yang dipisahkan spasi, cocok dengan format parameter `scope` dalam RFC 6749 §3.3.673Atur `oauth.scopes` untuk menyematkan cakupan yang diminta Claude Code selama alur otorisasi. Ini adalah cara yang didukung untuk membatasi server MCP ke subset yang disetujui tim keamanan ketika server otorisasi upstream mengiklankan lebih banyak cakupan daripada yang ingin Anda berikan. Nilainya adalah string tunggal yang dipisahkan spasi, cocok dengan format parameter `scope` dalam RFC 6749 §3.3.

626 674 


644 692 

645Jika server kemudian mengembalikan 403 `insufficient_scope` untuk panggilan alat, Claude Code melakukan autentikasi ulang dengan cakupan yang disematkan yang sama. Perluas `oauth.scopes` ketika alat yang Anda butuhkan memerlukan cakupan di luar pin.693Jika server kemudian mengembalikan 403 `insufficient_scope` untuk panggilan alat, Claude Code melakukan autentikasi ulang dengan cakupan yang disematkan yang sama. Perluas `oauth.scopes` ketika alat yang Anda butuhkan memerlukan cakupan di luar pin.

646 694 

647### Gunakan header dinamis untuk autentikasi khusus695<h3 id="use-dynamic-headers-for-custom-authentication">

696 Gunakan header dinamis untuk autentikasi khusus

697</h3>

648 698 

649Jika server MCP Anda menggunakan skema autentikasi selain OAuth (seperti Kerberos, token berumur pendek, atau SSO internal), gunakan `headersHelper` untuk menghasilkan header permintaan pada waktu koneksi. Claude Code menjalankan perintah dan menggabungkan outputnya ke dalam header koneksi.699Jika server MCP Anda menggunakan skema autentikasi selain OAuth (seperti Kerberos, token berumur pendek, atau SSO internal), gunakan `headersHelper` untuk menghasilkan header permintaan pada waktu koneksi. Claude Code menjalankan perintah dan menggabungkan outputnya ke dalam header koneksi.

650 700 


695 `headersHelper` mengeksekusi perintah shell arbitrer. Ketika ditentukan pada cakupan proyek atau lokal, itu hanya berjalan setelah Anda menerima dialog kepercayaan ruang kerja.745 `headersHelper` mengeksekusi perintah shell arbitrer. Ketika ditentukan pada cakupan proyek atau lokal, itu hanya berjalan setelah Anda menerima dialog kepercayaan ruang kerja.

696</Note>746</Note>

697 747 

698## Tambahkan server MCP dari konfigurasi JSON748<h2 id="add-mcp-servers-from-json-configuration">

749 Tambahkan server MCP dari konfigurasi JSON

750</h2>

699 751 

700Jika Anda memiliki konfigurasi JSON untuk server MCP, Anda dapat menambahkannya secara langsung:752Jika Anda memiliki konfigurasi JSON untuk server MCP, Anda dapat menambahkannya secara langsung:

701 753 


731 * Anda dapat menggunakan `--scope user` untuk menambahkan server ke konfigurasi pengguna Anda alih-alih yang spesifik proyek783 * Anda dapat menggunakan `--scope user` untuk menambahkan server ke konfigurasi pengguna Anda alih-alih yang spesifik proyek

732</Tip>784</Tip>

733 785 

734## Impor server MCP dari Claude Desktop786<h2 id="import-mcp-servers-from-claude-desktop">

787 Impor server MCP dari Claude Desktop

788</h2>

735 789 

736Jika Anda telah mengonfigurasi server MCP di Claude Desktop, Anda dapat mengimpornya:790Jika Anda telah mengonfigurasi server MCP di Claude Desktop, Anda dapat mengimpornya:

737 791 


764 * Jika server dengan nama yang sama sudah ada, mereka akan mendapatkan akhiran numerik (misalnya, `server_1`)818 * Jika server dengan nama yang sama sudah ada, mereka akan mendapatkan akhiran numerik (misalnya, `server_1`)

765</Tip>819</Tip>

766 820 

767## Gunakan server MCP dari Claude.ai821<h2 id="use-mcp-servers-from-claude-ai">

822 Gunakan server MCP dari Claude.ai

823</h2>

768 824 

769Jika Anda telah masuk ke Claude Code dengan akun [Claude.ai](https://claude.ai), server MCP yang telah Anda tambahkan di Claude.ai secara otomatis tersedia di Claude Code:825Jika Anda telah masuk ke Claude Code dengan akun [Claude.ai](https://claude.ai), server MCP yang telah Anda tambahkan di Claude.ai secara otomatis tersedia di Claude Code:

770 826 


794 850 

795Server yang telah Anda tambahkan di Claude Code mengambil [prioritas](#scope-hierarchy-and-precedence) atas konektor claude.ai yang menunjuk ke URL yang sama. Ketika ini terjadi, `/mcp` mencantumkan konektor sebagai tersembunyi dan menunjukkan cara menghapus duplikat jika Anda lebih suka menggunakan konektor.851Server yang telah Anda tambahkan di Claude Code mengambil [prioritas](#scope-hierarchy-and-precedence) atas konektor claude.ai yang menunjuk ke URL yang sama. Ketika ini terjadi, `/mcp` mencantumkan konektor sebagai tersembunyi dan menunjukkan cara menghapus duplikat jika Anda lebih suka menggunakan konektor.

796 852 

853Beberapa konektor yang dihosting Anthropic, seperti Microsoft 365, Gmail, dan Google Calendar, tidak mendukung OAuth lokal dari Claude Code karena penyedia identitas hulu hanya menerima URL pengalihan yang didaftarkan claude.ai. Mulai dari v2.1.162, mengautentikasi salah satu host ini di `/mcp` menampilkan pesan yang mengarahkan Anda untuk menghubungkannya di Settings → Connectors di claude.ai. Setelah terhubung di sana, konektor muncul di Claude Code secara otomatis.

854 

797Untuk menonaktifkan server MCP claude.ai di Claude Code, atur variabel lingkungan `ENABLE_CLAUDEAI_MCP_SERVERS` ke `false`:855Untuk menonaktifkan server MCP claude.ai di Claude Code, atur variabel lingkungan `ENABLE_CLAUDEAI_MCP_SERVERS` ke `false`:

798 856 

799```bash theme={null}857```bash theme={null}

800ENABLE_CLAUDEAI_MCP_SERVERS=false claude858ENABLE_CLAUDEAI_MCP_SERVERS=false claude

801```859```

802 860 

803## Gunakan Claude Code sebagai server MCP861<h2 id="use-claude-code-as-an-mcp-server">

862 Gunakan Claude Code sebagai server MCP

863</h2>

804 864 

805Anda dapat menggunakan Claude Code itu sendiri sebagai server MCP yang dapat terhubung oleh aplikasi lain:865Anda dapat menggunakan Claude Code itu sendiri sebagai server MCP yang dapat terhubung oleh aplikasi lain:

806 866 


859 * Perhatikan bahwa server MCP ini hanya mengekspos alat Claude Code ke klien MCP Anda, jadi klien Anda sendiri bertanggung jawab untuk menerapkan konfirmasi pengguna untuk panggilan alat individual.919 * Perhatikan bahwa server MCP ini hanya mengekspos alat Claude Code ke klien MCP Anda, jadi klien Anda sendiri bertanggung jawab untuk menerapkan konfirmasi pengguna untuk panggilan alat individual.

860</Tip>920</Tip>

861 921 

862## Batas output MCP dan peringatan922<h2 id="mcp-output-limits-and-warnings">

923 Batas output MCP dan peringatan

924</h2>

863 925 

864Ketika alat MCP menghasilkan output besar, Claude Code membantu mengelola penggunaan token untuk mencegah membanjiri konteks percakapan Anda:926Ketika alat MCP menghasilkan output besar, Claude Code membantu mengelola penggunaan token untuk mencegah membanjiri konteks percakapan Anda:

865 927 


881* Menghasilkan laporan atau dokumentasi terperinci943* Menghasilkan laporan atau dokumentasi terperinci

882* Memproses file log atau informasi debugging yang luas944* Memproses file log atau informasi debugging yang luas

883 945 

884### Naikkan batas untuk alat tertentu946<h3 id="raise-the-limit-for-a-specific-tool">

947 Naikkan batas untuk alat tertentu

948</h3>

885 949 

886Jika Anda membangun server MCP, Anda dapat mengizinkan alat individual untuk mengembalikan hasil yang lebih besar dari ambang batas default dengan menetapkan `_meta["anthropic/maxResultSizeChars"]` dalam entri `tools/list` alat. Claude Code menaikkan ambang batas alat tersebut ke nilai yang dianotasi, hingga batas keras 500.000 karakter.950Jika Anda membangun server MCP, Anda dapat mengizinkan alat individual untuk mengembalikan hasil yang lebih besar dari ambang batas default dengan menetapkan `_meta["anthropic/maxResultSizeChars"]` dalam entri `tools/list` alat. Claude Code menaikkan ambang batas alat tersebut ke nilai yang dianotasi, hingga batas keras 500.000 karakter.

887 951 


903 Jika Anda sering mengalami peringatan output dengan server MCP tertentu yang tidak Anda kontrol, pertimbangkan untuk meningkatkan batas `MAX_MCP_OUTPUT_TOKENS`. Anda juga dapat meminta penulis server untuk menambahkan anotasi `anthropic/maxResultSizeChars` atau untuk membuat halaman respons mereka. Anotasi tidak berpengaruh pada alat yang mengembalikan konten gambar; untuk itu, menaikkan `MAX_MCP_OUTPUT_TOKENS` adalah satu-satunya opsi.967 Jika Anda sering mengalami peringatan output dengan server MCP tertentu yang tidak Anda kontrol, pertimbangkan untuk meningkatkan batas `MAX_MCP_OUTPUT_TOKENS`. Anda juga dapat meminta penulis server untuk menambahkan anotasi `anthropic/maxResultSizeChars` atau untuk membuat halaman respons mereka. Anotasi tidak berpengaruh pada alat yang mengembalikan konten gambar; untuk itu, menaikkan `MAX_MCP_OUTPUT_TOKENS` adalah satu-satunya opsi.

904</Warning>968</Warning>

905 969 

906## Tanggapi permintaan elicitasi MCP970<h2 id="respond-to-mcp-elicitation-requests">

971 Tanggapi permintaan elicitasi MCP

972</h2>

907 973 

908Server MCP dapat meminta input terstruktur dari Anda di tengah tugas menggunakan elicitasi. Ketika server memerlukan informasi yang tidak dapat diperolehnya sendiri, Claude Code menampilkan dialog interaktif dan meneruskan respons Anda kembali ke server. Tidak ada konfigurasi yang diperlukan di pihak Anda: dialog elicitasi muncul secara otomatis ketika server memintanya.974Server MCP dapat meminta input terstruktur dari Anda di tengah tugas menggunakan elicitasi. Ketika server memerlukan informasi yang tidak dapat diperolehnya sendiri, Claude Code menampilkan dialog interaktif dan meneruskan respons Anda kembali ke server. Tidak ada konfigurasi yang diperlukan di pihak Anda: dialog elicitasi muncul secara otomatis ketika server memintanya.

909 975 


916 982 

917Jika Anda membangun server MCP yang menggunakan elicitasi, lihat [spesifikasi elicitasi MCP](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) untuk detail protokol dan contoh skema.983Jika Anda membangun server MCP yang menggunakan elicitasi, lihat [spesifikasi elicitasi MCP](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) untuk detail protokol dan contoh skema.

918 984 

919## Gunakan sumber daya MCP985<h2 id="use-mcp-resources">

986 Gunakan sumber daya MCP

987</h2>

920 988 

921Server MCP dapat mengekspos sumber daya yang dapat Anda referensikan menggunakan penyebutan @, mirip dengan cara Anda mereferensikan file.989Server MCP dapat mengekspos sumber daya yang dapat Anda referensikan menggunakan penyebutan @, mirip dengan cara Anda mereferensikan file.

922 990 

923### Referensikan sumber daya MCP991<h3 id="reference-mcp-resources">

992 Referensikan sumber daya MCP

993</h3>

924 994 

925<Steps>995<Steps>

926 <Step title="Daftar sumber daya yang tersedia">996 <Step title="Daftar sumber daya yang tersedia">


957 * Sumber daya dapat berisi jenis konten apa pun yang disediakan server MCP (teks, JSON, data terstruktur, dll.)1027 * Sumber daya dapat berisi jenis konten apa pun yang disediakan server MCP (teks, JSON, data terstruktur, dll.)

958</Tip>1028</Tip>

959 1029 

960## Skala dengan Pencarian Alat MCP1030<h2 id="scale-with-mcp-tool-search">

1031 Skala dengan Pencarian Alat MCP

1032</h2>

961 1033 

962Pencarian Alat menjaga penggunaan konteks MCP tetap rendah dengan menunda definisi alat sampai Claude membutuhkannya. Hanya nama alat dan instruksi server yang dimuat saat startup sesi, jadi menambahkan lebih banyak server MCP memiliki dampak minimal pada jendela konteks Anda.1034Pencarian Alat menjaga penggunaan konteks MCP tetap rendah dengan menunda definisi alat sampai Claude membutuhkannya. Hanya nama alat dan instruksi server yang dimuat saat startup sesi, jadi menambahkan lebih banyak server MCP memiliki dampak minimal pada jendela konteks Anda. Claude Code tidak memberlakukan batas alat tetap per-server; batas praktisnya adalah anggaran jendela konteks Anda.

963 1035 

964### Cara kerjanya1036<h3 id="how-it-works">

1037 Cara kerjanya

1038</h3>

965 1039 

966Pencarian Alat diaktifkan secara default. Alat MCP ditangguhkan daripada dimuat ke konteks sebelumnya, dan Claude menggunakan alat pencarian untuk menemukan yang relevan saat tugas membutuhkannya. Hanya alat yang benar-benar digunakan Claude yang memasuki konteks. Dari perspektif Anda, alat MCP bekerja persis seperti sebelumnya.1040Pencarian Alat diaktifkan secara default. Alat MCP ditangguhkan daripada dimuat ke konteks sebelumnya, dan Claude menggunakan alat pencarian untuk menemukan yang relevan saat tugas membutuhkannya. Hanya alat yang benar-benar digunakan Claude yang memasuki konteks. Dari perspektif Anda, alat MCP bekerja persis seperti sebelumnya.

967 1041 

968Jika Anda lebih suka pemuatan berbasis ambang batas, atur `ENABLE_TOOL_SEARCH=auto` untuk memuat skema sebelumnya ketika mereka cocok dalam 10% jendela konteks dan hanya menunda overflow. Lihat [Konfigurasi pencarian alat](#configure-tool-search) untuk semua opsi.1042Jika Anda lebih suka pemuatan berbasis ambang batas, atur `ENABLE_TOOL_SEARCH=auto` untuk memuat skema sebelumnya ketika mereka cocok dalam 10% jendela konteks dan hanya menunda overflow. Lihat [Konfigurasi pencarian alat](#configure-tool-search) untuk semua opsi.

969 1043 

970### Untuk penulis server MCP1044<h3 id="for-mcp-server-authors">

1045 Untuk penulis server MCP

1046</h3>

971 1047 

972Jika Anda membangun server MCP, field instruksi server menjadi lebih berguna dengan Pencarian Alat yang diaktifkan. Instruksi server membantu Claude memahami kapan harus mencari alat Anda, mirip dengan cara [skills](/id/skills) bekerja.1048Jika Anda membangun server MCP, field instruksi server menjadi lebih berguna dengan Pencarian Alat yang diaktifkan. Instruksi server membantu Claude memahami kapan harus mencari alat Anda, mirip dengan cara [skills](/id/skills) bekerja.

973 1049 


979 1055 

980Claude Code memotong deskripsi alat dan instruksi server pada 2KB masing-masing. Jaga agar ringkas untuk menghindari pemotongan, dan letakkan detail penting di dekat awal.1056Claude Code memotong deskripsi alat dan instruksi server pada 2KB masing-masing. Jaga agar ringkas untuk menghindari pemotongan, dan letakkan detail penting di dekat awal.

981 1057 

982### Konfigurasi pencarian alat1058<h3 id="configure-tool-search">

1059 Konfigurasi pencarian alat

1060</h3>

983 1061 

984Pencarian alat diaktifkan secara default: alat MCP ditangguhkan dan ditemukan sesuai permintaan. Claude Code menonaktifkannya secara default di Vertex AI. Pencarian alat juga dinonaktifkan ketika `ANTHROPIC_BASE_URL` menunjuk ke host non-pihak pertama, karena sebagian besar proxy tidak meneruskan blok `tool_reference`. Atur `ENABLE_TOOL_SEARCH` secara eksplisit untuk mengganti fallback mana pun.1062Pencarian alat diaktifkan secara default: alat MCP ditangguhkan dan ditemukan sesuai permintaan. Claude Code menonaktifkannya secara default di Vertex AI. Pencarian alat juga dinonaktifkan ketika `ANTHROPIC_BASE_URL` menunjuk ke host non-pihak pertama, karena sebagian besar proxy tidak meneruskan blok `tool_reference`. Atur `ENABLE_TOOL_SEARCH` secara eksplisit untuk mengganti fallback mana pun.

985 1063 

986Pencarian alat memerlukan model yang mendukung blok `tool_reference`: Sonnet 4 dan lebih baru, atau Opus 4 dan lebih baru. Model Haiku tidak mendukungnya. Di Vertex AI, pencarian alat didukung untuk Claude Sonnet 4.5 dan lebih baru serta Claude Opus 4.5 dan lebih baru.1064Pencarian alat memerlukan model yang mendukung blok `tool_reference`. Model Haiku tidak mendukungnya. Di Vertex AI, pencarian alat didukung untuk Claude Sonnet 4.5 dan lebih baru serta Claude Opus 4.5 dan lebih baru.

987 1065 

988Kontrol perilaku pencarian alat dengan variabel lingkungan `ENABLE_TOOL_SEARCH`:1066Kontrol perilaku pencarian alat dengan variabel lingkungan `ENABLE_TOOL_SEARCH`:

989 1067 


1015}1093}

1016```1094```

1017 1095 

1018### Keluarkan server dari penundaan1096<h3 id="exempt-a-server-from-deferral">

1097 Keluarkan server dari penundaan

1098</h3>

1019 1099 

1020Jika alat server harus selalu terlihat oleh Claude tanpa langkah pencarian, atur `alwaysLoad` ke `true` dalam konfigurasi server tersebut. Setiap alat dari server tersebut kemudian dimuat ke konteks saat startup sesi terlepas dari pengaturan `ENABLE_TOOL_SEARCH`. Gunakan ini untuk sejumlah kecil alat yang Claude butuhkan di setiap putaran, karena setiap alat sebelumnya mengonsumsi konteks yang sebaliknya akan tersedia untuk percakapan Anda.1100Jika alat server harus selalu terlihat oleh Claude tanpa langkah pencarian, atur `alwaysLoad` ke `true` dalam konfigurasi server tersebut. Setiap alat dari server tersebut kemudian dimuat ke konteks saat startup sesi terlepas dari pengaturan `ENABLE_TOOL_SEARCH`. Gunakan ini untuk sejumlah kecil alat yang Claude butuhkan di setiap putaran, karena setiap alat sebelumnya mengonsumsi konteks yang sebaliknya akan tersedia untuk percakapan Anda.

1021 1101 


1037 1117 

1038Pengaturan `alwaysLoad: true` juga memblokir startup sampai server terhubung, dibatasi pada timeout koneksi standar 5 detik. Ini berlaku bahkan ketika MCP startup adalah [non-blocking secara default](/id/env-vars), karena alat harus ada saat prompt pertama dibangun. Server lain terus terhubung di latar belakang.1118Pengaturan `alwaysLoad: true` juga memblokir startup sampai server terhubung, dibatasi pada timeout koneksi standar 5 detik. Ini berlaku bahkan ketika MCP startup adalah [non-blocking secara default](/id/env-vars), karena alat harus ada saat prompt pertama dibangun. Server lain terus terhubung di latar belakang.

1039 1119 

1040## Gunakan prompt MCP sebagai perintah1120<h2 id="use-mcp-prompts-as-commands">

1121 Gunakan prompt MCP sebagai perintah

1122</h2>

1041 1123 

1042Server MCP dapat mengekspos prompt yang menjadi tersedia sebagai perintah di Claude Code.1124Server MCP dapat mengekspos prompt yang menjadi tersedia sebagai perintah di Claude Code.

1043 1125 

1044### Jalankan prompt MCP1126<h3 id="execute-mcp-prompts">

1127 Jalankan prompt MCP

1128</h3>

1045 1129 

1046<Steps>1130<Steps>

1047 <Step title="Temukan prompt yang tersedia">1131 <Step title="Temukan prompt yang tersedia">


1076 * Nama server dan prompt dinormalisasi (spasi menjadi garis bawah)1160 * Nama server dan prompt dinormalisasi (spasi menjadi garis bawah)

1077</Tip>1161</Tip>

1078 1162 

1079## Konfigurasi MCP yang dikelola1163<h2 id="managed-mcp-configuration">

1164 Konfigurasi MCP yang dikelola

1165</h2>

1080 1166 

1081Untuk organisasi yang memerlukan kontrol terpusat atas server MCP mana yang dapat dihubungkan pengguna, lihat [Konfigurasi MCP yang dikelola](/id/managed-mcp). Ini mencakup penerapan set server tetap dengan `managed-mcp.json`, pembatasan server dengan `allowedMcpServers` dan `deniedMcpServers`, dan apa yang dilihat pengguna ketika server diblokir.1167Untuk organisasi yang memerlukan kontrol terpusat atas server MCP mana yang dapat dihubungkan pengguna, lihat [Konfigurasi MCP yang dikelola](/id/managed-mcp). Ini mencakup penerapan set server tetap dengan `managed-mcp.json`, pembatasan server dengan `allowedMcpServers` dan `deniedMcpServers`, dan apa yang dilihat pengguna ketika server diblokir.

memory.md +97 −37

Details

18* [Mengonfigurasi auto memory](#auto-memory) agar Claude membuat catatan secara otomatis18* [Mengonfigurasi auto memory](#auto-memory) agar Claude membuat catatan secara otomatis

19* [Troubleshoot](#troubleshoot-memory-issues) ketika instruksi tidak diikuti19* [Troubleshoot](#troubleshoot-memory-issues) ketika instruksi tidak diikuti

20 20 

21## CLAUDE.md vs auto memory21<h2 id="claude-md-vs-auto-memory">

22 CLAUDE.md vs auto memory

23</h2>

22 24 

23Claude Code memiliki dua sistem memori yang saling melengkapi. Keduanya dimuat di awal setiap percakapan. Claude memperlakukan mereka sebagai konteks, bukan konfigurasi yang diberlakukan. Untuk memblokir suatu tindakan terlepas dari apa yang Claude putuskan, gunakan [hook PreToolUse](/id/hooks-guide) sebagai gantinya. Semakin spesifik dan ringkas instruksi Anda, semakin konsisten Claude mengikutinya.25Claude Code memiliki dua sistem memori yang saling melengkapi. Keduanya dimuat di awal setiap percakapan. Claude memperlakukan mereka sebagai konteks, bukan konfigurasi yang diberlakukan. Untuk memblokir suatu tindakan terlepas dari apa yang Claude putuskan, gunakan [hook PreToolUse](/id/hooks-guide) sebagai gantinya. Semakin spesifik dan ringkas instruksi Anda, semakin konsisten Claude mengikutinya.

24 26 


34 36 

35Subagents juga dapat mempertahankan auto memory mereka sendiri. Lihat [konfigurasi subagent](/id/sub-agents#enable-persistent-memory) untuk detail.37Subagents juga dapat mempertahankan auto memory mereka sendiri. Lihat [konfigurasi subagent](/id/sub-agents#enable-persistent-memory) untuk detail.

36 38 

37## File CLAUDE.md39<h2 id="claude-md-files">

40 File CLAUDE.md

41</h2>

38 42 

39File CLAUDE.md adalah file markdown yang memberikan Claude instruksi persisten untuk proyek, alur kerja pribadi Anda, atau seluruh organisasi Anda. Anda menulis file ini dalam teks biasa; Claude membacanya di awal setiap sesi.43File CLAUDE.md adalah file markdown yang memberikan Claude instruksi persisten untuk proyek, alur kerja pribadi Anda, atau seluruh organisasi Anda. Anda menulis file ini dalam teks biasa; Claude membacanya di awal setiap sesi.

40 44 

41### Kapan harus menambahkan ke CLAUDE.md45<h3 id="when-to-add-to-claude-md">

46 Kapan harus menambahkan ke CLAUDE.md

47</h3>

42 48 

43Perlakukan CLAUDE.md sebagai tempat Anda menulis apa yang sebaliknya akan Anda jelaskan kembali. Tambahkan ke dalamnya ketika:49Perlakukan CLAUDE.md sebagai tempat Anda menulis apa yang sebaliknya akan Anda jelaskan kembali. Tambahkan ke dalamnya ketika:

44 50 


49 55 

50Pertahankan fakta yang seharusnya Claude pegang di setiap sesi: perintah build, konvensi, tata letak proyek, aturan "selalu lakukan X". Jika entri adalah prosedur multi-langkah atau hanya penting untuk satu bagian dari basis kode, pindahkan ke [skill](/id/skills) atau [aturan bersyarat jalur](#organize-rules-with-claude/rules/) sebagai gantinya. [Gambaran umum ekstensi](/id/features-overview#build-your-setup-over-time) mencakup kapan menggunakan setiap mekanisme.56Pertahankan fakta yang seharusnya Claude pegang di setiap sesi: perintah build, konvensi, tata letak proyek, aturan "selalu lakukan X". Jika entri adalah prosedur multi-langkah atau hanya penting untuk satu bagian dari basis kode, pindahkan ke [skill](/id/skills) atau [aturan bersyarat jalur](#organize-rules-with-claude/rules/) sebagai gantinya. [Gambaran umum ekstensi](/id/features-overview#build-your-setup-over-time) mencakup kapan menggunakan setiap mekanisme.

51 57 

52### Pilih di mana menempatkan file CLAUDE.md58<h3 id="choose-where-to-put-claude-md-files">

59 Pilih di mana menempatkan file CLAUDE.md

60</h3>

53 61 

54File CLAUDE.md dapat berada di beberapa lokasi, masing-masing dengan cakupan yang berbeda. Tabel di bawah mencantumkan mereka dalam urutan pemuatan, dari cakupan terluas hingga paling spesifik, jadi instruksi proyek muncul dalam konteks setelah instruksi pengguna.62File CLAUDE.md dapat berada di beberapa lokasi, masing-masing dengan cakupan yang berbeda. Tabel di bawah mencantumkan mereka dalam urutan pemuatan, dari cakupan terluas hingga paling spesifik, jadi instruksi proyek muncul dalam konteks setelah instruksi pengguna.

55 63 


64 72 

65Untuk proyek besar, Anda dapat memecah instruksi menjadi file khusus topik menggunakan [aturan proyek](#organize-rules-with-claude/rules/). Aturan memungkinkan Anda membatasi instruksi ke tipe file atau subdirektori tertentu.73Untuk proyek besar, Anda dapat memecah instruksi menjadi file khusus topik menggunakan [aturan proyek](#organize-rules-with-claude/rules/). Aturan memungkinkan Anda membatasi instruksi ke tipe file atau subdirektori tertentu.

66 74 

67### Siapkan CLAUDE.md proyek75<h3 id="set-up-a-project-claude-md">

76 Siapkan CLAUDE.md proyek

77</h3>

68 78 

69CLAUDE.md proyek dapat disimpan di `./CLAUDE.md` atau `./.claude/CLAUDE.md`. Buat file ini dan tambahkan instruksi yang berlaku untuk siapa pun yang bekerja pada proyek: perintah build dan test, standar pengkodean, keputusan arsitektur, konvensi penamaan, dan alur kerja umum. Instruksi ini dibagikan dengan tim Anda melalui kontrol versi, jadi fokus pada standar tingkat proyek daripada preferensi pribadi.79CLAUDE.md proyek dapat disimpan di `./CLAUDE.md` atau `./.claude/CLAUDE.md`. Buat file ini dan tambahkan instruksi yang berlaku untuk siapa pun yang bekerja pada proyek: perintah build dan test, standar pengkodean, keputusan arsitektur, konvensi penamaan, dan alur kerja umum. Instruksi ini dibagikan dengan tim Anda melalui kontrol versi, jadi fokus pada standar tingkat proyek daripada preferensi pribadi.

70 80 


74 Atur `CLAUDE_CODE_NEW_INIT=1` untuk mengaktifkan alur multi-fase interaktif. `/init` menanyakan artefak mana yang akan diatur: file CLAUDE.md, skills, dan hooks. Kemudian mengeksplorasi basis kode Anda dengan subagent, mengisi celah melalui pertanyaan lanjutan, dan menyajikan proposal yang dapat ditinjau sebelum menulis file apa pun.84 Atur `CLAUDE_CODE_NEW_INIT=1` untuk mengaktifkan alur multi-fase interaktif. `/init` menanyakan artefak mana yang akan diatur: file CLAUDE.md, skills, dan hooks. Kemudian mengeksplorasi basis kode Anda dengan subagent, mengisi celah melalui pertanyaan lanjutan, dan menyajikan proposal yang dapat ditinjau sebelum menulis file apa pun.

75</Tip>85</Tip>

76 86 

77### Tulis instruksi yang efektif87<h3 id="write-effective-instructions">

88 Tulis instruksi yang efektif

89</h3>

78 90 

79File CLAUDE.md dimuat ke dalam context window di awal setiap sesi, mengonsumsi token bersama percakapan Anda. [Visualisasi context window](/id/context-window) menunjukkan di mana CLAUDE.md dimuat relatif terhadap sisa startup context. Karena mereka adalah konteks daripada konfigurasi yang diberlakukan, cara Anda menulis instruksi mempengaruhi seberapa andal Claude mengikutinya. Instruksi yang spesifik, ringkas, dan terstruktur dengan baik bekerja paling baik.91File CLAUDE.md dimuat ke dalam context window di awal setiap sesi, mengonsumsi token bersama percakapan Anda. [Visualisasi context window](/id/context-window) menunjukkan di mana CLAUDE.md dimuat relatif terhadap sisa startup context. Karena mereka adalah konteks daripada konfigurasi yang diberlakukan, cara Anda menulis instruksi mempengaruhi seberapa andal Claude mengikutinya. Instruksi yang spesifik, ringkas, dan terstruktur dengan baik bekerja paling baik.

80 92 


90 102 

91**Konsistensi**: jika dua aturan saling bertentangan, Claude mungkin memilih satu secara sembarangan. Tinjau file CLAUDE.md Anda, file CLAUDE.md bersarang di subdirektori, dan file [`.claude/rules/`](#organize-rules-with-claude/rules/) secara berkala untuk menghapus instruksi yang ketinggalan zaman atau bertentangan. Dalam monorepo, gunakan [`claudeMdExcludes`](#exclude-specific-claude-md-files) untuk melewati file CLAUDE.md dari tim lain yang tidak relevan dengan pekerjaan Anda.103**Konsistensi**: jika dua aturan saling bertentangan, Claude mungkin memilih satu secara sembarangan. Tinjau file CLAUDE.md Anda, file CLAUDE.md bersarang di subdirektori, dan file [`.claude/rules/`](#organize-rules-with-claude/rules/) secara berkala untuk menghapus instruksi yang ketinggalan zaman atau bertentangan. Dalam monorepo, gunakan [`claudeMdExcludes`](#exclude-specific-claude-md-files) untuk melewati file CLAUDE.md dari tim lain yang tidak relevan dengan pekerjaan Anda.

92 104 

93### Impor file tambahan105<h3 id="import-additional-files">

106 Impor file tambahan

107</h3>

94 108 

95File CLAUDE.md dapat mengimpor file tambahan menggunakan sintaks `@path/to/import`. File yang diimpor diperluas dan dimuat ke dalam konteks saat peluncuran bersama CLAUDE.md yang mereferensikannya.109File CLAUDE.md dapat mengimpor file tambahan menggunakan sintaks `@path/to/import`. File yang diimpor diperluas dan dimuat ke dalam konteks saat peluncuran bersama CLAUDE.md yang mereferensikannya.

96 110 


120 134 

121Untuk pendekatan yang lebih terstruktur untuk mengorganisir instruksi, lihat [`.claude/rules/`](#organize-rules-with-claude/rules/).135Untuk pendekatan yang lebih terstruktur untuk mengorganisir instruksi, lihat [`.claude/rules/`](#organize-rules-with-claude/rules/).

122 136 

123### AGENTS.md137<h3 id="agents-md">

138 AGENTS.md

139</h3>

124 140 

125Claude Code membaca `CLAUDE.md`, bukan `AGENTS.md`. Jika repositori Anda sudah menggunakan `AGENTS.md` untuk agen pengkodean lain, buat `CLAUDE.md` yang mengimpornya sehingga kedua alat membaca instruksi yang sama tanpa menduplikasinya. Anda juga dapat menambahkan instruksi khusus Claude di bawah impor. Claude memuat file yang diimpor saat awal sesi, kemudian menambahkan sisanya:141Claude Code membaca `CLAUDE.md`, bukan `AGENTS.md`. Jika repositori Anda sudah menggunakan `AGENTS.md` untuk agen pengkodean lain, buat `CLAUDE.md` yang mengimpornya sehingga kedua alat membaca instruksi yang sama tanpa menduplikasinya. Anda juga dapat menambahkan instruksi khusus Claude di bawah impor. Claude memuat file yang diimpor saat awal sesi, kemudian menambahkan sisanya:

126 142 


140 156 

141Di Windows, membuat symlink memerlukan hak istimewa Administrator atau Developer Mode, jadi gunakan impor `@AGENTS.md` sebagai gantinya.157Di Windows, membuat symlink memerlukan hak istimewa Administrator atau Developer Mode, jadi gunakan impor `@AGENTS.md` sebagai gantinya.

142 158 

143Menjalankan [`/init`](/id/commands) di repo yang sudah memiliki `AGENTS.md` membacanya dan menggabungkan bagian yang relevan ke dalam `CLAUDE.md` yang dihasilkan. Itu juga membaca konfigurasi alat lain seperti `.cursorrules` dan `.windsurfrules`.159Menjalankan [`/init`](/id/commands) di repo yang sudah memiliki `AGENTS.md` membacanya dan menggabungkan bagian yang relevan ke dalam `CLAUDE.md` yang dihasilkan. Itu juga membaca konfigurasi alat lain seperti `.cursorrules`, `.devin/rules/`, dan `.windsurfrules`.

144 160 

145### Bagaimana file CLAUDE.md dimuat161<h3 id="how-claude-md-files-load">

162 Bagaimana file CLAUDE.md dimuat

163</h3>

146 164 

147Claude Code membaca file CLAUDE.md dengan berjalan naik pohon direktori dari direktori kerja saat ini, memeriksa setiap direktori di sepanjang jalan untuk file `CLAUDE.md` dan `CLAUDE.local.md`. Ini berarti jika Anda menjalankan Claude Code di `foo/bar/`, itu memuat instruksi dari `foo/bar/CLAUDE.md`, `foo/CLAUDE.md`, dan file `CLAUDE.local.md` apa pun di sebelahnya.165Claude Code membaca file CLAUDE.md dengan berjalan naik pohon direktori dari direktori kerja saat ini, memeriksa setiap direktori di sepanjang jalan untuk file `CLAUDE.md` dan `CLAUDE.local.md`. Ini berarti jika Anda menjalankan Claude Code di `foo/bar/`, itu memuat instruksi dari `foo/bar/CLAUDE.md`, `foo/CLAUDE.md`, dan file `CLAUDE.local.md` apa pun di sebelahnya.

148 166 


154 172 

155Komentar HTML tingkat blok (`<!-- maintainer notes -->`) dalam file CLAUDE.md dihapus sebelum konten disuntikkan ke dalam konteks Claude. Gunakan mereka untuk meninggalkan catatan bagi pengelola manusia tanpa menghabiskan token konteks pada mereka. Komentar di dalam blok kode dipertahankan. Ketika Anda membuka file CLAUDE.md secara langsung dengan alat Read, komentar tetap terlihat.173Komentar HTML tingkat blok (`<!-- maintainer notes -->`) dalam file CLAUDE.md dihapus sebelum konten disuntikkan ke dalam konteks Claude. Gunakan mereka untuk meninggalkan catatan bagi pengelola manusia tanpa menghabiskan token konteks pada mereka. Komentar di dalam blok kode dipertahankan. Ketika Anda membuka file CLAUDE.md secara langsung dengan alat Read, komentar tetap terlihat.

156 174 

157#### Muat dari direktori tambahan175<h4 id="load-from-additional-directories">

176 Muat dari direktori tambahan

177</h4>

158 178 

159Flag `--add-dir` memberikan Claude akses ke direktori tambahan di luar direktori kerja utama Anda. Secara default, file CLAUDE.md dari direktori ini tidak dimuat.179Flag `--add-dir` memberikan Claude akses ke direktori tambahan di luar direktori kerja utama Anda. Secara default, file CLAUDE.md dari direktori ini tidak dimuat.

160 180 


166 186 

167Ini memuat `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, dan `CLAUDE.local.md` dari direktori tambahan. `CLAUDE.local.md` dilewati jika Anda mengecualikan `local` dari [`--setting-sources`](/id/cli-reference).187Ini memuat `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, dan `CLAUDE.local.md` dari direktori tambahan. `CLAUDE.local.md` dilewati jika Anda mengecualikan `local` dari [`--setting-sources`](/id/cli-reference).

168 188 

169### Organisir aturan dengan `.claude/rules/`189<h3 id="organize-rules-with-claude/rules/">

190 Organisir aturan dengan `.claude/rules/`

191</h3>

170 192 

171Untuk proyek yang lebih besar, Anda dapat mengorganisir instruksi menjadi beberapa file menggunakan direktori `.claude/rules/`. Ini membuat instruksi modular dan lebih mudah bagi tim untuk dipertahankan. Aturan juga dapat [dibatasi ke jalur file tertentu](#path-specific-rules), sehingga mereka hanya dimuat ke dalam konteks ketika Claude bekerja dengan file yang cocok, mengurangi kebisingan dan menghemat ruang konteks.193Untuk proyek yang lebih besar, Anda dapat mengorganisir instruksi menjadi beberapa file menggunakan direktori `.claude/rules/`. Ini membuat instruksi modular dan lebih mudah bagi tim untuk dipertahankan. Aturan juga dapat [dibatasi ke jalur file tertentu](#path-specific-rules), sehingga mereka hanya dimuat ke dalam konteks ketika Claude bekerja dengan file yang cocok, mengurangi kebisingan dan menghemat ruang konteks.

172 194 


174 Aturan dimuat ke dalam konteks setiap sesi atau ketika file yang cocok dibuka. Untuk instruksi khusus tugas yang tidak perlu berada dalam konteks sepanjang waktu, gunakan [skills](/id/skills) sebagai gantinya, yang hanya dimuat ketika Anda menginvokasinya atau ketika Claude menentukan mereka relevan dengan prompt Anda.196 Aturan dimuat ke dalam konteks setiap sesi atau ketika file yang cocok dibuka. Untuk instruksi khusus tugas yang tidak perlu berada dalam konteks sepanjang waktu, gunakan [skills](/id/skills) sebagai gantinya, yang hanya dimuat ketika Anda menginvokasinya atau ketika Claude menentukan mereka relevan dengan prompt Anda.

175</Note>197</Note>

176 198 

177#### Siapkan aturan199<h4 id="set-up-rules">

200 Siapkan aturan

201</h4>

178 202 

179Tempatkan file markdown di direktori `.claude/rules/` proyek Anda. Setiap file harus mencakup satu topik, dengan nama file deskriptif seperti `testing.md` atau `api-design.md`. Semua file `.md` ditemukan secara rekursif, jadi Anda dapat mengorganisir aturan ke dalam subdirektori seperti `frontend/` atau `backend/`:203Tempatkan file markdown di direktori `.claude/rules/` proyek Anda. Setiap file harus mencakup satu topik, dengan nama file deskriptif seperti `testing.md` atau `api-design.md`. Semua file `.md` ditemukan secara rekursif, jadi Anda dapat mengorganisir aturan ke dalam subdirektori seperti `frontend/` atau `backend/`:

180 204 


190 214 

191Aturan tanpa [frontmatter `paths`](#path-specific-rules) dimuat saat peluncuran dengan prioritas yang sama seperti `.claude/CLAUDE.md`.215Aturan tanpa [frontmatter `paths`](#path-specific-rules) dimuat saat peluncuran dengan prioritas yang sama seperti `.claude/CLAUDE.md`.

192 216 

193#### Aturan khusus jalur217<h4 id="path-specific-rules">

218 Aturan khusus jalur

219</h4>

194 220 

195Aturan dapat dibatasi ke file tertentu menggunakan frontmatter YAML dengan bidang `paths`. Aturan bersyarat ini hanya berlaku ketika Claude bekerja dengan file yang cocok dengan pola yang ditentukan.221Aturan dapat dibatasi ke file tertentu menggunakan frontmatter YAML dengan bidang `paths`. Aturan bersyarat ini hanya berlaku ketika Claude bekerja dengan file yang cocok dengan pola yang ditentukan.

196 222 


229---255---

230```256```

231 257 

232#### Bagikan aturan lintas proyek dengan symlinks258<h4 id="share-rules-across-projects-with-symlinks">

259 Bagikan aturan lintas proyek dengan symlinks

260</h4>

233 261 

234Direktori `.claude/rules/` mendukung symlinks, jadi Anda dapat mempertahankan set aturan bersama dan menautkannya ke beberapa proyek. Symlinks diselesaikan dan dimuat secara normal, dan symlinks melingkar terdeteksi dan ditangani dengan anggun.262Direktori `.claude/rules/` mendukung symlinks, jadi Anda dapat mempertahankan set aturan bersama dan menautkannya ke beberapa proyek. Symlinks diselesaikan dan dimuat secara normal, dan symlinks melingkar terdeteksi dan ditangani dengan anggun.

235 263 


240ln -s ~/company-standards/security.md .claude/rules/security.md268ln -s ~/company-standards/security.md .claude/rules/security.md

241```269```

242 270 

243#### Aturan tingkat pengguna271<h4 id="user-level-rules">

272 Aturan tingkat pengguna

273</h4>

244 274 

245Aturan pribadi di `~/.claude/rules/` berlaku untuk setiap proyek di mesin Anda. Gunakan untuk preferensi yang bukan khusus proyek:275Aturan pribadi di `~/.claude/rules/` berlaku untuk setiap proyek di mesin Anda. Gunakan untuk preferensi yang bukan khusus proyek:

246 276 


252 282 

253Aturan tingkat pengguna dimuat sebelum aturan proyek, memberikan aturan proyek prioritas lebih tinggi.283Aturan tingkat pengguna dimuat sebelum aturan proyek, memberikan aturan proyek prioritas lebih tinggi.

254 284 

255### Kelola CLAUDE.md untuk tim besar285<h3 id="manage-claude-md-for-large-teams">

286 Kelola CLAUDE.md untuk tim besar

287</h3>

256 288 

257Untuk organisasi yang menerapkan Claude Code di seluruh tim, Anda dapat memusatkan instruksi dan mengontrol file CLAUDE.md mana yang dimuat.289Untuk organisasi yang menerapkan Claude Code di seluruh tim, Anda dapat memusatkan instruksi dan mengontrol file CLAUDE.md mana yang dimuat.

258 290 

259#### Terapkan CLAUDE.md di seluruh organisasi291<h4 id="deploy-organization-wide-claude-md">

292 Terapkan CLAUDE.md di seluruh organisasi

293</h4>

260 294 

261Organisasi dapat menerapkan CLAUDE.md yang dikelola secara terpusat yang berlaku untuk semua pengguna di mesin. File ini tidak dapat dikecualikan oleh pengaturan individual.295Organisasi dapat menerapkan CLAUDE.md yang dikelola secara terpusat yang berlaku untuk semua pengguna di mesin. File ini tidak dapat dikecualikan oleh pengaturan individual.

262 296 


302 336 

303Aturan pengaturan diberlakukan oleh klien terlepas dari apa yang Claude putuskan untuk dilakukan. Instruksi CLAUDE.md membentuk perilaku Claude tetapi bukan lapisan penegakan keras.337Aturan pengaturan diberlakukan oleh klien terlepas dari apa yang Claude putuskan untuk dilakukan. Instruksi CLAUDE.md membentuk perilaku Claude tetapi bukan lapisan penegakan keras.

304 338 

305#### Kecualikan file CLAUDE.md tertentu339<h4 id="exclude-specific-claude-md-files">

340 Kecualikan file CLAUDE.md tertentu

341</h4>

306 342 

307Dalam monorepo besar, file CLAUDE.md leluhur mungkin berisi instruksi yang tidak relevan dengan pekerjaan Anda. Pengaturan `claudeMdExcludes` memungkinkan Anda melewati file tertentu berdasarkan jalur atau pola glob.343Dalam monorepo besar, file CLAUDE.md leluhur mungkin berisi instruksi yang tidak relevan dengan pekerjaan Anda. Pengaturan `claudeMdExcludes` memungkinkan Anda melewati file tertentu berdasarkan jalur atau pola glob.

308 344 


321 357 

322File CLAUDE.md kebijakan terkelola tidak dapat dikecualikan. Ini memastikan instruksi di seluruh organisasi selalu berlaku terlepas dari pengaturan individual.358File CLAUDE.md kebijakan terkelola tidak dapat dikecualikan. Ini memastikan instruksi di seluruh organisasi selalu berlaku terlepas dari pengaturan individual.

323 359 

324## Auto memory360<h2 id="auto-memory">

361 Auto memory

362</h2>

325 363 

326Auto memory memungkinkan Claude mengumpulkan pengetahuan lintas sesi tanpa Anda menulis apa pun. Claude menyimpan catatan untuk dirinya sendiri saat bekerja: perintah build, wawasan debugging, catatan arsitektur, preferensi gaya kode, dan kebiasaan alur kerja. Claude tidak menyimpan sesuatu setiap sesi. Itu memutuskan apa yang layak diingat berdasarkan apakah informasi akan berguna dalam percakapan masa depan.364Auto memory memungkinkan Claude mengumpulkan pengetahuan lintas sesi tanpa Anda menulis apa pun. Claude menyimpan catatan untuk dirinya sendiri saat bekerja: perintah build, wawasan debugging, catatan arsitektur, preferensi gaya kode, dan kebiasaan alur kerja. Claude tidak menyimpan sesuatu setiap sesi. Itu memutuskan apa yang layak diingat berdasarkan apakah informasi akan berguna dalam percakapan masa depan.

327 365 


329 Auto memory memerlukan Claude Code v2.1.59 atau lebih baru. Periksa versi Anda dengan `claude --version`.367 Auto memory memerlukan Claude Code v2.1.59 atau lebih baru. Periksa versi Anda dengan `claude --version`.

330</Note>368</Note>

331 369 

332### Aktifkan atau nonaktifkan auto memory370<h3 id="enable-or-disable-auto-memory">

371 Aktifkan atau nonaktifkan auto memory

372</h3>

333 373 

334Auto memory aktif secara default. Untuk mengalihkannya, buka `/memory` dalam sesi dan gunakan toggle auto memory, atau atur `autoMemoryEnabled` dalam pengaturan proyek Anda:374Auto memory aktif secara default. Untuk mengalihkannya, buka `/memory` dalam sesi dan gunakan toggle auto memory, atau atur `autoMemoryEnabled` dalam pengaturan proyek Anda:

335 375 


341 381 

342Untuk menonaktifkan auto memory melalui variabel lingkungan, atur `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`.382Untuk menonaktifkan auto memory melalui variabel lingkungan, atur `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`.

343 383 

344### Lokasi penyimpanan384<h3 id="storage-location">

385 Lokasi penyimpanan

386</h3>

345 387 

346Setiap proyek mendapatkan direktori memori sendiri di `~/.claude/projects/<project>/memory/`. Jalur `<project>` berasal dari repositori git, jadi semua worktrees dan subdirektori dalam repo yang sama berbagi satu direktori auto memory. Di luar repo git, root proyek digunakan sebagai gantinya.388Setiap proyek mendapatkan direktori memori sendiri di `~/.claude/projects/<project>/memory/`. Jalur `<project>` berasal dari repositori git, jadi semua worktrees dan subdirektori dalam repo yang sama berbagi satu direktori auto memory. Di luar repo git, root proyek digunakan sebagai gantinya.

347 389 


369 411 

370Auto memory adalah mesin-lokal. Semua worktrees dan subdirektori dalam repositori git yang sama berbagi satu direktori auto memory. File tidak dibagikan di seluruh mesin atau lingkungan cloud.412Auto memory adalah mesin-lokal. Semua worktrees dan subdirektori dalam repositori git yang sama berbagi satu direktori auto memory. File tidak dibagikan di seluruh mesin atau lingkungan cloud.

371 413 

372### Bagaimana cara kerjanya414<h3 id="how-it-works">

415 Bagaimana cara kerjanya

416</h3>

373 417 

374200 baris pertama `MEMORY.md`, atau 25KB pertama, mana pun yang lebih dulu, dimuat di awal setiap percakapan. Konten di luar batas itu tidak dimuat saat awal sesi. Claude membuat `MEMORY.md` ringkas dengan memindahkan catatan terperinci ke file topik terpisah.418200 baris pertama `MEMORY.md`, atau 25KB pertama, mana pun yang lebih dulu, dimuat di awal setiap percakapan. Konten di luar batas itu tidak dimuat saat awal sesi. Claude membuat `MEMORY.md` ringkas dengan memindahkan catatan terperinci ke file topik terpisah.

375 419 


379 423 

380Claude membaca dan menulis file memori selama sesi Anda. Ketika Anda melihat "Writing memory" atau "Recalled memory" di antarmuka Claude Code, Claude secara aktif memperbarui atau membaca dari `~/.claude/projects/<project>/memory/`.424Claude membaca dan menulis file memori selama sesi Anda. Ketika Anda melihat "Writing memory" atau "Recalled memory" di antarmuka Claude Code, Claude secara aktif memperbarui atau membaca dari `~/.claude/projects/<project>/memory/`.

381 425 

382### Audit dan edit memori Anda426<h3 id="audit-and-edit-your-memory">

427 Audit dan edit memori Anda

428</h3>

383 429 

384File auto memory adalah markdown biasa yang dapat Anda edit atau hapus kapan saja. Jalankan [`/memory`](#view-and-edit-with-memory) untuk menelusuri dan membuka file memori dari dalam sesi.430File auto memory adalah markdown biasa yang dapat Anda edit atau hapus kapan saja. Jalankan [`/memory`](#view-and-edit-with-%2Fmemory) untuk menelusuri dan membuka file memori dari dalam sesi.

385 431 

386## Lihat dan edit dengan `/memory`432<h2 id="view-and-edit-with-/memory">

433 Lihat dan edit dengan `/memory`

434</h2>

387 435 

388Perintah `/memory` mencantumkan semua file CLAUDE.md, CLAUDE.local.md, dan rules yang dimuat dalam sesi saat ini, memungkinkan Anda mengalihkan auto memory aktif atau mati, dan menyediakan tautan untuk membuka folder auto memory. Pilih file apa pun untuk membukanya di editor Anda.436Perintah `/memory` mencantumkan semua file CLAUDE.md, CLAUDE.local.md, dan rules yang dimuat dalam sesi saat ini, memungkinkan Anda mengalihkan auto memory aktif atau mati, dan menyediakan tautan untuk membuka folder auto memory. Pilih file apa pun untuk membukanya di editor Anda.

389 437 

390Ketika Anda meminta Claude untuk mengingat sesuatu, seperti "selalu gunakan pnpm, bukan npm" atau "ingat bahwa tes API memerlukan instans Redis lokal," Claude menyimpannya ke auto memory. Untuk menambahkan instruksi ke CLAUDE.md sebagai gantinya, minta Claude secara langsung, seperti "tambahkan ini ke CLAUDE.md," atau edit file sendiri melalui `/memory`.438Ketika Anda meminta Claude untuk mengingat sesuatu, seperti "selalu gunakan pnpm, bukan npm" atau "ingat bahwa tes API memerlukan instans Redis lokal," Claude menyimpannya ke auto memory. Untuk menambahkan instruksi ke CLAUDE.md sebagai gantinya, minta Claude secara langsung, seperti "tambahkan ini ke CLAUDE.md," atau edit file sendiri melalui `/memory`.

391 439 

392## Troubleshoot masalah memori440<h2 id="troubleshoot-memory-issues">

441 Troubleshoot memory issues

442</h2>

393 443 

394Ini adalah masalah paling umum dengan CLAUDE.md dan auto memory, bersama dengan langkah-langkah untuk men-debug mereka.444Ini adalah masalah paling umum dengan CLAUDE.md dan auto memory, bersama dengan langkah-langkah untuk men-debug mereka.

395 445 

396### Claude tidak mengikuti CLAUDE.md saya446<h3 id="claude-isn’t-following-my-claude-md">

447 Claude isn't following my CLAUDE.md

448</h3>

397 449 

398Konten CLAUDE.md disampaikan sebagai pesan pengguna setelah prompt sistem, bukan sebagai bagian dari prompt sistem itu sendiri. Claude membacanya dan mencoba mengikutinya, tetapi tidak ada jaminan kepatuhan ketat, terutama untuk instruksi yang samar atau bertentangan.450Konten CLAUDE.md disampaikan sebagai pesan pengguna setelah prompt sistem, bukan sebagai bagian dari prompt sistem itu sendiri. Claude membacanya dan mencoba mengikutinya, tetapi tidak ada jaminan kepatuhan ketat, terutama untuk instruksi yang samar atau bertentangan.

399 451 

400Untuk men-debug:452Untuk men-debug:

401 453 

402* Jalankan `/memory` untuk memverifikasi file CLAUDE.md dan CLAUDE.local.md Anda dimuat. Jika file tidak terdaftar, Claude tidak dapat melihatnya.454* Jalankan `/memory` untuk memverifikasi file CLAUDE.md dan CLAUDE.local.md Anda dimuat. Jika file tidak terdaftar, Claude tidak dapat melihatnya.

403* Periksa bahwa CLAUDE.md yang relevan berada di lokasi yang dimuat untuk sesi Anda (lihat [Pilih di mana menempatkan file CLAUDE.md](#choose-where-to-put-claude-md-files)).455* Periksa bahwa CLAUDE.md yang relevan berada di lokasi yang dimuat untuk sesi Anda (lihat [Choose where to put CLAUDE.md files](#choose-where-to-put-claude-md-files)).

404* Buat instruksi lebih spesifik. "Gunakan indentasi 2 spasi" bekerja lebih baik daripada "format kode dengan baik."456* Buat instruksi lebih spesifik. "Gunakan indentasi 2 spasi" bekerja lebih baik daripada "format kode dengan baik."

405* Cari instruksi yang bertentangan di seluruh file CLAUDE.md. Jika dua file memberikan panduan berbeda untuk perilaku yang sama, Claude mungkin memilih satu secara sembarangan.457* Cari instruksi yang bertentangan di seluruh file CLAUDE.md. Jika dua file memberikan panduan berbeda untuk perilaku yang sama, Claude mungkin memilih satu secara sembarangan.

406 458 

407Jika instruksi adalah sesuatu yang harus berjalan pada titik tertentu, seperti sebelum setiap commit atau setelah setiap pengeditan file, tulislah sebagai [hook](/id/hooks-guide) sebagai gantinya. Hook dieksekusi sebagai perintah shell pada peristiwa siklus hidup tetap dan berlaku terlepas dari apa yang Claude putuskan untuk lakukan.459Jika instruksi adalah sesuatu yang harus berjalan pada titik tertentu, seperti sebelum setiap commit atau setelah setiap pengeditan file, tulislah sebagai [hook](/id/hooks-guide) sebagai gantinya. Hooks dieksekusi sebagai perintah shell pada peristiwa siklus hidup tetap dan berlaku terlepas dari apa yang Claude putuskan untuk lakukan.

408 460 

409Untuk instruksi yang Anda inginkan di tingkat prompt sistem, gunakan [`--append-system-prompt`](/id/cli-reference#system-prompt-flags). Ini harus dilewatkan setiap invokasi, jadi lebih cocok untuk skrip dan otomasi daripada penggunaan interaktif.461Untuk instruksi yang Anda inginkan di tingkat prompt sistem, gunakan [`--append-system-prompt`](/id/cli-reference#system-prompt-flags). Ini harus dilewatkan setiap invokasi, jadi lebih cocok untuk skrip dan otomasi daripada penggunaan interaktif.

410 462 


412 Gunakan [hook `InstructionsLoaded`](/id/hooks#instructionsloaded) untuk mencatat dengan tepat file instruksi mana yang dimuat, kapan mereka dimuat, dan mengapa. Ini berguna untuk men-debug aturan khusus jalur atau file yang dimuat malas di subdirektori.464 Gunakan [hook `InstructionsLoaded`](/id/hooks#instructionsloaded) untuk mencatat dengan tepat file instruksi mana yang dimuat, kapan mereka dimuat, dan mengapa. Ini berguna untuk men-debug aturan khusus jalur atau file yang dimuat malas di subdirektori.

413</Tip>465</Tip>

414 466 

415### Saya tidak tahu apa yang disimpan auto memory467<h3 id="i-don’t-know-what-auto-memory-saved">

468 I don't know what auto memory saved

469</h3>

416 470 

417Jalankan `/memory` dan pilih folder auto memory untuk menelusuri apa yang telah disimpan Claude. Semuanya adalah markdown biasa yang dapat Anda baca, edit, atau hapus.471Jalankan `/memory` dan pilih folder auto memory untuk menelusuri apa yang telah disimpan Claude. Semuanya adalah markdown biasa yang dapat Anda baca, edit, atau hapus.

418 472 

419### CLAUDE.md saya terlalu besar473<h3 id="my-claude-md-is-too-large">

474 My CLAUDE.md is too large

475</h3>

420 476 

421File di atas 200 baris mengonsumsi lebih banyak konteks dan dapat mengurangi kepatuhan. Gunakan [aturan yang dibatasi jalur](#path-specific-rules) untuk memuat instruksi hanya ketika Claude bekerja dengan file yang cocok, atau pangkas konten yang tidak diperlukan dalam setiap sesi. Memisahkan ke dalam [impor `@path`](#import-additional-files) membantu organisasi tetapi tidak mengurangi konteks, karena file yang diimpor dimuat saat peluncuran.477File di atas 200 baris mengonsumsi lebih banyak konteks dan dapat mengurangi kepatuhan. Gunakan [path-scoped rules](#path-specific-rules) untuk memuat instruksi hanya ketika Claude bekerja dengan file yang cocok, atau pangkas konten yang tidak diperlukan dalam setiap sesi. Memisahkan ke dalam [impor `@path`](#import-additional-files) membantu organisasi tetapi tidak mengurangi konteks, karena file yang diimpor dimuat saat peluncuran.

422 478 

423### Instruksi tampak hilang setelah `/compact`479<h3 id="instructions-seem-lost-after-/compact">

480 Instructions seem lost after `/compact`

481</h3>

424 482 

425CLAUDE.md root proyek bertahan dari pemadatan: setelah `/compact`, Claude membaca ulang dari disk dan menyuntikkannya kembali ke dalam sesi. File CLAUDE.md bersarang di subdirektori tidak disuntikkan kembali secara otomatis; mereka dimuat ulang saat berikutnya Claude membaca file di subdirektori tersebut.483CLAUDE.md root proyek bertahan dari pemadatan: setelah `/compact`, Claude membaca ulang dari disk dan menyuntikkannya kembali ke dalam sesi. File CLAUDE.md bersarang di subdirektori tidak disuntikkan kembali secara otomatis; mereka dimuat ulang saat berikutnya Claude membaca file di subdirektori tersebut.

426 484 

427Jika instruksi hilang setelah pemadatan, itu diberikan hanya dalam percakapan atau berada di CLAUDE.md bersarang yang belum dimuat ulang. Tambahkan instruksi percakapan ke CLAUDE.md untuk membuatnya bertahan. Lihat [Apa yang bertahan pemadatan](/id/context-window#what-survives-compaction) untuk rincian lengkap.485Jika instruksi hilang setelah pemadatan, itu diberikan hanya dalam percakapan atau berada di CLAUDE.md bersarang yang belum dimuat ulang. Tambahkan instruksi percakapan ke CLAUDE.md untuk membuatnya bertahan. Lihat [What survives compaction](/id/context-window#what-survives-compaction) untuk rincian lengkap.

428 486 

429Lihat [Tulis instruksi yang efektif](#write-effective-instructions) untuk panduan tentang ukuran, struktur, dan spesifisitas.487Lihat [Write effective instructions](#write-effective-instructions) untuk panduan tentang ukuran, struktur, dan spesifisitas.

430 488 

431## Sumber daya terkait489<h2 id="related-resources">

490 Sumber daya terkait

491</h2>

432 492 

433* [Debug konfigurasi Anda](/id/debug-your-config): diagnosis mengapa CLAUDE.md atau pengaturan tidak berlaku493* [Debug konfigurasi Anda](/id/debug-your-config): diagnosis mengapa CLAUDE.md atau pengaturan tidak berlaku

434* [Skills](/id/skills): paket alur kerja yang dapat diulang yang dimuat sesuai permintaan494* [Skills](/id/skills): paket alur kerja yang dapat diulang yang dimuat sesuai permintaan

Details

6 6 

7> Pelajari tentang mengonfigurasi Claude Code melalui Microsoft Foundry, termasuk setup, konfigurasi, dan pemecahan masalah.7> Pelajari tentang mengonfigurasi Claude Code melalui Microsoft Foundry, termasuk setup, konfigurasi, dan pemecahan masalah.

8 8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

79<ContactSalesCard surface="foundry" />

80 

9<h2 id="prerequisites">81<h2 id="prerequisites">

10 Prasyarat82 Prasyarat

11</h2>83</h2>


17* Azure CLI diinstal dan dikonfigurasi (opsional - hanya diperlukan jika Anda tidak memiliki mekanisme lain untuk mendapatkan kredensial)89* Azure CLI diinstal dan dikonfigurasi (opsional - hanya diperlukan jika Anda tidak memiliki mekanisme lain untuk mendapatkan kredensial)

18 90 

19<Note>91<Note>

20 Jika Anda menerapkan Claude Code ke beberapa pengguna, [pin versi model Anda](#4-pin-model-versions) untuk mencegah kerusakan ketika Anthropic merilis model baru.92 Jika Anda menerapkan Claude Code ke beberapa pengguna, [pin versi model Anda](#4-pin-model-versions) sebelum melakukan peluncuran.

21</Note>93</Note>

22 94 

23<h2 id="setup">95<h2 id="setup">


90</h3>162</h3>

91 163 

92<Warning>164<Warning>

93 Pin versi model spesifik untuk setiap deployment. Jika Anda menggunakan alias model (`sonnet`, `opus`, `haiku`) tanpa pinning, Claude Code mungkin mencoba menggunakan versi model yang lebih baru yang tidak tersedia di akun Foundry Anda, merusak pengguna yang ada ketika Anthropic merilis pembaruan. Ketika Anda membuat deployment Azure, pilih versi model spesifik daripada "auto-update to latest."165 Tetapkan versi model spesifik untuk setiap deployment. Tanpa penentuan, alias model seperti `sonnet` dan `opus` diselesaikan ke default bawaan Claude Code untuk Foundry, yang dapat tertinggal dari rilis terbaru dan mungkin belum tersedia di akun Anda. Foundry tidak memiliki pemeriksaan model startup, jadi permintaan gagal ketika default tidak tersedia. Ketika Anda membuat deployment Azure, pilih versi model spesifik daripada "auto-update to latest."

94</Warning>166</Warning>

95 167 

96Atur variabel model agar sesuai dengan nama deployment yang Anda buat di langkah 1.168Atur variabel model agar sesuai dengan nama deployment yang Anda buat di langkah 1.

model-config.md +161 −39

Details

32| Alias model | Perilaku |32| Alias model | Perilaku |

33| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |33| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

34| **`default`** | Nilai khusus yang menghapus penggantian model apa pun dan kembali ke model yang direkomendasikan untuk jenis akun Anda. Bukan sendiri alias model |34| **`default`** | Nilai khusus yang menghapus penggantian model apa pun dan kembali ke model yang direkomendasikan untuk jenis akun Anda. Bukan sendiri alias model |

35| **`best`** | Menggunakan model yang paling mampu tersedia, saat ini setara dengan `opus` |35| **`best`** | Menggunakan Fable 5 di mana organisasi Anda memiliki akses ke dalamnya, jika tidak maka model Opus terbaru |

36| **`fable`** | Menggunakan Claude Fable 5 untuk tugas-tugas tersulit dan paling lama Anda |

36| **`sonnet`** | Menggunakan model Sonnet terbaru untuk tugas coding sehari-hari |37| **`sonnet`** | Menggunakan model Sonnet terbaru untuk tugas coding sehari-hari |

37| **`opus`** | Menggunakan model Opus terbaru untuk tugas penalaran kompleks |38| **`opus`** | Menggunakan model Opus terbaru untuk tugas penalaran kompleks |

38| **`haiku`** | Menggunakan model Haiku yang cepat dan efisien untuk tugas sederhana |39| **`haiku`** | Menggunakan model Haiku yang cepat dan efisien untuk tugas sederhana |


48 Opus 4.8 memerlukan Claude Code v2.1.154 atau lebih baru. Jalankan `claude update` untuk meningkatkan.49 Opus 4.8 memerlukan Claude Code v2.1.154 atau lebih baru. Jalankan `claude update` untuk meningkatkan.

49</Note>50</Note>

50 51 

52<h3 id="work-with-fable-5">

53 Bekerja dengan Fable 5

54</h3>

55 

56[Claude Fable 5](https://platform.claude.com/docs/id/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5) adalah model paling mampu di Claude Code, cocok untuk tugas yang lebih besar dari satu sesi. Ini mempertahankan sesi otonomi yang panjang, menyelidiki sebelum bertindak, dan memverifikasi pekerjaan lebih sering daripada model yang lebih kecil.

57 

58Fable 5 bukan model default. Pilih dengan `/model fable`. Permintaan yang ditandai oleh pengklasifikasi keamanannya, paling sering di domain keamanan siber dan biologi, memicu [fallback model otomatis](#automatic-model-fallback).

59 

60Untuk mendapatkan hasil maksimal dari Fable 5:

61 

62* **Jelaskan hasilnya, bukan langkah-langkahnya**: berikan hasil yang Anda inginkan dan biarkan ia merencanakan jalurnya. Untuk membuatnya terus bekerja sampai hasil itu terpenuhi, [tetapkan tujuan](/id/goal).

63* **Berikan masalah yang ambigu**: investigasi akar penyebab, debugging pemadaman, dan keputusan arsitektur adalah tempat investigasi dan verifikasi ekstra memberikan hasil.

64* **Lewati pengingat verifikasi**: ia memverifikasi pekerjaan sendiri dengan prompting yang lebih sedikit, jadi pengingat untuk menguji atau memeriksa biasanya tidak perlu.

65* **Ukur tugas yang lebih besar**: berikan pekerjaan yang biasanya akan Anda pecah menjadi beberapa bagian. Ia mempertahankan sesi panjang tanpa kehilangan benang merah.

66 

67<Note>

68 Fable 5 memerlukan Claude Code v2.1.170 atau lebih baru. Versi yang lebih lama tidak menampilkan Fable 5 di pemilih model dan tidak dapat memilihnya. Jalankan `claude update` untuk meningkatkan. Fable 5 tidak tersedia di bawah [zero data retention](/id/zero-data-retention), di mana pemilih `/model` baik menghilangkannya atau menampilkannya dinonaktifkan.

69</Note>

70 

51<h3 id="setting-your-model">71<h3 id="setting-your-model">

52 Mengatur model Anda72 Mengatur model Anda

53</h3>73</h3>


101 121 

102Administrator enterprise dapat menggunakan `availableModels` dalam [pengaturan terkelola atau kebijakan](/id/settings#settings-files) untuk membatasi model mana yang dapat dipilih pengguna.122Administrator enterprise dapat menggunakan `availableModels` dalam [pengaturan terkelola atau kebijakan](/id/settings#settings-files) untuk membatasi model mana yang dapat dipilih pengguna.

103 123 

104Ketika `availableModels` diatur, pengguna tidak dapat beralih ke model yang tidak ada dalam daftar melalui `/model`, flag `--model`, atau variabel lingkungan `ANTHROPIC_MODEL`.124Ketika `availableModels` diatur, daftar izin berlaku di mana pun pengguna dapat menentukan model:

125 

126* **Model sesi utama**: `/model`, flag `--model`, dan variabel lingkungan `ANTHROPIC_MODEL`

127* **Resolusi alias**: {/* min-version: 2.1.176 */}variabel lingkungan `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL`, dan `ANTHROPIC_DEFAULT_FABLE_MODEL` tidak dapat mengarahkan ulang alias yang diizinkan ke model di luar daftar

128* **Mode cepat**: {/* min-version: 2.1.176 */}`/fast` menolak untuk beralih ketika akan secara implisit beralih ke model Opus di luar daftar, dengan pesan "is not in your organization's allowed models"

129* **Model subagent**: bidang `model` dalam frontmatter [subagent](/id/sub-agents#choose-a-model), parameter `model` dari alat Agent, pemilih model di `/agents`, dan `CLAUDE_CODE_SUBAGENT_MODEL`

130* **Model advisor**: pengaturan [`advisorModel`](/id/advisor) yang dikonfigurasi

131* **Rantai fallback**: elemen dari [rantai model fallback](#fallback-model-chains) di luar daftar dihapus

132 

133Beralih ke model yang diblokir dengan `/model` ditolak dengan kesalahan, sementara flag `--model` yang diblokir atau nilai `ANTHROPIC_MODEL` diganti saat startup dengan peringatan yang menyebutkan model yang diminta dan model pengganti, dan sesi dimulai pada model default. Penggantian subagent atau advisor yang diblokir kembali ke model yang diwariskan atau default daripada gagal dalam permintaan.

105 134 

106```json theme={null}135```json theme={null}

107{136{


113 Perilaku model default142 Perilaku model default

114</h3>143</h3>

115 144 

116Opsi Default di pemilih model tidak dipengaruhi oleh `availableModels`. Opsi ini selalu tetap tersedia dan mewakili default runtime sistem [berdasarkan tingkat langganan pengguna](#default-model-setting).145Secara default, opsi Default di pemilih model tidak dipengaruhi oleh `availableModels`. Opsi ini tetap tersedia dan mewakili default runtime sistem [berdasarkan tingkat langganan pengguna](#default-model-setting).

117 146 

118Bahkan dengan `availableModels: []`, pengguna masih dapat menggunakan Claude Code dengan model Default untuk tingkat mereka.147Untuk memperluas daftar izin ke opsi Default, atur `enforceAvailableModels` ke `true` dalam pengaturan terkelola atau kebijakan bersama daftar `availableModels` yang tidak kosong. Ketika default tingkat tidak ada dalam daftar izin, Default diselesaikan ke entri pertama yang diizinkan daripada default tingkat. Ini memerlukan Claude Code v2.1.175 atau lebih baru.

148 

149Array `availableModels` yang kosong tidak pernah melibatkan penegakan. Bahkan dengan `availableModels: []`, pengguna masih dapat menggunakan Claude Code dengan model Default untuk tingkat mereka terlepas dari `enforceAvailableModels`.

119 150 

120<h3 id="control-the-model-users-run-on">151<h3 id="control-the-model-users-run-on">

121 Kontrol model yang dijalankan pengguna152 Kontrol model yang dijalankan pengguna


123 154 

124Pengaturan `model` adalah pilihan awal, bukan penegakan. Ini menetapkan model mana yang aktif ketika sesi dimulai, tetapi pengguna masih dapat membuka `/model` dan memilih Default, yang diselesaikan ke default sistem untuk tingkat mereka terlepas dari apa yang `model` ditetapkan.155Pengaturan `model` adalah pilihan awal, bukan penegakan. Ini menetapkan model mana yang aktif ketika sesi dimulai, tetapi pengguna masih dapat membuka `/model` dan memilih Default, yang diselesaikan ke default sistem untuk tingkat mereka terlepas dari apa yang `model` ditetapkan.

125 156 

126Untuk sepenuhnya mengontrol pengalaman model, gabungkan tiga pengaturan:157Untuk sepenuhnya mengontrol pengalaman model, gabungkan pengaturan ini:

127 158 

128* **`availableModels`**: membatasi model bernama mana yang dapat dialihkan pengguna159* **`availableModels`**: membatasi model bernama mana yang dapat dialihkan pengguna

160* **`enforceAvailableModels`**: memperluas daftar izin `availableModels` ke opsi Default, sehingga Default tidak dapat diselesaikan ke model di luar daftar

129* **`model`**: menetapkan pilihan model awal ketika sesi dimulai161* **`model`**: menetapkan pilihan model awal ketika sesi dimulai

130* **`ANTHROPIC_DEFAULT_SONNET_MODEL`** / **`ANTHROPIC_DEFAULT_OPUS_MODEL`** / **`ANTHROPIC_DEFAULT_HAIKU_MODEL`**: mengontrol apa yang diselesaikan opsi Default dan alias `sonnet`, `opus`, dan `haiku`162* **`ANTHROPIC_DEFAULT_SONNET_MODEL`** / **`ANTHROPIC_DEFAULT_OPUS_MODEL`** / **`ANTHROPIC_DEFAULT_HAIKU_MODEL`** / **`ANTHROPIC_DEFAULT_FABLE_MODEL`**: mengontrol apa yang diselesaikan opsi Default dan alias `sonnet`, `opus`, `haiku`, dan `fable`

131 163 

132Contoh ini memulai pengguna di Sonnet 4.5, membatasi pemilih ke Sonnet dan Haiku, dan menetapkan Default untuk diselesaikan ke Sonnet 4.5 daripada rilis terbaru:164Contoh ini memulai pengguna di Sonnet 4.5, membatasi pemilih ke Sonnet dan Haiku, dan memastikan Default diselesaikan ke model dalam daftar izin daripada default tingkat:

133 165 

134```json theme={null}166```json theme={null}

135{167{

136 "model": "claude-sonnet-4-5",168 "model": "claude-sonnet-4-5",

137 "availableModels": ["claude-sonnet-4-5", "haiku"],169 "availableModels": ["claude-sonnet-4-5", "haiku"],

170 "enforceAvailableModels": true,

138 "env": {171 "env": {

139 "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5"172 "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5"

140 }173 }

141}174}

142```175```

143 176 

144Tanpa blok `env`, pengguna yang memilih Default di pemilih akan mendapatkan rilis Sonnet terbaru, melewati pin versi dalam `model` dan `availableModels`.177Tanpa `enforceAvailableModels` atau blok `env`, pengguna yang memilih Default di pemilih akan mendapatkan rilis terbaru untuk tingkat mereka, melewati pin versi dalam `model` dan `availableModels`. Dua pengaturan mencakup cakupan yang berbeda: `enforceAvailableModels` membuat Default mematuhi daftar izin, sementara blok `env` menetapkan versi mana yang diselesaikan alias yang diizinkan seperti `sonnet`. Gunakan `enforceAvailableModels` saja ketika membatasi keluarga model sudah cukup; tambahkan blok `env` ketika Anda juga perlu menetapkan versi tertentu.

145 178 

146<h3 id="merge-behavior">179<h3 id="merge-behavior">

147 Perilaku penggabungan180 Perilaku penggabungan

148</h3>181</h3>

149 182 

150Ketika `availableModels` diatur di beberapa tingkat, seperti pengaturan pengguna dan pengaturan proyek, array digabungkan dan dideduplikasi. Untuk memberlakukan allowlist ketat, atur `availableModels` dalam pengaturan terkelola atau kebijakan yang memiliki prioritas tertinggi.183Ketika `availableModels` diatur dalam pengaturan pengguna, proyek, dan lokal saja, array digabungkan dan dideduplikasi di seluruh tingkat tersebut.

184 

185Ketika `availableModels` diatur dalam pengaturan terkelola atau kebijakan, nilai terkelola atau kebijakan menggantikan hasil gabungan sepenuhnya: entri yang ditambahkan dalam pengaturan pengguna atau proyek tidak dapat memperluas daftar. Pengaturan terkelola dan kebijakan menggantikan nilai prioritas lebih rendah untuk `enforceAvailableModels` dengan cara yang sama. Mulai dari Claude Code v2.1.175, ini adalah satu-satunya cara untuk memberlakukan daftar izin ketat; versi sebelumnya menggabungkan daftar terkelola dengan entri prioritas lebih rendah.

151 186 

152<h3 id="mantle-model-ids">187<h3 id="mantle-model-ids">

153 ID model Mantle188 ID model Mantle

154</h3>189</h3>

155 190 

156Ketika [endpoint Bedrock Mantle](/id/amazon-bedrock#use-the-mantle-endpoint) diaktifkan, entri dalam `availableModels` yang dimulai dengan `anthropic.` ditambahkan ke pemilih `/model` sebagai opsi kustom dan dirutekan ke endpoint Mantle. Ini adalah pengecualian terhadap pencocokan alias-saja yang dijelaskan dalam [Tetapkan model untuk deployment pihak ketiga](#pin-models-for-third-party-deployments). Pengaturan masih membatasi pemilih ke entri yang tercantum, jadi sertakan alias standar bersama ID Mantle apa pun.191Ketika [endpoint Bedrock Mantle](/id/amazon-bedrock#use-the-mantle-endpoint) diaktifkan, entri dalam `availableModels` yang dimulai dengan `anthropic.` ditambahkan ke pemilih `/model` sebagai opsi kustom dan dirutekan ke endpoint Mantle. Pengaturan masih membatasi pemilih ke entri yang tercantum, jadi sertakan alias standar bersama ID Mantle apa pun.

157 192 

158<h2 id="special-model-behavior">193<h2 id="special-model-behavior">

159 Perilaku model khusus194 Perilaku model khusus


172 207 

173Enterprise pay-as-you-go berarti organisasi Enterprise yang ditagihkan berdasarkan penggunaan daripada kursi langganan.208Enterprise pay-as-you-go berarti organisasi Enterprise yang ditagihkan berdasarkan penggunaan daripada kursi langganan.

174 209 

175Claude Code dapat secara otomatis kembali ke Sonnet jika Anda mencapai ambang penggunaan dengan Opus.210Fable 5 bukan model default pada jenis akun apa pun. Sesi menggunakan Fable 5 hanya setelah Anda memilihnya, dengan `/model fable`, pengaturan `model`, atau alias `best` di mana Fable 5 tersedia. Memilihnya dengan `/model` menyimpannya sebagai model yang dipilih dalam pengaturan pengguna Anda, sehingga sesi berikutnya dimulai pada Fable 5 sampai Anda mengubah model.

176 211 

177<h3 id="opusplan-model-setting">212<h3 id="opusplan-model-setting">

178 Pengaturan model `opusplan`213 Pengaturan model `opusplan`


185 220 

186Ini memberi Anda yang terbaik dari kedua dunia: penalaran superior Opus untuk perencanaan, dan efisiensi Sonnet untuk eksekusi.221Ini memberi Anda yang terbaik dari kedua dunia: penalaran superior Opus untuk perencanaan, dan efisiensi Sonnet untuk eksekusi.

187 222 

188Fase Opus dalam plan mode berjalan dengan jendela konteks standar 200K. Peningkatan 1M otomatis yang dijelaskan dalam [Konteks diperluas](#extended-context) berlaku untuk pengaturan model `opus` dan tidak memperluas ke `opusplan`.223Fase Opus dalam plan mode menggunakan jendela konteks yang sama dengan pengaturan model `opus`. Pada tingkat langganan di mana Opus [secara otomatis ditingkatkan ke konteks 1M](#extended-context), `opusplan` menerima peningkatan dalam plan mode juga. Untuk memaksa konteks 1M untuk kedua fase ketika Anda tidak berada di tingkat auto-upgrade, atur model ke `opusplan[1m]`.

224 

225Ketika [`availableModels`](#restrict-model-selection) mengecualikan Opus, `opusplan` tetap pada Sonnet dalam plan mode daripada beralih. Demikian pula, sesi Haiku yang biasanya akan ditingkatkan ke Sonnet dalam plan mode tetap pada Haiku ketika Sonnet dikecualikan.

226 

227Untuk pendekatan hibrida di mana Claude memutuskan di tengah-tugas kapan harus berkonsultasi dengan model kedua daripada beralih di batas rencana, lihat [advisor tool](/id/advisor).

228 

229<h3 id="fallback-model-chains">

230 Fallback model chains

231</h3>

232 

233Ketika model utama kelebihan beban, tidak tersedia, atau mengembalikan kesalahan server yang tidak dapat dicoba ulang lainnya, Claude Code dapat beralih ke model fallback daripada gagal permintaan. Kesalahan autentikasi, penagihan, batas laju, ukuran permintaan, dan transportasi tidak pernah memicu switch; mereka mengikuti retry dan penanganan kesalahan normal mereka.

234 

235Konfigurasikan satu atau lebih model fallback dan Claude Code mencobanya secara berurutan, menampilkan pemberitahuan saat beralih. Switch berlangsung hanya untuk giliran saat ini, jadi pesan berikutnya Anda mencoba model utama terlebih dahulu lagi. Chain dibatasi pada tiga model setelah penghapusan duplikat, dan entri tambahan diabaikan.

236 

237Atur chain untuk satu sesi dengan flag `--fallback-model`, yang menerima daftar yang dipisahkan koma:

238 

239```bash theme={null}

240claude --fallback-model sonnet,haiku

241```

242 

243Untuk mempertahankan chain di seluruh sesi, atur `fallbackModel` dalam [settings](/id/settings) sebagai array:

244 

245```json theme={null}

246{

247 "fallbackModel": ["claude-sonnet-4-6", "claude-haiku-4-5"]

248}

249```

250 

251Flag `--fallback-model` mengambil alih pengaturan `fallbackModel`. Setiap elemen menerima nama model atau alias, dan `"default"` berkembang menjadi model default.

252 

253Dua kasus menyebabkan elemen dilewati:

254 

255* **Unavailable model**: model yang tidak dapat dijangkau, seperti model yang pensiun yang disematkan dalam pengaturan, dilewati dan Claude Code melanjutkan ke elemen berikutnya.

256* **Outside the allowlist**: elemen yang tidak diizinkan oleh [`availableModels`](#restrict-model-selection) dijatuhkan saat chain dibaca dan tidak pernah dicoba.

257 

258<h3 id="automatic-model-fallback">

259 Automatic model fallback

260</h3>

261 

262Bagian ini mencakup fallback berbasis konten dari Fable 5. Untuk fallback berbasis ketersediaan ketika model kelebihan beban atau tidak tersedia, lihat [Fallback model chains](#fallback-model-chains).

263 

264Fable 5 berjalan dengan pengklasifikasi keamanan untuk konten keamanan siber dan biologi. Ketika pengklasifikasi menandai permintaan, Claude Code menjalankan kembali permintaan itu pada model Opus default dan menampilkan pemberitahuan dalam transkrip: Opus 4.8 pada Anthropic API dan penyebaran [LLM gateway](/id/llm-gateway), atau Opus 4.7 pada [Claude Platform di AWS](/id/claude-platform-on-aws).

265 

266Sesi kemudian berlanjut pada model Opus itu. Untuk kembali ke Fable 5, jalankan `/model fable`.

267 

268<h4 id="check-what-triggered-fallback">

269 Check what triggered fallback

270</h4>

271 

272Fallback dapat memicu pada permintaan pertama sesi, sebelum Anda mengirim apa pun yang tidak biasa, karena permintaan pertama membawa konteks workspace seperti konten CLAUDE.md dan status git Anda. Repositori yang berisi materi keamanan atau biologi dapat memicu pengklasifikasi pada konteks itu saja.

273 

274Untuk memeriksa apakah kustomisasi adalah pemicu, mulai sesi dengan `claude --safe-mode`, yang menonaktifkan kustomisasi seperti CLAUDE.md, skills, MCP servers, dan hooks. Status git dan nama direktori bukan kustomisasi dan masih disertakan.

275 

276<h4 id="ask-before-switching">

277 Ask before switching

278</h4>

279 

280Untuk memutuskan apa yang terjadi setiap kali permintaan ditandai, daripada beralih secara otomatis, jalankan `/config` dan matikan "switch models when a message is flagged". Permintaan yang ditandai kemudian menjeda sesi dengan dua opsi: beralih ke model Opus, atau edit prompt dan coba ulang pada Fable 5.

281 

282Beberapa kasus berperilaku berbeda:

283 

284* Jika kedua model menandai permintaan yang sama, Anda dapat mengedit prompt dan mencoba ulang, atau memulai sesi baru.

285* Pada sesi mobile [Claude Code di web](/id/claude-code-on-the-web), pengeditan dan pengulangan tidak didukung. Beralih model, atau lanjutkan sesi dari browser desktop atau aplikasi desktop.

286* Dalam [non-interactive mode](/id/cli-reference#cli-flags) dan integrasi SDK yang tidak dapat menampilkan prompt, permintaan yang ditandai mengakhiri giliran dengan penolakan sebagai gantinya.

287 

288<h4 id="enable-fallback-on-bedrock-vertex-ai-and-foundry">

289 Enable fallback on Bedrock, Vertex AI, and Foundry

290</h4>

291 

292Pada [Amazon Bedrock](/id/amazon-bedrock), [Google Vertex AI](/id/google-vertex-ai), dan [Microsoft Foundry](/id/microsoft-foundry), ID model spesifik penyedia, jadi fallback otomatis hanya beroperasi ketika Claude Code dapat mengidentifikasi kedua model yang terlibat:

293 

294* Claude Code harus mengenali model saat ini sebagai Fable 5: ID model berisi `claude-fable-5`, cocok dengan nilai `ANTHROPIC_DEFAULT_FABLE_MODEL`, atau dipetakan dengan [`modelOverrides`](#override-model-ids-per-version).

295* Target fallback harus diselesaikan ke model Opus: nilai `ANTHROPIC_DEFAULT_OPUS_MODEL` jika diatur, jika tidak, entri Opus 4.8 dalam daftar model penyedia.

296 

297Jika salah satu model tidak dapat diidentifikasi, Claude Code tidak beralih secara otomatis. Permintaan yang ditandai berakhir dengan pesan penolakan, dan Anda dapat beralih model dengan [`/model`](#setting-your-model) dan coba ulang. Untuk mengaktifkan fallback otomatis pada penyedia ini, atur `ANTHROPIC_DEFAULT_FABLE_MODEL` ke ID model Fable 5 Anda dan `ANTHROPIC_DEFAULT_OPUS_MODEL` ke ID model Opus 4.8 Anda.

298 

299<h4 id="security-research-and-biology-workloads">

300 Security research and biology workloads

301</h4>

302 

303Beban kerja dalam keamanan ofensif atau biologi, termasuk penetration testing, latihan Capture the Flag (CTF), dan basis kode yang berdekatan dengan biologi, memicu fallback sering, sering pada permintaan pertama. Untuk pekerjaan biologi substansial, harapkan hampir semua permintaan untuk dialihkan.

304 

305Ini adalah routing yang diharapkan untuk domain ini, bukan bendera akun. Jika organisasi Anda membutuhkan kemampuan kelas Fable untuk pekerjaan ini, tanyakan kepada tim akun Anthropic Anda tentang program akses terpercaya.

189 306 

190<h3 id="adjust-effort-level">307<h3 id="adjust-effort-level">

191 Sesuaikan tingkat usaha308 Adjust effort level

192</h3>309</h3>

193 310 

194[Tingkat usaha](https://platform.claude.com/docs/en/build-with-claude/effort) mengontrol penalaran adaptif, yang memungkinkan model memutuskan apakah dan berapa banyak untuk berpikir pada setiap langkah berdasarkan kompleksitas tugas. Usaha lebih rendah lebih cepat dan lebih murah untuk tugas-tugas langsung, sementara usaha lebih tinggi memberikan penalaran lebih dalam untuk masalah kompleks.311[Effort levels](https://platform.claude.com/docs/en/build-with-claude/effort) mengontrol penalaran adaptif, yang memungkinkan model memutuskan apakah dan berapa banyak untuk berpikir pada setiap langkah berdasarkan kompleksitas tugas. Usaha lebih rendah lebih cepat dan lebih murah untuk tugas-tugas langsung, sementara usaha lebih tinggi memberikan penalaran lebih dalam untuk masalah kompleks.

195 312 

196Tingkat usaha yang tersedia tergantung pada model. Model yang tidak tercantum di sini tidak mendukung usaha:313Tingkat usaha yang tersedia tergantung pada model. Model yang tidak tercantum di sini tidak mendukung usaha:

197 314 

198| Model | Tingkat |315| Model | Levels |

199| :---------------------- | :-------------------------------------- |316| :---------------------- | :-------------------------------------- |

317| Fable 5 | `low`, `medium`, `high`, `xhigh`, `max` |

200| Opus 4.8 dan Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |318| Opus 4.8 dan Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |

201| Opus 4.6 dan Sonnet 4.6 | `low`, `medium`, `high`, `max` |319| Opus 4.6 dan Sonnet 4.6 | `low`, `medium`, `high`, `max` |

202 320 

203Jika Anda menetapkan tingkat yang tidak didukung model aktif, Claude Code kembali ke tingkat tertinggi yang didukung pada atau di bawah tingkat yang Anda tetapkan. Misalnya, `xhigh` berjalan sebagai `high` pada Opus 4.6.321Jika Anda menetapkan tingkat yang tidak didukung model aktif, Claude Code kembali ke tingkat tertinggi yang didukung pada atau di bawah tingkat yang Anda tetapkan. Misalnya, `xhigh` berjalan sebagai `high` pada Opus 4.6.

204 322 

205Usaha default adalah `high` pada Opus 4.8, Opus 4.6, dan Sonnet 4.6, dan `xhigh` pada Opus 4.7.323Usaha default adalah `high` pada Fable 5, Opus 4.8, Opus 4.6, dan Sonnet 4.6, dan `xhigh` pada Opus 4.7.

206 324 

207Ketika Anda pertama kali menjalankan Opus 4.8 atau Opus 4.7, Claude Code menerapkan usaha default model itu bahkan jika Anda sebelumnya menetapkan tingkat yang berbeda untuk model lain: `high` pada Opus 4.8 dan `xhigh` pada Opus 4.7. Jalankan `/effort` lagi untuk memilih tingkat yang berbeda setelah beralih.325Ketika Anda pertama kali menjalankan Fable 5, Opus 4.8, atau Opus 4.7, Claude Code menerapkan usaha default model itu bahkan jika Anda sebelumnya menetapkan tingkat yang berbeda untuk model lain: `high` pada Fable 5 dan Opus 4.8, dan `xhigh` pada Opus 4.7. Jalankan `/effort` lagi untuk memilih tingkat yang berbeda setelah beralih.

208 326 

209`low`, `medium`, `high`, dan `xhigh` bertahan di seluruh sesi. `max` memberikan penalaran paling dalam tanpa batasan pengeluaran token dan berlaku untuk sesi saat ini saja, kecuali ketika diatur melalui variabel lingkungan `CLAUDE_CODE_EFFORT_LEVEL`.327`low`, `medium`, `high`, dan `xhigh` bertahan di seluruh sesi. `max` memberikan penalaran paling dalam tanpa batasan pengeluaran token dan berlaku untuk sesi saat ini saja, kecuali ketika diatur melalui variabel lingkungan `CLAUDE_CODE_EFFORT_LEVEL`.

210 328 

211Menu `/effort` juga menawarkan `ultracode`. Ultracode adalah pengaturan Claude Code daripada tingkat usaha model: ia mengirim `xhigh` ke model dan selain itu memiliki Claude mengorkestra [alur kerja dinamis](/id/workflows) untuk tugas-tugas substansial. Ini berlaku untuk sesi saat ini saja. Atur melalui `/effort`, atau teruskan `"ultracode": true` melalui `--settings` atau permintaan kontrol Agent SDK. Ini bukan bagian dari pengaturan `effortLevel`, flag `--effort`, atau `CLAUDE_CODE_EFFORT_LEVEL`.329Menu `/effort` juga menawarkan `ultracode`. Ultracode adalah pengaturan Claude Code daripada tingkat usaha model: ia mengirim `xhigh` ke model dan selain itu memiliki Claude mengorkestra [alur kerja dinamis](/id/workflows) untuk tugas-tugas substansial. Ini berlaku untuk sesi saat ini saja. Atur melalui `/effort`, atau teruskan `"ultracode": true` melalui `--settings` atau permintaan kontrol Agent SDK. Ini bukan bagian dari pengaturan `effortLevel`, flag `--effort`, atau `CLAUDE_CODE_EFFORT_LEVEL`.

212 330 

213<h4 id="choose-an-effort-level">331<h4 id="choose-an-effort-level">

214 Pilih tingkat usaha332 Choose an effort level

215</h4>333</h4>

216 334 

217Setiap tingkat menukar pengeluaran token terhadap kemampuan. Default cocok untuk sebagian besar tugas coding; sesuaikan ketika Anda menginginkan keseimbangan yang berbeda.335Setiap tingkat menukar pengeluaran token terhadap kemampuan. Default cocok untuk sebagian besar tugas coding; sesuaikan ketika Anda menginginkan keseimbangan yang berbeda.

218 336 

219| Tingkat | Kapan menggunakannya |337| Level | When to use it |

220| :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |338| :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

221| `low` | Cadangkan untuk tugas pendek, terbatas, sensitif latensi yang tidak sensitif intelijen |339| `low` | Cadangkan untuk tugas pendek, terbatas, sensitif latensi yang tidak sensitif intelijen |

222| `medium` | Mengurangi penggunaan token untuk pekerjaan sensitif biaya yang dapat menukar beberapa intelijen |340| `medium` | Mengurangi penggunaan token untuk pekerjaan sensitif biaya yang dapat menukar beberapa intelijen |

223| `high` | Menyeimbangkan penggunaan token dan intelijen. Default pada Opus 4.8, Opus 4.6, dan Sonnet 4.6 |341| `high` | Menyeimbangkan penggunaan token dan intelijen. Default pada Fable 5, Opus 4.8, Opus 4.6, dan Sonnet 4.6 |

224| `xhigh` | Penalaran lebih dalam dengan pengeluaran token lebih tinggi. Default pada Opus 4.7 |342| `xhigh` | Penalaran lebih dalam dengan pengeluaran token lebih tinggi. Default pada Opus 4.7 |

225| `max` | Dapat meningkatkan kinerja pada tugas yang menuntut tetapi mungkin menunjukkan hasil yang berkurang dan rentan terhadap overthinking. Uji sebelum mengadopsi secara luas |343| `max` | Dapat meningkatkan kinerja pada tugas yang menuntut tetapi mungkin menunjukkan hasil yang berkurang dan rentan terhadap overthinking. Uji sebelum mengadopsi secara luas |

226| `ultracode` | Pengaturan Claude Code yang merencanakan [alur kerja dinamis](/id/workflows) untuk setiap tugas substansial dengan penalaran `xhigh` per-pesan. Hanya sesi |344| `ultracode` | Pengaturan Claude Code yang merencanakan [alur kerja dinamis](/id/workflows) untuk setiap tugas substansial dengan penalaran `xhigh` per-pesan. Hanya sesi |


228Skala usaha dikalibrasi per model, jadi nama tingkat yang sama tidak mewakili nilai yang sama di seluruh model.346Skala usaha dikalibrasi per model, jadi nama tingkat yang sama tidak mewakili nilai yang sama di seluruh model.

229 347 

230<h4 id="use-ultrathink-for-one-off-deep-reasoning">348<h4 id="use-ultrathink-for-one-off-deep-reasoning">

231 Gunakan ultrathink untuk penalaran mendalam sekali349 Use ultrathink for one-off deep reasoning

232</h4>350</h4>

233 351 

234Sertakan `ultrathink` di mana saja dalam prompt Anda untuk meminta penalaran lebih dalam pada giliran itu tanpa mengubah pengaturan usaha sesi Anda. Claude Code mengenali kata kunci dan menambahkan instruksi dalam konteks. Tingkat usaha yang dikirim ke API tidak berubah. Frasa lain seperti "think", "think hard", dan "think more" dilewatkan sebagai teks prompt biasa dan tidak dikenali sebagai kata kunci.352Sertakan `ultrathink` di mana saja dalam prompt Anda untuk meminta penalaran lebih dalam pada giliran itu tanpa mengubah pengaturan usaha sesi Anda. Claude Code mengenali kata kunci dan menambahkan instruksi dalam konteks. Tingkat usaha yang dikirim ke API tidak berubah. Frasa lain seperti "think", "think hard", dan "think more" dilewatkan sebagai teks prompt biasa dan tidak dikenali sebagai kata kunci.

235 353 

236<h4 id="set-the-effort-level">354<h4 id="set-the-effort-level">

237 Atur tingkat usaha355 Set the effort level

238</h4>356</h4>

239 357 

240Anda dapat mengubah usaha melalui salah satu dari berikut ini:358Anda dapat mengubah usaha melalui salah satu dari berikut ini:


251Slider usaha muncul dalam `/model` ketika model yang didukung dipilih. Tingkat usaha saat ini juga ditampilkan di sebelah logo dan spinner, misalnya "with low effort", sehingga Anda dapat mengkonfirmasi pengaturan mana yang aktif tanpa membuka `/model`.369Slider usaha muncul dalam `/model` ketika model yang didukung dipilih. Tingkat usaha saat ini juga ditampilkan di sebelah logo dan spinner, misalnya "with low effort", sehingga Anda dapat mengkonfirmasi pengaturan mana yang aktif tanpa membuka `/model`.

252 370 

253<h4 id="adaptive-reasoning-and-fixed-thinking-budgets">371<h4 id="adaptive-reasoning-and-fixed-thinking-budgets">

254 Penalaran adaptif dan anggaran pemikiran tetap372 Adaptive reasoning and fixed thinking budgets

255</h4>373</h4>

256 374 

257Penalaran adaptif membuat pemikiran opsional pada setiap langkah, jadi Claude dapat merespons lebih cepat ke prompt rutin dan menyisihkan pemikiran lebih dalam untuk langkah yang mendapat manfaat darinya. Jika Anda ingin Claude berpikir lebih atau kurang sering daripada tingkat saat ini menghasilkan, Anda dapat mengatakan demikian secara langsung dalam prompt Anda atau dalam `CLAUDE.md`; model merespons panduan itu dalam pengaturan usahanya.375Penalaran adaptif membuat pemikiran opsional pada setiap langkah, jadi Claude dapat merespons lebih cepat ke prompt rutin dan menyisihkan pemikiran lebih dalam untuk langkah yang mendapat manfaat darinya. Jika Anda ingin Claude berpikir lebih atau kurang sering daripada tingkat saat ini menghasilkan, Anda dapat mengatakan demikian secara langsung dalam prompt Anda atau dalam `CLAUDE.md`; model merespons panduan itu dalam pengaturan usahanya.

258 376 

259Opus 4.7 dan yang lebih baru selalu menggunakan penalaran adaptif. Mode anggaran pemikiran tetap dan `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` tidak berlaku untuk mereka.377Opus 4.7 dan yang lebih baru selalu menggunakan penalaran adaptif, seperti halnya Fable 5. Mode anggaran pemikiran tetap dan `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` tidak berlaku untuk mereka.

260 378 

261Di Opus 4.6 dan Sonnet 4.6, Anda dapat mengatur `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` untuk kembali ke anggaran pemikiran tetap sebelumnya yang dikendalikan oleh `MAX_THINKING_TOKENS`. Lihat [variabel lingkungan](/id/env-vars).379Di Opus 4.6 dan Sonnet 4.6, Anda dapat mengatur `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` untuk kembali ke anggaran pemikiran tetap sebelumnya yang dikendalikan oleh `MAX_THINKING_TOKENS`. Lihat [variabel lingkungan](/id/env-vars).

262 380 

263<h3 id="extended-thinking">381<h3 id="extended-thinking">

264 Pemikiran diperluas382 Extended thinking

265</h3>383</h3>

266 384 

267Pemikiran diperluas adalah penalaran yang Claude keluarkan sebelum merespons. Pada model yang mendukung [penalaran adaptif](#adjust-effort-level), tingkat usaha adalah kontrol utama untuk berapa banyak pemikiran yang terjadi; pengaturan di bawah ini menghidupkan atau mematikan pemikiran dan mengontrol cara tampilannya.385Pemikiran diperluas adalah penalaran yang Claude keluarkan sebelum merespons. Pada model yang mendukung [penalaran adaptif](#adjust-effort-level), tingkat usaha adalah kontrol utama untuk berapa banyak pemikiran yang terjadi; pengaturan di bawah ini menghidupkan atau mematikan pemikiran dan mengontrol cara tampilannya.

268 386 

269| Kontrol | Cara menetapkannya |387| Control | How to set it |

270| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------- |388| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

271| Toggle untuk sesi saat ini | Tekan `Option+T` di macOS atau `Alt+T` di Windows dan Linux |389| Toggle untuk sesi saat ini | Tekan `Option+T` di macOS atau `Alt+T` di Windows dan Linux |

272| Atur default global | Jalankan `/config` dan toggle thinking mode. Disimpan sebagai `alwaysThinkingEnabled` dalam `~/.claude/settings.json` |390| Atur default global | Jalankan `/config` dan toggle thinking mode. Disimpan sebagai `alwaysThinkingEnabled` dalam `~/.claude/settings.json` |

273| Nonaktifkan terlepas dari usaha | Atur [`MAX_THINKING_TOKENS=0`](/id/env-vars). Nilai lain berlaku hanya dengan [anggaran pemikiran tetap](#adaptive-reasoning-and-fixed-thinking-budgets) |391| Nonaktifkan terlepas dari usaha | Atur [`MAX_THINKING_TOKENS=0`](/id/env-vars), yang mematikan pemikiran pada Anthropic API kecuali pada Fable 5. Pada [penyedia pihak ketiga](/id/third-party-integrations) ini menghilangkan parameter `thinking` sebagai gantinya, dan model penalaran adaptif mungkin masih berpikir. Nilai lain berlaku hanya dengan [anggaran pemikiran tetap](#adaptive-reasoning-and-fixed-thinking-budgets) |

392 

393Pemikiran tidak dapat dimatikan pada Fable 5. Toggle sesi, `alwaysThinkingEnabled`, dan `MAX_THINKING_TOKENS=0` tidak memiliki efek di sana, dan Fable 5 memutuskan per langkah berapa banyak untuk berpikir berdasarkan tingkat usaha.

274 394 

275Output pemikiran dilipat secara default. Tekan `Ctrl+O` untuk toggle verbose mode dan lihat penalaran sebagai teks miring abu-abu. Sesi interaktif di Anthropic API menerima blok pemikiran yang diredaksi secara default, jadi atur `showThinkingSummaries: true` dalam [pengaturan](/id/settings) jika Anda menginginkan ringkasan lengkap yang tersedia saat Anda memperluas. Anda dikenakan biaya untuk semua token pemikiran yang dihasilkan, bahkan ketika dilipat atau diredaksi.395Output pemikiran dilipat secara default. Tekan `Ctrl+O` untuk toggle verbose mode dan lihat penalaran sebagai teks miring abu-abu. Sesi interaktif pada Anthropic API menerima blok pemikiran yang diredaksi secara default, jadi atur `showThinkingSummaries: true` dalam [pengaturan](/id/settings) jika Anda menginginkan ringkasan lengkap yang tersedia saat Anda memperluas. Anda dikenakan biaya untuk semua token pemikiran yang dihasilkan, bahkan ketika dilipat atau diredaksi.

276 396 

277<h3 id="extended-context">397<h3 id="extended-context">

278 Konteks diperluas398 Extended context

279</h3>399</h3>

280 400 

281Opus 4.6 dan yang lebih baru, dan Sonnet 4.6, mendukung [jendela konteks 1 juta token](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) untuk sesi panjang dengan basis kode besar.401Fable 5, Opus 4.6 dan yang lebih baru, dan Sonnet 4.6 mendukung [jendela konteks 1 juta token](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) untuk sesi panjang dengan basis kode besar.

282 402 

283Ketersediaan bervariasi menurut model dan paket. Di paket Max, Team, dan Enterprise, Opus secara otomatis ditingkatkan ke konteks 1M tanpa konfigurasi tambahan. Ini berlaku untuk kedua kursi Team Standard dan Team Premium. Sonnet dengan konteks 1M bukan bagian dari peningkatan otomatis dan memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) di setiap paket langganan, termasuk Max.403Ketersediaan bervariasi menurut model dan paket. Di paket Max, Team, dan Enterprise, Opus secara otomatis ditingkatkan ke konteks 1M tanpa konfigurasi tambahan. Ini berlaku untuk kedua kursi Team Standard dan Team Premium. Pada Anthropic API, Fable 5, Opus 4.8, dan Opus 4.7 selalu berjalan dengan jendela 1M. Sonnet dengan konteks 1M bukan bagian dari peningkatan otomatis dan memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) di setiap paket langganan, termasuk Max.

284 404 

285| Paket | Opus dengan konteks 1M | Sonnet dengan konteks 1M |405| Plan | Opus dengan konteks 1M | Sonnet dengan konteks 1M |

286| ------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |406| ------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |

287| Max, Team, dan Enterprise | Disertakan dengan langganan | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |407| Max, Team, dan Enterprise | Disertakan dengan langganan | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

288| Pro | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |408| Pro | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |


340 460 

341| Variabel lingkungan | Deskripsi |461| Variabel lingkungan | Deskripsi |

342| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |462| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

463| `ANTHROPIC_DEFAULT_FABLE_MODEL` | Model yang digunakan untuk `fable`, dan ID model yang dikenali Claude Code sebagai Fable 5 untuk [fallback model otomatis](#automatic-model-fallback) pada penyedia pihak ketiga |

343| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Model yang digunakan untuk `opus`, atau untuk `opusplan` ketika Plan Mode aktif. |464| `ANTHROPIC_DEFAULT_OPUS_MODEL` | Model yang digunakan untuk `opus`, atau untuk `opusplan` ketika Plan Mode aktif. |

344| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Model yang digunakan untuk `sonnet`, atau untuk `opusplan` ketika Plan Mode tidak aktif. |465| `ANTHROPIC_DEFAULT_SONNET_MODEL` | Model yang digunakan untuk `sonnet`, atau untuk `opusplan` ketika Plan Mode tidak aktif. |

345| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Model yang digunakan untuk `haiku`, atau [fungsionalitas latar belakang](/id/costs#background-token-usage) |466| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Model yang digunakan untuk `haiku`, atau [fungsionalitas latar belakang](/id/costs#background-token-usage) |


353 474 

354Saat menerapkan Claude Code melalui [Bedrock](/id/amazon-bedrock), [Vertex AI](/id/google-vertex-ai), [Foundry](/id/microsoft-foundry), atau [Claude Platform on AWS](/id/claude-platform-on-aws), tetapkan versi model sebelum meluncurkan ke pengguna.475Saat menerapkan Claude Code melalui [Bedrock](/id/amazon-bedrock), [Vertex AI](/id/google-vertex-ai), [Foundry](/id/microsoft-foundry), atau [Claude Platform on AWS](/id/claude-platform-on-aws), tetapkan versi model sebelum meluncurkan ke pengguna.

355 476 

356Tanpa penentapan, Claude Code menggunakan alias model (`sonnet`, `opus`, `haiku`) yang diselesaikan ke versi terbaru. Ketika Anthropic merilis model baru yang belum diaktifkan di akun pengguna, pengguna Bedrock dan Vertex AI melihat pemberitahuan dan kembali ke versi sebelumnya untuk sesi itu, sementara pengguna Foundry melihat kesalahan karena Foundry tidak memiliki pemeriksaan startup yang setara.477Tanpa penentapan, Claude Code menggunakan alias model seperti `fable`, `opus`, `sonnet`, dan `haiku` yang diselesaikan ke ID model default bawaan untuk setiap penyedia. Default tersebut dapat tertinggal dari rilis Anthropic terbaru, dan model yang ditunjuknya mungkin belum diaktifkan di akun pengguna. Ketika default tidak tersedia, pengguna Bedrock dan Vertex AI melihat pemberitahuan dan kembali ke versi sebelumnya untuk sesi itu, sementara pengguna Foundry melihat kesalahan karena Foundry tidak memiliki pemeriksaan startup yang setara.

357 478 

358<Warning>479<Warning>

359 Atur ketiga variabel lingkungan model ke ID versi spesifik sebagai bagian dari pengaturan awal Anda. Penentapan memungkinkan Anda mengontrol kapan pengguna Anda pindah ke model baru.480 Atur variabel lingkungan model ke ID versi spesifik sebagai bagian dari pengaturan awal Anda. Penentapan memungkinkan Anda mengontrol kapan pengguna Anda pindah ke model baru.

360</Warning>481</Warning>

361 482 

362Gunakan variabel lingkungan berikut dengan ID model spesifik versi untuk penyedia Anda:483Gunakan variabel lingkungan berikut dengan ID model spesifik versi untuk penyedia Anda:


367| Vertex AI | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'` |488| Vertex AI | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'` |

368| Foundry | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'` |489| Foundry | `export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'` |

369 490 

370Terapkan pola yang sama untuk `ANTHROPIC_DEFAULT_SONNET_MODEL` dan `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Untuk ID model saat ini dan warisan di semua penyedia, lihat [Ikhtisar Model](https://platform.claude.com/docs/en/about-claude/models/overview). Untuk meningkatkan pengguna ke versi model baru, perbarui variabel lingkungan ini dan terapkan kembali.491Terapkan pola yang sama untuk `ANTHROPIC_DEFAULT_FABLE_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`, dan `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Untuk ID model saat ini dan warisan di semua penyedia, lihat [Ikhtisar Model](https://platform.claude.com/docs/en/about-claude/models/overview). Untuk meningkatkan pengguna ke versi model baru, perbarui variabel lingkungan ini dan terapkan kembali.

371 492 

372Untuk mengaktifkan [konteks diperluas](#extended-context) untuk model yang ditetapkan, tambahkan `[1m]` ke ID model dalam `ANTHROPIC_DEFAULT_OPUS_MODEL` atau `ANTHROPIC_DEFAULT_SONNET_MODEL`:493Untuk mengaktifkan [konteks diperluas](#extended-context) untuk model yang ditetapkan, tambahkan `[1m]` ke ID model dalam `ANTHROPIC_DEFAULT_OPUS_MODEL` atau `ANTHROPIC_DEFAULT_SONNET_MODEL`:

373 494 


375export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8[1m]'496export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8[1m]'

376```497```

377 498 

378Akhiran `[1m]` menerapkan jendela konteks 1M ke semua penggunaan alias `opus` dan `sonnet`. Akhiran ini tidak memperluas fase Opus mode-rencana dari `opusplan`, yang [tetap dibatasi pada 200K](#opusplan-model-setting).499Akhiran `[1m]` menerapkan jendela konteks 1M ke semua penggunaan alias `opus` dan `sonnet`, termasuk fase Opus mode-rencana dari [`opusplan`](#opusplan-model-setting).

379 500 

380* Claude Code menghapus akhiran sebelum mengirim ID model ke penyedia Anda.501* Claude Code menghapus akhiran sebelum mengirim ID model ke penyedia Anda.

381* Hanya tambahkan `[1m]` ketika model yang mendasar [mendukung konteks 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window).502* Hanya tambahkan `[1m]` ketika model yang mendasar [mendukung konteks 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window).

382* Akhiran dibaca per variabel, bukan per model. Di Bedrock, Vertex, dan Foundry, ID model tanpa `[1m]` dalam satu variabel menggunakan konteks 200K bahkan jika variabel lain menetapkan model yang sama dengan akhiran.503* Akhiran dibaca per variabel, bukan per model. Di Bedrock, Vertex, dan Foundry, ID model tanpa `[1m]` dalam satu variabel menggunakan konteks 200K bahkan jika variabel lain menetapkan model yang sama dengan akhiran.

383 504 

384<Note>505<Note>

385 Allowlist `settings.availableModels` masih berlaku saat menggunakan penyedia pihak ketiga. Penyaringan cocok pada alias model (`opus`, `sonnet`, `haiku`), bukan ID model spesifik penyedia.506 Allowlist `settings.availableModels` masih berlaku saat menggunakan penyedia pihak ketiga. Penyaringan cocok pada alias model seperti `opus`, awalan versi seperti `claude-opus-4-8`, atau ID model lengkap. Akhiran `[1m]` apa pun dilepas dari entri allowlist dan model yang diminta sebelum pencocokan, jadi entri `claude-opus-4-8` memungkinkan baris Opus standar dan konteks 1M. Awalan spesifik penyedia seperti `us.anthropic.` tidak dilepas: daftarkan bentuk yang sama dalam `availableModels` yang ditampilkan pemilih, atau petakan melalui [`modelOverrides`](#override-model-ids-per-version).

386</Note>507</Note>

387 508 

388<h3 id="customize-pinned-model-display-and-capabilities">509<h3 id="customize-pinned-model-display-and-capabilities">


399| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Deskripsi tampilan untuk model Opus yang ditetapkan di pemilih `/model`. Default ke `Custom Opus model` saat tidak diatur |520| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Deskripsi tampilan untuk model Opus yang ditetapkan di pemilih `/model`. Default ke `Custom Opus model` saat tidak diatur |

400| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Daftar kemampuan yang dipisahkan koma yang didukung model Opus yang ditetapkan |521| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Daftar kemampuan yang dipisahkan koma yang didukung model Opus yang ditetapkan |

401 522 

402Akhiran `_NAME`, `_DESCRIPTION`, dan `_SUPPORTED_CAPABILITIES` yang sama tersedia untuk `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL`, dan `ANTHROPIC_CUSTOM_MODEL_OPTION`.523Akhiran `_NAME`, `_DESCRIPTION`, dan `_SUPPORTED_CAPABILITIES` yang sama tersedia untuk `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL`, `ANTHROPIC_DEFAULT_FABLE_MODEL`, dan `ANTHROPIC_CUSTOM_MODEL_OPTION`.

403 524 

404Claude Code mengaktifkan fitur seperti [tingkat usaha](#adjust-effort-level) dan [extended thinking](#extended-thinking) dengan mencocokkan ID model terhadap pola yang dikenal. ID spesifik penyedia seperti ARN Bedrock atau nama deployment kustom sering kali tidak cocok dengan pola ini, meninggalkan fitur yang didukung dinonaktifkan. Atur `_SUPPORTED_CAPABILITIES` untuk memberi tahu Claude Code fitur mana yang benar-benar didukung model:525Claude Code mengaktifkan fitur seperti [tingkat usaha](#adjust-effort-level) dan [extended thinking](#extended-thinking) dengan mencocokkan ID model terhadap pola yang dikenal. ID spesifik penyedia seperti ARN Bedrock atau nama deployment kustom sering kali tidak cocok dengan pola ini, meninggalkan fitur yang didukung dinonaktifkan. Atur `_SUPPORTED_CAPABILITIES` untuk memberi tahu Claude Code fitur mana yang benar-benar didukung model:

405 526 


463| `DISABLE_PROMPT_CACHING_HAIKU` | Atur ke `1` untuk menonaktifkan prompt caching hanya untuk model Haiku |584| `DISABLE_PROMPT_CACHING_HAIKU` | Atur ke `1` untuk menonaktifkan prompt caching hanya untuk model Haiku |

464| `DISABLE_PROMPT_CACHING_SONNET` | Atur ke `1` untuk menonaktifkan prompt caching hanya untuk model Sonnet |585| `DISABLE_PROMPT_CACHING_SONNET` | Atur ke `1` untuk menonaktifkan prompt caching hanya untuk model Sonnet |

465| `DISABLE_PROMPT_CACHING_OPUS` | Atur ke `1` untuk menonaktifkan prompt caching hanya untuk model Opus |586| `DISABLE_PROMPT_CACHING_OPUS` | Atur ke `1` untuk menonaktifkan prompt caching hanya untuk model Opus |

587| `DISABLE_PROMPT_CACHING_FABLE` | Atur ke `1` untuk menonaktifkan prompt caching hanya untuk model Fable |

466 588 

467Untuk mengubah cache TTL atau mempelajari apa yang memicu cache miss, lihat [Bagaimana Claude Code menggunakan prompt caching](/id/prompt-caching).589Untuk mengubah cache TTL atau mempelajari apa yang memicu cache miss, lihat [Bagaimana Claude Code menggunakan prompt caching](/id/prompt-caching).

Details

221**`claude_code.tool`**221**`claude_code.tool`**

222 222 

223| Atribut | Deskripsi | Gated by |223| Atribut | Deskripsi | Gated by |

224| ----------------- | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------- |224| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------- |

225| `tool_name` | Nama alat | |225| `tool_name` | Nama alat | |

226| `duration_ms` | Durasi wall-clock termasuk tunggu izin dan eksekusi | |226| `duration_ms` | Durasi wall-clock termasuk tunggu izin dan eksekusi | |

227| `result_tokens` | Ukuran token perkiraan dari hasil alat | |227| `result_tokens` | Ukuran token perkiraan dari hasil alat | |

228| `agent_id` | Pengidentifikasi subagent atau rekan kerja yang menjalankan alat. Tidak ada pada sesi utama | |228| `agent_id` | Pengidentifikasi subagent atau rekan kerja yang menjalankan alat. Tidak ada pada sesi utama | |

229| `parent_agent_id` | Pengidentifikasi agen yang menghasilkan yang ini. Tidak ada untuk sesi utama dan untuk agen yang dihasilkan langsung darinya | |229| `parent_agent_id` | Pengidentifikasi agen yang menghasilkan yang ini. Tidak ada untuk sesi utama dan untuk agen yang dihasilkan langsung darinya | |

230| `tool_use_id` | ID blok `tool_use` model untuk panggilan ini. Cocok dengan `tool_use_id` pada acara [tool\_result](#tool-result-event) dan [tool\_decision](#tool-decision-event) serta dalam payload hook, sehingga Anda dapat menggabungkan span ke catatan tersebut | |

231| `gen_ai.tool.call.id` | Nilai yang sama dengan `tool_use_id`. Konvensi semantik GenAI OpenTelemetry | |

230| `file_path` | Jalur file target untuk alat Read, Edit, dan Write | `OTEL_LOG_TOOL_DETAILS` |232| `file_path` | Jalur file target untuk alat Read, Edit, dan Write | `OTEL_LOG_TOOL_DETAILS` |

231| `full_command` | String perintah untuk alat Bash | `OTEL_LOG_TOOL_DETAILS` |233| `full_command` | String perintah untuk alat Bash | `OTEL_LOG_TOOL_DETAILS` |

232| `skill_name` | Nama skill untuk alat Skill | `OTEL_LOG_TOOL_DETAILS` |234| `skill_name` | Nama skill untuk alat Skill | `OTEL_LOG_TOOL_DETAILS` |


245**`claude_code.tool.execution`**247**`claude_code.tool.execution`**

246 248 

247| Atribut | Deskripsi | Gated by |249| Atribut | Deskripsi | Gated by |

248| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |250| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

249| `duration_ms` | Waktu yang dihabiskan menjalankan badan alat | |251| `duration_ms` | Waktu yang dihabiskan menjalankan badan alat | |

252| `tool_use_id` | Nilai yang sama dengan span `claude_code.tool` induk | |

253| `gen_ai.tool.call.id` | Nilai yang sama dengan `tool_use_id`. Konvensi semantik GenAI OpenTelemetry | |

250| `success` | `true` atau `false` | |254| `success` | `true` atau `false` | |

251| `error` | String kategori kesalahan saat eksekusi gagal, seperti `Error:ENOENT` atau `ShellError`. Berisi pesan kesalahan lengkap sebagai gantinya saat gate diatur | `OTEL_LOG_TOOL_DETAILS` |255| `error` | String kategori kesalahan saat eksekusi gagal, seperti `Error:ENOENT` atau `ShellError`. Berisi pesan kesalahan lengkap sebagai gantinya saat gate diatur | `OTEL_LOG_TOOL_DETAILS` |

252 256 


423Semua metrik dan acara berbagi atribut standar ini:427Semua metrik dan acara berbagi atribut standar ini:

424 428 

425| Atribut | Deskripsi | Dikendalikan Oleh |429| Atribut | Deskripsi | Dikendalikan Oleh |

426| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |430| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |

427| `session.id` | Pengidentifikasi sesi unik | `OTEL_METRICS_INCLUDE_SESSION_ID` (default: true) |431| `session.id` | Pengidentifikasi sesi unik | `OTEL_METRICS_INCLUDE_SESSION_ID` (default: true) |

428| `app.version` | Versi Claude Code saat ini | `OTEL_METRICS_INCLUDE_VERSION` (default: false) |432| `app.version` | Versi Claude Code saat ini | `OTEL_METRICS_INCLUDE_VERSION` (default: false) |

429| `app.entrypoint` | Bagaimana sesi diluncurkan, seperti `cli`, `sdk-cli`, `sdk-ts`, `sdk-py`, atau `claude-vscode` | `OTEL_METRICS_INCLUDE_ENTRYPOINT` (default: false) |433| `app.entrypoint` | Bagaimana sesi diluncurkan, seperti `cli`, `sdk-cli`, `sdk-ts`, `sdk-py`, atau `claude-vscode` | `OTEL_METRICS_INCLUDE_ENTRYPOINT` (default: false) |

430| `organization.id` | UUID organisasi (saat diautentikasi) | Selalu disertakan saat tersedia |434| `organization.id` | UUID organisasi (saat diautentikasi) | Selalu disertakan saat tersedia |

431| `user.account_uuid` | UUID akun (saat diautentikasi) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (default: true) |435| `user.account_uuid` | UUID akun (saat diautentikasi) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (default: true) |

432| `user.account_id` | ID akun dalam format yang ditandai sesuai dengan API admin Anthropic (saat diautentikasi), seperti `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (default: true) |436| `user.account_id` | ID akun dalam format yang ditandai sesuai dengan API admin Anthropic (saat diautentikasi), seperti `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (default: true) |

433| `user.id` | Pengidentifikasi perangkat/instalasi anonim, dihasilkan per instalasi Claude Code | Selalu disertakan |437| `user.id` | Pengidentifikasi anonim acak yang dihasilkan pada run pertama dan disimpan di `~/.claude.json`. Tidak mengandung informasi pribadi dan tidak berasal dari akun Claude Anda. Menghapus file menghasilkan nilai yang tidak terkait pada run berikutnya. | Selalu disertakan |

434| `user.email` | Alamat email pengguna (saat diautentikasi melalui OAuth) | Selalu disertakan saat tersedia |438| `user.email` | Alamat email pengguna (saat diautentikasi melalui OAuth) | Selalu disertakan saat tersedia |

435| `terminal.type` | Jenis terminal, seperti `iTerm.app`, `vscode`, `cursor`, atau `tmux` | Selalu disertakan saat terdeteksi |439| `terminal.type` | Jenis terminal, seperti `iTerm.app`, `vscode`, `cursor`, atau `tmux` | Selalu disertakan saat terdeteksi |

436| Kunci dari `OTEL_RESOURCE_ATTRIBUTES` | Atribut khusus yang Anda atur, seperti `department` atau `team.id`. Lihat [Dukungan organisasi multi-tim](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (default: true) |440| Kunci dari `OTEL_RESOURCE_ATTRIBUTES` | Atribut khusus yang Anda atur, seperti `department` atau `team.id`. Lihat [Dukungan organisasi multi-tim](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (default: true) |

437 441 

438Acara juga menyertakan atribut berikut. Ini tidak pernah dilampirkan pada metrik karena akan menyebabkan kardinalitas tak terbatas:442Acara juga menyertakan atribut berikut. Ini tidak pernah dilampirkan pada metrik karena akan menyebabkan kardinalitas tak terbatas:

439 443 

440* `prompt.id`: UUID v4 yang menghubungkan prompt pengguna dengan semua acara berikutnya hingga prompt berikutnya. Lihat [Atribut korelasi acara](#event-correlation-attributes).444* `prompt.id`: UUID yang menghubungkan prompt pengguna dengan semua acara berikutnya hingga prompt berikutnya. Lihat [Atribut korelasi acara](#event-correlation-attributes).

441* `workspace.host_paths`: direktori ruang kerja host yang dipilih di aplikasi desktop, sebagai array string445* `workspace.host_paths`: direktori ruang kerja host yang dipilih di aplikasi desktop, sebagai array string

442 446 

443<h3 id="metrics">447<h3 id="metrics">


484 488 

485* Semua [atribut standar](#standard-attributes)489* Semua [atribut standar](#standard-attributes)

486* `type`: (`"added"`, `"removed"`)490* `type`: (`"added"`, `"removed"`)

491* `model`: Pengidentifikasi model untuk model yang membuat perubahan (misalnya, "claude-sonnet-4-6"). Memerlukan Claude Code v2.1.172 atau lebih baru

487 492 

488<h4 id="pull-request-counter">493<h4 id="pull-request-counter">

489 Penghitung permintaan tarik494 Penghitung permintaan tarik


692* `effort`: [Tingkat effort](/id/model-config#adjust-effort-level) yang diterapkan pada permintaan. Tidak ada saat model tidak mendukung effort.697* `effort`: [Tingkat effort](/id/model-config#adjust-effort-level) yang diterapkan pada permintaan. Tidak ada saat model tidak mendukung effort.

693* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: Atribusi skill, plugin, agen, dan MCP untuk permintaan. Lihat [Penghitung biaya](#cost-counter) untuk definisi dan perilaku redaksi.698* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: Atribusi skill, plugin, agen, dan MCP untuk permintaan. Lihat [Penghitung biaya](#cost-counter) untuk definisi dan perilaku redaksi.

694 699 

700<h4 id="api-refusal-event">

701 Acara penolakan API

702</h4>

703 

704Dicatat saat permintaan API mengembalikan `stop_reason: "refusal"`. Penolakan tiba pada aliran respons yang berhasil daripada sebagai kesalahan HTTP, jadi acara `api_error` tidak terpicu untuk mereka. Acara ini memungkinkan Anda melacak frekuensi penolakan.

705 

706**Nama Acara**: `claude_code.api_refusal`

707 

708**Atribut**:

709 

710* Semua [atribut standar](#standard-attributes)

711* `event.name`: `"api_refusal"`

712* `event.timestamp`: Stempel waktu ISO 8601

713* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi

714* `model`: Pengidentifikasi model dari permintaan

715* `request_id`: ID permintaan API Anthropic dari header `request-id` respons, seperti `"req_011..."`. Hadir hanya saat API mengembalikan satu.

716 

695<h4 id="api-request-body-event">717<h4 id="api-request-body-event">

696 Acara badan permintaan API718 Acara badan permintaan API

697</h4>719</h4>


823* `server_scope`: Cakupan server dikonfigurasi di, seperti `"user"`, `"project"`, atau `"local"`845* `server_scope`: Cakupan server dikonfigurasi di, seperti `"user"`, `"project"`, atau `"local"`

824* `duration_ms`: Durasi upaya koneksi dalam milidetik846* `duration_ms`: Durasi upaya koneksi dalam milidetik

825* `error_code`: Kode kesalahan saat koneksi gagal847* `error_code`: Kode kesalahan saat koneksi gagal

848* `is_plugin`: `true` saat server disediakan oleh plugin, `false` sebaliknya

849* `plugin_id_hash` (saat `is_plugin` adalah `true`): Hash stabil dari nama plugin dan marketplace, untuk mengelompokkan acara berdasarkan plugin tanpa mengekspos nama

850* `plugin.name` (saat `is_plugin` adalah `true`): Nama plugin yang menyediakan server. Untuk plugin pihak ketiga ini adalah string literal `"third-party"` kecuali `OTEL_LOG_TOOL_DETAILS=1`; ini melindungi nama plugin pihak ketiga dari muncul dalam log secara default. Plugin dari sumber Anthropic resmi selalu diidentifikasi berdasarkan nama. Atribut `plugin_id_hash` dan `plugin.name` mengalir ke backend monitoring Anda sendiri dan tidak dikirim ke Anthropic

826* `server_name` (saat `OTEL_LOG_TOOL_DETAILS=1`): Nama server yang dikonfigurasi851* `server_name` (saat `OTEL_LOG_TOOL_DETAILS=1`): Nama server yang dikonfigurasi

827* `error` (saat `OTEL_LOG_TOOL_DETAILS=1`): Pesan kesalahan lengkap saat koneksi gagal852* `error` (saat `OTEL_LOG_TOOL_DETAILS=1`): Pesan kesalahan lengkap saat koneksi gagal

828 853 


885* `plugin_id_hash`: hash deterministik dari nama plugin dan marketplace, dikirim hanya ke pengekspor yang dikonfigurasi. Memungkinkan Anda menghitung berapa banyak plugin pihak ketiga yang berbeda dimuat di seluruh armada Anda tanpa merekam nama mereka910* `plugin_id_hash`: hash deterministik dari nama plugin dan marketplace, dikirim hanya ke pengekspor yang dikonfigurasi. Memungkinkan Anda menghitung berapa banyak plugin pihak ketiga yang berbeda dimuat di seluruh armada Anda tanpa merekam nama mereka

886* `has_hooks`: apakah plugin berkontribusi hooks911* `has_hooks`: apakah plugin berkontribusi hooks

887* `has_mcp`: apakah plugin berkontribusi server MCP912* `has_mcp`: apakah plugin berkontribusi server MCP

913* `host_owned_mcp`: `true` saat host SDK mengelola koneksi MCP plugin ini dan Claude Code melewati pembacaan konfigurasi server MCP plugin, `false` sebaliknya. Memerlukan Claude Code v2.1.172 atau lebih baru

888* `skill_path_count`: jumlah direktori skill yang dideklarasikan plugin914* `skill_path_count`: jumlah direktori skill yang dideklarasikan plugin

889* `command_path_count`: jumlah direktori perintah yang dideklarasikan plugin915* `command_path_count`: jumlah direktori perintah yang dideklarasikan plugin

890* `agent_path_count`: jumlah direktori agen yang dideklarasikan plugin916* `agent_path_count`: jumlah direktori agen yang dideklarasikan plugin

917* `safe_mode`: `"true"` saat sesi dimulai dengan [`--safe-mode`](/id/cli-reference), `"false"` sebaliknya. Dalam mode aman acara ini melaporkan inventaris yang dikonfigurasi saja; perintah, skill, hooks, dan server MCP plugin tidak dimuat. Memerlukan Claude Code v2.1.169 atau lebih baru

891 918 

892<h4 id="skill-activated-event">919<h4 id="skill-activated-event">

893 Acara skill diaktifkan920 Acara skill diaktifkan


906* `skill.name`: Nama skill. Untuk skill yang ditentukan pengguna dan plugin pihak ketiga nilainya adalah placeholder `"custom_skill"` kecuali `OTEL_LOG_TOOL_DETAILS=1`933* `skill.name`: Nama skill. Untuk skill yang ditentukan pengguna dan plugin pihak ketiga nilainya adalah placeholder `"custom_skill"` kecuali `OTEL_LOG_TOOL_DETAILS=1`

907* `invocation_trigger`: Bagaimana skill dipicu (`"user-slash"`, `"claude-proactive"`, atau `"nested-skill"`)934* `invocation_trigger`: Bagaimana skill dipicu (`"user-slash"`, `"claude-proactive"`, atau `"nested-skill"`)

908* `skill.source`: Tempat skill dimuat dari (misalnya, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)935* `skill.source`: Tempat skill dimuat dari (misalnya, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)

936* `skill.kind`: `"workflow"` saat skill adalah skill workflow. Tidak ada sebaliknya

909* `plugin.name` (saat `OTEL_LOG_TOOL_DETAILS=1` atau plugin dari marketplace resmi): Nama plugin pemilik saat skill disediakan oleh plugin937* `plugin.name` (saat `OTEL_LOG_TOOL_DETAILS=1` atau plugin dari marketplace resmi): Nama plugin pemilik saat skill disediakan oleh plugin

910* `marketplace.name` (saat `OTEL_LOG_TOOL_DETAILS=1` atau plugin dari marketplace resmi): Marketplace plugin pemilik diinstal dari, saat skill disediakan oleh plugin938* `marketplace.name` (saat `OTEL_LOG_TOOL_DETAILS=1` atau plugin dari marketplace resmi): Marketplace plugin pemilik diinstal dari, saat skill disediakan oleh plugin

911 939 


964* `hook_event`: jenis acara hook, seperti `"PreToolUse"` atau `"PostToolUse"`992* `hook_event`: jenis acara hook, seperti `"PreToolUse"` atau `"PostToolUse"`

965* `hook_type`: jenis implementasi hook: `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, atau `"agent"`993* `hook_type`: jenis implementasi hook: `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, atau `"agent"`

966* `hook_source`: tempat hook didefinisikan: `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, atau `"pluginHook"`994* `hook_source`: tempat hook didefinisikan: `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, atau `"pluginHook"`

995* `safe_mode`: `"true"` saat sesi dimulai dengan [`--safe-mode`](/id/cli-reference), `"false"` sebaliknya. Memerlukan Claude Code v2.1.169 atau lebih baru

967* `hook_matcher` (saat `OTEL_LOG_TOOL_DETAILS=1`): string matcher dari konfigurasi hook, saat satu diatur996* `hook_matcher` (saat `OTEL_LOG_TOOL_DETAILS=1`): string matcher dari konfigurasi hook, saat satu diatur

968* `plugin.name` (saat `hook_source` adalah `"pluginHook"`): nama plugin yang berkontribusi. Untuk plugin di luar marketplace resmi dan bundel built-in nilainya adalah `"third-party"` kecuali `OTEL_LOG_TOOL_DETAILS=1`997* `plugin.name` (saat `hook_source` adalah `"pluginHook"`): nama plugin yang berkontribusi. Untuk plugin di luar marketplace resmi dan bundel built-in nilainya adalah `"third-party"` kecuali `OTEL_LOG_TOOL_DETAILS=1`

969* `plugin_id_hash` (saat `hook_source` adalah `"pluginHook"`): hash deterministik dari nama plugin dan marketplace, dikirim hanya ke pengekspor yang dikonfigurasi. Memungkinkan Anda menghitung plugin yang berkontribusi berbeda tanpa merekam nama mereka998* `plugin_id_hash` (saat `hook_source` adalah `"pluginHook"`): hash deterministik dari nama plugin dan marketplace, dikirim hanya ke pengekspor yang dikonfigurasi. Memungkinkan Anda menghitung plugin yang berkontribusi berbeda tanpa merekam nama mereka


987* `num_hooks`: Jumlah perintah hook yang cocok1016* `num_hooks`: Jumlah perintah hook yang cocok

988* `managed_only`: `"true"` saat hanya hooks kebijakan terkelola yang diizinkan1017* `managed_only`: `"true"` saat hanya hooks kebijakan terkelola yang diizinkan

989* `hook_source`: `"policySettings"` atau `"merged"`1018* `hook_source`: `"policySettings"` atau `"merged"`

1019* `safe_mode`: `"true"` saat sesi dimulai dengan [`--safe-mode`](/id/cli-reference), `"false"` sebaliknya. Memerlukan Claude Code v2.1.169 atau lebih baru

990* `hook_definitions`: Konfigurasi hook yang diserialisasi JSON. Disertakan hanya saat detailed beta tracing dan `OTEL_LOG_TOOL_DETAILS=1` keduanya diaktifkan1020* `hook_definitions`: Konfigurasi hook yang diserialisasi JSON. Disertakan hanya saat detailed beta tracing dan `OTEL_LOG_TOOL_DETAILS=1` keduanya diaktifkan

991 1021 

992<h4 id="hook-execution-complete-event">1022<h4 id="hook-execution-complete-event">


1013* `total_duration_ms`: Durasi wall-clock dari semua hooks yang cocok1043* `total_duration_ms`: Durasi wall-clock dari semua hooks yang cocok

1014* `managed_only`: `"true"` saat hanya hooks kebijakan terkelola yang diizinkan1044* `managed_only`: `"true"` saat hanya hooks kebijakan terkelola yang diizinkan

1015* `hook_source`: `"policySettings"` atau `"merged"`1045* `hook_source`: `"policySettings"` atau `"merged"`

1046* `safe_mode`: `"true"` saat sesi dimulai dengan [`--safe-mode`](/id/cli-reference), `"false"` sebaliknya. Memerlukan Claude Code v2.1.169 atau lebih baru

1016* `hook_definitions`: Konfigurasi hook yang diserialisasi JSON. Disertakan hanya saat detailed beta tracing dan `OTEL_LOG_TOOL_DETAILS=1` keduanya diaktifkan1047* `hook_definitions`: Konfigurasi hook yang diserialisasi JSON. Disertakan hanya saat detailed beta tracing dan `OTEL_LOG_TOOL_DETAILS=1` keduanya diaktifkan

1017 1048 

1018<h4 id="hook-plugin-metrics-event">1049<h4 id="hook-plugin-metrics-event">


1089| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |1120| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |

1090| `claude_code.token.usage` | Pecahkan berdasarkan `type` (input/output), pengguna, tim, model, `skill.name`, `plugin.name`, atau `agent.name` |1121| `claude_code.token.usage` | Pecahkan berdasarkan `type` (input/output), pengguna, tim, model, `skill.name`, `plugin.name`, atau `agent.name` |

1091| `claude_code.session.count` | Lacak adopsi dan keterlibatan dari waktu ke waktu |1122| `claude_code.session.count` | Lacak adopsi dan keterlibatan dari waktu ke waktu |

1092| `claude_code.lines_of_code.count` | Ukur produktivitas dengan melacak penambahan/penghapusan kode |1123| `claude_code.lines_of_code.count` | Ukur produktivitas dengan melacak penambahan dan penghapusan kode, dipecah berdasarkan model |

1093| `claude_code.commit.count` & `claude_code.pull_request.count` | Pahami dampak pada alur kerja pengembangan |1124| `claude_code.commit.count` & `claude_code.pull_request.count` | Pahami dampak pada alur kerja pengembangan |

1094 1125 

1095<h3 id="cost-monitoring">1126<h3 id="cost-monitoring">


1116* Konsumsi token yang tidak biasa1147* Konsumsi token yang tidak biasa

1117* Volume sesi tinggi dari pengguna tertentu1148* Volume sesi tinggi dari pengguna tertentu

1118 1149 

1119Semua metrik dapat disegmentasikan berdasarkan `user.account_uuid`, `user.account_id`, `organization.id`, `session.id`, `model`, dan `app.version`.1150Semua metrik dapat disegmentasikan berdasarkan [atribut standar](#standard-attributes). Atribut `model` tersedia pada `claude_code.token.usage`, `claude_code.cost.usage`, dan dari v2.1.172, `claude_code.lines_of_code.count`. Rincian per-model dari commit hanya dapat didekati dengan menggabungkan terhadap metrik token atau biaya pada `session.id`, karena satu sesi dapat mencakup beberapa model.

1120 1151 

1121<h3 id="detect-retry-exhaustion">1152<h3 id="detect-retry-exhaustion">

1122 Deteksi kelelahan retry1153 Deteksi kelelahan retry


1179 1210 

1180* `tool_result`: menyimpan `tool_name` dan `mcp_server_scope`, menghilangkan `mcp_server_name`, `mcp_tool_name`, dan argumen1211* `tool_result`: menyimpan `tool_name` dan `mcp_server_scope`, menghilangkan `mcp_server_name`, `mcp_tool_name`, dan argumen

1181* `tool_decision`: menyimpan `tool_name`, menghilangkan `tool_parameters`1212* `tool_decision`: menyimpan `tool_name`, menghilangkan `tool_parameters`

1182* `mcp_server_connection`: menghilangkan `server_name` dan pesan kesalahan1213* `mcp_server_connection`: menghilangkan `server_name` dan pesan kesalahan, tetapi menyimpan `is_plugin`, `plugin_id_hash`, dan `plugin.name`, dengan nama plugin non-Anthropic diredaksi ke literal `"third-party"`, sehingga server yang disediakan plugin tetap dapat dibedakan tanpa pencatatan terperinci

1183 1214 

1184<h3 id="map-security-questions-to-events">1215<h3 id="map-security-questions-to-events">

1185 Peta pertanyaan keamanan ke acara1216 Peta pertanyaan keamanan ke acara


1193| Eskalasi mode izin | `permission_mode_changed` | `from_mode`, `to_mode`, `trigger` |1224| Eskalasi mode izin | `permission_mode_changed` | `from_mode`, `to_mode`, `trigger` |

1194| Hook kebijakan memblokir tindakan | `hook_execution_complete` | `hook_event`, `num_blocking` |1225| Hook kebijakan memblokir tindakan | `hook_execution_complete` | `hook_event`, `num_blocking` |

1195| Login, logout, dan kegagalan autentikasi | `auth` | `action`, `success`, `error_category` |1226| Login, logout, dan kegagalan autentikasi | `auth` | `action`, `success`, `error_category` |

1196| Server MCP terhubung atau gagal | `mcp_server_connection` | `status`, `server_name`, `error_code` |1227| Server MCP terhubung atau gagal | `mcp_server_connection` | `status`, `server_name`, `is_plugin`, `error_code` |

1197| Plugin diinstal dan sumbernya | `plugin_installed` | `plugin.name`, `marketplace.name`, `marketplace.is_official` |1228| Plugin diinstal dan sumbernya | `plugin_installed` | `plugin.name`, `marketplace.name`, `marketplace.is_official` |

1198| Perintah yang dijalankan dan file yang disentuh | `tool_result` (dieksekusi) atau `tool_decision` (ditolak) dengan `OTEL_LOG_TOOL_DETAILS=1` | `tool_parameters`; `tool_input` (`tool_result` saja) |1229| Perintah yang dijalankan dan file yang disentuh | `tool_result` (dieksekusi) atau `tool_decision` (ditolak) dengan `OTEL_LOG_TOOL_DETAILS=1` | `tool_parameters`; `tool_input` (`tool_result` saja) |

1199 1230 


1230 1261 

1231* **Database deret waktu (misalnya, Prometheus)**: Perhitungan laju, metrik agregat1262* **Database deret waktu (misalnya, Prometheus)**: Perhitungan laju, metrik agregat

1232* **Toko kolumnar (misalnya, ClickHouse)**: Kueri kompleks, analisis pengguna unik1263* **Toko kolumnar (misalnya, ClickHouse)**: Kueri kompleks, analisis pengguna unik

1233* **Platform observabilitas lengkap (misalnya, Honeycomb, Datadog)**: Kueri lanjutan, visualisasi, peringatan1264* **Platform observabilitas lengkap (misalnya, Honeycomb, Datadog, Grafana Cloud)**: Kueri lanjutan, visualisasi, peringatan

1234 1265 

1235<h3 id="for-events/logs">1266<h3 id="for-events/logs">

1236 Untuk acara/log1267 Untuk acara/log


1238 1269 

1239* **Sistem agregasi log (misalnya, Elasticsearch, Loki)**: Pencarian teks lengkap, analisis log1270* **Sistem agregasi log (misalnya, Elasticsearch, Loki)**: Pencarian teks lengkap, analisis log

1240* **Toko kolumnar (misalnya, ClickHouse)**: Analisis acara terstruktur1271* **Toko kolumnar (misalnya, ClickHouse)**: Analisis acara terstruktur

1241* **Platform observabilitas lengkap (misalnya, Honeycomb, Datadog)**: Korelasi antara metrik dan acara1272* **Platform observabilitas lengkap (misalnya, Honeycomb, Datadog, Grafana Cloud)**: Korelasi antara metrik dan acara

1242 1273 

1243<h3 id="for-traces">1274<h3 id="for-traces">

1244 Untuk traces1275 Untuk traces


1247Pilih backend yang mendukung penyimpanan distributed trace dan korelasi span:1278Pilih backend yang mendukung penyimpanan distributed trace dan korelasi span:

1248 1279 

1249* **Sistem distributed tracing (misalnya, Jaeger, Zipkin, Grafana Tempo)**: Visualisasi span, request waterfalls, analisis latensi1280* **Sistem distributed tracing (misalnya, Jaeger, Zipkin, Grafana Tempo)**: Visualisasi span, request waterfalls, analisis latensi

1250* **Platform observabilitas lengkap (misalnya, Honeycomb, Datadog)**: Pencarian trace dan korelasi dengan metrik dan log1281* **Platform observabilitas lengkap (misalnya, Honeycomb, Datadog, Grafana Cloud)**: Pencarian trace dan korelasi dengan metrik dan log

1251 1282 

1252Untuk organisasi yang memerlukan metrik Pengguna Aktif Harian/Mingguan/Bulanan (DAU/WAU/MAU), pertimbangkan backend yang mendukung kueri nilai unik yang efisien.1283Untuk organisasi yang memerlukan metrik Pengguna Aktif Harian/Mingguan/Bulanan (DAU/WAU/MAU), pertimbangkan backend yang mendukung kueri nilai unik yang efisien.

1253 1284 


1279* Konten file mentah dan cuplikan kode tidak disertakan dalam metrik atau acara. Trace spans adalah jalur data terpisah: lihat poin `OTEL_LOG_TOOL_CONTENT` di bawah1310* Konten file mentah dan cuplikan kode tidak disertakan dalam metrik atau acara. Trace spans adalah jalur data terpisah: lihat poin `OTEL_LOG_TOOL_CONTENT` di bawah

1280* Saat diautentikasi melalui OAuth, `user.email` disertakan dalam atribut telemetri. Jika ini menjadi perhatian bagi organisasi Anda, bekerja dengan backend telemetri Anda untuk memfilter atau menyunting bidang ini1311* Saat diautentikasi melalui OAuth, `user.email` disertakan dalam atribut telemetri. Jika ini menjadi perhatian bagi organisasi Anda, bekerja dengan backend telemetri Anda untuk memfilter atau menyunting bidang ini

1281* Konten prompt pengguna tidak dikumpulkan secara default. Hanya panjang prompt yang dicatat. Untuk menyertakan konten prompt, atur `OTEL_LOG_USER_PROMPTS=1`1312* Konten prompt pengguna tidak dikumpulkan secara default. Hanya panjang prompt yang dicatat. Untuk menyertakan konten prompt, atur `OTEL_LOG_USER_PROMPTS=1`

1282* Argumen input alat dan parameter tidak dicatat secara default. Untuk menyertakannya, atur `OTEL_LOG_TOOL_DETAILS=1`. Data ini dikirim hanya ke titik akhir OTEL yang Anda konfigurasikan, tidak pernah ke Anthropic. Saat diaktifkan:1313* Argumen input alat dan parameter tidak dicatat secara default. Untuk menyertakannya, atur `OTEL_LOG_TOOL_DETAILS=1`. Data ini dikirim hanya ke titik akhir OTEL yang Anda konfigurasikan, tidak pernah ke Anthropic. Argumen mungkin masih berisi nilai sensitif, jadi konfigurasikan backend telemetri Anda untuk memfilter atau menyunting atribut ini sesuai kebutuhan. Saat diaktifkan:

1283 * Acara `tool_result` dan `tool_decision` menyertakan atribut `tool_parameters` dengan perintah Bash, nama server MCP dan alat, dan nama skill. Bidang seperti `full_command` dipancarkan tanpa pemotongan1314 * Acara `tool_result` dan `tool_decision` menyertakan atribut `tool_parameters` dengan perintah Bash, nama server MCP dan alat, dan nama skill. Bidang seperti `full_command` dipancarkan tanpa pemotongan

1284 * Acara `tool_result` juga menyertakan atribut `tool_input` dengan jalur file, URL, pola pencarian, dan argumen lainnya. Nilai individual di atas 512 karakter dipotong dan total dibatasi hingga \~4 K karakter1315 * Acara `tool_result` juga menyertakan atribut `tool_input` dengan jalur file, URL, pola pencarian, dan argumen lainnya. Nilai individual di atas 512 karakter dipotong dan total dibatasi hingga \~4 K karakter

1285 * Acara `user_prompt` menyertakan `command_name` verbatim untuk perintah custom, plugin, dan MCP1316 * Acara `user_prompt` menyertakan `command_name` verbatim untuk perintah custom, plugin, dan MCP

1286 * Trace spans menyertakan atribut `tool_input` yang sama dan atribut yang diturunkan dari input seperti `file_path`, dengan pemotongan yang sama dengan `tool_input`1317 * Trace spans menyertakan atribut `tool_input` yang sama dan atribut yang diturunkan dari input seperti `file_path`, dengan pemotongan yang sama dengan `tool_input`

1287 * Argumen mungkin masih berisi nilai sensitif, jadi konfigurasikan backend telemetri Anda untuk memfilter atau menyunting atribut ini sesuai kebutuhan

1288* Konten input dan output alat tidak dicatat dalam trace spans secara default. Untuk menyertakannya, atur `OTEL_LOG_TOOL_CONTENT=1`. Saat diaktifkan, acara span menyertakan konten input dan output alat lengkap dipotong pada 60 KB per span. Ini dapat mencakup konten file mentah dari hasil alat Read dan output perintah Bash. Konfigurasikan backend telemetri Anda untuk memfilter atau menyunting atribut ini sesuai kebutuhan1318* Konten input dan output alat tidak dicatat dalam trace spans secara default. Untuk menyertakannya, atur `OTEL_LOG_TOOL_CONTENT=1`. Saat diaktifkan, acara span menyertakan konten input dan output alat lengkap dipotong pada 60 KB per span. Ini dapat mencakup konten file mentah dari hasil alat Read dan output perintah Bash. Konfigurasikan backend telemetri Anda untuk memfilter atau menyunting atribut ini sesuai kebutuhan

1289* Badan permintaan dan respons API Anthropic Messages mentah tidak dicatat secara default. Untuk menyertakannya, atur `OTEL_LOG_RAW_API_BODIES`. Dengan `=1`, setiap panggilan API memancarkan acara log `api_request_body` dan `api_response_body` yang atribut `body`-nya adalah muatan yang diserialisasi JSON, dipotong pada 60 KB. Dengan `=file:<dir>`, badan yang tidak dipotong ditulis ke file `.request.json` dan `.response.json` di bawah direktori tersebut dan acara membawa jalur `body_ref` sebagai gantinya dari badan inline. Kirim direktori dengan pengumpul log atau sidecar daripada melalui aliran telemetri. Dalam kedua mode, badan berisi riwayat percakapan lengkap (system prompt, setiap giliran pengguna dan asisten sebelumnya, hasil alat), jadi mengaktifkan ini menyiratkan persetujuan untuk semua yang akan diungkapkan oleh flag konten `OTEL_LOG_*` lainnya. Konten extended-thinking Claude selalu diredaksi dari badan ini terlepas dari pengaturan lain1319* Badan permintaan dan respons API Anthropic Messages mentah tidak dicatat secara default. Untuk menyertakannya, atur `OTEL_LOG_RAW_API_BODIES`. Dengan `=1`, setiap panggilan API memancarkan acara log `api_request_body` dan `api_response_body` yang atribut `body`-nya adalah muatan yang diserialisasi JSON, dipotong pada 60 KB. Dengan `=file:<dir>`, badan yang tidak dipotong ditulis ke file `.request.json` dan `.response.json` di bawah direktori tersebut dan acara membawa jalur `body_ref` sebagai gantinya dari badan inline. Kirim direktori dengan pengumpul log atau sidecar daripada melalui aliran telemetri. Dalam kedua mode, badan berisi riwayat percakapan lengkap (system prompt, setiap giliran pengguna dan asisten sebelumnya, hasil alat), jadi mengaktifkan ini menyiratkan persetujuan untuk semua yang akan diungkapkan oleh flag konten `OTEL_LOG_*` lainnya. Konten extended-thinking Claude selalu diredaksi dari badan ini terlepas dari pengaturan lain

1290 1320 

Details

57 * User: `~/.claude/output-styles`57 * User: `~/.claude/output-styles`

58 * Project: `.claude/output-styles`58 * Project: `.claude/output-styles`

59 * Managed policy: `.claude/output-styles` di dalam [direktori pengaturan terkelola](/id/settings#settings-files)59 * Managed policy: `.claude/output-styles` di dalam [direktori pengaturan terkelola](/id/settings#settings-files)

60 

61 Project output styles dimuat dari setiap `.claude/output-styles/` antara direktori kerja dan akar repositori. {/* min-version: 2.1.178 */}Mulai dari v2.1.178, ketika lebih dari satu direktori bersarang ini mendefinisikan style dengan nama yang sama, Claude Code menggunakan yang paling dekat dengan direktori kerja.

60 </Step>62 </Step>

61 63 

62 <Step title="Tambahkan frontmatter dan instruksi">64 <Step title="Tambahkan frontmatter dan instruksi">

overview.md +2 −2

Details

124 <Tab title="JetBrains">124 <Tab title="JetBrains">

125 Plugin untuk IntelliJ IDEA, PyCharm, WebStorm, dan IDE JetBrains lainnya dengan tampilan diff interaktif dan berbagi konteks seleksi.125 Plugin untuk IntelliJ IDEA, PyCharm, WebStorm, dan IDE JetBrains lainnya dengan tampilan diff interaktif dan berbagi konteks seleksi.

126 126 

127 Instal [plugin Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) dari JetBrains Marketplace dan mulai ulang IDE Anda.127 Instal [plugin Claude Code](https://plugins.jetbrains.com/plugin/27310-claude-code-beta-) dari JetBrains Marketplace dan mulai ulang IDE Anda. Plugin memerlukan CLI Claude Code, diinstal secara terpisah; lihat [langkah-langkah pengaturan JetBrains](/id/jetbrains#installation).

128 128 

129 [Mulai dengan JetBrains →](/id/jetbrains)129 [Mulai dengan JetBrains →](/id/jetbrains)

130 </Tab>130 </Tab>


209 209 

210 * Tinggalkan meja Anda dan terus bekerja dari ponsel atau browser apa pun dengan [Remote Control](/id/remote-control)210 * Tinggalkan meja Anda dan terus bekerja dari ponsel atau browser apa pun dengan [Remote Control](/id/remote-control)

211 * Kirim pesan [Dispatch](/id/desktop#sessions-from-dispatch) tugas dari ponsel Anda dan buka sesi Desktop yang dibuatnya211 * Kirim pesan [Dispatch](/id/desktop#sessions-from-dispatch) tugas dari ponsel Anda dan buka sesi Desktop yang dibuatnya

212 * Mulai tugas yang berjalan lama di [web](/id/claude-code-on-the-web) atau [aplikasi iOS](https://apps.apple.com/app/claude-by-anthropic/id6473753684), kemudian tariknya ke terminal Anda dengan `claude --teleport`212 * Mulai tugas yang berjalan lama di [web](/id/claude-code-on-the-web) atau [aplikasi iOS](https://apps.apple.com/app/claude-by-anthropic/id6473753684), kemudian tariknya ke terminal Anda dengan `claude --teleport`. Teleport memerlukan langganan claude.ai.

213 * Serahkan sesi terminal ke [aplikasi Desktop](/id/desktop) dengan `/desktop` untuk tinjauan diff visual213 * Serahkan sesi terminal ke [aplikasi Desktop](/id/desktop) dengan `/desktop` untuk tinjauan diff visual

214 * Rute tugas dari obrolan tim: sebutkan `@Claude` di [Slack](/id/slack) dengan laporan bug dan dapatkan pull request kembali214 * Rute tugas dari obrolan tim: sebutkan `@Claude` di [Slack](/id/slack) dengan laporan bug dan dapatkan pull request kembali

215 </Accordion>215 </Accordion>

Details

25 25 

26Di setiap mode kecuali `bypassPermissions`, penulisan ke [jalur yang dilindungi](#protected-paths) tidak pernah disetujui otomatis, menjaga status repositori dan konfigurasi Claude sendiri dari kerusakan yang tidak disengaja.26Di setiap mode kecuali `bypassPermissions`, penulisan ke [jalur yang dilindungi](#protected-paths) tidak pernah disetujui otomatis, menjaga status repositori dan konfigurasi Claude sendiri dari kerusakan yang tidak disengaja.

27 27 

28Mode menetapkan baseline. Lapisi [aturan izin](/id/permissions#manage-permissions) di atas untuk pre-approve atau memblokir alat tertentu di mode apa pun kecuali `bypassPermissions`, yang melewati lapisan izin sepenuhnya.28Mode menetapkan baseline. Lapisi [aturan izin](/id/permissions#manage-permissions) di atas untuk pre-approve atau memblokir alat tertentu. Aturan deny dan aturan ask eksplisit berlaku di setiap mode, termasuk `bypassPermissions`. Aturan allow tidak memiliki efek dalam mode itu karena semuanya sudah disetujui.

29 29 

30<h2 id="switch-permission-modes">30<h2 id="switch-permission-modes">

31 Beralih mode izin31 Beralih mode izin


95 <Tab title="Web dan mobile">95 <Tab title="Web dan mobile">

96 Gunakan dropdown mode di sebelah kotak prompt di [claude.ai/code](https://claude.ai/code) atau di aplikasi mobile. Prompt izin muncul di claude.ai untuk persetujuan. Mode mana yang muncul tergantung di mana sesi berjalan:96 Gunakan dropdown mode di sebelah kotak prompt di [claude.ai/code](https://claude.ai/code) atau di aplikasi mobile. Prompt izin muncul di claude.ai untuk persetujuan. Mode mana yang muncul tergantung di mana sesi berjalan:

97 97 

98 * **Sesi cloud** di [Claude Code di web](/id/claude-code-on-the-web): Terima pengeditan otomatis dan Mode rencana. Minta izin, Mode otomatis, dan Lewati izin tidak tersedia.98 * **Sesi cloud** di [Claude Code di web](/id/claude-code-on-the-web): Terima pengeditan, Mode rencana, dan Mode otomatis. Terima pengeditan sesuai dengan mode `default`: lingkungan cloud pra-menyetujui pengeditan file terlepas dari mode, jadi dropdown menampilkan Terima pengeditan alih-alih Minta izin. `defaultMode: "acceptEdits"` dari pengaturan masih dihormati. Mode otomatis muncul hanya ketika organisasi Anda mengizinkannya dan model yang dipilih mendukungnya. Lewati izin tidak tersedia.

99 * **Sesi [Remote Control](/id/remote-control)** di mesin lokal Anda: Minta izin, Terima pengeditan otomatis, dan Mode rencana. Mode otomatis dan Lewati izin tidak tersedia.99 * **Sesi [Remote Control](/id/remote-control)** di mesin lokal Anda: Minta izin, Terima pengeditan otomatis, dan Mode rencana. Mode otomatis dan Lewati izin tidak tersedia.

100 100 

101 Untuk Remote Control, Anda juga dapat mengatur mode awal saat meluncurkan host:101 Untuk Remote Control, Anda juga dapat mengatur mode awal saat meluncurkan host:


176 Mode otomatis memerlukan Claude Code v2.1.83 atau lebih baru.176 Mode otomatis memerlukan Claude Code v2.1.83 atau lebih baru.

177</Note>177</Note>

178 178 

179Mode otomatis memungkinkan Claude menjalankan tanpa prompt izin. Model pengklasifikasi terpisah meninjau tindakan sebelum berjalan, memblokir apa pun yang melampaui permintaan Anda, menargetkan infrastruktur yang tidak dikenali, atau tampak didorong oleh konten bermusuhan yang dibaca Claude.179Mode otomatis memungkinkan Claude menjalankan tanpa prompt izin rutin. Model pengklasifikasi terpisah meninjau tindakan sebelum berjalan, memblokir apa pun yang melampaui permintaan Anda, menargetkan infrastruktur yang tidak dikenali, atau tampak didorong oleh konten bermusuhan yang dibaca Claude. [Aturan ask](/id/permissions#manage-permissions) eksplisit masih memaksa prompt.

180 180 

181Mode otomatis juga mendorong Claude untuk terus bekerja tanpa berhenti untuk pertanyaan klarifikasi, meskipun Claude masih bertanya ketika prompt Anda atau skill secara eksplisit bergantung padanya. Untuk perilaku otonom yang lebih kuat sambil tetap mempertahankan prompt izin, atur [gaya output Proaktif](/id/output-styles) sebagai gantinya.181Mode otomatis juga mendorong Claude untuk terus bekerja tanpa berhenti untuk pertanyaan klarifikasi, meskipun Claude masih bertanya ketika prompt Anda atau skill secara eksplisit bergantung padanya. Untuk perilaku otonom yang lebih kuat sambil tetap mempertahankan prompt izin, atur [gaya output Proaktif](/id/output-styles) sebagai gantinya.

182 182 


193 193 

194Jika Claude Code melaporkan mode otomatis sebagai tidak tersedia, salah satu persyaratan ini tidak terpenuhi; ini bukan pemadaman sementara. Pesan terpisah yang menyebutkan model dan mengatakan mode otomatis "tidak dapat menentukan keamanan" tindakan adalah pemadaman pengklasifikasi sementara; lihat [referensi kesalahan](/id/errors#auto-mode-cannot-determine-the-safety-of-an-action).194Jika Claude Code melaporkan mode otomatis sebagai tidak tersedia, salah satu persyaratan ini tidak terpenuhi; ini bukan pemadaman sementara. Pesan terpisah yang menyebutkan model dan mengatakan mode otomatis "tidak dapat menentukan keamanan" tindakan adalah pemadaman pengklasifikasi sementara; lihat [referensi kesalahan](/id/errors#auto-mode-cannot-determine-the-safety-of-an-action).

195 195 

196Jika Anda mengatur `defaultMode: "auto"` di [pengaturan](/id/settings#available-settings) dan sesi dimulai dalam mode `default` tanpa kesalahan, pengaturan kemungkinan berada di `.claude/settings.json` atau `.claude/settings.local.json`. Claude Code mengabaikan `auto` dari file-file tersebut sehingga repositori tidak dapat memberikan dirinya sendiri mode otomatis. Pindahkan ke `~/.claude/settings.json`.196Jika Anda mengatur `defaultMode: "auto"` di [pengaturan](/id/settings#available-settings) dan sesi dimulai dalam mode `default` tanpa kesalahan, pengaturan kemungkinan berada di `.claude/settings.json` atau `.claude/settings.local.json`. Claude Code v2.1.142 dan lebih baru mengabaikan `auto` dari file-file tersebut sehingga repositori tidak dapat memberikan dirinya sendiri mode otomatis. Pindahkan ke `~/.claude/settings.json`.

197 197 

198<h3 id="enable-auto-mode-on-bedrock-vertex-ai-or-foundry">198<h3 id="enable-auto-mode-on-bedrock-vertex-ai-or-foundry">

199 Aktifkan mode otomatis di Bedrock, Vertex AI, atau Foundry199 Aktifkan mode otomatis di Bedrock, Vertex AI, atau Foundry

200</h3>200</h3>

201 201 

202Di [Amazon Bedrock](/id/amazon-bedrock), [Google Cloud Vertex AI](/id/google-vertex-ai), dan [Microsoft Foundry](/id/microsoft-foundry), mode otomatis tidak muncul dalam siklus `Shift+Tab` sampai `CLAUDE_CODE_ENABLE_AUTO_MODE` diatur ke `1`. Hanya Claude Opus 4.7 dan Opus 4.8 yang didukung di penyedia ini.202Di [Amazon Bedrock](/id/amazon-bedrock), [Google Cloud Vertex AI](/id/google-vertex-ai), dan [Microsoft Foundry](/id/microsoft-foundry), mode otomatis tidak muncul dalam siklus `Shift+Tab` sampai `CLAUDE_CODE_ENABLE_AUTO_MODE` diatur ke `1`. Variabel bekerja di Claude Code v2.1.158 dan lebih baru. Hanya Claude Opus 4.7 dan Opus 4.8 yang didukung di penyedia ini.

203 203 

204Untuk mengaktifkannya untuk satu pengembang, tambahkan variabel ke blok `env` di `~/.claude/settings.json`:204Untuk mengaktifkannya untuk satu pengembang, tambahkan variabel ke blok `env` di `~/.claude/settings.json`:

205 205 


293 1. Sebelum subagen dimulai, deskripsi tugas yang didelegasikan dievaluasi, jadi tugas yang terlihat berbahaya diblokir pada waktu spawn.293 1. Sebelum subagen dimulai, deskripsi tugas yang didelegasikan dievaluasi, jadi tugas yang terlihat berbahaya diblokir pada waktu spawn.

294 2. Saat subagen berjalan, setiap tindakannya melalui pengklasifikasi dengan aturan yang sama seperti sesi induk, dan `permissionMode` apa pun di frontmatter subagen diabaikan.294 2. Saat subagen berjalan, setiap tindakannya melalui pengklasifikasi dengan aturan yang sama seperti sesi induk, dan `permissionMode` apa pun di frontmatter subagen diabaikan.

295 3. Ketika subagen selesai, pengklasifikasi meninjau riwayat tindakan lengkapnya; jika pemeriksaan pengembalian menandai kekhawatiran, peringatan keamanan ditambahkan ke hasil subagen.295 3. Ketika subagen selesai, pengklasifikasi meninjau riwayat tindakan lengkapnya; jika pemeriksaan pengembalian menandai kekhawatiran, peringatan keamanan ditambahkan ke hasil subagen.

296 

297 Langkah 1 memerlukan Claude Code v2.1.178 atau lebih baru. Versi sebelumnya menerapkan pengklasifikasi pada langkah 2 dan 3, tetapi tidak mengevaluasi deskripsi tugas sebelum subagen dimulai.

296 </Accordion>298 </Accordion>

297 299 

298 <Accordion title="Biaya dan latensi">300 <Accordion title="Biaya dan latensi">


304 Izinkan hanya alat yang telah disetujui sebelumnya dengan mode dontAsk306 Izinkan hanya alat yang telah disetujui sebelumnya dengan mode dontAsk

305</h2>307</h2>

306 308 

307Mode `dontAsk` auto-deny setiap panggilan alat yang akan meminta sebaliknya. Hanya tindakan yang cocok dengan aturan `permissions.allow` Anda dan [perintah Bash read-only](/id/permissions#read-only-commands) yang dapat dijalankan; aturan `ask` eksplisit ditolak daripada meminta. Ini membuat mode sepenuhnya non-interaktif untuk pipeline CI atau lingkungan terbatas di mana Anda pre-define dengan tepat apa yang Claude boleh lakukan.309Mode `dontAsk` auto-deny setiap panggilan alat yang akan meminta sebaliknya. Hanya tindakan yang cocok dengan aturan `permissions.allow` Anda dan [perintah Bash read-only](/id/permissions#read-only-commands) yang dapat dijalankan; aturan [`ask` eksplisit](/id/permissions#manage-permissions) ditolak daripada meminta. Ini membuat mode sepenuhnya non-interaktif untuk pipeline CI atau lingkungan terbatas di mana Anda pre-define dengan tepat apa yang Claude boleh lakukan. Sesi cloud di [Claude Code di web](/id/claude-code-on-the-web) mengabaikan `defaultMode: "dontAsk"`; lihat [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) untuk detail.

308 310 

309Atur saat startup dengan flag:311Atur saat startup dengan flag:

310 312 


316 Lewati semua pemeriksaan dengan mode bypassPermissions318 Lewati semua pemeriksaan dengan mode bypassPermissions

317</h2>319</h2>

318 320 

319Mode `bypassPermissions` menonaktifkan prompt izin dan pemeriksaan keamanan sehingga panggilan alat dijalankan segera. Sejak v2.1.126 ini mencakup penulisan ke [jalur yang dilindungi](#protected-paths), yang versi sebelumnya masih meminta. Penghapusan yang menargetkan akar sistem file atau direktori home, seperti `rm -rf /` dan `rm -rf ~`, masih meminta sebagai pemutus sirkuit terhadap kesalahan model. Hanya gunakan mode ini di lingkungan terisolasi seperti kontainer, VM, atau dev container tanpa akses internet, di mana Claude Code tidak dapat merusak sistem host Anda.321Mode `bypassPermissions` menonaktifkan prompt izin dan pemeriksaan keamanan sehingga panggilan alat dijalankan segera. Sejak v2.1.126 ini mencakup penulisan ke [jalur yang dilindungi](#protected-paths), yang versi sebelumnya masih meminta. Aturan [ask](/id/permissions#manage-permissions) yang eksplisit masih memaksa prompt dalam mode ini, dan penghapusan yang menargetkan akar sistem file atau direktori home, seperti `rm -rf /` dan `rm -rf ~`, masih meminta sebagai pemutus sirkuit terhadap kesalahan model. Hanya gunakan mode ini di lingkungan terisolasi seperti kontainer, VM, atau dev container tanpa akses internet, di mana Claude Code tidak dapat merusak sistem host Anda.

320 322 

321Anda tidak dapat memasukkan `bypassPermissions` dari sesi yang dimulai tanpa salah satu flag yang mengaktifkan; restart dengan salah satu untuk mengaktifkannya:323Anda tidak dapat memasukkan `bypassPermissions` dari sesi yang dimulai tanpa salah satu flag yang mengaktifkan; restart dengan salah satu untuk mengaktifkannya:

322 324 


334 336 

335Pemeriksaan dilewati secara otomatis di dalam sandbox yang dikenali. Untuk menjalankan secara otonom dalam kontainer, gunakan konfigurasi [dev container](/id/devcontainer), yang menjalankan Claude Code sebagai pengguna non-root.337Pemeriksaan dilewati secara otomatis di dalam sandbox yang dikenali. Untuk menjalankan secara otonom dalam kontainer, gunakan konfigurasi [dev container](/id/devcontainer), yang menjalankan Claude Code sebagai pengguna non-root.

336 338 

339[Claude Code di web](/id/claude-code-on-the-web) tidak menghormati `defaultMode: "bypassPermissions"` atau `"dontAsk"` dari file pengaturan Anda, jadi pengaturan yang diperiksa dalam repositori tidak dapat memulai sesi cloud dalam mode bypass-permissions. Pengaturan diabaikan secara diam-diam dan sesi dimulai dalam mode yang ditampilkan di dropdown mode sebagai gantinya. Lihat [Beralih mode izin](#switch-permission-modes) untuk mode mana yang ditawarkan sesi cloud.

340 

337<Warning>341<Warning>

338 `bypassPermissions` tidak menawarkan perlindungan terhadap injeksi prompt atau tindakan yang tidak diinginkan. Untuk pemeriksaan keamanan latar belakang tanpa prompt, gunakan [mode otomatis](#eliminate-prompts-with-auto-mode) sebagai gantinya. Administrator dapat memblokir mode ini dengan mengatur `permissions.disableBypassPermissionsMode` ke `"disable"` di [pengaturan terkelola](/id/permissions#managed-settings).342 `bypassPermissions` tidak menawarkan perlindungan terhadap injeksi prompt atau tindakan yang tidak diinginkan. Untuk pemeriksaan keamanan latar belakang dengan jauh lebih sedikit prompt, gunakan [mode otomatis](#eliminate-prompts-with-auto-mode) sebagai gantinya. Administrator dapat memblokir mode ini dengan mengatur `permissions.disableBypassPermissionsMode` ke `"disable"` di [pengaturan terkelola](/id/permissions#managed-settings).

339</Warning>343</Warning>

340 344 

341<h2 id="protected-paths">345<h2 id="protected-paths">


351| `dontAsk` | Ditolak |355| `dontAsk` | Ditolak |

352| `bypassPermissions` | Diizinkan |356| `bypassPermissions` | Diizinkan |

353 357 

358Aturan [`permissions.allow`](/id/permissions#manage-permissions) dalam file pengaturan tidak pra-menyetujui penulisan jalur yang dilindungi. Pemeriksaan keamanan berjalan sebelum Claude Code mengevaluasi aturan allow dari pengaturan, jadi entri seperti `Edit(.claude/**)` dalam `~/.claude/settings.json` atau `.claude/settings.json` tidak mengubah hasil per-mode dalam tabel di atas. Dalam mode yang meminta, prompt untuk penulisan `.claude/` menawarkan **Ya, dan izinkan Claude untuk mengedit pengaturannya sendiri untuk sesi ini**, yang menyetujui penulisan `.claude/` berikutnya dalam sesi itu tanpa meminta lagi.

359 

354Direktori yang dilindungi:360Direktori yang dilindungi:

355 361 

356* `.git`362* `.git`


362* `.devcontainer`368* `.devcontainer`

363* `.yarn`369* `.yarn`

364* `.mvn`370* `.mvn`

365* `.claude`, kecuali untuk `.claude/commands`, `.claude/agents`, `.claude/skills`, dan `.claude/worktrees` di mana Claude secara rutin membuat konten371* `.claude`, kecuali untuk `.claude/worktrees` di mana Claude menyimpan git worktrees-nya sendiri

366 372 

367File yang dilindungi:373File yang dilindungi:

368 374 

permissions.md +79 −7

Details

30* Aturan **Ask** meminta konfirmasi setiap kali Claude Code mencoba menggunakan alat yang ditentukan.30* Aturan **Ask** meminta konfirmasi setiap kali Claude Code mencoba menggunakan alat yang ditentukan.

31* Aturan **Deny** mencegah Claude Code menggunakan alat yang ditentukan.31* Aturan **Deny** mencegah Claude Code menggunakan alat yang ditentukan.

32 32 

33Aturan dievaluasi secara berurutan: **deny -> ask -> allow**. Aturan pertama yang cocok menang, jadi aturan deny selalu memiliki prioritas.33Aturan dievaluasi secara berurutan: deny, kemudian ask, kemudian allow. Kecocokan pertama dalam urutan tersebut menentukan hasilnya, dan spesifisitas aturan tidak mengubah urutan. Aturan deny yang luas seperti `Bash(aws *)` memblokir setiap panggilan yang cocok, termasuk panggilan yang juga cocok dengan aturan allow yang lebih sempit seperti `Bash(aws s3 ls)`, jadi aturan deny tidak dapat membawa pengecualian daftar izin. Prioritas yang sama berlaku antara ask dan allow: aturan ask yang cocok meminta konfirmasi bahkan ketika aturan allow yang lebih spesifik juga cocok dengan panggilan yang sama.

34 34 

35Aturan deny berperilaku berbeda tergantung pada apakah mereka menamai alat atau membatasi pola dalam satu alat. Nama alat biasa seperti `Bash` menghapus alat dari konteks Claude sepenuhnya, jadi Claude tidak pernah melihatnya. Aturan yang dibatasi seperti `Bash(rm *)` membiarkan alat tersedia dan memblokir panggilan yang cocok ketika Claude mencoba menggunakannya.35Aturan deny berperilaku berbeda tergantung pada apakah mereka menamai alat atau membatasi pola dalam satu alat. Nama alat biasa seperti `Bash` menghapus alat dari konteks Claude sepenuhnya, jadi Claude tidak pernah melihatnya. Aturan yang dibatasi seperti `Bash(rm *)` membiarkan alat tersedia dan memblokir panggilan yang cocok ketika Claude mencoba menggunakannya.

36 36 


51| `plan` | Plan Mode: Claude membaca file dan menjalankan perintah shell hanya-baca untuk menjelajahi tetapi tidak mengedit file sumber Anda |51| `plan` | Plan Mode: Claude membaca file dan menjalankan perintah shell hanya-baca untuk menjelajahi tetapi tidak mengedit file sumber Anda |

52| `auto` | Secara otomatis menyetujui panggilan alat dengan pemeriksaan keamanan latar belakang yang memverifikasi tindakan selaras dengan permintaan Anda. Saat ini pratinjau penelitian |52| `auto` | Secara otomatis menyetujui panggilan alat dengan pemeriksaan keamanan latar belakang yang memverifikasi tindakan selaras dengan permintaan Anda. Saat ini pratinjau penelitian |

53| `dontAsk` | Secara otomatis menolak alat kecuali pra-disetujui melalui `/permissions` atau aturan `permissions.allow` |53| `dontAsk` | Secara otomatis menolak alat kecuali pra-disetujui melalui `/permissions` atau aturan `permissions.allow` |

54| `bypassPermissions` | Melewati semua prompt izin. Penghapusan direktori root dan home seperti `rm -rf /` masih meminta sebagai circuit breaker |54| `bypassPermissions` | Melewati prompt izin, kecuali yang dipaksa oleh aturan `ask` eksplisit. Penghapusan direktori root dan home seperti `rm -rf /` juga masih meminta sebagai circuit breaker |

55 55 

56<Warning>56<Warning>

57 Mode `bypassPermissions` melewati semua prompt izin, termasuk penulisan ke `.git`, `.config/git`, `.claude`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn`, dan `.mvn`. Penghapusan yang menargetkan akar sistem file atau direktori home, seperti `rm -rf /` dan `rm -rf ~`, masih meminta sebagai circuit breaker terhadap kesalahan model. Hanya gunakan mode ini di lingkungan terisolasi seperti kontainer atau VM tempat Claude Code tidak dapat menyebabkan kerusakan. Administrator dapat mencegah mode ini dengan mengatur `permissions.disableBypassPermissionsMode` ke `"disable"` dalam [pengaturan terkelola](#managed-settings).57 Mode `bypassPermissions` melewati prompt izin, termasuk untuk penulisan ke `.git`, `.config/git`, `.claude`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn`, dan `.mvn`. Aturan `ask` eksplisit masih memaksa prompt, dan penghapusan yang menargetkan akar sistem file atau direktori home, seperti `rm -rf /` dan `rm -rf ~`, masih meminta sebagai circuit breaker terhadap kesalahan model. Hanya gunakan mode ini di lingkungan terisolasi seperti kontainer atau VM tempat Claude Code tidak dapat menyebabkan kerusakan. Administrator dapat mencegah mode ini dengan mengatur `permissions.disableBypassPermissionsMode` ke `"disable"` dalam [pengaturan terkelola](#managed-settings).

58</Warning>58</Warning>

59 59 

60Untuk mencegah mode `bypassPermissions` atau `auto` digunakan, atur `permissions.disableBypassPermissionsMode` atau `permissions.disableAutoMode` ke `"disable"` dalam [file pengaturan](/id/settings#settings-files) apa pun. Ini paling berguna dalam [pengaturan terkelola](#managed-settings) di mana mereka tidak dapat ditimpa.60Untuk mencegah mode `bypassPermissions` atau `auto` digunakan, atur `permissions.disableBypassPermissionsMode` atau `permissions.disableAutoMode` ke `"disable"` dalam [file pengaturan](/id/settings#settings-files) apa pun. Ini paling berguna dalam [pengaturan terkelola](#managed-settings) di mana mereka tidak dapat ditimpa.


91| `Read(./.env)` | Mencocokkan pembacaan file `.env` di direktori saat ini |91| `Read(./.env)` | Mencocokkan pembacaan file `.env` di direktori saat ini |

92| `WebFetch(domain:example.com)` | Mencocokkan permintaan pengambilan ke example.com |92| `WebFetch(domain:example.com)` | Mencocokkan permintaan pengambilan ke example.com |

93 93 

94<h3 id="match-by-input-parameter">

95 Cocokkan berdasarkan parameter input

96</h3>

97 

98Aturan penolakan dan tanya dapat mencocokkan parameter input tingkat atas pada alat apa pun dengan `Tool(param:value)`. Aturan cocok ketika Claude memanggil alat dengan parameter tersebut diatur ke nilai yang tepat. Sintaks ini untuk aturan penolakan dan tanya; aturan izin untuk satu nilai parameter tidak akan menetapkan bahwa panggilan aman secara keseluruhan, jadi aturan izin terus menggunakan sintaks specifier masing-masing alat. Ini berfungsi untuk parameter skalar apa pun yang diterima alat:

99 

100| Aturan | Cocok |

101| :----------------------------- | :---------------------------------------------- |

102| `Agent(model:opus)` | Panggilan Agent yang meminta tingkat model Opus |

103| `Agent(isolation:worktree)` | Panggilan Agent yang meminta git worktree |

104| `Bash(run_in_background:true)` | Panggilan Bash yang berjalan di latar belakang |

105 

106Pencocokan parameter mengikuti aturan ini:

107 

108* Nama parameter harus berupa bidang langsung dari input alat, seperti `model` pada alat Agent. Bidang yang bersarang di dalam objek atau array tidak dapat dicocokkan

109* Setiap aturan menamai satu parameter. Untuk membatasi pada `model` dan `isolation`, tulis dua aturan, `Agent(model:opus)` dan `Agent(isolation:worktree)`, daripada menggabungkannya dalam satu aturan

110* Nilai mendukung `*` sebagai wildcard yang mencocokkan urutan karakter apa pun, jadi `Agent(isolation:*)` mencocokkan nilai isolasi eksplisit apa pun. Tanpa `*` pencocokan bersifat tepat

111* Parameter yang dihilangkan model tidak pernah dicocokkan, jadi `Agent(model:*)` tidak mencocokkan panggilan yang membiarkan `model` tidak diatur

112* Nilai dibandingkan dengan input literal yang dikirim Claude, sebelum normalisasi apa pun. `Agent(model:opus)` mencocokkan alias `opus` tetapi bukan ID model lengkap. Jalankan dengan [`--verbose`](/id/cli-reference) untuk melihat nama dan nilai parameter yang tepat dalam setiap panggilan alat

113* Spasi di sekitar titik dua diabaikan

114 

115Bidang yang sudah dicocokkan alat dengan aturan canonicalizing miliknya sendiri tidak dapat dicocokkan dengan cara ini: `command` untuk Bash dan PowerShell, `file_path` untuk Read, Edit, dan Write, `path` untuk Grep dan Glob, `notebook_path` untuk NotebookEdit, dan `url` untuk WebFetch. Aturan seperti `Bash(command:rm *)` dapat dilewati oleh perintah gabungan, jadi Claude Code mengabaikannya dan mengeluarkan peringatan startup. Gunakan `Bash(rm *)`, `Read(./path)`, atau `WebFetch(domain:host)` sebagai gantinya.

116 

94<h3 id="wildcard-patterns">117<h3 id="wildcard-patterns">

95 Pola wildcard118 Pola wildcard

96</h3>119</h3>


118 141 

119Dialog izin menulis bentuk yang dipisahkan spasi ketika Anda memilih "Ya, jangan tanya lagi" untuk awalan perintah. Bentuk `:*` hanya dikenali di akhir pola. Dalam pola seperti `Bash(git:* push)`, titik dua diperlakukan sebagai karakter literal dan tidak akan mencocokkan perintah git.142Dialog izin menulis bentuk yang dipisahkan spasi ketika Anda memilih "Ya, jangan tanya lagi" untuk awalan perintah. Bentuk `:*` hanya dikenali di akhir pola. Dalam pola seperti `Bash(git:* push)`, titik dua diperlakukan sebagai karakter literal dan tidak akan mencocokkan perintah git.

120 143 

144<h3 id="tool-name-wildcards">

145 Wildcard nama alat

146</h3>

147 

148Aturan penolakan dan tanya juga menerima pola glob dalam posisi nama alat. Pola harus cocok dengan nama alat lengkap: `"*"` cocok dengan setiap alat, dan `"mcp__*"` cocok dengan setiap alat MCP di semua server. Alat yang cocok dengan aturan penolakan nama telanjang dihapus dari konteks Claude, sama seperti nama alat telanjang. Konfigurasi ini menolak setiap alat MCP:

149 

150```json theme={null}

151{

152 "permissions": {

153 "deny": [

154 "mcp__*"

155 ]

156 }

157}

158```

159 

160Aturan izin menerima glob nama alat hanya setelah awalan literal `mcp__<server>__`. Segmen server harus bebas glob sehingga aturan menamai server spesifik yang Anda konfigurasi. `mcp__puppeteer__*` cocok dengan setiap alat dari server `puppeteer`, dan `mcp__github__get_*` cocok dengan alat `get_` miliknya. Glob izin yang tidak berlabuh seperti `"*"`, `"B*"`, atau `"mcp__*"` dilewati dengan peringatan dan tidak secara otomatis menyetujui apa pun.

161 

162Aturan penolakan atau tanya yang nama alatnya tidak cocok dengan alat yang dikenal menghasilkan peringatan startup untuk menangkap kesalahan ketik. Nama alat yang berisi `_` atau `*` dikecualikan dari pemeriksaan.

163 

164Label yang ditampilkan untuk alat dalam transkrip dan dialog izin dapat berbeda dari nama kanoniknya. Misalnya, alat yang diberi label `Stop Task` dalam transkrip memiliki nama kanonik `TaskStop`. Aturan izin dan [pencocokan hook](/id/hooks) hanya cocok dengan nama kanonik, jadi aturan yang ditulis sebagai `Stop Task` tidak cocok. Untuk aturan penolakan dan tanya, peringatan startup di atas menangkap ketidaksesuaian. Gunakan nama kanonik yang tercantum dalam [referensi alat](/id/tools-reference).

165 

121<h2 id="tool-specific-permission-rules">166<h2 id="tool-specific-permission-rules">

122 Aturan izin khusus alat167 Aturan izin khusus alat

123</h2>168</h2>


252| `Read(//**/.env)` | `.env` apa pun di mana pun di sistem file | tidak ada; aturan ini berlabuh di akar sistem file |297| `Read(//**/.env)` | `.env` apa pun di mana pun di sistem file | tidak ada; aturan ini berlabuh di akar sistem file |

253 298 

254<Note>299<Note>

255 Dalam pola gitignore, `*` mencocokkan file dalam satu direktori sementara `**` mencocokkan secara rekursif di seluruh direktori. Untuk memungkinkan semua akses file, gunakan hanya nama alat tanpa tanda kurung: `Read`, `Edit`, atau `Write`.300 Dalam pola gitignore, `*` mencocokkan dalam satu segmen jalur dan dapat muncul di posisi mana pun dalam pola, sementara `**` mencocokkan di seluruh direktori. Untuk memungkinkan semua akses file, gunakan hanya nama alat tanpa tanda kurung: `Read`, `Edit`, atau `Write`.

256</Note>301</Note>

257 302 

258Ketika Claude mengakses symlink, aturan izin memeriksa dua jalur: symlink itu sendiri dan file yang diselesaikannya. Aturan allow dan deny memperlakukan pasangan itu secara berbeda: aturan allow kembali ke meminta Anda, sementara aturan deny memblokir sepenuhnya.303Ketika Claude mengakses symlink, aturan izin memeriksa dua jalur: symlink itu sendiri dan file yang diselesaikannya. Aturan allow dan deny memperlakukan pasangan itu secara berbeda: aturan allow kembali ke meminta Anda, sementara aturan deny memblokir sepenuhnya.


266 WebFetch311 WebFetch

267</h3>312</h3>

268 313 

269* `WebFetch(domain:example.com)` mencocokkan permintaan pengambilan ke example.com314Aturan WebFetch menggunakan awalan `domain:` dan cocok dengan nama host dari URL yang diminta. Pencocokan tidak peka huruf besar-kecil, mendukung wildcard `*`, dan menghilangkan titik trailing dari aturan dan nama host sehingga `example.com.` dan `example.com` diperlakukan sama.

315 

316* `WebFetch(domain:example.com)` mencocokkan permintaan ke `example.com`

317* `WebFetch(domain:*.example.com)` mencocokkan subdomain apa pun di kedalaman apa pun, seperti `api.example.com` atau `a.b.example.com`, tetapi bukan `example.com` itu sendiri

318* `WebFetch(domain:*)` mencocokkan setiap domain dan setara dengan aturan WebFetch telanjang

319 

320Di posisi mana pun selain `*.` terkemuka atau `*` telanjang, wildcard mencocokkan hanya teks antara dua titik. `WebFetch(domain:example.*)` mencocokkan `example.org`, di mana `*` menjadi `org`, tetapi bukan `example.evil.com`, di mana `*` harus menjadi `evil.com` dan melintasi titik. Ini mencegah wildcard trailing dari mencocokkan domain yang dapat didaftarkan penyerang.

270 321 

271<h3 id="mcp">322<h3 id="mcp">

272 MCP323 MCP


296}347}

297```348```

298 349 

350<h3 id="cd">

351 Cd

352</h3>

353 

354Aturan `Cd` mengontrol direktori mana yang dapat dipindahkan oleh perintah [`/cd`](/id/commands) ke sesi. `Cd` bukan alat yang dapat dipanggil model: Claude tidak dapat memanggilnya, dan aturan hanya berlaku ketika Anda menjalankan `/cd` sendiri.

355 

356Aturan deny `Cd` telanjang menonaktifkan `/cd` sepenuhnya. Aturan deny `Cd(<path-pattern>)` memblokir target yang cocok. Aturan deny memeriksa setiap ejaan target, termasuk setiap lompatan symlink yang diselesaikannya, jadi aturan yang ditulis untuk satu jalur juga memblokir target yang diselesaikan ke itu.

357 

358Menambahkan aturan allow `Cd` apa pun beralih `/cd` ke mode allowlist: direktori target yang diselesaikan harus cocok dengan salah satu aturan allow Anda, atau `/cd` menolak. Tanpa aturan `Cd` yang dikonfigurasi, `/cd` mempertahankan perilaku defaultnya dan meminta Anda untuk mempercayai direktori yang tidak dikenal.

359 

360Pola jalur berbagi jangkar `//`, `~/`, dan `/` dari [aturan Read dan Edit](#read-and-edit), tetapi pencocokan berlabuh ke seluruh jalur direktori daripada gaya gitignore. `*` mencocokkan tepat satu segmen jalur dan `**` mencocokkan di seluruh segmen. Trailing `/**` juga mencocokkan akar yang dinamainya.

361 

362| Aturan | Cocok | Tidak cocok |

363| --------------------- | ----------------------------------------------------- | -------------------------- |

364| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` |

365| `Cd(~/code/**)` | `~/code` dan direktori apa pun di bawahnya | direktori di luar `~/code` |

366| `Cd(**/node_modules)` | direktori `node_modules` apa pun di kedalaman apa pun | `node_modules/pkg` |

367 

299<h2 id="extend-permissions-with-hooks">368<h2 id="extend-permissions-with-hooks">

300 Perluas izin dengan hook369 Perluas izin dengan hook

301</h2>370</h2>


318 387 

319File di direktori tambahan mengikuti aturan izin yang sama dengan direktori kerja asli: mereka menjadi dapat dibaca tanpa prompt, dan izin edit file mengikuti mode izin saat ini.388File di direktori tambahan mengikuti aturan izin yang sama dengan direktori kerja asli: mereka menjadi dapat dibaca tanpa prompt, dan izin edit file mengikuti mode izin saat ini.

320 389 

390Untuk mengubah direktori kerja utama sesi alih-alih menambahkan direktori lain, gunakan [`/cd`](/id/commands). Perintah `/cd` memerlukan Claude Code v2.1.169 atau lebih baru. Tidak seperti `/add-dir`, perintah ini memindahkan sesi: `CLAUDE.md` direktori baru dimuat dan `--resume` menemukan sesi dari sana.

391 

321<h3 id="additional-directories-grant-file-access-not-configuration">392<h3 id="additional-directories-grant-file-access-not-configuration">

322 Direktori tambahan memberikan akses file, bukan konfigurasi393 Direktori tambahan memberikan akses file, bukan konfigurasi

323</h3>394</h3>


331| Konfigurasi | Dimuat dari `--add-dir` |402| Konfigurasi | Dimuat dari `--add-dir` |

332| :-------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |403| :-------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |

333| [Skills](/id/skills) di `.claude/skills/` | Ya, dengan live reload |404| [Skills](/id/skills) di `.claude/skills/` | Ya, dengan live reload |

405| [Subagents](/id/sub-agents) di `.claude/agents/` | Ya |

334| Pengaturan plugin di `.claude/settings.json` | `enabledPlugins` dan `extraKnownMarketplaces` saja |406| Pengaturan plugin di `.claude/settings.json` | `enabledPlugins` dan `extraKnownMarketplaces` saja |

335| File [CLAUDE.md](/id/memory), `.claude/rules/`, dan `CLAUDE.local.md` | Hanya ketika `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1` diatur. `CLAUDE.local.md` juga memerlukan sumber pengaturan `local`, yang diaktifkan secara default |407| File [CLAUDE.md](/id/memory), `.claude/rules/`, dan `CLAUDE.local.md` | Hanya ketika `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1` diatur. `CLAUDE.local.md` juga memerlukan sumber pengaturan `local`, yang diaktifkan secara default |

336 408 

337Subagents, commands, dan output styles ditemukan dari direktori kerja saat ini dan induknya, direktori pengguna Anda di `~/.claude/`, dan pengaturan terkelola. Hooks dan kunci `settings.json` lainnya dimuat dari folder `.claude/` direktori kerja saat ini tanpa fallback direktori induk, bersama dengan `~/.claude/settings.json` pengguna Anda dan pengaturan terkelola. Untuk berbagi konfigurasi itu di seluruh proyek, gunakan salah satu pendekatan ini:409Perintah dan output styles ditemukan dari direktori kerja saat ini dan induknya, direktori pengguna Anda di `~/.claude/`, dan pengaturan terkelola. Hooks dan kunci `settings.json` lainnya dimuat dari folder `.claude/` direktori kerja saat ini tanpa fallback direktori induk, bersama dengan `~/.claude/settings.json` pengguna Anda dan pengaturan terkelola. Untuk berbagi konfigurasi itu di seluruh proyek, gunakan salah satu pendekatan ini:

338 410 

339* **Konfigurasi tingkat pengguna**: tempatkan file di `~/.claude/agents/`, `~/.claude/output-styles/`, atau `~/.claude/settings.json` untuk membuatnya tersedia di setiap proyek411* **Konfigurasi tingkat pengguna**: tempatkan file di `~/.claude/agents/`, `~/.claude/output-styles/`, atau `~/.claude/settings.json` untuk membuatnya tersedia di setiap proyek

340* **Plugins**: paket dan distribusikan konfigurasi sebagai [plugin](/id/plugins) yang dapat diinstal tim412* **Plugins**: paket dan distribusikan konfigurasi sebagai [plugin](/id/plugins) yang dapat diinstal tim


356* Pembatasan sistem file di sandbox menggabungkan pengaturan [`sandbox.filesystem`](/id/sandboxing) dengan aturan deny Read dan Edit; keduanya digabungkan ke dalam batas sandbox akhir428* Pembatasan sistem file di sandbox menggabungkan pengaturan [`sandbox.filesystem`](/id/sandboxing) dengan aturan deny Read dan Edit; keduanya digabungkan ke dalam batas sandbox akhir

357* Pembatasan jaringan menggabungkan aturan izin WebFetch dengan daftar `allowedDomains` dan `deniedDomains` sandbox429* Pembatasan jaringan menggabungkan aturan izin WebFetch dengan daftar `allowedDomains` dan `deniedDomains` sandbox

358 430 

359Ketika sandboxing diaktifkan dengan `autoAllowBashIfSandboxed: true`, yang merupakan default, perintah Bash yang di-sandbox berjalan tanpa meminta bahkan jika izin Anda mencakup `ask: Bash(*)`. Batas sandbox menggantikan prompt per-perintah. Aturan deny eksplisit masih berlaku, dan perintah `rm` atau `rmdir` yang menargetkan `/`, direktori home Anda, atau jalur sistem kritis lainnya masih memicu prompt. Lihat [sandbox modes](/id/sandboxing#sandbox-modes) untuk mengubah perilaku ini.431Ketika sandboxing diaktifkan dengan `autoAllowBashIfSandboxed: true`, yang merupakan default, perintah Bash yang di-sandbox berjalan tanpa meminta bahkan jika izin Anda mencakup aturan ask `Bash` biasa, atau [bentuk setara `Bash(*)`](#match-all-uses-of-a-tool): batas sandbox menggantikan prompt seluruh alat tersebut. Aturan ask yang dibatasi konten seperti `Bash(git push *)` masih memaksa prompt, aturan deny eksplisit masih berlaku, dan perintah `rm` atau `rmdir` yang menargetkan `/`, direktori home Anda, atau jalur sistem kritis lainnya masih memicu prompt. Perintah yang tidak akan berjalan di sandbox, seperti perintah yang dikecualikan, menghormati aturan ask `Bash` biasa seperti biasanya. Lihat [sandbox modes](/id/sandboxing#sandbox-modes) untuk mengubah perilaku ini.

360 432 

361<h2 id="managed-settings">433<h2 id="managed-settings">

362 Pengaturan terkelola434 Pengaturan terkelola

platforms.md +1 −1

Details

23| [Web](/id/claude-code-on-the-web) | Tugas yang berjalan lama yang tidak memerlukan banyak pengarahan, atau pekerjaan yang harus dilanjutkan saat Anda offline | Cloud yang dikelola Anthropic, berlanjut setelah Anda terputus |23| [Web](/id/claude-code-on-the-web) | Tugas yang berjalan lama yang tidak memerlukan banyak pengarahan, atau pekerjaan yang harus dilanjutkan saat Anda offline | Cloud yang dikelola Anthropic, berlanjut setelah Anda terputus |

24| Mobile | Memulai dan memantau tugas saat jauh dari komputer Anda | Sesi cloud dari aplikasi Claude untuk iOS dan Android, [Remote Control](/id/remote-control) untuk sesi lokal, [Dispatch](/id/desktop#sessions-from-dispatch) ke Desktop pada Pro dan Max |24| Mobile | Memulai dan memantau tugas saat jauh dari komputer Anda | Sesi cloud dari aplikasi Claude untuk iOS dan Android, [Remote Control](/id/remote-control) untuk sesi lokal, [Dispatch](/id/desktop#sessions-from-dispatch) ke Desktop pada Pro dan Max |

25 25 

26CLI adalah permukaan paling lengkap untuk pekerjaan asli terminal: scripting dan Agent SDK hanya tersedia di CLI. Penyedia pihak ketiga juga bekerja di [VS Code](/id/vs-code#use-third-party-providers). Penyebaran [Desktop](/id/desktop) Enterprise mendukung Vertex AI dan penyedia gateway; untuk Bedrock atau Foundry, gunakan CLI atau VS Code sebagai gantinya Desktop. Desktop dan ekstensi IDE menukar beberapa fitur khusus CLI untuk tinjauan visual dan integrasi editor yang lebih ketat. Web berjalan di cloud Anthropic, jadi tugas terus berlanjut setelah Anda terputus. Mobile adalah klien tipis ke sesi cloud yang sama atau ke sesi lokal melalui Remote Control, dan dapat mengirim tugas ke Desktop dengan Dispatch.26CLI adalah permukaan paling lengkap untuk pekerjaan asli terminal: scripting dan Agent SDK hanya tersedia di CLI. Penyedia pihak ketiga juga bekerja di [VS Code](/id/vs-code#use-third-party-providers). Penyebaran [Desktop](/id/desktop) Enterprise mendukung Vertex AI dan penyedia gateway; untuk Bedrock atau Foundry, gunakan CLI atau VS Code, atau [Cowork on 3P research preview](https://claude.com/docs/cowork/3p/overview), yang menjalankan tab Code pada penyedia tersebut. Desktop dan ekstensi IDE menukar beberapa fitur khusus CLI untuk tinjauan visual dan integrasi editor yang lebih ketat. Web berjalan di cloud Anthropic, jadi tugas terus berlanjut setelah Anda terputus. Mobile adalah klien tipis ke sesi cloud yang sama atau ke sesi lokal melalui Remote Control, dan dapat mengirim tugas ke Desktop dengan Dispatch.

27 27 

28Anda dapat mencampur permukaan pada proyek yang sama. Konfigurasi, memori proyek, dan server MCP dibagikan di seluruh permukaan lokal.28Anda dapat mencampur permukaan pada proyek yang sama. Konfigurasi, memori proyek, dan server MCP dibagikan di seluruh permukaan lokal.

29 29 

plugin-hints.md +8 −5

Details

16 Cara kerjanya16 Cara kerjanya

17</h2>17</h2>

18 18 

19Claude Code menetapkan variabel lingkungan [`CLAUDECODE`](/id/env-vars) ke `1` untuk setiap perintah yang dijalankan melalui alat Bash dan PowerShell, dan untuk perintah [hook](/id/hooks). Ketika CLI Anda melihat variabel tersebut, itu menulis tag `<claude-code-hint />` yang menutup sendiri ke stderr. Dalam perintah hook, tag petunjuk dilepas dan diabaikan. Hanya output alat Bash dan PowerShell yang memicu prompt pemasangan.19Claude Code menetapkan variabel lingkungan [`CLAUDECODE`](/id/env-vars) ke `1` untuk setiap perintah yang dijalankan melalui alat Bash dan PowerShell, dan untuk perintah [hook](/id/hooks). {/* min-version: 2.1.172 */}Dari v2.1.172 juga menetapkan [`CLAUDE_CODE_CHILD_SESSION`](/id/env-vars) ke `1` dalam subproses yang sama. Ketika CLI Anda melihat salah satu variabel ini, itu menulis tag `<claude-code-hint />` yang menutup sendiri ke stderr. Dalam perintah hook, tag petunjuk dilepas dan diabaikan. Hanya output alat Bash dan PowerShell yang memicu prompt pemasangan.

20 20 

21Ketika Claude Code menerima output perintah, itu:21Ketika Claude Code menerima output perintah, itu:

22 22 


31 Keluarkan petunjuk31 Keluarkan petunjuk

32</h2>32</h2>

33 33 

34Gerbang emisi pada variabel lingkungan `CLAUDECODE` sehingga penanda tidak pernah muncul di terminal pengguna manusia. Kemudian tulis tag ke stderr pada barisnya sendiri.34Gerbang emisi pada variabel lingkungan sehingga penanda tidak mungkin muncul ketika manusia menjalankan CLI Anda secara langsung, kemudian tulis tag ke stderr pada barisnya sendiri. Pilih variabel mana yang akan diperiksa:

35 35 

36Contoh berikut mengeluarkan petunjuk untuk plugin bernama `example-cli` di marketplace resmi:36* `CLAUDECODE`: diatur pada setiap versi Claude Code, sehingga mencapai sebagian besar sesi. Ini juga diatur dalam sesi tmux dan subprocess server MCP stdio yang Claude Code mulai. Ekstensi IDE juga mengaturnya di terminal terintegrasi mereka, di mana manusia dapat menjalankan CLI Anda secara langsung.

37* {/* min-version: 2.1.172 */}`CLAUDE_CODE_CHILD_SESSION`: diatur hanya dalam subprocess yang Claude Code sendiri spawn, seperti pemanggilan alat, perintah hook, dan perintah [status line](/id/statusline), sehingga tag biasanya tidak mencapai terminal manusia. Proses yang berumur panjang yang dimulai di dalam sesi, seperti server tmux, menangkap variabel, sehingga shell yang diluncurkan kemudian dari proses itu masih menampilkan tag mentah. Memerlukan Claude Code v2.1.172 atau lebih baru, sehingga sesi pada versi yang lebih lama melewatkan petunjuk.

38 

39Contoh berikut gerbang pada `CLAUDECODE` untuk jangkauan maksimal dan mengeluarkan petunjuk untuk plugin bernama `example-cli` di marketplace resmi:

37 40 

38<CodeGroup>41<CodeGroup>

39 ```javascript Node.js theme={null}42 ```javascript Node.js theme={null}


90 93 

91```text theme={null}94```text theme={null}

92─────────────────────────────────────────────────────────────95─────────────────────────────────────────────────────────────

93 Plugin Recommendation96 Plugin recommendation

94 97 

95 The example-cli command suggests installing a plugin.98 The example-cli command suggests installing a plugin.

96 99 


147Panduan yang tersisa direkomendasikan tetapi tidak diberlakukan. Claude Code tidak dapat mengamati apakah CLI Anda mengikutinya:150Panduan yang tersisa direkomendasikan tetapi tidak diberlakukan. Claude Code tidak dapat mengamati apakah CLI Anda mengikutinya:

148 151 

149* **Tulis ke stderr**: stderr menjaga tag keluar dari pipa shell seperti `example-cli deploy | jq`. Claude Code memindai kedua aliran, jadi stdout juga berfungsi.152* **Tulis ke stderr**: stderr menjaga tag keluar dari pipa shell seperti `example-cli deploy | jq`. Claude Code memindai kedua aliran, jadi stdout juga berfungsi.

150* **Gerbang pada `CLAUDECODE`**: hanya keluarkan ketika variabel lingkungan `CLAUDECODE` diatur. Ini mencegah penanda muncul kepada pengguna yang menjalankan CLI Anda secara langsung.153* **Gerbang pada variabel lingkungan**: hanya keluarkan ketika `CLAUDECODE` atau `CLAUDE_CODE_CHILD_SESSION` diatur. Lihat [Emit the hint](#emit-the-hint) untuk mengetahui bagaimana kedua variabel berbeda.

151 154 

152<h2 id="get-your-plugin-into-the-official-marketplace">155<h2 id="get-your-plugin-into-the-official-marketplace">

153 Dapatkan plugin Anda ke marketplace resmi156 Dapatkan plugin Anda ke marketplace resmi

Details

171| `plugins` | array | Daftar plugin yang tersedia | Lihat di bawah |171| `plugins` | array | Daftar plugin yang tersedia | Lihat di bawah |

172 172 

173<Note>173<Note>

174 **Nama yang dicadangkan**: Nama marketplace berikut dicadangkan untuk penggunaan resmi Anthropic dan tidak dapat digunakan oleh marketplace pihak ketiga: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `knowledge-work-plugins`, `life-sciences`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`. Nama yang meniru marketplace resmi, seperti `official-claude-plugins` atau `anthropic-tools-v2`, juga diblokir.174 **Nama yang dicadangkan**: Nama marketplace berikut dicadangkan untuk penggunaan resmi Anthropic dan tidak dapat digunakan oleh marketplace pihak ketiga: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `claude-plugins-community`, `claude-community`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `knowledge-work-plugins`, `life-sciences`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`. Nama yang meniru marketplace resmi, seperti `official-claude-plugins` atau `anthropic-tools-v2`, juga diblokir.

175</Note>175</Note>

176 176 

177<h3 id="owner-fields">177<h3 id="owner-fields">


203 203 

204Setiap entri plugin dalam array `plugins` mendeskripsikan plugin dan di mana menemukannya. Anda dapat menyertakan field apa pun dari [skema manifest plugin](/id/plugins-reference#plugin-manifest-schema) (seperti `description`, `version`, `author`, `commands`, `hooks`, dll.), ditambah field khusus marketplace ini: `source`, `category`, `tags`, dan `strict`.204Setiap entri plugin dalam array `plugins` mendeskripsikan plugin dan di mana menemukannya. Anda dapat menyertakan field apa pun dari [skema manifest plugin](/id/plugins-reference#plugin-manifest-schema) (seperti `description`, `version`, `author`, `commands`, `hooks`, dll.), ditambah field khusus marketplace ini: `source`, `category`, `tags`, dan `strict`.

205 205 

206<h3 id="required-fields">206<h3 id="required-fields-1">

207 Field yang diperlukan207 Field yang diperlukan

208</h3>208</h3>

209 209 


269 Misalnya, marketplace yang dihosting di `acme-corp/plugin-catalog` (marketplace source) dapat mencantumkan plugin yang diambil dari `acme-corp/code-formatter` (plugin source). Marketplace source dan plugin source menunjuk ke repositori berbeda dan disematkan secara independen.269 Misalnya, marketplace yang dihosting di `acme-corp/plugin-catalog` (marketplace source) dapat mencantumkan plugin yang diambil dari `acme-corp/code-formatter` (plugin source). Marketplace source dan plugin source menunjuk ke repositori berbeda dan disematkan secara independen.

270</Note>270</Note>

271 271 

272Jenis sumber berbasis git di bawah ini adalah `github`, `url`, dan `git-subdir`. Ketika baik `ref` maupun `sha` diatur pada salah satu dari mereka, `sha` adalah pin yang efektif. Claude Code mengambil dan melakukan checkout pada commit yang disematkan secara langsung, sehingga instalasi berhasil bahkan jika branch atau tag yang dinamai oleh `ref` telah dihapus upstream, selama commit masih dapat dijangkau dari repositori.

273 

272<h3 id="relative-paths">274<h3 id="relative-paths">

273 Jalur relatif275 Jalur relatif

274</h3>276</h3>


505* **`${CLAUDE_PLUGIN_ROOT}`**: Gunakan variabel ini dalam hooks dan config MCP server untuk mereferensikan file dalam direktori instalasi plugin. Ini diperlukan karena plugin disalin ke lokasi cache saat dipasang. Untuk dependensi atau state yang harus bertahan pembaruan plugin, gunakan [`${CLAUDE_PLUGIN_DATA}`](/id/plugins-reference#persistent-data-directory) sebagai gantinya.507* **`${CLAUDE_PLUGIN_ROOT}`**: Gunakan variabel ini dalam hooks dan config MCP server untuk mereferensikan file dalam direktori instalasi plugin. Ini diperlukan karena plugin disalin ke lokasi cache saat dipasang. Untuk dependensi atau state yang harus bertahan pembaruan plugin, gunakan [`${CLAUDE_PLUGIN_DATA}`](/id/plugins-reference#persistent-data-directory) sebagai gantinya.

506* **`strict: false`**: Karena ini diatur ke false, plugin tidak memerlukan `plugin.json` sendiri. Entri marketplace mendefinisikan semuanya. Lihat [Strict mode](#strict-mode) di bawah.508* **`strict: false`**: Karena ini diatur ke false, plugin tidak memerlukan `plugin.json` sendiri. Entri marketplace mendefinisikan semuanya. Lihat [Strict mode](#strict-mode) di bawah.

507 509 

510Secara default, skills plugin dimuat dari direktori `skills/` di bawah `source`-nya, dan jalur apa pun yang tercantum di bawah `skills` menambah pemindaian itu. Pengecualiannya adalah sumber root marketplace seperti `source: "./"`, di mana beberapa entri plugin berbagi satu folder `skills/`. Dalam hal itu, mencantumkan subdirektori spesifik di bawah `skills` membuat daftar itu menjadi set lengkap untuk entri, dan direktori lain di bawah `skills/` tidak dimuat. Mencantumkan direktori `skills/` itu sendiri atau root plugin menjaga pemindaian penuh. Jika tidak ada jalur yang tercantum ada, pemindaian default berjalan sebagai gantinya.

511 

508<h3 id="strict-mode">512<h3 id="strict-mode">

509 Strict mode513 Strict mode

510</h3>514</h3>


1074* Periksa bahwa direktori plugin berisi file yang diperlukan1078* Periksa bahwa direktori plugin berisi file yang diperlukan

1075* Untuk sumber GitHub, pastikan repositori publik atau Anda memiliki akses1079* Untuk sumber GitHub, pastikan repositori publik atau Anda memiliki akses

1076* Uji sumber plugin secara manual dengan mengklon/mengunduh1080* Uji sumber plugin secara manual dengan mengklon/mengunduh

1081* Jika sumber menentukan baik `ref` maupun `sha`, cabang atau tag upstream yang dihapus tidak memblokir instalasi. Jika instalasi masih gagal, konfirmasi commit yang ditentukan masih ada di repositori

1077 1082 

1078<h3 id="private-repository-authentication-fails">1083<h3 id="private-repository-authentication-fails">

1079 Autentikasi repositori pribadi gagal1084 Autentikasi repositori pribadi gagal

plugins.md +7 −3

Details

216| `bin/` | Root plugin | Executable yang ditambahkan ke `PATH` tool Bash saat plugin diaktifkan |216| `bin/` | Root plugin | Executable yang ditambahkan ke `PATH` tool Bash saat plugin diaktifkan |

217| `settings.json` | Root plugin | [Settings](/id/settings) default yang diterapkan ketika plugin diaktifkan |217| `settings.json` | Root plugin | [Settings](/id/settings) default yang diterapkan ketika plugin diaktifkan |

218 218 

219Plugin yang mengirimkan tepat satu skill dapat menempatkan `SKILL.md` langsung di root plugin alih-alih membuat direktori `skills/`. Claude Code memuatnya sebagai skill tunggal dan menggunakan field frontmatter `name` untuk nama invokasi. Gunakan tata letak `skills/` untuk plugins yang mungkin berkembang menjadi lebih dari satu skill.

220 

219<Note>221<Note>

220 **Langkah berikutnya**: Siap menambahkan lebih banyak fitur? Lompat ke [Kembangkan plugins yang lebih kompleks](#develop-more-complex-plugins) untuk menambahkan agents, hooks, MCP servers, dan LSP servers. Untuk spesifikasi teknis lengkap dari semua komponen plugin, lihat [Referensi plugins](/id/plugins-reference).222 **Langkah berikutnya**: Siap menambahkan lebih banyak fitur? Lompat ke [Kembangkan plugins yang lebih kompleks](#develop-more-complex-plugins) untuk menambahkan agents, hooks, MCP servers, dan LSP servers. Untuk spesifikasi teknis lengkap dari semua komponen plugin, lihat [Referensi plugins](/id/plugins-reference).

221</Note>223</Note>


402 404 

403Anthropic memelihara dua marketplace publik untuk plugin Claude Code:405Anthropic memelihara dua marketplace publik untuk plugin Claude Code:

404 406 

405* **`claude-plugins-official`**: serangkaian plugin yang dikurasi yang dikelola oleh Anthropic. Tersedia secara otomatis di setiap instalasi Claude Code.407* **`claude-plugins-official`**: serangkaian plugin yang dikurasi yang dikelola oleh Anthropic. Terdaftar secara otomatis saat pertama kali Anda memulai Claude Code secara interaktif. Skrip non-interaktif yang berjalan sebelum peluncuran pertama itu harus menambahkannya secara eksplisit dengan `claude plugin marketplace add anthropics/claude-plugins-official`.

406* **`claude-community`**: marketplace komunitas publik tempat pengajuan pihak ketiga mendarat setelah review. Pengguna menambahkannya dengan `/plugin marketplace add anthropics/claude-plugins-community` dan memasangnya sebagai `@claude-community`.408* **`claude-community`**: marketplace komunitas publik tempat pengajuan pihak ketiga mendarat setelah review. Pengguna menambahkannya dengan `/plugin marketplace add anthropics/claude-plugins-community` dan memasangnya sebagai `@claude-community`.

407 409 

408Untuk mengirimkan plugin Anda untuk review marketplace komunitas, gunakan salah satu formulir in-app:410Untuk mengirimkan plugin Anda untuk review marketplace komunitas, gunakan salah satu formulir in-app:

409 411 

410* **Claude.ai**: [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)412* **claude.ai**: [claude.ai/admin-settings/directory/submissions/plugins/new](https://claude.ai/admin-settings/directory/submissions/plugins/new)

411* **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)413* **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

412 414 

415Formulir claude.ai memerlukan organisasi Team atau Enterprise dan akses manajemen direktori; Owners organisasi memiliki akses ini secara default. Penulis individual yang bukan bagian dari organisasi Team atau Enterprise dapat menggunakan formulir Console sebagai gantinya.

416 

413Jalankan `claude plugin validate` secara lokal sebelum Anda mengirimkan. Pipeline review menjalankan pemeriksaan yang sama pada setiap pengajuan, bersama dengan screening keamanan otomatis.417Jalankan `claude plugin validate` secara lokal sebelum Anda mengirimkan. Pipeline review menjalankan pemeriksaan yang sama pada setiap pengajuan, bersama dengan screening keamanan otomatis.

414 418 

415Plugin yang disetujui disematkan ke SHA commit tertentu di katalog [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community), dan CI membump pin secara otomatis saat Anda push commit baru ke repository Anda. Katalog publik disinkronkan setiap malam dari pipeline review, jadi dapat ada penundaan antara persetujuan dan plugin Anda muncul di `marketplace.json`. Untuk memeriksa apakah plugin Anda dapat dipasang, cari namanya di [katalog komunitas](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json).419Plugin yang disetujui disematkan ke SHA commit tertentu di katalog [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community), dan CI membump pin secara otomatis saat Anda push commit baru ke repository Anda. Katalog publik disinkronkan setiap malam dari pipeline review, jadi dapat ada penundaan antara persetujuan dan plugin Anda muncul di `marketplace.json`. Untuk memeriksa apakah plugin Anda dapat dipasang, cari namanya di [katalog komunitas](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json).


512| Harus menyalin secara manual untuk berbagi | Pasang dengan `/plugin install` |516| Harus menyalin secara manual untuk berbagi | Pasang dengan `/plugin install` |

513 517 

514<Note>518<Note>

515 Setelah migrasi, Anda dapat menghapus file asli dari `.claude/` untuk menghindari duplikat. Versi plugin akan mengambil prioritas saat dimuat.519 Setelah migrasi, hapus file asli dari `.claude/` untuk menghindari duplikat. Definisi `.claude/agents/` proyek dan pengguna menggantikan agents plugin dengan nama yang sama, jadi versi plugin hanya berlaku setelah yang asli dihapus.

516</Note>520</Note>

517 521 

518<h2 id="next-steps">522<h2 id="next-steps">

Details

46* Claude dapat memanggilnya secara otomatis berdasarkan konteks tugas46* Claude dapat memanggilnya secara otomatis berdasarkan konteks tugas

47* Skills dapat menyertakan file pendukung di samping SKILL.md47* Skills dapat menyertakan file pendukung di samping SKILL.md

48 48 

49Jika plugin tidak memiliki direktori `skills/` dan tidak memiliki field manifest `skills`, file `SKILL.md` di root plugin dimuat sebagai skill tunggal. Atur field frontmatter `name` untuk mengontrol nama invokasi skill. Tanpanya, Claude Code kembali ke nama direktori instalasi, yang untuk plugins yang dipasang dari marketplace adalah string versi yang berubah pada setiap update. Untuk plugins yang mengirimkan lebih dari satu skill, gunakan tata letak direktori `skills/` yang ditunjukkan di atas.

50 

49Untuk detail lengkap, lihat [Skills](/id/skills).51Untuk detail lengkap, lihat [Skills](/id/skills).

50 52 

51<h3 id="agents">53<h3 id="agents">


256**Field opsional:**258**Field opsional:**

257 259 

258| Field | Deskripsi |260| Field | Deskripsi |

259| :---------------------- | :-------------------------------------------------------------------- |261| :---------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

260| `args` | Argumen baris perintah untuk LSP server |262| `args` | Argumen baris perintah untuk LSP server |

261| `transport` | Transport komunikasi: `stdio` (default) atau `socket` |263| `transport` | Transport komunikasi: `stdio` (default) atau `socket` |

262| `env` | Variabel lingkungan yang diatur saat memulai server |264| `env` | Variabel lingkungan yang diatur saat memulai server |


265| `workspaceFolder` | Jalur folder workspace untuk server |267| `workspaceFolder` | Jalur folder workspace untuk server |

266| `startupTimeout` | Waktu maksimal untuk menunggu startup server (milidetik) |268| `startupTimeout` | Waktu maksimal untuk menunggu startup server (milidetik) |

267| `maxRestarts` | Jumlah maksimal upaya restart sebelum menyerah |269| `maxRestarts` | Jumlah maksimal upaya restart sebelum menyerah |

270| `diagnostics` | Apakah mendorong diagnostik ke dalam konteks Claude setelah edits (default `true`). Atur ke `false` untuk mempertahankan navigasi kode tetapi menekan injeksi diagnostik otomatis. |

268 271 

269<Warning>272<Warning>

270 **Anda harus memasang biner language server secara terpisah.** LSP plugins mengonfigurasi cara Claude Code terhubung ke language server, tetapi mereka tidak menyertakan server itu sendiri. Jika Anda melihat `Executable not found in $PATH` di tab Errors `/plugin`, pasang biner yang diperlukan untuk bahasa Anda.273 **Anda harus memasang biner language server secara terpisah.** LSP plugins mengonfigurasi cara Claude Code terhubung ke language server, tetapi mereka tidak menyertakan server itu sendiri. Jika Anda melihat `Executable not found in $PATH` di tab Errors `/plugin`, pasang biner yang diperlukan untuk bahasa Anda.


530</h3>533</h3>

531 534 

532| Field | Tipe | Deskripsi | Contoh |535| Field | Tipe | Deskripsi | Contoh |

533| :---------------------- | :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |536| :---------------------- | :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

534| `skills` | string\|array | Direktori skill khusus yang berisi `<name>/SKILL.md` (selain default `skills/`) | `"./custom/skills/"` |537| `skills` | string\|array | Direktori skill khusus yang berisi `<name>/SKILL.md`. Menambah scan default `skills/`. Lihat [Path behavior rules](#path-behavior-rules) untuk pengecualian marketplace-root | `"./custom/skills/"` |

535| `commands` | string\|array | File skill `.md` datar atau direktori khusus (menggantikan default `commands/`) | `"./custom/cmd.md"` atau `["./cmd1.md"]` |538| `commands` | string\|array | File skill `.md` datar atau direktori khusus (menggantikan default `commands/`) | `"./custom/cmd.md"` atau `["./cmd1.md"]` |

536| `agents` | string\|array | File agent khusus (menggantikan default `agents/`) | `"./custom/agents/reviewer.md"` |539| `agents` | string\|array | File agent khusus (menggantikan default `agents/`) | `"./custom/agents/reviewer.md"` |

537| `hooks` | string\|array\|object | Jalur konfigurasi hook atau konfigurasi inline | `"./my-extra-hooks.json"` |540| `hooks` | string\|array\|object | Jalur konfigurasi hook atau konfigurasi inline | `"./my-extra-hooks.json"` |


629Apakah jalur khusus menggantikan atau memperluas direktori default plugin tergantung pada field:632Apakah jalur khusus menggantikan atau memperluas direktori default plugin tergantung pada field:

630 633 

631* **Menggantikan default**: `commands`, `agents`, `outputStyles`, `experimental.themes`, `experimental.monitors`. Misalnya, saat manifest menentukan `commands`, direktori default `commands/` tidak dipindai. Untuk menyimpan default dan menambahkan lebih banyak, sertakan secara eksplisit: `"commands": ["./commands/", "./extras/"]`634* **Menggantikan default**: `commands`, `agents`, `outputStyles`, `experimental.themes`, `experimental.monitors`. Misalnya, saat manifest menentukan `commands`, direktori default `commands/` tidak dipindai. Untuk menyimpan default dan menambahkan lebih banyak, sertakan secara eksplisit: `"commands": ["./commands/", "./extras/"]`

632* **Menambah default**: `skills`. Direktori default `skills/` selalu dipindai, dan direktori yang tercantum di `skills` dimuat bersama dengannya635* **Menambah default**: `skills`. Direktori default `skills/` selalu dipindai, dan direktori yang tercantum di `skills` dimuat bersama dengannya. Pengecualian: untuk [entri marketplace yang `source`-nya diselesaikan ke root marketplace](/id/plugin-marketplaces#advanced-plugin-entries), mendeklarasikan subdirektori khusus menggantikan scan

633* **Aturan penggabungan sendiri**: [hooks](#hooks), [MCP servers](#mcp-servers), dan [LSP servers](#lsp-servers). Lihat setiap bagian untuk cara beberapa sumber digabungkan636* **Aturan penggabungan sendiri**: [hooks](#hooks), [MCP servers](#mcp-servers), dan [LSP servers](#lsp-servers). Lihat setiap bagian untuk cara beberapa sumber digabungkan

634 637 

635Saat plugin memiliki folder default dan kunci manifest yang cocok, Claude Code v2.1.140 dan yang lebih baru menandai folder yang diabaikan di `/doctor`, `claude plugin list`, dan tampilan detail `/plugin`. Plugin masih dimuat menggunakan jalur manifest. Tidak ada peringatan yang ditampilkan saat kunci manifest menunjuk ke folder default, misalnya `"commands": ["./commands/deploy.md"]`, karena folder ditangani secara eksplisit dalam hal itu.638Saat plugin memiliki folder default dan kunci manifest yang cocok, Claude Code v2.1.140 dan yang lebih baru menandai folder yang diabaikan di `/doctor`, `claude plugin list`, dan tampilan detail `/plugin`. Plugin masih dimuat menggunakan jalur manifest. Tidak ada peringatan yang ditampilkan saat kunci manifest menunjuk ke folder default, misalnya `"commands": ["./commands/deploy.md"]`, karena folder ditangani secara eksplisit dalam hal itu.


1093| `--available` | Sertakan plugin yang tersedia dari marketplace. Memerlukan `--json` | |1096| `--available` | Sertakan plugin yang tersedia dari marketplace. Memerlukan `--json` | |

1094| `-h, --help` | Tampilkan bantuan untuk perintah | |1097| `-h, --help` | Tampilkan bantuan untuk perintah | |

1095 1098 

1099Dalam sesi interaktif, `/plugin list` mencetak daftar yang sama secara inline. Bentuk interaktif menerima `--enabled` atau `--disabled` untuk menampilkan hanya plugin dalam status itu, dan `ls` sebagai singkatan untuk `list`.

1100 

1096<h3 id="plugin-details">1101<h3 id="plugin-details">

1097 plugin details1102 plugin details

1098</h3>1103</h3>

Details

79 79 

80Pengaturan model [`opusplan`](/id/model-config#opusplan-model-setting) diselesaikan ke Opus selama plan mode dan Sonnet selama eksekusi, jadi setiap toggle plan-mode adalah perubahan model dan memulai cache segar.80Pengaturan model [`opusplan`](/id/model-config#opusplan-model-setting) diselesaikan ke Opus selama plan mode dan Sonnet selama eksekusi, jadi setiap toggle plan-mode adalah perubahan model dan memulai cache segar.

81 81 

82[Fallback model otomatis](/id/model-config#automatic-model-fallback) pada Fable 5 juga merupakan perubahan model. Ketika pengklasifikasi keamanan menandai permintaan, Claude Code menjalankannya kembali pada model Opus default dan sesi berlanjut di sana.

83 

82<h3 id="changing-effort-level">84<h3 id="changing-effort-level">

83 Mengubah tingkat effort85 Mengubah tingkat effort

84</h3>86</h3>


101 Menghubungkan atau memutuskan server MCP103 Menghubungkan atau memutuskan server MCP

102</h3>104</h3>

103 105 

104Definisi alat berada di layer prompt sistem, jadi cache membatalkan ketika set definisi alat dalam permintaan berubah di antara giliran. Apakah perubahan [server MCP](/id/mcp) melakukan ini tergantung pada apakah alatnya ditunda oleh [tool search](/id/mcp#scale-with-mcp-tool-search) atau dimuat ke dalam prefix:106Definisi alat berada di layer prompt sistem, jadi cache membatalkan ketika set definisi alat dalam permintaan berubah di antara giliran. Mengalihkan [advisor tool](/id/advisor) adalah pengecualian: definisinya berada setelah breakpoint cache, jadi mengaktifkan atau menonaktifkan `/advisor` menjaga prefix yang di-cache tetap utuh. Apakah perubahan [server MCP](/id/mcp) melakukan ini tergantung pada apakah alatnya ditunda oleh [tool search](/id/mcp#scale-with-mcp-tool-search) atau dimuat ke dalam prefix:

105 107 

106* **Alat yang ditunda**, default pada model yang didukung: server yang terhubung, terputus, atau mengubah daftar alatnya hanya menambahkan konten baru dan tidak mengganggu apa pun yang sudah di-cache.108* **Alat yang ditunda**, default pada model yang didukung: server yang terhubung, terputus, atau mengubah daftar alatnya hanya menambahkan konten baru dan tidak mengganggu apa pun yang sudah di-cache.

107* **Alat yang dimuat ke dalam prefix**: perubahan apa pun pada mereka membatalkan cache. Ini terjadi ketika [tool search tidak tersedia atau dinonaktifkan](/id/mcp#configure-tool-search), seperti pada model Haiku, di Vertex AI, atau dengan gateway `ANTHROPIC_BASE_URL` kustom. Ini juga terjadi untuk server atau alat yang ditandai [`alwaysLoad`](/id/mcp#exempt-a-server-from-deferral), dan untuk definisi yang disimpan di depan oleh [threshold-based loading](/id/mcp#configure-tool-search).109* **Alat yang dimuat ke dalam prefix**: perubahan apa pun pada mereka membatalkan cache. Ini terjadi ketika [tool search tidak tersedia atau dinonaktifkan](/id/mcp#configure-tool-search), seperti pada model Haiku, di Vertex AI, atau dengan gateway `ANTHROPIC_BASE_URL` kustom. Ini juga terjadi untuk server atau alat yang ditandai [`alwaysLoad`](/id/mcp#exempt-a-server-from-deferral), dan untuk definisi yang disimpan di depan oleh [threshold-based loading](/id/mcp#configure-tool-search).


118 120 

119Pengecualiannya adalah plugin yang menyediakan [server MCP](/id/plugins-reference#mcp-servers). Mengaktifkan atau menonaktifkan satu mengikuti aturan yang sama seperti [menghubungkan atau memutuskan server MCP](#connecting-or-disconnecting-an-mcp-server): cache bertahan ketika alat server ditunda, dan permintaan berikutnya membaca ulang seluruh percakapan ketika mereka dimuat ke dalam prefix.121Pengecualiannya adalah plugin yang menyediakan [server MCP](/id/plugins-reference#mcp-servers). Mengaktifkan atau menonaktifkan satu mengikuti aturan yang sama seperti [menghubungkan atau memutuskan server MCP](#connecting-or-disconnecting-an-mcp-server): cache bertahan ketika alat server ditunda, dan permintaan berikutnya membaca ulang seluruh percakapan ketika mereka dimuat ke dalam prefix.

120 122 

121Perubahan plugin berlaku ketika Anda menjalankan [`/reload-plugins`](/id/discover-plugins#apply-plugin-changes-without-restarting) atau memulai sesi baru. Biaya, baik pengumuman yang ditambahkan atau pembacaan ulang penuh, muncul pada giliran pertama setelah reload, bukan ketika Anda menjalankan `/plugin install`, `/plugin enable`, atau `/plugin disable`.123Perubahan plugin berlaku ketika Anda menjalankan [`/reload-plugins`](/id/discover-plugins#apply-plugin-changes-without-restarting) atau memulai sesi baru. Biaya, baik pengumuman yang ditambahkan atau pembacaan ulang penuh, muncul pada giliran pertama setelah reload, bukan ketika Anda menjalankan `/plugin install`, `/plugin enable`, atau `/plugin disable`. {/* min-version: 2.1.163 */}Mulai dari v2.1.163, ketika reload akan memicu pembacaan ulang penuh, `/reload-plugins` menampilkan peringatan dan tidak menerapkan reload. Lewatkan `--force` untuk menerapkan bagaimanapun.

122 124 

123Menonaktifkan plugin yang Anda aktifkan sebelumnya dalam sesi mengembalikan bentuk permintaan sebelumnya. Jika prefix itu masih dalam [cache lifetime](#cache-lifetime)-nya, permintaan berikutnya membaca entri cache yang lebih lama daripada membangun kembali.125Menonaktifkan plugin yang Anda aktifkan sebelumnya dalam sesi mengembalikan bentuk permintaan sebelumnya. Jika prefix itu masih dalam [cache lifetime](#cache-lifetime)-nya, permintaan berikutnya membaca entri cache yang lebih lama daripada membangun kembali.

124 126 


128 130 

129Menambahkan nama tool yang sederhana seperti `Bash` atau `WebFetch` sebagai [deny rule](/id/permissions#manage-permissions) menghapus tool tersebut dari konteks Claude sepenuhnya. Definisi tool bawaan dimuat ke layer prompt sistem, jadi menambah atau menghapus salah satu aturan ini di tengah sesi membatalkan cache. Perubahan berlaku pada giliran berikutnya baik Anda menambahkannya melalui `/permissions` atau dengan [mengedit file pengaturan secara langsung](/id/settings#when-edits-take-effect).131Menambahkan nama tool yang sederhana seperti `Bash` atau `WebFetch` sebagai [deny rule](/id/permissions#manage-permissions) menghapus tool tersebut dari konteks Claude sepenuhnya. Definisi tool bawaan dimuat ke layer prompt sistem, jadi menambah atau menghapus salah satu aturan ini di tengah sesi membatalkan cache. Perubahan berlaku pada giliran berikutnya baik Anda menambahkannya melalui `/permissions` atau dengan [mengedit file pengaturan secara langsung](/id/settings#when-edits-take-effect).

130 132 

131Hanya nama tool yang sederhana, atau bentuk setara `Bash(*)`, yang memiliki efek ini. Deny rules yang dibatasi seperti `Bash(rm *)`, dan semua allow dan ask rules, tidak mengubah tool mana yang Claude lihat. Claude Code memeriksanya ketika Claude mencoba melakukan panggilan, meninggalkan prefix tetap utuh.133Hanya deny rule yang cocok di posisi nama-tool yang memiliki efek ini: nama tool yang sederhana, bentuk setara `Bash(*)`, atau [tool-name glob](/id/permissions#tool-name-wildcards) seperti `"*"`. Glob yang cocok hanya dengan MCP tools, seperti `"mcp__*"`, menghapus tools tersebut dengan cara yang sama tetapi menjaga cache tetap utuh ketika tools yang cocok [ditunda](#connecting-or-disconnecting-an-mcp-server), default, karena definisi yang ditunda tidak pernah ada di prefix yang di-cache. Deny rules yang dibatasi seperti `Bash(rm *)`, dan semua allow dan ask rules, tidak mengubah tools mana yang Claude lihat. Claude Code memeriksanya ketika Claude mencoba melakukan panggilan, meninggalkan prefix tetap utuh.

132 134 

133<h3 id="compacting-the-conversation">135<h3 id="compacting-the-conversation">

134 Memadatkan percakapan136 Memadatkan percakapan


290| `DISABLE_PROMPT_CACHING_HAIKU` | Nonaktifkan untuk Haiku saja |292| `DISABLE_PROMPT_CACHING_HAIKU` | Nonaktifkan untuk Haiku saja |

291| `DISABLE_PROMPT_CACHING_SONNET` | Nonaktifkan untuk Sonnet saja |293| `DISABLE_PROMPT_CACHING_SONNET` | Nonaktifkan untuk Sonnet saja |

292| `DISABLE_PROMPT_CACHING_OPUS` | Nonaktifkan untuk Opus saja |294| `DISABLE_PROMPT_CACHING_OPUS` | Nonaktifkan untuk Opus saja |

295| `DISABLE_PROMPT_CACHING_FABLE` | Nonaktifkan untuk Fable saja |

293 296 

294Untuk menetapkan kebijakan caching di seluruh organisasi, masukkan salah satu dari ini atau [TTL variables](#cache-lifetime) dalam blok `env` dari [managed settings](/id/settings#settings-files). Untuk penggunaan normal, biarkan caching diaktifkan.297Untuk menetapkan kebijakan caching di seluruh organisasi, masukkan salah satu dari ini atau [TTL variables](#cache-lifetime) dalam blok `env` dari [managed settings](/id/settings#settings-files). Untuk penggunaan normal, biarkan caching diaktifkan.

295 298 

quickstart.md +12 −5

Details

118claude118claude

119```119```

120 120 

121Anda akan melihat layar sambutan Claude Code dengan informasi sesi Anda, percakapan terbaru, dan pembaruan terbaru. Ketik `/help` untuk perintah yang tersedia atau `/resume` untuk melanjutkan percakapan sebelumnya.121Anda akan melihat prompt Claude Code dengan versi, model saat ini, dan direktori kerja yang ditampilkan di atasnya. Ketik `/help` untuk perintah yang tersedia atau `/resume` untuk melanjutkan percakapan sebelumnya.

122 122 

123<Tip>123<Tip>

124 Setelah masuk (Langkah 2), kredensial Anda disimpan di sistem Anda. Pelajari lebih lanjut di [Manajemen Kredensial](/id/authentication#credential-management).124 Setelah masuk (Langkah 2), kredensial Anda disimpan di sistem Anda. Pelajari lebih lanjut di [Manajemen Kredensial](/id/authentication#credential-management).


278 Perintah penting278 Perintah penting

279</h2>279</h2>

280 280 

281Berikut adalah perintah paling penting untuk penggunaan sehari-hari:281Berikut adalah perintah paling penting untuk penggunaan sehari-hari. Perintah shell dijalankan dari terminal Anda untuk memulai atau melanjutkan Claude Code. Perintah sesi dijalankan di dalam Claude Code setelah dimulai.

282 

283**Perintah shell**

282 284 

283| Perintah | Apa yang dilakukannya | Contoh |285| Perintah | Apa yang dilakukannya | Contoh |

284| ------------------- | -------------------------------------------------- | ----------------------------------- |286| ------------------- | -------------------------------------------------- | ----------------------------------- |


287| `claude -p "query"` | Jalankan kueri sekali, lalu keluar | `claude -p "jelaskan fungsi ini"` |289| `claude -p "query"` | Jalankan kueri sekali, lalu keluar | `claude -p "jelaskan fungsi ini"` |

288| `claude -c` | Lanjutkan percakapan terbaru di direktori saat ini | `claude -c` |290| `claude -c` | Lanjutkan percakapan terbaru di direktori saat ini | `claude -c` |

289| `claude -r` | Lanjutkan percakapan sebelumnya | `claude -r` |291| `claude -r` | Lanjutkan percakapan sebelumnya | `claude -r` |

292 

293**Perintah sesi**

294 

295| Perintah | Apa yang dilakukannya | Contoh |

296| ------------------- | -------------------------------- | -------- |

290| `/clear` | Hapus riwayat percakapan | `/clear` |297| `/clear` | Hapus riwayat percakapan | `/clear` |

291| `/help` | Tampilkan perintah yang tersedia | `/help` |298| `/help` | Tampilkan perintah yang tersedia | `/help` |

292| `exit` atau Ctrl+D | Keluar dari Claude Code | `exit` |299| `/exit` atau Ctrl+D | Keluar dari Claude Code | `/exit` |

293 300 

294Lihat [referensi CLI](/id/cli-reference) untuk daftar lengkap perintah.301Lihat [referensi CLI](/id/cli-reference) untuk daftar lengkap perintah shell dan [referensi perintah](/id/commands) untuk daftar lengkap perintah sesi.

295 302 

296<h2 id="pro-tips-for-beginners">303<h2 id="pro-tips-for-beginners">

297 Tips pro untuk pemula304 Tips pro untuk pemula


336 </Accordion>343 </Accordion>

337</AccordionGroup>344</AccordionGroup>

338 345 

339<h2 id="what-s-next">346<h2 id="whats-next">

340 Apa selanjutnya?347 Apa selanjutnya?

341</h2>348</h2>

342 349 

remote-control.md +21 −10

Details

93 /remote-control My Project93 /remote-control My Project

94 ```94 ```

95 95 

96 Ini memulai sesi Remote Control yang membawa riwayat percakapan saat ini dan menampilkan URL sesi dan kode QR yang dapat Anda gunakan untuk [terhubung dari perangkat lain](#connect-from-another-device). Bendera `--verbose`, `--sandbox`, dan `--no-sandbox` tidak tersedia dengan perintah ini.96 Ini memulai sesi Remote Control yang membawa riwayat percakapan saat ini.

97 

98 Bendera `--verbose`, `--sandbox`, dan `--no-sandbox` tidak tersedia dengan perintah ini.

97 </Tab>99 </Tab>

98 100 

99 <Tab title="VS Code">101 <Tab title="VS Code">


111 </Tab>113 </Tab>

112</Tabs>114</Tabs>

113 115 

116<h3 id="check-connection-status">

117 Periksa status koneksi

118</h3>

119 

120Dalam sesi terminal interaktif, indikator `/rc active` berada di footer di bawah kotak input saat koneksi aktif, dan disembunyikan jika terminal terlalu sempit untuk menampilkannya. Teks indikator adalah tautan ke sesi di claude.ai. Pilihnya dengan tombol panah bawah dan tekan Enter, atau jalankan `/remote-control` lagi, untuk membuka panel status dengan URL sesi dan kode QR yang dapat Anda gunakan untuk [terhubung dari perangkat lain](#connect-from-another-device).

121 

122Jika koneksi gagal, indikator berubah menjadi merah dan menampilkan `/rc failed`. Pilihnya dengan tombol panah bawah dan tekan Enter untuk melihat alasan kegagalan dan opsi untuk menutupnya, atau jalankan `/remote-control` lagi untuk mencoba ulang.

123 

114<h3 id="connect-from-another-device">124<h3 id="connect-from-another-device">

115 Terhubung dari perangkat lain125 Terhubung dari perangkat lain

116</h3>126</h3>


1283. Pesan bermakna terakhir dalam riwayat percakapan yang ada1383. Pesan bermakna terakhir dalam riwayat percakapan yang ada

1294. Nama yang dibuat secara otomatis seperti `myhost-graceful-unicorn`, di mana `myhost` adalah nama mesin Anda atau awalan yang Anda tetapkan dengan `--remote-control-session-name-prefix`1394. Nama yang dibuat secara otomatis seperti `myhost-graceful-unicorn`, di mana `myhost` adalah nama mesin Anda atau awalan yang Anda tetapkan dengan `--remote-control-session-name-prefix`

130 140 

131Jika Anda tidak menetapkan nama eksplisit, judul akan diperbarui untuk mencerminkan prompt Anda setelah Anda mengirimnya. Mengganti nama sesi dari claude.ai atau aplikasi Claude juga memperbarui judul lokal yang ditampilkan di `claude --resume`.141Jika Anda tidak menetapkan nama eksplisit, judul akan diperbarui untuk mencerminkan prompt Anda setelah Anda mengirimnya. {/* min-version: 2.1.176 */}Mulai dari Claude Code v2.1.176, judul yang dibuat secara otomatis cocok dengan bahasa percakapan Anda, atau pengaturan [`language`](/id/settings#available-settings) jika satu dikonfigurasi. Mengganti nama sesi dari claude.ai atau aplikasi Claude juga memperbarui judul lokal yang ditampilkan di `claude --resume`.

132 142 

133Jika lingkungan sudah memiliki sesi aktif, Anda akan ditanya apakah akan melanjutkannya atau memulai yang baru.143Jika lingkungan sudah memiliki sesi aktif, Anda akan ditanya apakah akan melanjutkannya atau memulai yang baru.

134 144 


164 174 

165Ketika Remote Control aktif, Claude dapat mengirim notifikasi push ke ponsel Anda.175Ketika Remote Control aktif, Claude dapat mengirim notifikasi push ke ponsel Anda.

166 176 

167Claude memutuskan kapan harus push. Biasanya mengirim satu ketika tugas yang berjalan lama selesai atau ketika memerlukan keputusan dari Anda untuk melanjutkan. Anda juga dapat meminta push dalam prompt Anda, misalnya `notify me when the tests finish`. Selain toggle on/off di bawah, tidak ada konfigurasi per-event.177Claude memutuskan kapan harus push. Biasanya mengirim satu ketika tugas yang berjalan lama selesai atau ketika memerlukan keputusan dari Anda untuk melanjutkan. Anda juga dapat meminta push dalam prompt Anda, misalnya `notify me when the tests finish`. Selain dua toggle on/off di bawah, tidak ada konfigurasi per-event.

168 178 

169<Note>179<Note>

170 Notifikasi push mobile memerlukan Claude Code v2.1.110 atau lebih baru.180 Notifikasi push mobile memerlukan Claude Code v2.1.110 atau lebih baru.


186 </Step>196 </Step>

187 197 

188 <Step title="Aktifkan push di Claude Code">198 <Step title="Aktifkan push di Claude Code">

189 Di terminal Anda, jalankan `/config` dan aktifkan **Push when Claude decides**.199 Di terminal Anda, jalankan `/config` dan aktifkan **Push when Claude decides** untuk notifikasi proaktif, **Push when actions required** untuk prompt izin dan pertanyaan, atau keduanya.

190 </Step>200 </Step>

191</Steps>201</Steps>

192 202 


204* **Proses lokal harus tetap berjalan**: Remote Control berjalan sebagai proses lokal. Jika Anda menutup terminal, keluar dari VS Code, atau menghentikan proses `claude`, sesi berakhir.214* **Proses lokal harus tetap berjalan**: Remote Control berjalan sebagai proses lokal. Jika Anda menutup terminal, keluar dari VS Code, atau menghentikan proses `claude`, sesi berakhir.

205* **Pemadaman jaringan yang diperpanjang**: jika mesin Anda aktif tetapi tidak dapat menjangkau jaringan selama lebih dari kira-kira 10 menit, sesi habis waktu dan proses keluar. Jalankan `claude remote-control` lagi untuk memulai sesi baru.215* **Pemadaman jaringan yang diperpanjang**: jika mesin Anda aktif tetapi tidak dapat menjangkau jaringan selama lebih dari kira-kira 10 menit, sesi habis waktu dan proses keluar. Jalankan `claude remote-control` lagi untuk memulai sesi baru.

206* **Ultraplan memutuskan Remote Control**: memulai sesi [ultraplan](/id/ultraplan) memutuskan sesi Remote Control aktif apa pun karena kedua fitur menempati antarmuka claude.ai/code dan hanya satu yang dapat terhubung pada satu waktu.216* **Ultraplan memutuskan Remote Control**: memulai sesi [ultraplan](/id/ultraplan) memutuskan sesi Remote Control aktif apa pun karena kedua fitur menempati antarmuka claude.ai/code dan hanya satu yang dapat terhubung pada satu waktu.

207* **Beberapa perintah hanya lokal**: perintah yang membuka pemilih interaktif di terminal, seperti `/mcp`, `/plugin`, atau `/resume`, hanya bekerja dari CLI lokal. Perintah yang menghasilkan output teks, termasuk `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, dan `/reload-plugins`, bekerja dari mobile dan web.217* **Beberapa perintah hanya lokal**: perintah yang membuka pemilih interaktif di terminal, seperti `/plugin` atau `/resume`, hanya bekerja dari CLI lokal. Perintah yang menghasilkan output teks, termasuk `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, dan `/reload-plugins`, bekerja dari mobile dan web. {/* min-version: 2.1.166 */}Mulai dari v2.1.166, `/mcp` juga bekerja dari mobile dan web: ini mengembalikan ringkasan teks status server alih-alih membuka pemilih, dan menerima [subperintah](/id/commands#all-commands) yang sama `reconnect`, `enable`, dan `disable` seperti CLI lokal, dengan satu perbedaan: dari mobile dan web, `/mcp reconnect` tanpa nama server menghubungkan kembali setiap server yang gagal atau memerlukan autentikasi, sementara CLI lokal memerlukan nama server untuk `reconnect`.

208 218 

209<h2 id="troubleshooting">219<h2 id="troubleshooting">

210 Pemecahan Masalah220 Pemecahan Masalah


232 "Remote Control belum diaktifkan untuk akun Anda"242 "Remote Control belum diaktifkan untuk akun Anda"

233</h3>243</h3>

234 244 

235Pemeriksaan kelayakan dapat gagal dengan variabel lingkungan tertentu yang ada:245Peluncuran Remote Control belum mencapai akun Anda, atau hak akses cache Anda sudah ketinggalan zaman. Jika Anda baru-baru ini mengubah paket, jalankan `claude auth logout` kemudian `claude auth login` untuk menyegarkannya. Jalankan `claude doctor` untuk melihat pemeriksaan kelayakan individual mana yang gagal. Konflik variabel lingkungan, pemeriksaan yang tidak dapat dijangkau, dan kebijakan organisasi masing-masing menghasilkan pesan mereka sendiri, jadi kesalahan ini berarti gerbang peluncuran itu sendiri.

236 246 

237* `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` atau `DISABLE_TELEMETRY`: batalkan pengaturannya dan coba lagi.247<h3 id="couldn’t-verify-remote-control-eligibility">

238* `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, atau `CLAUDE_CODE_USE_FOUNDRY`: Remote Control memerlukan autentikasi claude.ai dan tidak bekerja dengan penyedia pihak ketiga.248 "Tidak dapat memverifikasi kelayakan Remote Control"

249</h3>

239 250 

240Jika tidak ada yang diatur, jalankan `/logout` kemudian `/login` untuk menyegarkan.251Claude Code tidak dapat menjangkau layanan feature-flag untuk memeriksa apakah Remote Control diaktifkan untuk akun Anda, biasanya karena Anda offline atau proxy memblokir permintaan. Coba lagi setelah Anda memiliki akses jaringan, atau jalankan `claude doctor` untuk detail. Pesan terkait "Tidak dapat memverifikasi kebijakan Remote Control organisasi Anda" memiliki penyebab yang sama dan perbaikan yang sama. Kedua pesan ditambahkan di v2.1.178.

241 252 

242<h3 id="remote-control-is-disabled-by-your-organization-s-policy">253<h3 id="remote-control-is-disabled-by-your-organizations-policy">

243 "Remote Control dinonaktifkan oleh kebijakan organisasi Anda"254 "Remote Control dinonaktifkan oleh kebijakan organisasi Anda"

244</h3>255</h3>

245 256 

routines.md +76 −26

Details

26 26 

27Halaman ini mencakup pembuatan rutinitas, mengonfigurasi setiap jenis pemicu, mengelola jalankan, dan bagaimana batas penggunaan berlaku.27Halaman ini mencakup pembuatan rutinitas, mengonfigurasi setiap jenis pemicu, mengelola jalankan, dan bagaimana batas penggunaan berlaku.

28 28 

29## Contoh kasus penggunaan29<h2 id="example-use-cases">

30 Contoh kasus penggunaan

31</h2>

30 32 

31Setiap contoh memasangkan jenis pemicu dengan jenis pekerjaan yang cocok untuk rutinitas: tanpa pengawasan, dapat diulang, dan terikat pada hasil yang jelas.33Setiap contoh memasangkan jenis pemicu dengan jenis pekerjaan yang cocok untuk rutinitas: tanpa pengawasan, dapat diulang, dan terikat pada hasil yang jelas.

32 34 


44 46 

45Bagian di bawah ini menjelaskan cara membuat rutinitas dan mengonfigurasi setiap jenis pemicu ini.47Bagian di bawah ini menjelaskan cara membuat rutinitas dan mengonfigurasi setiap jenis pemicu ini.

46 48 

47## Buat rutinitas49<h2 id="create-a-routine">

50 Buat rutinitas

51</h2>

48 52 

49Buat rutinitas dari web di [claude.ai/code/routines](https://claude.ai/code/routines), dari aplikasi Desktop, atau dari CLI. Ketiga permukaan menulis ke akun cloud yang sama, sehingga rutinitas yang Anda buat di satu tempat muncul di tempat lain segera. Di aplikasi Desktop, klik **Routines** di bilah sisi, lalu **New routine**, dan pilih **Remote**; memilih **Local** malah membuat [tugas terjadwal Desktop](/id/desktop-scheduled-tasks), yang berjalan di mesin Anda daripada di cloud.53Buat rutinitas dari web di [claude.ai/code/routines](https://claude.ai/code/routines), dari aplikasi Desktop, atau dari CLI. Ketiga permukaan menulis ke akun cloud yang sama, sehingga rutinitas yang Anda buat di satu tempat muncul di tempat lain segera. Di aplikasi Desktop, klik **Routines** di bilah sisi, lalu **New routine**, dan pilih **Remote**; memilih **Local** malah membuat [tugas terjadwal Desktop](/id/desktop-scheduled-tasks), yang berjalan di mesin Anda daripada di cloud.

50 54 


54 58 

55Rutinitas milik akun claude.ai individual Anda. Mereka tidak dibagikan dengan rekan kerja, dan mereka dihitung terhadap tunjangan jalankan harian akun Anda. Apa pun yang dilakukan rutinitas melalui identitas GitHub yang terhubung atau konektor muncul sebagai Anda: komit dan permintaan tarik membawa pengguna GitHub Anda, dan pesan Slack, tiket Linear, atau tindakan konektor lainnya menggunakan akun tertaut Anda untuk layanan tersebut.59Rutinitas milik akun claude.ai individual Anda. Mereka tidak dibagikan dengan rekan kerja, dan mereka dihitung terhadap tunjangan jalankan harian akun Anda. Apa pun yang dilakukan rutinitas melalui identitas GitHub yang terhubung atau konektor muncul sebagai Anda: komit dan permintaan tarik membawa pengguna GitHub Anda, dan pesan Slack, tiket Linear, atau tindakan konektor lainnya menggunakan akun tertaut Anda untuk layanan tersebut.

56 60 

57### Buat dari web61<h3 id="create-from-the-web">

62 Buat dari web

63</h3>

58 64 

59<Steps>65<Steps>

60 <Step title="Buka formulir pembuatan">66 <Step title="Buka formulir pembuatan">


114 </Step>120 </Step>

115</Steps>121</Steps>

116 122 

117### Buat dari CLI123<h3 id="create-from-the-cli">

124 Buat dari CLI

125</h3>

118 126 

119Jalankan `/schedule` dalam sesi apa pun untuk membuat rutinitas terjadwal secara percakapan. Anda juga dapat meneruskan deskripsi langsung, untuk rutinitas berulang seperti `/schedule daily PR review at 9am` atau satu kali seperti `/schedule clean up feature flag in one week`. Claude menjalani informasi yang sama yang dikumpulkan formulir web, lalu menyimpan rutinitas ke akun Anda.127Jalankan `/schedule` dalam sesi apa pun untuk membuat rutinitas terjadwal secara percakapan. Anda juga dapat meneruskan deskripsi langsung, untuk rutinitas berulang seperti `/schedule daily PR review at 9am` atau satu kali seperti `/schedule clean up feature flag in one week`. Claude menjalani informasi yang sama yang dikumpulkan formulir web, lalu menyimpan rutinitas ke akun Anda.

120 128 


122 130 

123CLI juga mendukung pengelolaan rutinitas yang ada. Jalankan `/schedule list` untuk melihat semua rutinitas, `/schedule update` untuk mengubah satu, atau `/schedule run` untuk memicunya segera.131CLI juga mendukung pengelolaan rutinitas yang ada. Jalankan `/schedule list` untuk melihat semua rutinitas, `/schedule update` untuk mengubah satu, atau `/schedule run` untuk memicunya segera.

124 132 

125## Konfigurasi pemicu133<h2 id="configure-triggers">

134 Konfigurasi pemicu

135</h2>

126 136 

127Rutinitas dimulai ketika salah satu pemicunya cocok. Anda dapat melampirkan kombinasi apa pun dari pemicu jadwal, API, dan GitHub ke rutinitas yang sama, dan menambah atau menghapusnya kapan saja dari bagian **Select a trigger** formulir edit rutinitas.137Rutinitas dimulai ketika salah satu pemicunya cocok. Anda dapat melampirkan kombinasi apa pun dari pemicu jadwal, API, dan GitHub ke rutinitas yang sama, dan menambah atau menghapusnya kapan saja dari bagian **Select a trigger** formulir edit rutinitas.

128 138 

129### Tambahkan pemicu jadwal139<h3 id="add-a-schedule-trigger">

140 Tambahkan pemicu jadwal

141</h3>

130 142 

131Pemicu jadwal menjalankan rutinitas dengan frekuensi berulang, atau sekali pada waktu masa depan tertentu. Pilih frekuensi preset di bagian **Select a trigger**: per jam, harian, hari kerja, atau mingguan. Waktu dimasukkan dalam zona lokal Anda dan dikonversi secara otomatis, sehingga rutinitas berjalan pada waktu dinding jam itu terlepas dari di mana infrastruktur cloud berada.143Pemicu jadwal menjalankan rutinitas dengan frekuensi berulang, atau sekali pada waktu masa depan tertentu. Pilih frekuensi preset di bagian **Select a trigger**: per jam, harian, hari kerja, atau mingguan. Waktu dimasukkan dalam zona lokal Anda dan dikonversi secara otomatis, sehingga rutinitas berjalan pada waktu dinding jam itu terlepas dari di mana infrastruktur cloud berada.

132 144 


134 146 

135Untuk interval khusus seperti setiap dua jam atau tanggal pertama setiap bulan, pilih preset terdekat dalam formulir, lalu jalankan `/schedule update` di CLI untuk menetapkan ekspresi cron spesifik. Interval minimum adalah satu jam; ekspresi yang berjalan lebih sering ditolak.147Untuk interval khusus seperti setiap dua jam atau tanggal pertama setiap bulan, pilih preset terdekat dalam formulir, lalu jalankan `/schedule update` di CLI untuk menetapkan ekspresi cron spesifik. Interval minimum adalah satu jam; ekspresi yang berjalan lebih sering ditolak.

136 148 

137#### Jadwalkan jalankan sekali149<h4 id="schedule-a-one-off-run">

150 Jadwalkan jalankan sekali

151</h4>

138 152 

139Jadwal sekali menjalankan rutinitas satu kali pada stempel waktu tertentu. Gunakan untuk mengingatkan diri sendiri nanti dalam minggu ini, untuk membuka PR pembersihan setelah rollout selesai, atau untuk memulai tugas tindak lanjut ketika perubahan upstream tiba. Setelah rutinitas dijalankan, rutinitas secara otomatis menonaktifkan dan UI web menandainya sebagai **Ran**. Untuk menjalankannya lagi, edit rutinitas dan atur waktu sekali baru.153Jadwal sekali menjalankan rutinitas satu kali pada stempel waktu tertentu. Gunakan untuk mengingatkan diri sendiri nanti dalam minggu ini, untuk membuka PR pembersihan setelah rollout selesai, atau untuk memulai tugas tindak lanjut ketika perubahan upstream tiba. Setelah rutinitas dijalankan, rutinitas secara otomatis menonaktifkan dan UI web menandainya sebagai **Ran**. Untuk menjalankannya lagi, edit rutinitas dan atur waktu sekali baru.

140 154 


152 166 

153Jalankan sekali tidak dihitung terhadap batas jalankan rutinitas harian. Mereka mengonsumsi penggunaan langganan reguler paket Anda seperti sesi lainnya. Lihat [Usage and limits](#usage-and-limits) untuk detail.167Jalankan sekali tidak dihitung terhadap batas jalankan rutinitas harian. Mereka mengonsumsi penggunaan langganan reguler paket Anda seperti sesi lainnya. Lihat [Usage and limits](#usage-and-limits) untuk detail.

154 168 

155### Tambahkan pemicu API169<h3 id="add-an-api-trigger">

170 Tambahkan pemicu API

171</h3>

156 172 

157Pemicu API memberikan rutinitas titik akhir HTTP khusus. POSTing ke titik akhir dengan token pembawa rutinitas memulai sesi baru dan mengembalikan URL sesi. Gunakan ini untuk menghubungkan Claude Code ke sistem peringatan, saluran pipa penyebaran, alat internal, atau di mana pun Anda dapat membuat permintaan HTTP yang diautentikasi.173Pemicu API memberikan rutinitas titik akhir HTTP khusus. POSTing ke titik akhir dengan token pembawa rutinitas memulai sesi baru dan mengembalikan URL sesi. Gunakan ini untuk menghubungkan Claude Code ke sistem peringatan, saluran pipa penyebaran, alat internal, atau di mana pun Anda dapat membuat permintaan HTTP yang diautentikasi.

158 174 


178 194 

179Setiap rutinitas memiliki token sendiri, dibatasi untuk memicu rutinitas itu saja. Untuk memutar atau mencabut, kembali ke modal yang sama dan klik **Regenerate** atau **Revoke**.195Setiap rutinitas memiliki token sendiri, dibatasi untuk memicu rutinitas itu saja. Untuk memutar atau mencabut, kembali ke modal yang sama dan klik **Regenerate** atau **Revoke**.

180 196 

181#### Picu rutinitas197<h4 id="trigger-a-routine">

198 Picu rutinitas

199</h4>

182 200 

183Kirim permintaan POST ke titik akhir `/fire` dengan token pembawa di header `Authorization`. Badan permintaan menerima bidang `text` opsional untuk konteks spesifik jalankan seperti badan peringatan atau log yang gagal, diteruskan ke rutinitas bersama prompt yang disimpannya. Nilainya adalah teks freeform dan tidak diuraikan: jika Anda mengirim JSON atau muatan terstruktur lainnya, rutinitas menerimanya sebagai string literal.201Kirim permintaan POST ke titik akhir `/fire` dengan token pembawa di header `Authorization`. Badan permintaan menerima bidang `text` opsional untuk konteks spesifik jalankan seperti badan peringatan atau log yang gagal, diteruskan ke rutinitas bersama prompt yang disimpannya. Nilainya adalah teks freeform dan tidak diuraikan: jika Anda mengirim JSON atau muatan terstruktur lainnya, rutinitas menerimanya sebagai string literal.

184 202 


209 Titik akhir `/fire` dikirim di bawah header beta `experimental-cc-routine-2026-04-01`. Bentuk permintaan dan respons, batas laju, dan semantik token mungkin berubah saat fitur berada dalam pratinjau penelitian. Perubahan yang merusak dikirim di balik versi header beta bertanggal baru, dan dua versi header sebelumnya paling baru terus bekerja sehingga pemanggil memiliki waktu untuk bermigrasi.227 Titik akhir `/fire` dikirim di bawah header beta `experimental-cc-routine-2026-04-01`. Bentuk permintaan dan respons, batas laju, dan semantik token mungkin berubah saat fitur berada dalam pratinjau penelitian. Perubahan yang merusak dikirim di balik versi header beta bertanggal baru, dan dua versi header sebelumnya paling baru terus bekerja sehingga pemanggil memiliki waktu untuk bermigrasi.

210</Warning>228</Warning>

211 229 

212#### Referensi API230<h4 id="api-reference">

231 Referensi API

232</h4>

213 233 

214Untuk referensi API lengkap, termasuk semua respons kesalahan, aturan validasi, dan batas bidang, lihat [Trigger a routine via API](https://platform.claude.com/docs/id/api/claude-code/routines-fire) dalam dokumentasi Platform Claude.234Untuk referensi API lengkap, termasuk semua respons kesalahan, aturan validasi, dan batas bidang, lihat [Trigger a routine via API](https://platform.claude.com/docs/id/api/claude-code/routines-fire) dalam dokumentasi Platform Claude.

215 235 

216Titik akhir `/fire` tersedia untuk pengguna claude.ai saja dan bukan bagian dari permukaan API Platform Claude.236Titik akhir `/fire` tersedia untuk pengguna claude.ai saja dan bukan bagian dari permukaan API Platform Claude.

217 237 

218### Tambahkan pemicu GitHub238<h3 id="add-a-github-trigger">

239 Tambahkan pemicu GitHub

240</h3>

219 241 

220Pemicu GitHub memulai sesi baru secara otomatis ketika peristiwa yang cocok terjadi pada repositori yang terhubung. Setiap peristiwa yang cocok memulai sesinya sendiri.242Pemicu GitHub memulai sesi baru secara otomatis ketika peristiwa yang cocok terjadi pada repositori yang terhubung. Setiap peristiwa yang cocok memulai sesinya sendiri.

221 243 


247 </Step>269 </Step>

248</Steps>270</Steps>

249 271 

250#### Peristiwa yang didukung272<h4 id="supported-events">

273 Peristiwa yang didukung

274</h4>

251 275 

252Pemicu GitHub dapat berlangganan salah satu dari kategori peristiwa berikut. Dalam setiap kategori Anda dapat memilih tindakan spesifik, seperti `pull_request.opened`, atau bereaksi terhadap semua tindakan dalam kategori.276Pemicu GitHub dapat berlangganan salah satu dari kategori peristiwa berikut. Dalam setiap kategori Anda dapat memilih tindakan spesifik, seperti `pull_request.opened`, atau bereaksi terhadap semua tindakan dalam kategori.

253 277 


256| Pull request | PR dibuka, ditutup, ditugaskan, diberi label, disinkronkan, atau diperbarui sebaliknya |280| Pull request | PR dibuka, ditutup, ditugaskan, diberi label, disinkronkan, atau diperbarui sebaliknya |

257| Release | Rilis dibuat, dipublikasikan, diedit, atau dihapus |281| Release | Rilis dibuat, dipublikasikan, diedit, atau dihapus |

258 282 

259#### Filter permintaan tarik283<h4 id="filter-pull-requests">

284 Filter permintaan tarik

285</h4>

260 286 

261Gunakan filter untuk mempersempit permintaan tarik mana yang memulai sesi baru. Semua kondisi filter harus cocok agar rutinitas dipicu. Bidang filter yang tersedia adalah:287Gunakan filter untuk mempersempit permintaan tarik mana yang memulai sesi baru. Semua kondisi filter harus cocok agar rutinitas dipicu. Bidang filter yang tersedia adalah:

262 288 


281* **Ready-for-review only**: is draft adalah `false`. Melewati draf sehingga rutinitas hanya berjalan ketika PR siap untuk ditinjau.307* **Ready-for-review only**: is draft adalah `false`. Melewati draf sehingga rutinitas hanya berjalan ketika PR siap untuk ditinjau.

282* **Label-gated backport**: labels termasuk `needs-backport`. Memicu rutinitas port-ke-cabang-lain hanya ketika pengelola memberi tag PR.308* **Label-gated backport**: labels termasuk `needs-backport`. Memicu rutinitas port-ke-cabang-lain hanya ketika pengelola memberi tag PR.

283 309 

284#### Bagaimana sesi memetakan ke peristiwa310<h4 id="how-sessions-map-to-events">

311 Bagaimana sesi memetakan ke peristiwa

312</h4>

285 313 

286Setiap peristiwa GitHub yang cocok memulai sesi baru. Penggunaan ulang sesi di seluruh peristiwa tidak tersedia untuk rutinitas yang dipicu GitHub, jadi dua pembaruan PR menghasilkan dua sesi independen.314Setiap peristiwa GitHub yang cocok memulai sesi baru. Penggunaan ulang sesi di seluruh peristiwa tidak tersedia untuk rutinitas yang dipicu GitHub, jadi dua pembaruan PR menghasilkan dua sesi independen.

287 315 

288## Kelola rutinitas316<h2 id="manage-routines">

317 Kelola rutinitas

318</h2>

289 319 

290Klik rutinitas dalam daftar untuk membuka halaman detailnya. Halaman detail menampilkan repositori rutinitas, konektor, prompt, jadwal, token API, pemicu GitHub, dan daftar jalankan masa lalu.320Klik rutinitas dalam daftar untuk membuka halaman detailnya. Halaman detail menampilkan repositori rutinitas, konektor, prompt, jadwal, token API, pemicu GitHub, dan daftar jalankan masa lalu.

291 321 

292### Lihat dan berinteraksi dengan jalankan322<h3 id="view-and-interact-with-runs">

323 Lihat dan berinteraksi dengan jalankan

324</h3>

293 325 

294Klik jalankan apa pun untuk membukanya sebagai sesi penuh. Dari sana Anda dapat melihat apa yang dilakukan Claude, meninjau perubahan, membuat permintaan tarik, atau melanjutkan percakapan. Setiap sesi jalankan bekerja seperti sesi lainnya: gunakan menu dropdown di sebelah judul sesi untuk mengganti nama, mengarsipkan, atau menghapusnya.326Klik jalankan apa pun untuk membukanya sebagai sesi penuh. Dari sana Anda dapat melihat apa yang dilakukan Claude, meninjau perubahan, membuat permintaan tarik, atau melanjutkan percakapan. Setiap sesi jalankan bekerja seperti sesi lainnya: gunakan menu dropdown di sebelah judul sesi untuk mengganti nama, mengarsipkan, atau menghapusnya.

295 327 


297 Status hijau dalam daftar jalankan berarti sesi dimulai dan keluar tanpa kesalahan infrastruktur. Ini tidak berarti tugas dalam prompt Anda berhasil. Buka jalankan untuk membaca transkrip dan konfirmasi apa yang sebenarnya dilakukan Claude. Permintaan jaringan yang diblokir, alat konektor yang hilang, dan kegagalan tingkat tugas semuanya muncul di sana daripada di indikator status.329 Status hijau dalam daftar jalankan berarti sesi dimulai dan keluar tanpa kesalahan infrastruktur. Ini tidak berarti tugas dalam prompt Anda berhasil. Buka jalankan untuk membaca transkrip dan konfirmasi apa yang sebenarnya dilakukan Claude. Permintaan jaringan yang diblokir, alat konektor yang hilang, dan kegagalan tingkat tugas semuanya muncul di sana daripada di indikator status.

298</Note>330</Note>

299 331 

300### Edit dan kontrol rutinitas332<h3 id="edit-and-control-routines">

333 Edit dan kontrol rutinitas

334</h3>

301 335 

302Dari halaman detail rutinitas Anda dapat:336Dari halaman detail rutinitas Anda dapat:

303 337 


306* Klik ikon pensil untuk membuka **Edit routine** dan ubah nama, prompt, repositori, lingkungan, konektor, atau pemicu rutinitas apa pun. Bagian **Select a trigger** adalah tempat Anda menambah atau menghapus jadwal, token API, dan pemicu peristiwa GitHub.340* Klik ikon pensil untuk membuka **Edit routine** dan ubah nama, prompt, repositori, lingkungan, konektor, atau pemicu rutinitas apa pun. Bagian **Select a trigger** adalah tempat Anda menambah atau menghapus jadwal, token API, dan pemicu peristiwa GitHub.

307* Klik ikon hapus untuk menghapus rutinitas. Sesi masa lalu yang dibuat oleh rutinitas tetap dalam daftar sesi Anda.341* Klik ikon hapus untuk menghapus rutinitas. Sesi masa lalu yang dibuat oleh rutinitas tetap dalam daftar sesi Anda.

308 342 

309### Repositori dan izin cabang343<h3 id="repositories-and-branch-permissions">

344 Repositori dan izin cabang

345</h3>

310 346 

311Rutinitas memerlukan akses GitHub untuk mengklon repositori. Ketika Anda membuat rutinitas dari CLI dengan `/schedule`, Claude memeriksa apakah akun Anda memiliki GitHub yang terhubung dan meminta Anda menjalankan `/web-setup` jika tidak. Lihat [GitHub authentication options](/id/claude-code-on-the-web#github-authentication-options) untuk dua cara memberikan akses.347Rutinitas memerlukan akses GitHub untuk mengklon repositori. Ketika Anda membuat rutinitas dari CLI dengan `/schedule`, Claude memeriksa apakah akun Anda memiliki GitHub yang terhubung dan meminta Anda menjalankan `/web-setup` jika tidak. Lihat [GitHub authentication options](/id/claude-code-on-the-web#github-authentication-options) untuk dua cara memberikan akses.

312 348 


314 350 

315Secara default, Claude hanya dapat push ke cabang dengan awalan `claude/`. Ini mencegah rutinitas secara tidak sengaja memodifikasi cabang yang dilindungi atau jangka panjang. Untuk menghapus pembatasan ini untuk repositori spesifik, aktifkan **Allow unrestricted branch pushes** untuk repositori tersebut saat membuat atau mengedit rutinitas.351Secara default, Claude hanya dapat push ke cabang dengan awalan `claude/`. Ini mencegah rutinitas secara tidak sengaja memodifikasi cabang yang dilindungi atau jangka panjang. Untuk menghapus pembatasan ini untuk repositori spesifik, aktifkan **Allow unrestricted branch pushes** untuk repositori tersebut saat membuat atau mengedit rutinitas.

316 352 

317### Konektor353<h3 id="connectors">

354 Konektor

355</h3>

318 356 

319Rutinitas dapat menggunakan konektor MCP yang terhubung untuk membaca dari dan menulis ke layanan eksternal selama setiap jalankan. Misalnya, rutinitas yang melakukan triase permintaan dukungan mungkin membaca dari saluran Slack dan membuat masalah di Linear.357Rutinitas dapat menggunakan konektor MCP yang terhubung untuk membaca dari dan menulis ke layanan eksternal selama setiap jalankan. Misalnya, rutinitas yang melakukan triase permintaan dukungan mungkin membaca dari saluran Slack dan membuat masalah di Linear.

320 358 


324 362 

325Untuk mengelola atau menambahkan konektor di luar formulir rutinitas, kunjungi **Settings > Connectors** di claude.ai atau gunakan `/schedule update` di CLI.363Untuk mengelola atau menambahkan konektor di luar formulir rutinitas, kunjungi **Settings > Connectors** di claude.ai atau gunakan `/schedule update` di CLI.

326 364 

327### Lingkungan dan akses jaringan365<h3 id="environments-and-network-access">

366 Lingkungan dan akses jaringan

367</h3>

328 368 

329Setiap rutinitas berjalan dalam [lingkungan cloud](/id/claude-code-on-the-web#the-cloud-environment) yang mengontrol akses jaringan, variabel lingkungan, dan skrip penyiapan. Rutinitas mewarisi kebijakan jaringan lingkungan pada setiap jalankan.369Setiap rutinitas berjalan dalam [lingkungan cloud](/id/claude-code-on-the-web#the-cloud-environment) yang mengontrol akses jaringan, variabel lingkungan, dan skrip penyiapan. Rutinitas mewarisi kebijakan jaringan lingkungan pada setiap jalankan.

330 370 

331Lingkungan **Default** menggunakan akses jaringan **Trusted**: [daftar allowlist default](/id/claude-code-on-the-web#default-allowed-domains) dari registri paket, API penyedia cloud, registri kontainer, dan domain pengembangan umum dapat dijangkau, tetapi domain arbitrer tidak. Permintaan keluar ke host lain gagal dengan `403` dan `x-deny-reason: host_not_allowed`. Lalu lintas konektor MCP dirutekan melalui server Anthropic, jadi konektor yang Anda tambahkan ke rutinitas bekerja tanpa menambahkan host mereka ke **Allowed domains**. Hapus konektor apa pun yang tidak Anda butuhkan di bawah [Konektor](#konektor).371Lingkungan **Default** menggunakan akses jaringan **Trusted**: [daftar allowlist default](/id/claude-code-on-the-web#default-allowed-domains) dari registri paket, API penyedia cloud, registri kontainer, dan domain pengembangan umum dapat dijangkau, tetapi domain arbitrer tidak. Permintaan keluar ke host lain gagal dengan `403` dan `x-deny-reason: host_not_allowed`. Lalu lintas konektor MCP dirutekan melalui server Anthropic, jadi konektor yang Anda tambahkan ke rutinitas bekerja tanpa menambahkan host mereka ke **Allowed domains**. Hapus konektor apa pun yang tidak Anda butuhkan di bawah [Konektor](#connectors).

332 372 

333Untuk memungkinkan domain tambahan:373Untuk memungkinkan domain tambahan:

334 374 


356 396 

357Lihat [Network access](/id/claude-code-on-the-web#network-access) untuk detail tentang tingkat akses dan daftar allowlist default.397Lihat [Network access](/id/claude-code-on-the-web#network-access) untuk detail tentang tingkat akses dan daftar allowlist default.

358 398 

359## Penggunaan dan batas399<h2 id="usage-and-limits">

400 Penggunaan dan batas

401</h2>

360 402 

361Rutinitas mengurangi penggunaan langganan dengan cara yang sama seperti sesi interaktif. Selain batas langganan standar, rutinitas memiliki batas harian tentang berapa banyak jalankan yang dapat dimulai per akun. Lihat konsumsi saat ini dan jalankan rutinitas harian yang tersisa di [claude.ai/code/routines](https://claude.ai/code/routines) atau [claude.ai/settings/usage](https://claude.ai/settings/usage).403Rutinitas mengurangi penggunaan langganan dengan cara yang sama seperti sesi interaktif. Selain batas langganan standar, rutinitas memiliki batas harian tentang berapa banyak jalankan yang dapat dimulai per akun. Lihat konsumsi saat ini dan jalankan rutinitas harian yang tersisa di [claude.ai/code/routines](https://claude.ai/code/routines) atau [claude.ai/settings/usage](https://claude.ai/settings/usage).

362 404 


364 406 

365Jalankan sekali saja tidak dihitung terhadap batas jalankan rutinitas harian. Mereka mengurangi penggunaan langganan reguler Anda seperti sesi lainnya, tetapi mereka dikecualikan dari tunjangan jalankan rutinitas harian per akun.407Jalankan sekali saja tidak dihitung terhadap batas jalankan rutinitas harian. Mereka mengurangi penggunaan langganan reguler Anda seperti sesi lainnya, tetapi mereka dikecualikan dari tunjangan jalankan rutinitas harian per akun.

366 408 

367## Pemecahan masalah409<h2 id="troubleshooting">

410 Pemecahan masalah

411</h2>

368 412 

369### `/schedule` mengembalikan "Unknown command"413<h3 id="/schedule-returns-unknown-command">

414 `/schedule` mengembalikan "Unknown command"

415</h3>

370 416 

371CLI menyembunyikan `/schedule` ketika salah satu persyaratannya tidak terpenuhi. Penyebabnya biasanya salah satu dari berikut ini:417CLI menyembunyikan `/schedule` ketika salah satu persyaratannya tidak terpenuhi. Penyebabnya biasanya salah satu dari berikut ini:

372 418 


377 423 

378Anda selalu dapat membuat dan mengelola rutinitas di [claude.ai/code/routines](https://claude.ai/code/routines) terlepas dari bagaimana CLI dikonfigurasi.424Anda selalu dapat membuat dan mengelola rutinitas di [claude.ai/code/routines](https://claude.ai/code/routines) terlepas dari bagaimana CLI dikonfigurasi.

379 425 

380### "Rutinitas dinonaktifkan oleh kebijakan organisasi Anda"426<h3 id="routines-are-disabled-by-your-organization’s-policy">

427 "Rutinitas dinonaktifkan oleh kebijakan organisasi Anda"

428</h3>

381 429 

382Admin Team atau Enterprise Anda mungkin telah mematikan toggle **Routines** di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). Ini adalah pengaturan organisasi sisi server, jadi tidak dapat ditimpa dari konfigurasi lokal Anda. Hubungi admin Anda untuk meminta agar rutinitas diaktifkan untuk organisasi Anda.430Admin Team atau Enterprise Anda mungkin telah mematikan toggle **Routines** di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). Ini adalah pengaturan organisasi sisi server, jadi tidak dapat ditimpa dari konfigurasi lokal Anda. Hubungi admin Anda untuk meminta agar rutinitas diaktifkan untuk organisasi Anda.

383 431 

384## Sumber daya terkait432<h2 id="related-resources">

433 Sumber daya terkait

434</h2>

385 435 

386* [`/loop` and in-session scheduling](/id/scheduled-tasks): jadwalkan tugas lokal dalam sesi CLI terbuka436* [`/loop` and in-session scheduling](/id/scheduled-tasks): jadwalkan tugas lokal dalam sesi CLI terbuka

387* [Desktop scheduled tasks](/id/desktop-scheduled-tasks): tugas terjadwal lokal yang berjalan di mesin Anda dengan akses ke file lokal437* [Desktop scheduled tasks](/id/desktop-scheduled-tasks): tugas terjadwal lokal yang berjalan di mesin Anda dengan akses ke file lokal

Details

65 65 

66[Mode izin](/id/permission-modes) memutuskan apakah panggilan alat berjalan dan apakah Anda diminta terlebih dahulu. Isolasi membatasi apa yang dapat diakses perintah setelah berjalan. Keduanya bekerja bersama: ketika mode izin membiarkan tindakan berjalan tanpa bertanya kepada Anda, batas isolasi membatasi apa yang dapat dijangkau tindakan tersebut.66[Mode izin](/id/permission-modes) memutuskan apakah panggilan alat berjalan dan apakah Anda diminta terlebih dahulu. Isolasi membatasi apa yang dapat diakses perintah setelah berjalan. Keduanya bekerja bersama: ketika mode izin membiarkan tindakan berjalan tanpa bertanya kepada Anda, batas isolasi membatasi apa yang dapat dijangkau tindakan tersebut.

67 67 

68`--dangerously-skip-permissions` menghapus tinjauan per-tindakan sepenuhnya, sehingga batas isolasi adalah satu-satunya hal yang membatasi apa yang dapat dilakukan Claude. Selalu jalankan di dalam container, VM, atau [sandbox runtime](#sandbox-runtime), sehingga alat file, server MCP, dan hooks juga berada di dalam batas.68`--dangerously-skip-permissions` menghapus tinjauan per-tindakan selain [aturan ask](/id/permissions#manage-permissions) yang eksplisit, sehingga batas isolasi adalah satu-satunya hal yang membatasi apa yang dapat dilakukan Claude. Selalu jalankan di dalam container, VM, atau [sandbox runtime](#sandbox-runtime), sehingga alat file, server MCP, dan hooks juga berada di dalam batas.

69 69 

70[Mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode) menggantikan prompt dengan pengklasifikasi yang meninjau tindakan dan memblokir yang melampaui permintaan, menargetkan infrastruktur yang tidak dikenali, atau tampak didorong oleh konten bermusuhan yang dibaca Claude. Pengklasifikasi adalah kontrol per-tindakan, bukan batas isolasi, sehingga batas isolasi masih menambah pertahanan berlapis untuk berjalan tanpa pengawasan, dan tidak diperlukan seperti halnya untuk `--dangerously-skip-permissions`.70[Mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode) menggantikan prompt dengan pengklasifikasi yang meninjau tindakan dan memblokir yang melampaui permintaan, menargetkan infrastruktur yang tidak dikenali, atau tampak didorong oleh konten bermusuhan yang dibaca Claude. Pengklasifikasi adalah kontrol per-tindakan, bukan batas isolasi, sehingga batas isolasi masih menambah pertahanan berlapis untuk berjalan tanpa pengawasan, dan tidak diperlukan seperti halnya untuk `--dangerously-skip-permissions`.

71 71 

sandboxing.md +7 −5

Details

49 </Step>49 </Step>

50 50 

51 <Step title="Jalankan perintah Bash">51 <Step title="Jalankan perintah Bash">

52 Minta Claude untuk menjalankan perintah, seperti build atau test suite. Secara default, perintah di dalam sandbox hanya dapat menulis ke direktori kerja. Pertama kali perintah memerlukan domain jaringan baru, Claude Code meminta persetujuan.52 Minta Claude untuk menjalankan perintah, seperti build atau test suite. Secara default, perintah di dalam sandbox hanya dapat menulis ke direktori kerja dan direktori temp sesi. Pertama kali perintah memerlukan domain jaringan baru, Claude Code meminta persetujuan.

53 53 

54 Perintah yang tidak dapat berjalan sandboxed kembali ke alur izin reguler. Untuk memperluas atau mempersempit batas ini, lihat [Configure sandboxing](#configure-sandboxing).54 Perintah yang tidak dapat berjalan sandboxed kembali ke alur izin reguler. Untuk memperluas atau mempersempit batas ini, lihat [Configure sandboxing](#configure-sandboxing).

55 </Step>55 </Step>


140 140 

141Di kedua mode, sandbox memberlakukan pembatasan filesystem dan jaringan yang sama. Perbedaannya hanya dalam apakah perintah sandboxed disetujui secara otomatis atau memerlukan izin eksplisit.141Di kedua mode, sandbox memberlakukan pembatasan filesystem dan jaringan yang sama. Perbedaannya hanya dalam apakah perintah sandboxed disetujui secara otomatis atau memerlukan izin eksplisit.

142 142 

143Direktori temp sesi dapat ditulis di dalam sandbox secara default, bersama dengan direktori kerja. Claude Code menetapkan `$TMPDIR` ke direktori ini untuk perintah sandboxed, sehingga alat yang menulis file sementara bekerja tanpa konfigurasi tambahan. Perintah unsandboxed mewarisi `$TMPDIR` shell Anda tanpa perubahan, yang berarti perintah sandboxed dan unsandboxed menyelesaikan `$TMPDIR` ke direktori yang berbeda. Untuk meneruskan file sementara di antara keduanya, tulis di bawah direktori kerja sebagai gantinya.

144 

143Beberapa perintah tidak dapat berjalan di dalam sandbox sama sekali, seperti alat yang tidak kompatibel dengannya atau yang memerlukan host yang belum Anda izinkan. Daripada gagal tugas atau memerlukan Anda untuk mematikan sandboxing, Claude Code menyertakan pintu keluar: ketika perintah gagal karena pembatasan sandbox, Claude menganalisis kegagalan dan dapat mencoba kembali perintah dengan parameter `dangerouslyDisableSandbox`. Perintah yang dicoba kembali berjalan di luar sandbox, sehingga melalui alur izin reguler dan memerlukan persetujuan Anda.145Beberapa perintah tidak dapat berjalan di dalam sandbox sama sekali, seperti alat yang tidak kompatibel dengannya atau yang memerlukan host yang belum Anda izinkan. Daripada gagal tugas atau memerlukan Anda untuk mematikan sandboxing, Claude Code menyertakan pintu keluar: ketika perintah gagal karena pembatasan sandbox, Claude menganalisis kegagalan dan dapat mencoba kembali perintah dengan parameter `dangerouslyDisableSandbox`. Perintah yang dicoba kembali berjalan di luar sandbox, sehingga melalui alur izin reguler dan memerlukan persetujuan Anda.

144 146 

145Anda dapat menonaktifkan pintu keluar ini dengan mengatur `"allowUnsandboxedCommands": false` dalam [sandbox settings](/id/settings#sandbox-settings) Anda. Ketika dinonaktifkan, yang ditampilkan tab Overrides `/sandbox` sebagai **Strict sandbox mode**, parameter `dangerouslyDisableSandbox` sepenuhnya diabaikan dan semua perintah harus berjalan sandboxed atau secara eksplisit terdaftar dalam `excludedCommands`.147Anda dapat menonaktifkan pintu keluar ini dengan mengatur `"allowUnsandboxedCommands": false` dalam [sandbox settings](/id/settings#sandbox-settings) Anda. Ketika dinonaktifkan, yang ditampilkan tab Overrides `/sandbox` sebagai **Strict sandbox mode**, parameter `dangerouslyDisableSandbox` sepenuhnya diabaikan dan semua perintah harus berjalan sandboxed atau secara eksplisit terdaftar dalam `excludedCommands`.


154 156 

155Sesuaikan perilaku sandbox melalui file `settings.json` Anda. Lihat [Settings](/id/settings#sandbox-settings) untuk referensi konfigurasi lengkap.157Sesuaikan perilaku sandbox melalui file `settings.json` Anda. Lihat [Settings](/id/settings#sandbox-settings) untuk referensi konfigurasi lengkap.

156 158 

157Secara default, perintah sandboxed hanya dapat menulis ke direktori kerja saat ini. Jika perintah subprocess seperti `kubectl`, `terraform`, atau `npm` perlu menulis di luar direktori proyek, gunakan `sandbox.filesystem.allowWrite` untuk memberikan akses ke jalur tertentu:159Secara default, perintah sandboxed hanya dapat menulis ke direktori kerja saat ini dan direktori temp sesi. Jika perintah subprocess seperti `kubectl`, `terraform`, atau `npm` perlu menulis di luar direktori tersebut, gunakan `sandbox.filesystem.allowWrite` untuk memberikan akses ke jalur tertentu:

158 160 

159```json theme={null}161```json theme={null}

160{162{


209 211 

210Alat Bash sandboxed membatasi akses sistem file ke direktori tertentu:212Alat Bash sandboxed membatasi akses sistem file ke direktori tertentu:

211 213 

212* **Perilaku penulisan default**: akses baca dan tulis ke direktori kerja saat ini dan subdirektorinya214* **Perilaku penulisan default**: akses baca dan tulis ke direktori kerja saat ini dan subdirektorinya, ditambah direktori temp sesi yang ditunjuk oleh `$TMPDIR`

213* **Perilaku pembacaan default**: akses baca ke seluruh komputer, kecuali direktori tertentu yang ditolak. Perhatikan bahwa default ini masih memungkinkan pembacaan file kredensial seperti `~/.aws/credentials` dan `~/.ssh/`. Tambahkan ke `denyRead` untuk memblokirnya.215* **Perilaku pembacaan default**: akses baca ke seluruh komputer, kecuali direktori tertentu yang ditolak. Perhatikan bahwa default ini masih memungkinkan pembacaan file kredensial seperti `~/.aws/credentials` dan `~/.ssh/`. Tambahkan ke `denyRead` untuk memblokirnya.

214* **Akses terblokir**: tidak dapat memodifikasi file di luar direktori kerja saat ini tanpa izin eksplisit, termasuk file konfigurasi shell seperti `~/.bashrc` dan binari sistem di `/bin/`216* **Akses terblokir**: tidak dapat memodifikasi file di luar direktori kerja saat ini dan direktori temp sesi tanpa izin eksplisit, termasuk file konfigurasi shell seperti `~/.bashrc` dan binari sistem di `/bin/`

215* **Git worktrees**: ketika direktori kerja adalah [linked git worktree](/id/worktrees), sandbox juga memungkinkan penulisan ke direktori `.git` bersama dari repositori utama sehingga perintah seperti `git commit` dapat memperbarui refs dan indeks. Penulisan ke `hooks/` dan `config` di dalam direktori tersebut tetap ditolak.217* **Git worktrees**: ketika direktori kerja adalah [linked git worktree](/id/worktrees), sandbox juga memungkinkan penulisan ke direktori `.git` bersama dari repositori utama sehingga perintah seperti `git commit` dapat memperbarui refs dan indeks. Penulisan ke `hooks/` dan `config` di dalam direktori tersebut tetap ditolak.

216* **Dapat dikonfigurasi**: tentukan jalur yang diizinkan dan ditolak khusus melalui pengaturan218* **Dapat dikonfigurasi**: tentukan jalur yang diizinkan dan ditolak khusus melalui pengaturan

217 219 


416* **Subagents**: [subagents](/id/sub-agents) berjalan dalam proses yang sama dengan sesi induk dan menggunakan konfigurasi sandbox yang sama. Perintah Bash di dalam subagent di-sandbox ketika sandboxing diaktifkan dalam sesi induk.418* **Subagents**: [subagents](/id/sub-agents) berjalan dalam proses yang sama dengan sesi induk dan menggunakan konfigurasi sandbox yang sama. Perintah Bash di dalam subagent di-sandbox ketika sandboxing diaktifkan dalam sesi induk.

417 419 

418<Warning>420<Warning>

419 Sandboxing yang efektif memerlukan **baik** isolasi filesystem maupun jaringan. Tanpa isolasi jaringan, agen yang dikompromikan dapat mengeksfiltrasikan file sensitif seperti kunci SSH. Tanpa isolasi filesystem, agen yang dikompromikan dapat memasang pintu belakang pada sumber daya sistem untuk mendapatkan akses jaringan. Ketika Anda memperluas default, periksa bahwa jalur `allowWrite`, entri `allowedDomains` yang luas, atau pengecualian `excludedCommands` tidak membatalkan pembatasan di sisi lain.421 Sandboxing yang efektif memerlukan isolasi filesystem dan jaringan. Tanpa isolasi jaringan, agen yang dikompromikan dapat mengeksfiltrasikan file sensitif seperti kunci SSH. Tanpa isolasi filesystem, agen yang dikompromikan dapat memasang pintu belakang pada sumber daya sistem untuk mendapatkan akses jaringan. Ketika Anda memperluas default, periksa bahwa jalur `allowWrite`, entri `allowedDomains` yang luas, atau pengecualian `excludedCommands` tidak membatalkan pembatasan di sisi lain.

420</Warning>422</Warning>

421 423 

422<h2 id="see-also">424<h2 id="see-also">

security.md +4 −4

Details

22 22 

23Claude Code menggunakan izin baca-saja yang ketat secara default. Ketika tindakan tambahan diperlukan (mengedit file, menjalankan tes, mengeksekusi perintah), Claude Code meminta izin eksplisit. Pengguna mengontrol apakah akan menyetujui tindakan sekali atau mengizinkannya secara otomatis.23Claude Code menggunakan izin baca-saja yang ketat secara default. Ketika tindakan tambahan diperlukan (mengedit file, menjalankan tes, mengeksekusi perintah), Claude Code meminta izin eksplisit. Pengguna mengontrol apakah akan menyetujui tindakan sekali atau mengizinkannya secara otomatis.

24 24 

25Kami merancang Claude Code agar transparan dan aman. Misalnya, kami memerlukan persetujuan untuk perintah bash sebelum mengeksekusinya, memberikan Anda kontrol langsung. Pendekatan ini memungkinkan pengguna dan organisasi untuk mengonfigurasi izin secara langsung.25Claude Code memerlukan persetujuan sebelum menjalankan perintah Bash yang dapat memodifikasi sistem Anda. Serangkaian perintah baca-saja bawaan seperti `ls`, `cat`, dan `git status` berjalan tanpa prompt. Pendekatan ini memungkinkan pengguna dan organisasi untuk mengonfigurasi izin secara langsung.

26 26 

27Untuk konfigurasi izin terperinci, lihat [Permissions](/id/permissions).27Untuk konfigurasi izin terperinci, lihat [Permissions](/id/permissions).

28 28 


56* **Sistem izin**: Operasi sensitif memerlukan persetujuan eksplisit56* **Sistem izin**: Operasi sensitif memerlukan persetujuan eksplisit

57* **Analisis yang menyadari konteks**: Mendeteksi instruksi yang berpotensi berbahaya dengan menganalisis permintaan lengkap57* **Analisis yang menyadari konteks**: Mendeteksi instruksi yang berpotensi berbahaya dengan menganalisis permintaan lengkap

58* **Sanitasi input**: Mencegah command injection dengan memproses input pengguna58* **Sanitasi input**: Mencegah command injection dengan memproses input pengguna

59* **Daftar blokir perintah**: Memblokir perintah berisiko yang mengambil konten arbitrer dari web seperti `curl` dan `wget` secara default. Ketika secara eksplisit diizinkan, waspadai [batasan pola izin](/id/permissions#tool-specific-permission-rules)59* **Persetujuan perintah jaringan**: Perintah yang mengambil konten dari web seperti `curl` dan `wget` tidak disetujui secara otomatis secara default. Mereka meminta seperti perintah Bash non-read-only lainnya, sehingga Anda masih dapat menyetujui sekali atau menambahkan aturan izin eksplisit seperti `Bash(curl *)`. Untuk memblokir sepenuhnya, tambahkan ke [`permissions.deny`](/id/permissions#tool-specific-permission-rules)

60 60 

61<h3 id="privacy-safeguards">61<h3 id="privacy-safeguards">

62 Perlindungan privasi62 Perlindungan privasi


77* **Persetujuan permintaan jaringan**: Alat yang membuat permintaan jaringan memerlukan persetujuan pengguna secara default77* **Persetujuan permintaan jaringan**: Alat yang membuat permintaan jaringan memerlukan persetujuan pengguna secara default

78* **Jendela konteks terisolasi**: Web fetch menggunakan jendela konteks terpisah untuk menghindari injeksi prompt yang berpotensi berbahaya78* **Jendela konteks terisolasi**: Web fetch menggunakan jendela konteks terpisah untuk menghindari injeksi prompt yang berpotensi berbahaya

79* **Verifikasi kepercayaan**: Jalankan codebase pertama kali dan server MCP baru memerlukan verifikasi kepercayaan79* **Verifikasi kepercayaan**: Jalankan codebase pertama kali dan server MCP baru memerlukan verifikasi kepercayaan

80 * Catatan: Verifikasi kepercayaan dinonaktifkan saat menjalankan secara non-interaktif dengan flag `-p`. Pengecualiannya adalah [`--worktree`](/id/worktrees), yang masih memerlukan kepercayaan telah diterima untuk direktori80 * Catatan: Verifikasi kepercayaan dinonaktifkan saat menjalankan secara non-interaktif dengan flag `-p`

81 * Catatan: Ketika Anda memulai Claude Code langsung di direktori home Anda, penerimaan kepercayaan disimpan untuk sesi saat ini saja dan tidak ditulis ke disk, jadi prompt muncul kembali pada setiap peluncuran. Tidak ada pengaturan untuk mempertahankannya. Mulai Claude Code dari subdirektori proyek sebagai gantinya, di mana penerimaan kepercayaan disimpan per direktori81 * Catatan: Ketika Anda memulai Claude Code langsung di direktori home Anda, penerimaan kepercayaan disimpan untuk sesi saat ini saja dan tidak ditulis ke disk, jadi prompt muncul kembali pada setiap peluncuran. Tidak ada pengaturan untuk mempertahankannya. Mulai Claude Code dari subdirektori proyek sebagai gantinya, di mana penerimaan kepercayaan disimpan per direktori

82* **Deteksi command injection**: Perintah bash yang mencurigakan memerlukan persetujuan manual bahkan jika sebelumnya allowlisted82* **Deteksi command injection**: Perintah bash yang mencurigakan memerlukan persetujuan manual bahkan jika sebelumnya allowlisted

83* **Pencocokan fail-closed**: Perintah yang tidak cocok secara default memerlukan persetujuan manual83* **Pencocokan fail-closed**: Perintah yang tidak cocok secara default memerlukan persetujuan manual

84* **Deskripsi bahasa alami**: Perintah bash kompleks menyertakan penjelasan untuk pemahaman pengguna84* **Deskripsi bahasa alami**: Perintah bash kompleks menyertakan penjelasan untuk pemahaman pengguna

85* **Penyimpanan kredensial aman**: Kunci API dan token dienkripsi. Lihat [Credential Management](/id/authentication#credential-management)85* **Penyimpanan kredensial aman**: Kunci API dan token disimpan di macOS Keychain jika tersedia, dan dilindungi oleh izin file di Windows dan Linux. Lihat [Credential Management](/id/authentication#credential-management)

86 86 

87<Warning>87<Warning>

88 **Risiko keamanan Windows WebDAV**: Saat menjalankan Claude Code di Windows, kami merekomendasikan untuk tidak mengaktifkan WebDAV atau mengizinkan Claude Code mengakses path seperti `\\*` yang mungkin berisi subdirektori WebDAV. [WebDAV telah dihentikan oleh Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) karena risiko keamanan. Mengaktifkan WebDAV dapat memungkinkan Claude Code memicu permintaan jaringan ke host jarak jauh, melewati sistem izin.88 **Risiko keamanan Windows WebDAV**: Saat menjalankan Claude Code di Windows, kami merekomendasikan untuk tidak mengaktifkan WebDAV atau mengizinkan Claude Code mengakses path seperti `\\*` yang mungkin berisi subdirektori WebDAV. [WebDAV telah dihentikan oleh Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) karena risiko keamanan. Mengaktifkan WebDAV dapat memungkinkan Claude Code memicu permintaan jaringan ke host jarak jauh, melewati sistem izin.

Details

227 227 

228Plugin dibangun sepenuhnya di [hooks](/id/hooks), mekanisme untuk menjalankan kode Anda sendiri pada titik tertentu dalam loop Claude. Ini mendaftarkan:228Plugin dibangun sepenuhnya di [hooks](/id/hooks), mekanisme untuk menjalankan kode Anda sendiri pada titik tertentu dalam loop Claude. Ini mendaftarkan:

229 229 

230| Hook event | Purpose |230| Hook event | Tujuan |

231| :--------------------------------------------------------------- | :-------------------------------------------------------------------------- |231| :----------------------------------------------------------------- | :------------------------------------------------------------------------------------------ |

232| `SessionStart` | Bootstrap the plugin's Python environment |232| `SessionStart` | Bootstrap lingkungan Python plugin |

233| `UserPromptSubmit` | Capture the working-tree baseline that the end-of-turn review diffs against |233| `UserPromptSubmit` | Menangkap baseline working-tree yang digunakan oleh review akhir giliran untuk membuat diff |

234| `PostToolUse` on `Edit`, `Write`, and `NotebookEdit` | Per-edit pattern match |234| `PostToolUse` pada `Edit`, `Write`, dan `NotebookEdit` | Pencocokan pola per-edit |

235| `Stop` | End-of-turn diff review, run in the background |235| `Stop` | Review diff akhir giliran, berjalan di latar belakang |

236| `PostToolUse` on `Bash`, filtered to `git commit` and `git push` | Commit and push review, run in the background |236| `PostToolUse` pada `Bash`, disaring ke `git commit` dan `git push` | Review commit dan push, berjalan di latar belakang |

237 237 

238Jika Anda membangun hook Anda sendiri, [sumber plugin](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/security-guidance) adalah contoh kerja menjalankan panggilan model terpisah dari hook dan memberi makan hasilnya kembali ke sesi.238Jika Anda membangun hook Anda sendiri, [sumber plugin](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/security-guidance) adalah contoh kerja menjalankan panggilan model terpisah dari hook dan memberi makan hasilnya kembali ke sesi.

239 239 

Details

174 174 

175Claude Code menerapkan pembaruan pengaturan secara otomatis tanpa restart, kecuali untuk pengaturan lanjutan seperti konfigurasi OpenTelemetry, yang memerlukan restart penuh untuk berlaku.175Claude Code menerapkan pembaruan pengaturan secara otomatis tanpa restart, kecuali untuk pengaturan lanjutan seperti konfigurasi OpenTelemetry, yang memerlukan restart penuh untuk berlaku.

176 176 

177<h3 id="invalid-entries-in-delivered-settings">

178 Entri tidak valid dalam pengaturan yang dikirimkan

179</h3>

180 

181Payload yang dikirimkan diurai dengan toleran menggunakan aturan yang sama seperti sumber terkelola lainnya. Ketika payload berisi entri yang gagal validasi skema, Claude Code menghapus entri tersebut, menampilkan kesalahan validasi, dan menerapkan setiap pengaturan yang valid yang tersisa. Lihat [Entri tidak valid dalam pengaturan terkelola](/id/settings#invalid-entries-in-managed-settings) untuk perilaku tingkat bidang, termasuk cara penanganan bidang penegakan keamanan. Memerlukan Claude Code v2.1.169 atau lebih baru.

182 

183Pengiriman yang dikelola server menambahkan perilaku ini:

184 

185* Cache di `~/.claude/remote-settings.json` menyimpan payload yang diselamatkan dengan entri tidak valid dihapus. Payload tidak valid mentah tidak pernah disimpan.

186* Ketika tidak ada bidang dalam payload yang dapat diselamatkan, Claude Code menyimpan pengaturan cache yang terakhir diterima dan mencatat kesalahan fatal.

187* [Dialog persetujuan keamanan](#security-approval-dialogs) mengevaluasi payload yang diselamatkan, sehingga entri tidak valid yang dilucuti tidak pernah disajikan untuk persetujuan dan tidak pernah dieksekusi.

188 

189Untuk men-debug masalah pengiriman, jalankan `claude --debug-file <path>` dan cari log untuk `Remote settings`. Validasi perubahan payload dengan `claude doctor` pada mesin uji sebelum meluncurkannya ke organisasi.

190 

177<h3 id="enforce-fail-closed-startup">191<h3 id="enforce-fail-closed-startup">

178 Paksakan startup yang tertutup gagal192 Paksakan startup yang tertutup gagal

179</h3>193</h3>

sessions.md +3 −3

Details

30| `claude --from-pr <number>` | Melanjutkan sesi yang ditautkan ke permintaan tarik tersebut |30| `claude --from-pr <number>` | Melanjutkan sesi yang ditautkan ke permintaan tarik tersebut |

31| `/resume` | Beralih ke percakapan berbeda dari dalam sesi aktif |31| `/resume` | Beralih ke percakapan berbeda dari dalam sesi aktif |

32 32 

33Sesi yang dibuat dengan [`claude -p`](/id/headless) atau [Agent SDK](/id/agent-sdk/overview) tidak muncul di pemilih sesi, tetapi Anda masih dapat melanjutkan satu dengan meneruskan ID sesinya ke `claude --resume <session-id>`.33Sesi yang dibuat dengan [`claude -p`](/id/headless) atau [Agent SDK](/id/agent-sdk/overview) tidak muncul di pemilih sesi, tetapi Anda masih dapat melanjutkan satu dengan meneruskan ID sesinya ke `claude --resume <session-id>`. Jalankan ini dari direktori tempat sesi dimulai: pencarian ID sesi dibatasi pada direktori proyek saat ini dan git worktrees-nya, jadi sesi yang dibuat di tempat lain melaporkan `No conversation found with session ID: <session-id>`.

34 34 

35<h3 id="where-the-session-picker-looks">35<h3 id="where-the-session-picker-looks">

36 Tempat pemilih sesi mencari36 Tempat pemilih sesi mencari

37</h3>37</h3>

38 38 

39Sesi disimpan per direktori proyek. Secara default, pemilih sesi menampilkan sesi interaktif dari worktree saat ini, ditambah sesi yang dimulai di tempat lain yang menambahkan direktori saat ini dengan `/add-dir`. Gunakan `Ctrl+W` untuk memperluas ke semua worktree repositori atau `Ctrl+A` untuk memperluas ke setiap proyek di mesin ini.39Sesi disimpan per direktori proyek. Secara default, pemilih sesi menampilkan sesi interaktif dari worktree saat ini, ditambah sesi yang dimulai di tempat lain yang menambahkan direktori saat ini dengan `/add-dir`. Dari v2.1.169, memindahkan sesi dengan [`/cd`](/id/commands) memindahkannya ke penyimpanan proyek direktori baru, sehingga muncul di pemilih direktori tersebut setelahnya. Gunakan `Ctrl+W` untuk memperluas ke semua worktree repositori atau `Ctrl+A` untuk memperluas ke setiap proyek di mesin ini.

40 40 

41Memilih sesi dari worktree lain dari repositori yang sama melanjutkannya di tempat. Memilih sesi dari proyek yang tidak terkait menyalin perintah `cd` dan resume ke clipboard Anda.41Memilih sesi dari worktree lain dari repositori yang sama melanjutkannya di tempat. Memilih sesi dari proyek yang tidak terkait menyalin perintah `cd` dan resume ke clipboard Anda.

42 42 


60| Dari pemilih sesi | Sorot sesi dan tekan `Ctrl+R` |60| Dari pemilih sesi | Sorot sesi dan tekan `Ctrl+R` |

61| Pada penerimaan rencana | Menerima rencana dalam [mode rencana](/id/permission-modes#analyze-before-you-edit-with-plan-mode) memberi nama sesi dari konten rencana kecuali Anda sudah menetapkan satu |61| Pada penerimaan rencana | Menerima rencana dalam [mode rencana](/id/permission-modes#analyze-before-you-edit-with-plan-mode) memberi nama sesi dari konten rencana kecuali Anda sudah menetapkan satu |

62 62 

63Setelah sesi diberi nama, kembali ke sesi dengan `claude --resume <name>` atau `/resume <name>`. Lihat [Lanjutkan sesi](#resume-a-session) untuk cara resolusi nama berperilaku di seluruh worktree.63Setelah sesi diberi nama, kembali ke sesi dengan `claude --resume <name>` atau `/resume <name>`. Lihat [Lanjutkan sesi](#resume-a-session) untuk cara resolusi nama berperilaku di seluruh worktrees.

64 64 

65<h2 id="use-the-session-picker">65<h2 id="use-the-session-picker">

66 Gunakan pemilih sesi66 Gunakan pemilih sesi

settings.md +110 −21

Details

94* **Pengaturan pengguna** didefinisikan dalam `~/.claude/settings.json` dan berlaku untuk semua proyek.94* **Pengaturan pengguna** didefinisikan dalam `~/.claude/settings.json` dan berlaku untuk semua proyek.

95* **Pengaturan proyek** disimpan di direktori proyek Anda:95* **Pengaturan proyek** disimpan di direktori proyek Anda:

96 * `.claude/settings.json` untuk pengaturan yang diperiksa ke dalam kontrol sumber dan dibagikan dengan tim Anda96 * `.claude/settings.json` untuk pengaturan yang diperiksa ke dalam kontrol sumber dan dibagikan dengan tim Anda

97 * `.claude/settings.local.json` untuk pengaturan yang tidak diperiksa, berguna untuk preferensi pribadi dan eksperimen. Claude Code akan mengonfigurasi git untuk mengabaikan `.claude/settings.local.json` saat dibuat.97 * `.claude/settings.local.json` untuk pengaturan yang tidak diperiksa, berguna untuk preferensi pribadi dan eksperimen. Ketika Claude Code membuat `.claude/settings.local.json`, Claude Code mengonfigurasi git untuk mengabaikan file tersebut. Jika Anda membuat file sendiri, tambahkan ke gitignore secara manual.

98* **Pengaturan Managed**: Untuk organisasi yang memerlukan kontrol terpusat, Claude Code mendukung beberapa mekanisme pengiriman untuk pengaturan yang dikelola. Semua menggunakan format JSON yang sama dan tidak dapat ditimpa oleh pengaturan pengguna atau proyek:98* **Pengaturan Managed**: Untuk organisasi yang memerlukan kontrol terpusat, Claude Code mendukung beberapa mekanisme pengiriman untuk pengaturan yang dikelola. Semua menggunakan format JSON yang sama dan tidak dapat ditimpa oleh pengaturan pengguna atau proyek:

99 99 

100 * **Pengaturan yang dikelola server**: dikirimkan dari server Anthropic melalui konsol admin Claude.ai. Lihat [pengaturan yang dikelola server](/id/server-managed-settings).100 * **Pengaturan yang dikelola server**: dikirimkan dari server Anthropic melalui konsol admin Claude.ai. Lihat [pengaturan yang dikelola server](/id/server-managed-settings).


174* `model`: gunakan [`/model`](/id/model-config#setting-your-model) untuk beralih di tengah sesi174* `model`: gunakan [`/model`](/id/model-config#setting-your-model) untuk beralih di tengah sesi

175* [`outputStyle`](/id/output-styles): bagian dari prompt sistem, yang dibangun kembali pada `/clear` atau restart175* [`outputStyle`](/id/output-styles): bagian dari prompt sistem, yang dibangun kembali pada `/clear` atau restart

176 176 

177<h3 id="invalid-entries-in-managed-settings">

178 Entri tidak valid dalam pengaturan yang dikelola

179</h3>

180 

181Pengaturan yang dikelola diuraikan dengan toleran. Ketika konfigurasi yang dikelola berisi entri yang gagal validasi skema, Claude Code menghapus entri tersebut, mencatat peringatan, dan menegakkan setiap kebijakan yang valid yang tersisa. Satu kesalahan ketik tidak dapat menonaktifkan kebijakan organisasi Anda yang lainnya. Perilaku ini konsisten di ketiga mekanisme pengiriman: [pengaturan yang dikelola server](/id/server-managed-settings), kebijakan plist dan registry yang digunakan melalui MDM, dan file `managed-settings.json`. Memerlukan Claude Code v2.1.169 atau lebih baru.

182 

183Bidang penegakan keamanan ditangani per bidang daripada dihapus secara grosir saat ada tetapi tidak valid:

184 

185| Bidang | Perilaku saat ada tetapi tidak valid |

186| :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

187| `allowedMcpServers` | Diterapkan sebagai daftar putih kosong, jadi tidak ada MCP servers yang diterima sampai nilainya diperbaiki. Entri individual yang tidak valid dihapus dan subset yang valid diterapkan. |

188| `allowManagedMcpServersOnly` | Diperlakukan sebagai `true`. |

189| `availableModels` | {/* min-version: 2.1.175 */}Diterapkan sebagai daftar putih kosong, jadi hanya model Default yang tersedia sampai nilainya diperbaiki. Entri non-string individual dihapus dan subset yang valid diterapkan. Berlaku dalam v2.1.175 dan lebih baru. |

190| `enforceAvailableModels` | {/* min-version: 2.1.175 */}Diperlakukan sebagai `true`. Berlaku dalam v2.1.175 dan lebih baru. |

191| `forceLoginOrgUUID` | Tidak ada organisasi yang diizinkan untuk login sampai nilainya diperbaiki. |

192| `deniedMcpServers` | Entri individual yang tidak valid dihapus dan subset yang valid diterapkan. Nilai yang sepenuhnya tidak valid dijatuhkan dengan peringatan, karena menolak setiap server akan memblokir servers yang kebijakan tidak pernah namakan. |

193 

194`requiredMinimumVersion` dan `requiredMaximumVersion` gagal terbuka dengan desain: nilai yang tidak valid dihapus daripada diterapkan, jadi push kebijakan yang buruk tidak dapat mencegah Claude Code dari memulai.

195 

196Kesalahan validasi muncul di tiga tempat:

197 

198* Sesi interaktif menampilkan dialog saat startup yang mencantumkan entri yang tidak valid.

199* Jalankan headless dengan `-p` cetak ringkasan ke stderr.

200* [`claude doctor`](/id/debug-your-config) mencantumkan setiap entri yang tidak valid dengan sumber dan bidangnya.

201 

202Validasi perubahan kebijakan dengan menjalankan `claude doctor` pada mesin uji sebelum menggunakannya di seluruh armada.

203 

204Toleransi ini hanya berlaku untuk pengaturan yang dikelola. File pengaturan pengguna, proyek, dan lokal tetap ketat: file yang gagal validasi ditolak secara keseluruhan dan dilaporkan.

205 

177<h3 id="available-settings">206<h3 id="available-settings">

178 Pengaturan yang tersedia207 Pengaturan yang tersedia

179</h3>208</h3>


181`settings.json` mendukung sejumlah opsi:210`settings.json` mendukung sejumlah opsi:

182 211 

183| Kunci | Deskripsi | Contoh |212| Kunci | Deskripsi | Contoh |

184| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- |213| :-------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- |

214| `advisorModel` | {/* min-version: 2.1.98 */}Model untuk [advisor tool](/id/advisor) sisi server. Menerima alias model seperti `"opus"`, `"sonnet"`, atau `"fable"` ({/* min-version: 2.1.170 */}v2.1.170+), atau ID model lengkap. Ditulis secara otomatis saat Anda menjalankan `/advisor`. Tidak diatur untuk menonaktifkan advisor. Memerlukan Claude Code v2.1.98 atau lebih baru | `"opus"` |

185| `agent` | Jalankan thread utama sebagai subagent bernama, dan atur agent default untuk sesi yang dikirimkan dari `claude agents`. Menerapkan prompt sistem subagent, pembatasan tool, dan model. Lihat [Panggil subagents secara eksplisit](/id/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |215| `agent` | Jalankan thread utama sebagai subagent bernama, dan atur agent default untuk sesi yang dikirimkan dari `claude agents`. Menerapkan prompt sistem subagent, pembatasan tool, dan model. Lihat [Panggil subagents secara eksplisit](/id/sub-agents#invoke-subagents-explicitly) | `"code-reviewer"` |

216| `agentPushNotifEnabled` | {/* min-version: 2.1.119 */}Ketika [Remote Control](/id/remote-control) terhubung, izinkan Claude mengirim notifikasi push proaktif ke ponsel Anda, misalnya ketika tugas panjang selesai. Default: `false`. Muncul di `/config` sebagai **Push when Claude decides**. Lihat [Mobile push notifications](/id/remote-control#mobile-push-notifications). Memerlukan Claude Code v2.1.119 atau lebih baru | `true` |

186| `allowAllClaudeAiMcps` | (Pengaturan yang dikelola saja) Muat konektor claude.ai bersama `managed-mcp.json` yang digunakan, yang sebaliknya mengambil kontrol eksklusif dan menekan mereka. Lihat [Konfigurasi MCP yang Dikelola](/id/managed-mcp) | `true` |217| `allowAllClaudeAiMcps` | (Pengaturan yang dikelola saja) Muat konektor claude.ai bersama `managed-mcp.json` yang digunakan, yang sebaliknya mengambil kontrol eksklusif dan menekan mereka. Lihat [Konfigurasi MCP yang Dikelola](/id/managed-mcp) | `true` |

187| `allowedChannelPlugins` | (Pengaturan yang dikelola saja) Daftar putih plugin channel yang dapat mendorong pesan. Menggantikan daftar putih Anthropic default saat diatur. Tidak terdefinisi = kembali ke default, array kosong = blokir semua plugin channel. Memerlukan `channelsEnabled: true`. Lihat [Batasi plugin channel mana yang dapat dijalankan](/id/channels#restrict-which-channel-plugins-can-run) | `[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]` |218| `allowedChannelPlugins` | (Pengaturan yang dikelola saja) Daftar putih plugin channel yang dapat mendorong pesan. Menggantikan daftar putih Anthropic default saat diatur. Tidak terdefinisi = kembali ke default, array kosong = blokir semua plugin channel. Memerlukan `channelsEnabled: true`. Lihat [Batasi plugin channel mana yang dapat dijalankan](/id/channels#restrict-which-channel-plugins-can-run) | `[{ "marketplace": "claude-plugins-official", "plugin": "telegram" }]` |

188| `allowedHttpHookUrls` | Daftar putih pola URL yang dapat ditargetkan oleh HTTP hooks. Mendukung `*` sebagai wildcard. Saat diatur, hooks dengan URL yang tidak cocok diblokir. Tidak terdefinisi = tidak ada pembatasan, array kosong = blokir semua HTTP hooks. Array digabungkan di seluruh sumber pengaturan. Lihat [Konfigurasi Hook](#hook-configuration) | `["https://hooks.example.com/*"]` |219| `allowedHttpHookUrls` | Daftar putih pola URL yang dapat ditargetkan oleh HTTP hooks. Mendukung `*` sebagai wildcard. Saat diatur, hooks dengan URL yang tidak cocok diblokir. Tidak terdefinisi = tidak ada pembatasan, array kosong = blokir semua HTTP hooks. Array digabungkan di seluruh sumber pengaturan. Lihat [Konfigurasi Hook](#hook-configuration) | `["https://hooks.example.com/*"]` |


190| `allowManagedHooksOnly` | (Pengaturan yang dikelola saja) Hanya hooks yang dikelola, SDK hooks, dan hooks dari plugins yang dipaksa diaktifkan dalam pengaturan yang dikelola `enabledPlugins` yang dimuat. Hooks pengguna, proyek, dan semua plugin hooks lainnya diblokir. Lihat [Konfigurasi Hook](#hook-configuration) | `true` |221| `allowManagedHooksOnly` | (Pengaturan yang dikelola saja) Hanya hooks yang dikelola, SDK hooks, dan hooks dari plugins yang dipaksa diaktifkan dalam pengaturan yang dikelola `enabledPlugins` yang dimuat. Hooks pengguna, proyek, dan semua plugin hooks lainnya diblokir. Lihat [Konfigurasi Hook](#hook-configuration) | `true` |

191| `allowManagedMcpServersOnly` | (Pengaturan yang dikelola saja) Hanya `allowedMcpServers` dari pengaturan yang dikelola yang dihormati. `deniedMcpServers` masih digabungkan dari semua sumber. Pengguna masih dapat menambahkan MCP servers, tetapi hanya daftar putih yang ditentukan admin yang berlaku. Lihat [Konfigurasi MCP yang Dikelola](/id/managed-mcp) | `true` |222| `allowManagedMcpServersOnly` | (Pengaturan yang dikelola saja) Hanya `allowedMcpServers` dari pengaturan yang dikelola yang dihormati. `deniedMcpServers` masih digabungkan dari semua sumber. Pengguna masih dapat menambahkan MCP servers, tetapi hanya daftar putih yang ditentukan admin yang berlaku. Lihat [Konfigurasi MCP yang Dikelola](/id/managed-mcp) | `true` |

192| `allowManagedPermissionRulesOnly` | (Pengaturan yang dikelola saja) Cegah pengaturan pengguna dan proyek dari mendefinisikan aturan izin `allow`, `ask`, atau `deny`. Hanya aturan dalam pengaturan yang dikelola yang berlaku. Lihat [Pengaturan khusus yang dikelola](/id/permissions#managed-only-settings) | `true` |223| `allowManagedPermissionRulesOnly` | (Pengaturan yang dikelola saja) Cegah pengaturan pengguna dan proyek dari mendefinisikan aturan izin `allow`, `ask`, atau `deny`. Hanya aturan dalam pengaturan yang dikelola yang berlaku. Lihat [Pengaturan khusus yang dikelola](/id/permissions#managed-only-settings) | `true` |

193| `alwaysThinkingEnabled` | Aktifkan [pemikiran yang diperluas](/id/model-config#extended-thinking) secara default untuk semua sesi. Biasanya dikonfigurasi melalui perintah `/config` daripada mengedit langsung. Untuk memaksa pemikiran mati terlepas dari pengaturan ini, atur [`CLAUDE_CODE_DISABLE_THINKING`](/id/env-vars) dalam `env` | `true` |224| `alwaysThinkingEnabled` | Aktifkan [pemikiran yang diperluas](/id/model-config#extended-thinking) secara default untuk semua sesi. Biasanya dikonfigurasi melalui perintah `/config` daripada mengedit langsung. Untuk memaksa pemikiran mati terlepas dari pengaturan ini, atur [`MAX_THINKING_TOKENS=0`](/id/env-vars) dalam `env`, yang menonaktifkan pemikiran pada Anthropic API kecuali pada Fable 5, yang tidak dapat memiliki pemikiran dimatikan. Pada [penyedia pihak ketiga](/id/third-party-integrations) ini menghilangkan parameter `thinking` sebagai gantinya, dan model adaptive-reasoning mungkin masih berpikir | `true` |

194| `apiKeyHelper` | Skrip khusus, yang akan dieksekusi dalam `/bin/sh`, untuk menghasilkan nilai auth. Nilai ini akan dikirim sebagai header `X-Api-Key` dan `Authorization: Bearer` untuk permintaan model. Atur interval penyegaran dengan [`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`](/id/env-vars) | `/bin/generate_temp_api_key.sh` |225| `apiKeyHelper` | Skrip khusus, yang akan dieksekusi dalam `/bin/sh`, untuk menghasilkan nilai auth. Nilai ini akan dikirim sebagai header `X-Api-Key` dan `Authorization: Bearer` untuk permintaan model. Atur interval penyegaran dengan [`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`](/id/env-vars) | `/bin/generate_temp_api_key.sh` |

195| `attribution` | Sesuaikan atribusi untuk komit git dan pull request. Lihat [Pengaturan atribusi](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |226| `attribution` | Sesuaikan atribusi untuk komit git dan pull request. Lihat [Pengaturan atribusi](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |

227| `autoCompactEnabled` | {/* min-version: 2.1.119 */}Secara otomatis kompak percakapan ketika konteks mendekati batas. Default: `true`. Muncul di `/config` sebagai **Auto-compact**. Untuk menonaktifkan melalui variabel lingkungan, atur [`DISABLE_AUTO_COMPACT`](/id/env-vars) dalam `env` | `false` |

196| `autoMemoryDirectory` | Direktori khusus untuk penyimpanan [memori otomatis](/id/memory#storage-location). Menerima jalur absolut atau jalur dengan awalan `~/`. Dari pengaturan proyek atau lokal, ini dihormati hanya setelah Anda menerima dialog kepercayaan workspace, karena repositori yang diklon dapat menyediakan file ini | `"~/my-memory-dir"` |228| `autoMemoryDirectory` | Direktori khusus untuk penyimpanan [memori otomatis](/id/memory#storage-location). Menerima jalur absolut atau jalur dengan awalan `~/`. Dari pengaturan proyek atau lokal, ini dihormati hanya setelah Anda menerima dialog kepercayaan workspace, karena repositori yang diklon dapat menyediakan file ini | `"~/my-memory-dir"` |

197| `autoMemoryEnabled` | Aktifkan [memori otomatis](/id/memory#enable-or-disable-auto-memory). Saat `false`, Claude tidak membaca dari atau menulis ke direktori memori otomatis. Default: `true`. Anda juga dapat mengalihkan ini dengan `/memory` selama sesi. Untuk menonaktifkan melalui variabel lingkungan, atur [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/id/env-vars) dalam `env` | `false` |229| `autoMemoryEnabled` | Aktifkan [memori otomatis](/id/memory#enable-or-disable-auto-memory). Saat `false`, Claude tidak membaca dari atau menulis ke direktori memori otomatis. Default: `true`. Anda juga dapat mengalihkan ini dengan `/memory` selama sesi. Untuk menonaktifkan melalui variabel lingkungan, atur [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/id/env-vars) dalam `env` | `false` |

198| `autoMode` | Sesuaikan apa yang diblokir dan diizinkan oleh pengklasifikasi [mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode). Berisi array aturan prosa `environment`, `allow`, `soft_deny`, dan `hard_deny`. Sertakan string literal `"$defaults"` dalam array untuk mewarisi aturan bawaan pada posisi tersebut. Lihat [Konfigurasikan mode otomatis](/id/auto-mode-config). Tidak dibaca dari pengaturan proyek bersama | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |230| `autoMode` | Sesuaikan apa yang diblokir dan diizinkan oleh pengklasifikasi [mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode). Berisi array aturan prosa `environment`, `allow`, `soft_deny`, dan `hard_deny`. Sertakan string literal `"$defaults"` dalam array untuk mewarisi aturan bawaan pada posisi tersebut. Lihat [Konfigurasikan mode otomatis](/id/auto-mode-config). Tidak dibaca dari pengaturan proyek bersama | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |

199| `autoScrollEnabled` | Dalam [rendering fullscreen](/id/fullscreen), ikuti output baru ke bagian bawah percakapan. Default: `true`. Muncul di `/config` sebagai **Auto-scroll**. Prompt izin masih bergulir ke tampilan saat ini dimatikan | `false` |231| `autoScrollEnabled` | Dalam [rendering fullscreen](/id/fullscreen), ikuti output baru ke bagian bawah percakapan. Default: `true`. Muncul di `/config` sebagai **Auto-scroll**. Prompt izin masih bergulir ke tampilan saat ini dimatikan | `false` |

200| `autoUpdatesChannel` | Saluran rilis untuk diikuti untuk pembaruan. Gunakan `"stable"` untuk versi yang biasanya sekitar satu minggu lama dan melewati versi dengan regresi besar, atau `"latest"` (default) untuk rilis terbaru. Untuk menonaktifkan auto-updates sepenuhnya, atur [`DISABLE_AUTOUPDATER`](/id/setup#disable-auto-updates) dalam `env` | `"stable"` |232| `autoUpdatesChannel` | Saluran rilis untuk diikuti untuk pembaruan. Gunakan `"stable"` untuk versi yang biasanya sekitar satu minggu lama dan melewati versi dengan regresi besar, atau `"latest"` (default) untuk rilis terbaru. Untuk menonaktifkan auto-updates sepenuhnya, atur [`DISABLE_AUTOUPDATER`](/id/setup#disable-auto-updates) dalam `env` | `"stable"` |

201| `availableModels` | Batasi model mana yang dapat dipilih pengguna melalui `/model`, `--model`, atau `ANTHROPIC_MODEL`. Tidak mempengaruhi opsi Default. Lihat [Batasi pemilihan model](/id/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |233| `availableModels` | Batasi model mana yang dapat dipilih pengguna untuk sesi utama, [subagents](/id/sub-agents), dan [advisor](/id/advisor). Lihat [Batasi pemilihan model](/id/model-config#restrict-model-selection). Lihat `enforceAvailableModels` untuk juga membatasi Default | `["sonnet", "haiku"]` |

202| `awaySummaryEnabled` | Tampilkan ringkasan sesi satu baris saat Anda kembali ke terminal setelah beberapa menit pergi. Atur ke `false` atau matikan Session recap di `/config` untuk menonaktifkan. Sama dengan [`CLAUDE_CODE_ENABLE_AWAY_SUMMARY`](/id/env-vars) | `true` |234| `awaySummaryEnabled` | Tampilkan ringkasan sesi satu baris saat Anda kembali ke terminal setelah beberapa menit pergi. Atur ke `false` atau matikan Session recap di `/config` untuk menonaktifkan. Sama dengan [`CLAUDE_CODE_ENABLE_AWAY_SUMMARY`](/id/env-vars) | `true` |

203| `awsAuthRefresh` | Skrip khusus yang memodifikasi direktori `.aws` (lihat [konfigurasi kredensial lanjutan](/id/amazon-bedrock#advanced-credential-configuration)) | `aws sso login --profile myprofile` |235| `awsAuthRefresh` | Skrip khusus yang memodifikasi direktori `.aws` (lihat [konfigurasi kredensial lanjutan](/id/amazon-bedrock#advanced-credential-configuration)) | `aws sso login --profile myprofile` |

204| `awsCredentialExport` | Skrip khusus yang menampilkan JSON dengan kredensial AWS (lihat [konfigurasi kredensial lanjutan](/id/amazon-bedrock#advanced-credential-configuration)) | `/bin/generate_aws_grant.sh` |236| `awsCredentialExport` | Skrip khusus yang menampilkan JSON dengan kredensial AWS (lihat [konfigurasi kredensial lanjutan](/id/amazon-bedrock#advanced-credential-configuration)) | `/bin/generate_aws_grant.sh` |


213| `disableAgentView` | Atur ke `true` untuk mematikan [background agents dan agent view](/id/agent-view): `claude agents`, `--bg`, `/background`, dan supervisor on-demand. Biasanya diatur dalam [pengaturan yang dikelola](/id/permissions#managed-settings). Setara dengan pengaturan `CLAUDE_CODE_DISABLE_AGENT_VIEW` ke `1` | `true` |245| `disableAgentView` | Atur ke `true` untuk mematikan [background agents dan agent view](/id/agent-view): `claude agents`, `--bg`, `/background`, dan supervisor on-demand. Biasanya diatur dalam [pengaturan yang dikelola](/id/permissions#managed-settings). Setara dengan pengaturan `CLAUDE_CODE_DISABLE_AGENT_VIEW` ke `1` | `true` |

214| `disableAllHooks` | Nonaktifkan semua [hooks](/id/hooks) dan [status line](/id/statusline) khusus apa pun | `true` |246| `disableAllHooks` | Nonaktifkan semua [hooks](/id/hooks) dan [status line](/id/statusline) khusus apa pun | `true` |

215| `disableAutoMode` | Atur ke `"disable"` untuk mencegah [mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode) diaktifkan. Menghapus `auto` dari siklus `Shift+Tab` dan menolak `--permission-mode auto` saat startup. Paling berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) di mana pengguna tidak dapat menimpanya | `"disable"` |247| `disableAutoMode` | Atur ke `"disable"` untuk mencegah [mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode) diaktifkan. Menghapus `auto` dari siklus `Shift+Tab` dan menolak `--permission-mode auto` saat startup. Paling berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) di mana pengguna tidak dapat menimpanya | `"disable"` |

216| `disableDeepLinkRegistration` | Atur ke `"disable"` untuk mencegah Claude Code mendaftarkan penanganan protokol `claude-cli://` dengan sistem operasi saat startup. Deep links memungkinkan tools eksternal membuka sesi Claude Code dengan prompt yang sudah diisi sebelumnya. Berguna di lingkungan di mana pendaftaran penanganan protokol dibatasi atau dikelola secara terpisah | `"disable"` |248| `disableBundledSkills` | Atur ke `true` untuk menonaktifkan [skills](/id/skills) dan workflows yang dikirimkan dengan Claude Code: skills bundel dan workflows dihapus sepenuhnya, sementara perintah slash bawaan seperti `/init` tetap dapat diketik tetapi disembunyikan dari model. Skills dari plugins, `.claude/skills/`, dan `.claude/commands/` tidak terpengaruh. Setara dengan pengaturan `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` ke `1` | `true` |

249| `disableDeepLinkRegistration` | Atur ke `"disable"` untuk mencegah Claude Code mendaftarkan penanganan protokol `claude-cli://` dengan sistem operasi saat startup. [Deep links](/id/deep-links) memungkinkan tools eksternal membuka sesi Claude Code dengan prompt yang sudah diisi sebelumnya. Berguna di lingkungan di mana pendaftaran penanganan protokol dibatasi atau dikelola secara terpisah | `"disable"` |

217| `disabledMcpjsonServers` | Daftar MCP servers spesifik dari file `.mcp.json` untuk menolak | `["filesystem"]` |250| `disabledMcpjsonServers` | Daftar MCP servers spesifik dari file `.mcp.json` untuk menolak | `["filesystem"]` |

218| `disableRemoteControl` | {/* min-version: 2.1.128 */}Nonaktifkan [Remote Control](/id/remote-control): memblokir `claude remote-control`, flag `--remote-control`, auto-start, dan toggle dalam sesi. Biasanya ditempatkan dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk penegakan MDM per-perangkat, tetapi berfungsi dari cakupan apa pun. Memerlukan Claude Code v2.1.128 atau lebih baru | `true` |251| `disableRemoteControl` | {/* min-version: 2.1.128 */}Nonaktifkan [Remote Control](/id/remote-control): memblokir `claude remote-control`, flag `--remote-control`, auto-start, dan toggle dalam sesi. Biasanya ditempatkan dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk penegakan MDM per-perangkat, tetapi berfungsi dari cakupan apa pun. Memerlukan Claude Code v2.1.128 atau lebih baru | `true` |

219| `disableSkillShellExecution` | Nonaktifkan eksekusi shell inline untuk blok `` !`...` `` dan ` ```! ` dalam [skills](/id/skills) dan perintah khusus dari sumber pengguna, proyek, plugin, atau direktori tambahan. Perintah diganti dengan `[shell command execution disabled by policy]` daripada dijalankan. Skills bundel dan yang dikelola tidak terpengaruh. Paling berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) di mana pengguna tidak dapat menimpanya | `true` |252| `disableSkillShellExecution` | Nonaktifkan eksekusi shell inline untuk blok `` !`...` `` dan ` ```! ` dalam [skills](/id/skills) dan perintah khusus dari sumber pengguna, proyek, plugin, atau direktori tambahan. Perintah diganti dengan `[shell command execution disabled by policy]` daripada dijalankan. Skills bundel dan yang dikelola tidak terpengaruh. Paling berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) di mana pengguna tidak dapat menimpanya | `true` |


222| `effortLevel` | Pertahankan [tingkat usaha](/id/model-config#adjust-effort-level) di seluruh sesi. Menerima `"low"`, `"medium"`, `"high"`, atau `"xhigh"`. Ditulis secara otomatis saat Anda menjalankan `/effort` dengan salah satu nilai tersebut. `--effort` dan [`CLAUDE_CODE_EFFORT_LEVEL`](/id/env-vars) menimpa ini untuk satu sesi. Lihat [Sesuaikan tingkat usaha](/id/model-config#adjust-effort-level) untuk model yang didukung | `"xhigh"` |255| `effortLevel` | Pertahankan [tingkat usaha](/id/model-config#adjust-effort-level) di seluruh sesi. Menerima `"low"`, `"medium"`, `"high"`, atau `"xhigh"`. Ditulis secara otomatis saat Anda menjalankan `/effort` dengan salah satu nilai tersebut. `--effort` dan [`CLAUDE_CODE_EFFORT_LEVEL`](/id/env-vars) menimpa ini untuk satu sesi. Lihat [Sesuaikan tingkat usaha](/id/model-config#adjust-effort-level) untuk model yang didukung | `"xhigh"` |

223| `enableAllProjectMcpServers` | Secara otomatis menyetujui semua MCP servers yang ditentukan dalam file `.mcp.json` proyek | `true` |256| `enableAllProjectMcpServers` | Secara otomatis menyetujui semua MCP servers yang ditentukan dalam file `.mcp.json` proyek | `true` |

224| `enabledMcpjsonServers` | Daftar MCP servers spesifik dari file `.mcp.json` untuk menyetujui | `["memory", "github"]` |257| `enabledMcpjsonServers` | Daftar MCP servers spesifik dari file `.mcp.json` untuk menyetujui | `["memory", "github"]` |

258| `enforceAvailableModels` | {/* min-version: 2.1.175 */}Saat `true` dan `availableModels` adalah daftar non-kosong dalam pengaturan yang dikelola atau kebijakan, model Default juga dibatasi pada daftar putih. Lihat [Batasi pemilihan model](/id/model-config#restrict-model-selection) untuk detail dan [perilaku penggabungan](/id/model-config#merge-behavior) saat `availableModels` diatur di beberapa tingkat. Memerlukan Claude Code v2.1.175 atau lebih baru | `true` |

225| `env` | Variabel lingkungan yang diterapkan ke setiap sesi dan ke subprocess yang Claude Code luncurkan darinya. {/* min-version: 2.1.143 */}Sejak v2.1.143, `NO_COLOR` dan `FORCE_COLOR` yang diatur di sini dilewatkan ke subprocess tetapi tidak mengubah warna antarmuka Claude Code sendiri. Atur ini di shell Anda sebelum meluncurkan `claude` untuk mengubah warna antarmuka | `{"FOO": "bar"}` |259| `env` | Variabel lingkungan yang diterapkan ke setiap sesi dan ke subprocess yang Claude Code luncurkan darinya. {/* min-version: 2.1.143 */}Sejak v2.1.143, `NO_COLOR` dan `FORCE_COLOR` yang diatur di sini dilewatkan ke subprocess tetapi tidak mengubah warna antarmuka Claude Code sendiri. Atur ini di shell Anda sebelum meluncurkan `claude` untuk mengubah warna antarmuka | `{"FOO": "bar"}` |

260| `fallbackModel` | Model fallback untuk dicoba secara berurutan ketika model utama kelebihan beban atau tidak tersedia. Claude Code beralih ke model berikutnya yang tersedia dalam rantai untuk sisa giliran dan menampilkan pemberitahuan. `"default"` berkembang menjadi model default. Rantai dibatasi pada tiga model; entri ekstra diabaikan. Tidak seperti sebagian besar pengaturan array, kunci ini tidak digabungkan di seluruh file pengaturan: file dengan prioritas tertinggi yang mendefinisikannya memasok seluruh rantai. Flag [`--fallback-model`](/id/cli-reference#cli-flags) menimpa ini untuk satu sesi. Lihat [Fallback model chains](/id/model-config#fallback-model-chains) | `["claude-sonnet-4-6", "claude-haiku-4-5"]` |

226| `fastModePerSessionOptIn` | Saat `true`, mode cepat tidak bertahan di seluruh sesi. Setiap sesi dimulai dengan mode cepat mati, memerlukan pengguna untuk mengaktifkannya dengan `/fast`. Preferensi mode cepat pengguna masih disimpan. Lihat [Memerlukan opt-in per sesi](/id/fast-mode#require-per-session-opt-in) | `true` |261| `fastModePerSessionOptIn` | Saat `true`, mode cepat tidak bertahan di seluruh sesi. Setiap sesi dimulai dengan mode cepat mati, memerlukan pengguna untuk mengaktifkannya dengan `/fast`. Preferensi mode cepat pengguna masih disimpan. Lihat [Memerlukan opt-in per sesi](/id/fast-mode#require-per-session-opt-in) | `true` |

227| `feedbackSurveyRate` | Probabilitas (0–1) bahwa [survei kualitas sesi](/id/data-usage#session-quality-surveys) muncul saat memenuhi syarat. Atur ke `0` untuk menekan sepenuhnya, atau atur [`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY`](/id/env-vars) dalam `env`. Berguna saat menggunakan Bedrock, Vertex, atau Foundry di mana tingkat sampel default tidak berlaku | `0.05` |262| `feedbackSurveyRate` | Probabilitas (0–1) bahwa [survei kualitas sesi](/id/data-usage#session-quality-surveys) muncul saat memenuhi syarat. Atur ke `0` untuk menekan sepenuhnya, atau atur [`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY`](/id/env-vars) dalam `env`. Berguna saat menggunakan Bedrock, Vertex, atau Foundry di mana tingkat sampel default tidak berlaku | `0.05` |

263| `fileCheckpointingEnabled` | {/* min-version: 2.1.119 */}Snapshot file sebelum setiap edit sehingga [`/rewind`](/id/checkpointing) dapat memulihkannya. Default: `true`. Muncul di `/config` sebagai **Rewind code (checkpoints)**. Untuk menonaktifkan melalui variabel lingkungan, atur [`CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING`](/id/env-vars) dalam `env` | `false` |

228| `fileSuggestion` | Konfigurasikan skrip khusus untuk pelengkapan otomatis file `@`. Lihat [Pengaturan saran file](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |264| `fileSuggestion` | Konfigurasikan skrip khusus untuk pelengkapan otomatis file `@`. Lihat [Pengaturan saran file](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |

265| `footerLinksRegexes` | {/* min-version: 2.1.176 */}Render lencana yang dapat diklik tambahan di footer saat regex cocok dengan output giliran. Setiap entri memiliki `pattern`, template `url` dengan placeholder `{name}` yang diisi dari grup penangkapan bernama, dan `label` opsional. Dibaca dari pengaturan pengguna, flag `--settings`, dan pengaturan yang dikelola saja. Lihat [Footer link badges](#footer-link-badges) untuk batasan URL, daftar skema yang diizinkan, dan batas. Memerlukan Claude Code v2.1.176 atau lebih baru | `[{"type": "regex", "pattern": "\\b(?<key>PROJ-\\d+)\\b", "url": "https://issues.example.com/browse/{key}", "label": "{key}"}]` |

229| `forceLoginMethod` | Gunakan `claudeai` untuk membatasi login ke akun Claude.ai, `console` untuk membatasi login ke akun Claude Console. Saat diatur dalam pengaturan yang dikelola, sesi yang diautentikasi oleh `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` diblokir saat startup, karena tidak ada nilai yang dapat dipenuhi tanpa OAuth pihak pertama. Sesi penyedia pihak ketiga seperti Bedrock, Vertex, dan Foundry tidak diblokir: mereka mengautentikasi terhadap penyedia cloud Anda daripada Anthropic | `claudeai` |266| `forceLoginMethod` | Gunakan `claudeai` untuk membatasi login ke akun Claude.ai, `console` untuk membatasi login ke akun Claude Console. Saat diatur dalam pengaturan yang dikelola, sesi yang diautentikasi oleh `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` diblokir saat startup, karena tidak ada nilai yang dapat dipenuhi tanpa OAuth pihak pertama. Sesi penyedia pihak ketiga seperti Bedrock, Vertex, dan Foundry tidak diblokir: mereka mengautentikasi terhadap penyedia cloud Anda daripada Anthropic | `claudeai` |

230| `forceLoginOrgUUID` | Memerlukan login untuk milik organisasi Anthropic tertentu. Menerima string UUID tunggal, yang juga pra-memilih organisasi tersebut selama login, atau array UUID di mana organisasi yang terdaftar apa pun diterima tanpa pra-pemilihan. Saat diatur dalam pengaturan yang dikelola, login gagal jika akun yang diautentikasi tidak milik organisasi yang terdaftar, dan sesi yang diautentikasi oleh `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` diblokir saat startup karena keanggotaan organisasi tidak dapat diverifikasi untuk mereka. Sesi penyedia pihak ketiga seperti Bedrock, Vertex, dan Foundry tidak diblokir: gunakan IAM cloud Anda untuk membatasi akun cloud mana yang dapat digunakan. Array kosong gagal tertutup dan memblokir login dengan pesan salah konfigurasi | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` atau `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |267| `forceLoginOrgUUID` | Memerlukan login untuk milik organisasi Anthropic tertentu. Menerima string UUID tunggal, yang juga pra-memilih organisasi tersebut selama login, atau array UUID di mana organisasi yang terdaftar apa pun diterima tanpa pra-pemilihan. Saat diatur dalam pengaturan yang dikelola, login gagal jika akun yang diautentikasi tidak milik organisasi yang terdaftar, dan sesi yang diautentikasi oleh `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` diblokir saat startup karena keanggotaan organisasi tidak dapat diverifikasi untuk mereka. Sesi penyedia pihak ketiga seperti Bedrock, Vertex, dan Foundry tidak diblokir: gunakan IAM cloud Anda untuk membatasi akun cloud mana yang dapat digunakan. Array kosong gagal tertutup dan memblokir login dengan pesan salah konfigurasi | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` atau `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |

231| `forceRemoteSettingsRefresh` | (Pengaturan yang dikelola saja) Blokir startup CLI sampai pengaturan yang dikelola jarak jauh segar diambil dari server. Jika pengambilan gagal, CLI keluar daripada melanjutkan dengan pengaturan yang di-cache atau tidak ada. Saat tidak diatur, startup berlanjut tanpa menunggu pengaturan jarak jauh. Lihat [penegakan fail-closed](/id/server-managed-settings#enforce-fail-closed-startup) | `true` |268| `forceRemoteSettingsRefresh` | (Pengaturan yang dikelola saja) Blokir startup CLI sampai pengaturan yang dikelola jarak jauh segar diambil dari server. Jika pengambilan gagal, CLI keluar daripada melanjutkan dengan pengaturan yang di-cache atau tidak ada. Saat tidak diatur, startup berlanjut tanpa menunggu pengaturan jarak jauh. Lihat [penegakan fail-closed](/id/server-managed-settings#enforce-fail-closed-startup) | `true` |


234| `httpHookAllowedEnvVars` | Daftar putih nama variabel lingkungan yang dapat diinterpolasi oleh HTTP hooks ke dalam header. Saat diatur, `allowedEnvVars` efektif setiap hook adalah persimpangan dari daftar sendiri dan pengaturan ini. Tidak terdefinisi = tidak ada pembatasan. Array digabungkan di seluruh sumber pengaturan. Lihat [Konfigurasi Hook](#hook-configuration) | `["MY_TOKEN", "HOOK_SECRET"]` |271| `httpHookAllowedEnvVars` | Daftar putih nama variabel lingkungan yang dapat diinterpolasi oleh HTTP hooks ke dalam header. Saat diatur, `allowedEnvVars` efektif setiap hook adalah persimpangan dari daftar sendiri dan pengaturan ini. Tidak terdefinisi = tidak ada pembatasan. Array digabungkan di seluruh sumber pengaturan. Lihat [Konfigurasi Hook](#hook-configuration) | `["MY_TOKEN", "HOOK_SECRET"]` |

235| `includeCoAuthoredBy` | **Usang**: Gunakan `attribution` sebagai gantinya. Apakah akan menyertakan baris `co-authored-by Claude` dalam komit git dan pull request (default: `true`) | `false` |272| `includeCoAuthoredBy` | **Usang**: Gunakan `attribution` sebagai gantinya. Apakah akan menyertakan baris `co-authored-by Claude` dalam komit git dan pull request (default: `true`) | `false` |

236| `includeGitInstructions` | Sertakan instruksi alur kerja komit dan PR bawaan dan snapshot status git dalam prompt sistem Claude (default: `true`). Atur ke `false` untuk menghapus keduanya, misalnya saat menggunakan skills alur kerja git Anda sendiri. Variabel lingkungan `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` memiliki prioritas atas pengaturan ini saat diatur | `false` |273| `includeGitInstructions` | Sertakan instruksi alur kerja komit dan PR bawaan dan snapshot status git dalam prompt sistem Claude (default: `true`). Atur ke `false` untuk menghapus keduanya, misalnya saat menggunakan skills alur kerja git Anda sendiri. Variabel lingkungan `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` memiliki prioritas atas pengaturan ini saat diatur | `false` |

237| `language` | Konfigurasikan bahasa respons pilihan Claude (misalnya, `"japanese"`, `"spanish"`, `"french"`). Claude akan merespons dalam bahasa ini secara default. Juga menetapkan bahasa [voice dictation](/id/voice-dictation#change-the-dictation-language) | `"japanese"` |274| `inputNeededNotifEnabled` | {/* min-version: 2.1.119 */}Ketika [Remote Control](/id/remote-control) terhubung, kirim notifikasi push ke ponsel Anda ketika prompt izin atau pertanyaan menunggu input Anda. Default: `false`. Muncul di `/config` sebagai **Push when actions required**. Lihat [Mobile push notifications](/id/remote-control#mobile-push-notifications). Memerlukan Claude Code v2.1.119 atau lebih baru | `true` |

275| `language` | Konfigurasikan bahasa respons pilihan Claude (misalnya, `"japanese"`, `"spanish"`, `"french"`). Claude akan merespons dalam bahasa ini secara default. Juga menetapkan bahasa [voice dictation](/id/voice-dictation#change-the-dictation-language) dan judul sesi yang dibuat secara otomatis. {/* min-version: 2.1.176 */}Sejak v2.1.176, saat tidak diatur, judul sesi cocok dengan bahasa percakapan Anda | `"japanese"` |

238| `maxSkillDescriptionChars` | {/* min-version: 2.1.105 */}Batas karakter per-skill pada teks `description` dan `when_to_use` gabungan dalam [skill listing](/id/skills#skill-descriptions-are-cut-short) yang Claude lihat setiap giliran (default: `1536`). Teks yang lebih panjang dari ini dipotong. Naikkan untuk menjaga deskripsi panjang tetap utuh dengan biaya lebih banyak konteks per giliran; turunkan untuk menyesuaikan lebih banyak skills di bawah [`skillListingBudgetFraction`](#available-settings). Memerlukan Claude Code v2.1.105 atau lebih baru | `2048` |276| `maxSkillDescriptionChars` | {/* min-version: 2.1.105 */}Batas karakter per-skill pada teks `description` dan `when_to_use` gabungan dalam [skill listing](/id/skills#skill-descriptions-are-cut-short) yang Claude lihat setiap giliran (default: `1536`). Teks yang lebih panjang dari ini dipotong. Naikkan untuk menjaga deskripsi panjang tetap utuh dengan biaya lebih banyak konteks per giliran; turunkan untuk menyesuaikan lebih banyak skills di bawah [`skillListingBudgetFraction`](#available-settings). Memerlukan Claude Code v2.1.105 atau lebih baru | `2048` |

239| `minimumVersion` | Lantai yang mencegah auto-updates latar belakang dan `claude update` dari menginstal versi di bawah ini. Beralih dari saluran `"latest"` ke `"stable"` melalui `/config` meminta Anda untuk tetap pada versi saat ini atau memungkinkan downgrade. Memilih untuk tetap menetapkan nilai ini. Juga berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk menyematkan minimum di seluruh organisasi | `"2.1.100"` |277| `minimumVersion` | Lantai yang mencegah auto-updates latar belakang dan `claude update` dari menginstal versi di bawah ini. Beralih dari saluran `"latest"` ke `"stable"` melalui `/config` meminta Anda untuk tetap pada versi saat ini atau memungkinkan downgrade. Memilih untuk tetap menetapkan nilai ini. Juga berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk menyematkan minimum di seluruh organisasi. Untuk lantai keras yang memblokir startup sepenuhnya, lihat `requiredMinimumVersion` | `"2.1.100"` |

240| `model` | Timpa model default untuk digunakan untuk Claude Code. `--model` dan [`ANTHROPIC_MODEL`](/id/model-config#environment-variables) menimpa ini untuk satu sesi | `"claude-sonnet-4-6"` |278| `model` | Timpa model default untuk digunakan untuk Claude Code. `--model` dan [`ANTHROPIC_MODEL`](/id/model-config#environment-variables) menimpa ini untuk satu sesi | `"claude-sonnet-4-6"` |

241| `modelOverrides` | Peta ID model Anthropic ke ID model spesifik penyedia seperti ARN profil inferensi Bedrock. Setiap entri pemilih model menggunakan nilai yang dipetakan saat memanggil API penyedia. Lihat [Timpa ID model per versi](/id/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |279| `modelOverrides` | Peta ID model Anthropic ke ID model spesifik penyedia seperti ARN profil inferensi Bedrock. Setiap entri pemilih model menggunakan nilai yang dipetakan saat memanggil API penyedia. Lihat [Timpa ID model per versi](/id/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |

242| `otelHeadersHelper` | Skrip untuk menghasilkan header OpenTelemetry dinamis. Berjalan saat startup dan secara berkala. Atur interval penyegaran dengan [`CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`](/id/env-vars). Lihat [Header dinamis](/id/monitoring-usage#dynamic-headers) | `/bin/generate_otel_headers.sh` |280| `otelHeadersHelper` | Skrip untuk menghasilkan header OpenTelemetry dinamis. Berjalan saat startup dan secara berkala. Atur interval penyegaran dengan [`CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`](/id/env-vars). Lihat [Header dinamis](/id/monitoring-usage#dynamic-headers) | `/bin/generate_otel_headers.sh` |


244| `parentSettingsBehavior` | {/* min-version: 2.1.133 */}(Pengaturan yang dikelola saja) Mengontrol apakah pengaturan yang dikelola yang disediakan secara terprogram oleh proses host penyematan, seperti Agent SDK atau ekstensi IDE, berlaku saat tingkat yang dikelola yang digunakan admin juga ada. `"first-wins"`: pengaturan yang disediakan parent dijatuhkan dan hanya tingkat admin yang berlaku. `"merge"`: pengaturan yang disediakan parent berlaku di bawah tingkat admin, disaring sehingga mereka dapat mengencangkan kebijakan tetapi tidak melonggarkannya. Tidak berpengaruh saat tidak ada tingkat admin yang digunakan. Default: `"first-wins"`. Memerlukan Claude Code v2.1.133 atau lebih baru | `"merge"` |282| `parentSettingsBehavior` | {/* min-version: 2.1.133 */}(Pengaturan yang dikelola saja) Mengontrol apakah pengaturan yang dikelola yang disediakan secara terprogram oleh proses host penyematan, seperti Agent SDK atau ekstensi IDE, berlaku saat tingkat yang dikelola yang digunakan admin juga ada. `"first-wins"`: pengaturan yang disediakan parent dijatuhkan dan hanya tingkat admin yang berlaku. `"merge"`: pengaturan yang disediakan parent berlaku di bawah tingkat admin, disaring sehingga mereka dapat mengencangkan kebijakan tetapi tidak melonggarkannya. Tidak berpengaruh saat tidak ada tingkat admin yang digunakan. Default: `"first-wins"`. Memerlukan Claude Code v2.1.133 atau lebih baru | `"merge"` |

245| `permissions` | Lihat tabel di bawah untuk struktur izin. | |283| `permissions` | Lihat tabel di bawah untuk struktur izin. | |

246| `plansDirectory` | Sesuaikan di mana file rencana disimpan. Jalur relatif terhadap akar proyek. Default: `~/.claude/plans` | `"./plans"` |284| `plansDirectory` | Sesuaikan di mana file rencana disimpan. Jalur relatif terhadap akar proyek. Default: `~/.claude/plans` | `"./plans"` |

247| `pluginSuggestionMarketplaces` | (Pengaturan yang dikelola saja) Nama marketplace yang plugin-nya dapat muncul sebagai saran instalasi kontekstual, selain marketplace resmi. Saran berasal dari deklarasi `relevance` setiap plugin dalam entri marketplace-nya. Nama hanya berlaku saat marketplace terdaftar di mesin dan sumber terdaftarnya juga dideklarasikan dalam pengaturan yang dikelola, baik sebagai entri `extraKnownMarketplaces` untuk nama itu atau sebagai entri `strictKnownMarketplaces`. Marketplace yang terdaftar dari sumber berbeda di bawah nama yang diizinkan diabaikan. | `["acme-corp-plugins"]` |285| `pluginSuggestionMarketplaces` | (Pengaturan yang dikelola saja) Nama marketplace yang plugin-nya dapat muncul sebagai saran instalasi kontekstual. Tidak ada saran yang dideklarasikan marketplace muncul tanpa daftar putih ini; tip desain frontend pihak pertama bawaan tidak terpengaruh. Saran berasal dari deklarasi `relevance` setiap plugin dalam entri marketplace-nya. Nama hanya berlaku saat marketplace terdaftar di mesin dan sumber terdaftarnya juga dideklarasikan dalam pengaturan yang dikelola, baik sebagai entri `extraKnownMarketplaces` untuk nama itu atau sebagai entri `strictKnownMarketplaces`. Marketplace yang terdaftar dari sumber berbeda di bawah nama yang diizinkan diabaikan. Marketplace resmi dikecualikan dari persyaratan sumber: mengizinkan namanya saja sudah cukup, karena nama itu hanya dapat terdaftar dari sumber Anthropic resmi. | `["acme-corp-plugins"]` |

248| `pluginTrustMessage` | (Pengaturan yang dikelola saja) Pesan khusus ditambahkan ke peringatan kepercayaan plugin yang ditampilkan sebelum instalasi. Gunakan ini untuk menambahkan konteks spesifik organisasi, misalnya untuk mengonfirmasi bahwa plugin dari marketplace internal Anda telah disaring. | `"All plugins from our marketplace are approved by IT"` |286| `pluginTrustMessage` | (Pengaturan yang dikelola saja) Pesan khusus ditambahkan ke peringatan kepercayaan plugin yang ditampilkan sebelum instalasi. Gunakan ini untuk menambahkan konteks spesifik organisasi, misalnya untuk mengonfirmasi bahwa plugin dari marketplace internal Anda telah disaring. | `"All plugins from our marketplace are approved by IT"` |

249| `policyHelper` | {/* min-version: 2.1.136 */}Admin-deployed executable yang menghitung pengaturan yang dikelola secara dinamis saat startup. Hanya dihormati dari MDM atau file `managed-settings.json` sistem. Lihat [Hitung pengaturan yang dikelola dengan policy helper](#compute-managed-settings-with-a-policy-helper). Memerlukan Claude Code v2.1.136 atau lebih baru | `{"path": "/usr/local/bin/claude-policy"}` |287| `policyHelper` | {/* min-version: 2.1.136 */}Admin-deployed executable yang menghitung pengaturan yang dikelola secara dinamis saat startup. Hanya dihormati dari MDM atau file `managed-settings.json` sistem. Lihat [Hitung pengaturan yang dikelola dengan policy helper](#compute-managed-settings-with-a-policy-helper). Memerlukan Claude Code v2.1.136 atau lebih baru | `{"path": "/usr/local/bin/claude-policy"}` |

250| `preferredNotifChannel` | Metode untuk notifikasi task-complete dan permission-prompt: `"auto"`, `"terminal_bell"`, `"iterm2"`, `"iterm2_with_bell"`, `"kitty"`, `"ghostty"`, atau `"notifications_disabled"`. Default: `"auto"`, yang mengirim notifikasi desktop di iTerm2, Ghostty, dan Kitty dan tidak melakukan apa pun di terminal lain. Atur `"terminal_bell"` untuk membunyikan karakter bell di terminal apa pun. Muncul di `/config` sebagai **Notifications**. Lihat [Dapatkan terminal bell atau notifikasi](/id/terminal-config#get-a-terminal-bell-or-notification) | `"terminal_bell"` |288| `preferredNotifChannel` | Metode untuk notifikasi task-complete dan permission-prompt: `"auto"`, `"terminal_bell"`, `"iterm2"`, `"iterm2_with_bell"`, `"kitty"`, `"ghostty"`, atau `"notifications_disabled"`. Default: `"auto"`, yang mengirim notifikasi desktop di iTerm2, Ghostty, dan Kitty dan tidak melakukan apa pun di terminal lain. Atur `"terminal_bell"` untuk membunyikan karakter bell di terminal apa pun. Muncul di `/config` sebagai **Notifications**. Lihat [Dapatkan terminal bell atau notifikasi](/id/terminal-config#get-a-terminal-bell-or-notification) | `"terminal_bell"` |

251| `prefersReducedMotion` | Kurangi atau nonaktifkan animasi UI (spinners, shimmer, efek flash) untuk aksesibilitas | `true` |289| `prefersReducedMotion` | Kurangi atau nonaktifkan animasi UI (spinners, shimmer, efek flash) untuk aksesibilitas | `true` |

252| `prUrlTemplate` | Template URL untuk lencana PR yang ditampilkan di footer dan dalam ringkasan hasil tool. Mengganti `{host}`, `{owner}`, `{repo}`, `{number}`, dan `{url}` dari URL PR yang dilaporkan `gh`. Gunakan untuk mengarahkan tautan PR ke alat review kode internal daripada `github.com`. Tidak mempengaruhi autolinks `#123` dalam prosa Claude | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |290| `prUrlTemplate` | Template URL untuk lencana PR yang ditampilkan di footer dan dalam ringkasan hasil tool. Mengganti `{host}`, `{owner}`, `{repo}`, `{number}`, dan `{url}` dari URL PR yang dilaporkan `gh`. Gunakan untuk mengarahkan tautan PR ke alat review kode internal daripada `github.com`. Tidak mempengaruhi autolinks `#123` dalam prosa Claude | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |

291| `requiredMaximumVersion` | Pengaturan yang dikelola saja. Versi Claude Code maksimum yang diizinkan untuk memulai. Jika versi yang sedang berjalan lebih baru, Claude Code keluar saat startup dan menginstruksikan pengguna untuk menginstal versi yang disetujui melalui metode yang disetujui organisasi; `claude install <version>` juga dapat berfungsi. Auto-updates latar belakang dan `claude update` melewati versi di atas batas, jadi instalasi dalam jangkauan tetap dalam jangkauan. `claude update`, `claude install`, dan `claude doctor` terus bekerja di atas batas sehingga pengguna dapat pulih. Versi yang mendahului pengaturan ini mengabaikannya | `"2.1.150"` |

292| `requiredMinimumVersion` | Pengaturan yang dikelola saja. Versi Claude Code minimum yang diperlukan untuk memulai. Jika versi yang sedang berjalan lebih lama, Claude Code keluar saat startup dan menginstruksikan pengguna untuk memperbarui melalui metode yang disetujui organisasi. `claude update`, `claude install`, dan `claude doctor` terus bekerja di bawah lantai sehingga pengguna dapat pulih. Berbeda dari `minimumVersion`, yang mencegah downgrade tetapi tidak pernah memblokir startup. Versi yang mendahului pengaturan ini mengabaikannya | `"2.1.150"` |

253| `respectGitignore` | Kontrol apakah pemilih file `@` menghormati pola `.gitignore`. Saat `true` (default), file yang cocok dengan pola `.gitignore` dikecualikan dari saran | `false` |293| `respectGitignore` | Kontrol apakah pemilih file `@` menghormati pola `.gitignore`. Saat `true` (default), file yang cocok dengan pola `.gitignore` dikecualikan dari saran | `false` |

254| `showClearContextOnPlanAccept` | Tampilkan opsi "clear context" pada layar penerimaan rencana. Default ke `false`. Atur ke `true` untuk mengembalikan opsi | `true` |294| `showClearContextOnPlanAccept` | Tampilkan opsi "clear context" pada layar penerimaan rencana. Default ke `false`. Atur ke `true` untuk mengembalikan opsi | `true` |

255| `showThinkingSummaries` | Tampilkan ringkasan [pemikiran yang diperluas](/id/model-config#extended-thinking) dalam sesi interaktif. Saat tidak diatur atau `false` (default dalam mode interaktif), blok pemikiran diredaksi oleh API dan ditampilkan sebagai stub yang runtuh. Redaksi hanya mengubah apa yang Anda lihat, bukan apa yang dihasilkan model: untuk mengurangi pengeluaran pemikiran, [turunkan anggaran atau nonaktifkan pemikiran](/id/model-config#extended-thinking) sebagai gantinya. Pengaturan ini tidak berpengaruh dalam mode non-interaktif (`-p`), Agent SDK, atau ekstensi IDE seperti VS Code | `true` |295| `showThinkingSummaries` | Tampilkan ringkasan [pemikiran yang diperluas](/id/model-config#extended-thinking) dalam sesi interaktif. Saat tidak diatur atau `false` (default dalam mode interaktif), blok pemikiran diredaksi oleh API dan ditampilkan sebagai stub yang runtuh. Redaksi hanya mengubah apa yang Anda lihat, bukan apa yang dihasilkan model: untuk mengurangi pengeluaran pemikiran, [turunkan anggaran atau nonaktifkan pemikiran](/id/model-config#extended-thinking) sebagai gantinya. Pengaturan ini tidak berpengaruh dalam mode non-interaktif (`-p`), Agent SDK, atau ekstensi IDE seperti VS Code | `true` |


265| `strictKnownMarketplaces` | (Pengaturan yang dikelola saja) Daftar putih sumber marketplace plugin. Tidak terdefinisi = tidak ada pembatasan, array kosong = lockdown. Diterapkan pada penambahan marketplace dan instalasi plugin, pembaruan, penyegaran, dan auto-update, jadi marketplace yang ditambahkan sebelum kebijakan ditetapkan tidak dapat digunakan untuk mengambil plugin. Lihat [Pembatasan marketplace yang dikelola](/id/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |305| `strictKnownMarketplaces` | (Pengaturan yang dikelola saja) Daftar putih sumber marketplace plugin. Tidak terdefinisi = tidak ada pembatasan, array kosong = lockdown. Diterapkan pada penambahan marketplace dan instalasi plugin, pembaruan, penyegaran, dan auto-update, jadi marketplace yang ditambahkan sebelum kebijakan ditetapkan tidak dapat digunakan untuk mengambil plugin. Lihat [Pembatasan marketplace yang dikelola](/id/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |

266| `strictPluginOnlyCustomization` | (Pengaturan yang dikelola saja) Blokir skills, agents, hooks, dan MCP servers dari sumber pengguna dan proyek, sehingga mereka hanya dapat berasal dari plugins atau pengaturan yang dikelola. `true` mengunci keempat permukaan; array mengunci hanya yang dinamai. Lihat [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | `["skills", "hooks"]` |306| `strictPluginOnlyCustomization` | (Pengaturan yang dikelola saja) Blokir skills, agents, hooks, dan MCP servers dari sumber pengguna dan proyek, sehingga mereka hanya dapat berasal dari plugins atau pengaturan yang dikelola. `true` mengunci keempat permukaan; array mengunci hanya yang dinamai. Lihat [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | `["skills", "hooks"]` |

267| `syntaxHighlightingDisabled` | Nonaktifkan syntax highlighting dalam diffs, code blocks, dan file previews | `true` |307| `syntaxHighlightingDisabled` | Nonaktifkan syntax highlighting dalam diffs, code blocks, dan file previews | `true` |

268| `teammateMode` | Bagaimana [rekan tim agent](/id/agent-teams) ditampilkan: `auto` (memilih panel terpisah di tmux atau iTerm2, dalam proses sebaliknya), `in-process`, atau `tmux`. `--teammate-mode` menimpa ini untuk satu sesi. Lihat [pilih mode tampilan](/id/agent-teams#choose-a-display-mode) | `"in-process"` |308| `teammateMode` | Bagaimana [rekan tim agent](/id/agent-teams) ditampilkan: `auto` (memilih panel terpisah di tmux atau iTerm2, dalam proses sebaliknya), `in-process`, atau `tmux` (panel terpisah menggunakan tmux atau iTerm2, dideteksi dari terminal Anda). `--teammate-mode` menimpa ini untuk satu sesi. Lihat [pilih mode tampilan](/id/agent-teams#choose-a-display-mode) | `"in-process"` |

269| `terminalProgressBarEnabled` | Tampilkan bilah kemajuan terminal di terminal yang didukung: ConEmu, Ghostty 1.2.0+, dan iTerm2 3.6.6+. Default: `true`. Muncul di `/config` sebagai **Terminal progress bar** | `false` |309| `terminalProgressBarEnabled` | Tampilkan bilah kemajuan terminal di terminal yang didukung: ConEmu, Ghostty 1.2.0+, dan iTerm2 3.6.6+. Default: `true`. Muncul di `/config` sebagai **Terminal progress bar** | `false` |

310| `theme` | {/* min-version: 2.1.119 */}Tema warna untuk antarmuka: `"auto"`, `"dark"`, `"light"`, `"dark-daltonized"`, `"light-daltonized"`, `"dark-ansi"`, `"light-ansi"`, atau referensi tema khusus seperti `"custom:<slug>"` atau `"custom:<plugin-name>:<slug>"`. Default: `"dark"`. Lihat [Buat tema khusus](/id/terminal-config#create-a-custom-theme). Muncul di `/config` sebagai **Theme** | `"dark"` |

270| `tui` | Renderer UI terminal. Gunakan `"fullscreen"` untuk renderer alt-screen bebas flicker dengan scrollback virtual. Gunakan `"default"` untuk renderer main-screen klasik. Atur melalui `/tui`. Anda juga dapat menetapkan variabel lingkungan [`CLAUDE_CODE_NO_FLICKER`](/id/env-vars) | `"fullscreen"` |311| `tui` | Renderer UI terminal. Gunakan `"fullscreen"` untuk renderer alt-screen bebas flicker dengan scrollback virtual. Gunakan `"default"` untuk renderer main-screen klasik. Atur melalui `/tui`. Anda juga dapat menetapkan variabel lingkungan [`CLAUDE_CODE_NO_FLICKER`](/id/env-vars) | `"fullscreen"` |

271| `ultracode` | Aktifkan [ultracode](/id/workflows#let-claude-decide-with-ultracode) untuk sesi. Hanya sesi dan tidak dibaca dari `settings.json`. Atur melalui `/effort ultracode`, `--settings`, atau permintaan kontrol Agent SDK | `true` |312| `ultracode` | Aktifkan [ultracode](/id/workflows#let-claude-decide-with-ultracode) untuk sesi. Hanya sesi dan tidak dibaca dari `settings.json`. Atur melalui `/effort ultracode`, `--settings`, atau permintaan kontrol Agent SDK | `true` |

272| `useAutoModeDuringPlan` | Apakah plan mode menggunakan semantik mode otomatis saat mode otomatis tersedia. Default: `true`. Tidak dibaca dari pengaturan proyek bersama. Muncul di `/config` sebagai "Use auto mode during plan" | `false` |313| `useAutoModeDuringPlan` | Apakah plan mode menggunakan semantik mode otomatis saat mode otomatis tersedia. Default: `true`. Tidak dibaca dari pengaturan proyek bersama. Muncul di `/config` sebagai "Use auto mode during plan" | `false` |

314| `verbose` | {/* min-version: 2.1.119 */}Tampilkan output tool lengkap daripada ringkasan yang dipotong. Default: `false`. Muncul di `/config` sebagai **Verbose output**. Flag `--verbose` menimpa ini untuk satu sesi | `true` |

273| `viewMode` | Mode tampilan transkrip default saat startup: `"default"`, `"verbose"`, atau `"focus"`. Menimpa pemilihan `/focus` yang lengket saat diatur. Flag `--verbose` menimpa ini untuk satu sesi | `"verbose"` |315| `viewMode` | Mode tampilan transkrip default saat startup: `"default"`, `"verbose"`, atau `"focus"`. Menimpa pemilihan `/focus` yang lengket saat diatur. Flag `--verbose` menimpa ini untuk satu sesi | `"verbose"` |

274| `voice` | Pengaturan [voice dictation](/id/voice-dictation): `enabled` mengaktifkan dictation, `mode` memilih `"hold"` atau `"tap"`, dan `autoSubmit` mengirim prompt pada pelepasan kunci dalam mode hold. Ditulis secara otomatis saat Anda menjalankan `/voice`. Memerlukan akun Claude.ai | `{ "enabled": true, "mode": "tap" }` |316| `voice` | Pengaturan [voice dictation](/id/voice-dictation): `enabled` mengaktifkan dictation, `mode` memilih `"hold"` atau `"tap"`, dan `autoSubmit` mengirim prompt pada pelepasan kunci dalam mode hold. Ditulis secara otomatis saat Anda menjalankan `/voice`. Memerlukan akun Claude.ai | `{ "enabled": true, "mode": "tap" }` |

275| `voiceEnabled` | Alias warisan untuk `voice.enabled`. Lebih suka objek `voice` | `true` |317| `voiceEnabled` | Alias warisan untuk `voice.enabled`. Lebih suka objek `voice` | `true` |

318| `wheelScrollAccelerationEnabled` | {/* min-version: 2.1.174 */}Dalam [rendering fullscreen](/id/fullscreen#mouse-wheel-scrolling), percepat kecepatan scroll mouse-wheel selama scroll cepat. Default: `true`. Atur ke `false` untuk laju scroll konstan per notch wheel. Memerlukan Claude Code v2.1.174 atau lebih baru | `false` |

276| `workflowKeywordTriggerEnabled` | {/* min-version: 2.1.157 */}Apakah kata kunci `ultracode` dalam prompt memicu [dynamic workflow](/id/workflows#ask-for-a-workflow-in-your-prompt). Atur ke `false` untuk mengetik kata tanpa memicu satu. Pengaturan usaha ultracode, `/workflows`, dan perintah workflow yang disimpan tidak terpengaruh. Default: `true`. Muncul di `/config` sebagai **Ultracode keyword trigger**. Ditambahkan dalam v2.1.157; sebelum v2.1.160 kata kunci pemicu adalah `workflow` | `false` |319| `workflowKeywordTriggerEnabled` | {/* min-version: 2.1.157 */}Apakah kata kunci `ultracode` dalam prompt memicu [dynamic workflow](/id/workflows#ask-for-a-workflow-in-your-prompt). Atur ke `false` untuk mengetik kata tanpa memicu satu. Pengaturan usaha ultracode, `/workflows`, dan perintah workflow yang disimpan tidak terpengaruh. Default: `true`. Muncul di `/config` sebagai **Ultracode keyword trigger**. Ditambahkan dalam v2.1.157; sebelum v2.1.160 kata kunci pemicu adalah `workflow` | `false` |

277| `wslInheritsWindowsSettings` | (Pengaturan yang dikelola Windows saja) Saat `true`, Claude Code di WSL membaca pengaturan yang dikelola dari rantai kebijakan Windows selain `/etc/claude-code`, dengan sumber Windows memiliki prioritas. Hanya dihormati saat diatur dalam kunci registry HKLM atau `C:\Program Files\ClaudeCode\managed-settings.json`, keduanya memerlukan admin Windows untuk menulis. Untuk kebijakan HKCU juga berlaku di WSL, flag harus juga diatur di HKCU itu sendiri. Tidak berpengaruh pada Windows asli | `true` |320| `wslInheritsWindowsSettings` | (Pengaturan yang dikelola Windows saja) Saat `true`, Claude Code di WSL membaca pengaturan yang dikelola dari rantai kebijakan Windows selain `/etc/claude-code`, dengan sumber Windows memiliki prioritas. Hanya dihormati saat diatur dalam kunci registry HKLM atau `C:\Program Files\ClaudeCode\managed-settings.json`, keduanya memerlukan admin Windows untuk menulis. Untuk kebijakan HKCU juga berlaku di WSL, flag harus juga diatur di HKCU itu sendiri. Tidak berpengaruh pada Windows asli | `true` |

278 321 


283Pengaturan ini disimpan dalam `~/.claude.json` daripada `settings.json`. Menambahkannya ke `settings.json` akan memicu kesalahan validasi skema.326Pengaturan ini disimpan dalam `~/.claude.json` daripada `settings.json`. Menambahkannya ke `settings.json` akan memicu kesalahan validasi skema.

284 327 

285<Note>328<Note>

286 Versi sebelum v2.1.119 juga menyimpan `autoScrollEnabled`, `editorMode`, `showTurnDuration`, `teammateMode`, dan `terminalProgressBarEnabled` di sini daripada dalam `settings.json`.329 Versi sebelum v2.1.119 juga menyimpan sejumlah kunci preferensi `/config` di sini daripada dalam `settings.json`, termasuk `theme`, `verbose`, `editorMode`, `autoCompactEnabled`, dan `preferredNotifChannel`.

287</Note>330</Note>

288 331 

289| Kunci | Deskripsi | Contoh |332| Kunci | Deskripsi | Contoh |


314 357 

315| Kunci | Deskripsi | Contoh |358| Kunci | Deskripsi | Contoh |

316| :---------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |359| :---------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

317| `allow` | Array aturan izin untuk memungkinkan penggunaan tool. Lihat [Sintaks aturan izin](#permission-rule-syntax) di bawah untuk detail pencocokan pola | `[ "Bash(git diff *)" ]` |360| `allow` | Array aturan izin untuk memungkinkan penggunaan tool. Glob nama tool didukung hanya dalam posisi tool setelah prefiks `mcp__<server>__` literal, seperti `mcp__github__get_*`; segmen server harus bebas glob. Lihat [Sintaks aturan izin](#permission-rule-syntax) di bawah untuk detail pencocokan pola | `[ "Bash(git diff *)" ]` |

318| `ask` | Array aturan izin untuk meminta konfirmasi saat penggunaan tool. Lihat [Sintaks aturan izin](#permission-rule-syntax) di bawah | `[ "Bash(git push *)" ]` |361| `ask` | Array aturan izin untuk meminta konfirmasi saat penggunaan tool. Lihat [Sintaks aturan izin](#permission-rule-syntax) di bawah | `[ "Bash(git push *)" ]` |

319| `deny` | Array aturan izin untuk menolak penggunaan tool. Gunakan ini untuk mengecualikan file sensitif dari akses Claude Code. Lihat [Sintaks aturan izin](#permission-rule-syntax) dan [Batasan izin Bash](/id/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |362| `deny` | Array aturan izin untuk menolak penggunaan tool. Gunakan ini untuk mengecualikan file sensitif dari akses Claude Code. Nama tool menerima pola glob: `"*"` menolak setiap tool dan `"mcp__*"` menolak semua tools MCP. Lihat [Sintaks aturan izin](#permission-rule-syntax) dan [Batasan izin Bash](/id/permissions#tool-specific-permission-rules) | `[ "WebFetch", "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ]` |

320| `additionalDirectories` | [Direktori kerja](/id/permissions#working-directories) tambahan untuk akses file. Sebagian besar konfigurasi `.claude/` [tidak ditemukan](/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori ini | `[ "../docs/" ]` |363| `additionalDirectories` | [Direktori kerja](/id/permissions#working-directories) tambahan untuk akses file. Sebagian besar konfigurasi `.claude/` [tidak ditemukan](/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori ini | `[ "../docs/" ]` |

321| `defaultMode` | Mode [izin](/id/permission-modes) default saat membuka Claude Code. Nilai yang valid: `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`. {/* min-version: 2.1.142 */}Sejak Claude Code v2.1.142, `auto` diabaikan saat diatur dalam pengaturan proyek atau lokal (`.claude/settings.json`, `.claude/settings.local.json`) sehingga repositori tidak dapat memberikan dirinya sendiri mode otomatis. Atur di `~/.claude/settings.json` sebagai gantinya. Flag CLI `--permission-mode` menimpa pengaturan ini untuk sesi tunggal | `"acceptEdits"` |364| `defaultMode` | Mode [izin](/id/permission-modes) default saat membuka Claude Code. Nilai yang valid: `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`. {/* min-version: 2.1.142 */}Sejak Claude Code v2.1.142, `auto` diabaikan saat diatur dalam pengaturan proyek atau lokal (`.claude/settings.json`, `.claude/settings.local.json`) sehingga repositori tidak dapat memberikan dirinya sendiri mode otomatis. Atur di `~/.claude/settings.json` sebagai gantinya. Flag CLI `--permission-mode` menimpa pengaturan ini untuk sesi tunggal | `"acceptEdits"` |

322| `disableBypassPermissionsMode` | Atur ke `"disable"` untuk mencegah mode `bypassPermissions` diaktifkan. Ini menonaktifkan flag baris perintah `--dangerously-skip-permissions`. Paling berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk menegakkan kebijakan organisasi, tetapi berfungsi dari cakupan apa pun | `"disable"` |365| `disableBypassPermissionsMode` | Atur ke `"disable"` untuk mencegah mode `bypassPermissions` diaktifkan. Ini menonaktifkan flag baris perintah `--dangerously-skip-permissions`. Paling berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk menegakkan kebijakan organisasi, tetapi berfungsi dari cakupan apa pun | `"disable"` |


326 Sintaks aturan izin369 Sintaks aturan izin

327</h3>370</h3>

328 371 

329Aturan izin mengikuti format `Tool` atau `Tool(specifier)`. Aturan dievaluasi secara berurutan: aturan deny terlebih dahulu, kemudian ask, kemudian allow. Aturan pertama yang cocok menang.372Aturan izin mengikuti format `Tool` atau `Tool(specifier)`. Aturan dievaluasi secara berurutan: aturan deny terlebih dahulu, kemudian ask, kemudian allow. Aturan pertama yang cocok menentukan hasil terlepas dari spesifisitas aturan. Lihat [urutan evaluasi aturan izin](/id/permissions#manage-permissions) untuk detail.

330 373 

331Contoh cepat:374Contoh cepat:

332 375 


431**Atribusi komit default:**474**Atribusi komit default:**

432 475 

433```text theme={null}476```text theme={null}

434🤖 Generated with [Claude Code](https://claude.com/claude-code)477Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

435 

436 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

437```478```

438 479 

480Nama model dalam trailer mencerminkan model aktif untuk sesi.

481 

439**Atribusi pull request default:**482**Atribusi pull request default:**

440 483 

441```text theme={null}484```text theme={null}


491```bash theme={null}534```bash theme={null}

492#!/bin/bash535#!/bin/bash

493query=$(cat | jq -r '.query')536query=$(cat | jq -r '.query')

537# Ganti your-repo-file-index dengan perintah pencarian file Anda sendiri

494your-repo-file-index --query "$query" | head -20538your-repo-file-index --query "$query" | head -20

495```539```

496 540 

541<h3 id="footer-link-badges">

542 Lencana tautan footer

543</h3>

544 

545Pengaturan `footerLinksRegexes` merender lencana yang dapat diklik tambahan di footer di bawah kotak input. Gunakan untuk mengubah ID yang dicetak oleh CLI proyek, seperti tools review dan issue trackers, menjadi tautan sesi.

546 

547Regex `pattern` setiap entri dicocokkan dengan output giliran: hasil tool, termasuk konten file dan halaman yang diambil, dan respons Claude sendiri. Placeholder `{name}` dalam `url` dan `label` diisi dari grup penangkapan bernama dalam pola.

548 

549Contoh berikut merender lencana setiap kali kunci masalah seperti `PROJ-1234` muncul dalam output giliran. Grup bernama `(?<key>...)` menangkap kunci, dan `{key}` menggantikannya ke dalam URL dan label:

550 

551```json ~/.claude/settings.json theme={null}

552{

553 "footerLinksRegexes": [

554 {

555 "type": "regex",

556 "pattern": "\\b(?<key>PROJ-\\d+)\\b",

557 "url": "https://issues.example.com/browse/{key}",

558 "label": "{key}"

559 }

560 ]

561}

562```

563 

564Dengan ini dikonfigurasi, saat `PROJ-1234` muncul dalam hasil tool atau dalam balasan Claude, chip `PROJ-1234` muncul di footer menghubungkan ke `https://issues.example.com/browse/PROJ-1234`.

565 

566Batasan berikut berlaku untuk setiap entri:

567 

568| Batasan | Perilaku |

569| :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

570| Asal URL | Nilai yang ditangkap adalah URL-encoded dan URL yang dibangun harus berbagi asal literal template. Penangkapan dapat mengisi segmen jalur atau nilai kueri tetapi tidak dapat mengubah tempat tautan menunjuk |

571| Panjang URL | URL yang dibangun lebih panjang dari 2048 karakter dijatuhkan |

572| Skema URL | Harus `https`, `http`, atau skema deep-link editor atau workspace yang diakui: `vscode`, `vscode-insiders`, `cursor`, `windsurf`, `zed`, `jetbrains`, `idea`, `slack`, `linear`, `notion`, `figma` |

573| Label | Default ke teks yang cocok dan dipotong ke 28 kolom tampilan |

574| Jumlah lencana | Paling banyak 5 lencana render. Yang tertua digantikan oleh kecocokan yang lebih baru dan `/clear` menghapusnya |

575| Cakupan pengaturan | Dibaca dari pengaturan pengguna, flag `--settings`, dan pengaturan yang dikelola saja. Diabaikan dalam `.claude/settings.json` proyek dan `.claude/settings.local.json` lokal |

576 

577Saat giliran selesai, Claude Code mencocokkan regex `pattern` setiap entri dengan output giliran pada thread utama, jadi regex lambat memblokir UI sampai selesai. Quantifier bersarang seperti `(a+)+$` dapat memakan waktu secara eksponensial terhadap input tertentu dan membekukan sesi, jadi jaga setiap `pattern` linear dan hindari bersarang `+` atau `*`.

578 

579Lencana footer render bersama [status line khusus](/id/statusline) saat satu dikonfigurasi; tidak satupun menggantikan yang lain. Gunakan status line untuk baris yang didorong skrip yang menghitung kontennya sendiri dari data sesi, dan lencana footer untuk mengubah ID dari percakapan menjadi tautan tanpa skrip.

580 

497<h3 id="hook-configuration">581<h3 id="hook-configuration">

498 Konfigurasi hook582 Konfigurasi hook

499</h3>583</h3>


564 * Kebijakan yang digunakan oleh IT melalui pengiriman server, profil konfigurasi MDM, kebijakan registry, atau file pengaturan yang dikelola648 * Kebijakan yang digunakan oleh IT melalui pengiriman server, profil konfigurasi MDM, kebijakan registry, atau file pengaturan yang dikelola

565 * Tidak dapat ditimpa oleh tingkat apa pun, termasuk argumen baris perintah649 * Tidak dapat ditimpa oleh tingkat apa pun, termasuk argumen baris perintah

566 * Dalam tingkat yang dikelola, prioritas adalah: yang dikelola server > kebijakan tingkat MDM/OS > file-based (`managed-settings.d/*.json` + `managed-settings.json`) > registry HKCU (Windows saja). Hanya satu sumber yang dikelola yang digunakan; sumber tidak digabungkan di seluruh tingkat. Dalam tingkat berbasis file, file drop-in dan file dasar digabungkan bersama.650 * Dalam tingkat yang dikelola, prioritas adalah: yang dikelola server > kebijakan tingkat MDM/OS > file-based (`managed-settings.d/*.json` + `managed-settings.json`) > registry HKCU (Windows saja). Hanya satu sumber yang dikelola yang digunakan; sumber tidak digabungkan di seluruh tingkat. Dalam tingkat berbasis file, file drop-in dan file dasar digabungkan bersama.

651 * Host penyematan seperti Claude Desktop dapat memasok kebijakan melalui opsi SDK `managedSettings`. Secara default ini diabaikan saat ada tingkat yang dikelola apa pun. Administrator dapat memilih dengan menetapkan [`parentSettingsBehavior`](#available-settings) ke `"merge"`. Nilai embedder disaring sehingga mereka dapat mengencangkan kebijakan yang dikelola tetapi tidak melonggarkannya.

567 652 

5682. **Argumen baris perintah**6532. **Argumen baris perintah**

569 * Penggantian sementara untuk sesi tertentu. JSON yang dilewatkan melalui `--settings <file-or-json>` digabungkan dengan pengaturan berbasis file menggunakan aturan yang sama seperti lapisan lainnya: kunci yang diatur di sini menimpa kunci yang sama dalam pengaturan lokal, proyek, atau pengguna, dan menghilangkan kunci membiarkan nilai lapisan lebih rendah tetap ada654 * Penggantian sementara untuk sesi tertentu. JSON yang dilewatkan melalui `--settings <file-or-json>` digabungkan dengan pengaturan berbasis file menggunakan aturan yang sama seperti lapisan lainnya: kunci yang diatur di sini menimpa kunci yang sama dalam pengaturan lokal, proyek, atau pengguna, dan menghilangkan kunci membiarkan nilai lapisan lebih rendah tetap ada


582Misalnya, jika pengaturan pengguna Anda menetapkan `permissions.defaultMode` ke `acceptEdits` dan pengaturan bersama proyek menetapkannya ke `default`, nilai proyek berlaku. Contoh di bawah mencakup bagaimana pengaturan bernilai array seperti aturan izin digabungkan sebagai gantinya.667Misalnya, jika pengaturan pengguna Anda menetapkan `permissions.defaultMode` ke `acceptEdits` dan pengaturan bersama proyek menetapkannya ke `default`, nilai proyek berlaku. Contoh di bawah mencakup bagaimana pengaturan bernilai array seperti aturan izin digabungkan sebagai gantinya.

583 668 

584<Note>669<Note>

585 **Pengaturan array digabungkan di seluruh cakupan.** Ketika pengaturan yang bernilai array yang sama (seperti `sandbox.filesystem.allowWrite` atau `permissions.allow`) muncul dalam beberapa cakupan, array **digabungkan dan dihilangkan duplikatnya**, bukan diganti. Ini berarti cakupan prioritas lebih rendah dapat menambahkan entri tanpa menimpa yang ditetapkan oleh cakupan prioritas lebih tinggi, dan sebaliknya. Misalnya, jika pengaturan yang dikelola menetapkan `allowWrite` ke `["/opt/company-tools"]` dan pengguna menambahkan `["~/.kube"]`, kedua jalur disertakan dalam konfigurasi akhir.670 **Pengaturan array digabungkan di seluruh cakupan.** Ketika pengaturan yang bernilai array yang sama (seperti `sandbox.filesystem.allowWrite` atau `permissions.allow`) muncul dalam beberapa cakupan, array **digabungkan dan dihilangkan duplikatnya**, bukan diganti. Ini berarti cakupan prioritas lebih rendah dapat menambahkan entri tanpa menimpa yang ditetapkan oleh cakupan prioritas lebih tinggi, dan sebaliknya. Misalnya, jika pengaturan yang dikelola menetapkan `allowWrite` ke `["/opt/company-tools"]` dan pengguna menambahkan `["~/.kube"]`, kedua jalur disertakan dalam konfigurasi akhir. Dua pengecualian: [`fallbackModel`](#available-settings), rantai yang dipesan di mana posisi membawa makna: file dengan prioritas tertinggi yang mendefinisikannya memasok seluruh nilai, dan {/* min-version: 2.1.175 */}sejak v2.1.175, [`availableModels`](#available-settings), di mana nilai yang dikelola atau kebijakan menggantikan entri prioritas lebih rendah sepenuhnya. Lihat [Perilaku penggabungan](/id/model-config#merge-behavior).

586</Note>671</Note>

587 672 

588<h3 id="verify-active-settings">673<h3 id="verify-active-settings">

589 Verifikasi pengaturan aktif674 Verifikasi pengaturan aktif

590</h3>675</h3>

591 676 

592Jalankan `/status` di dalam Claude Code untuk melihat sumber pengaturan mana yang aktif. Tab Status mencakup baris `Setting sources` yang mencantumkan setiap lapisan Claude Code yang dimuat untuk sesi saat ini, seperti `User settings` atau `Project local settings`. Ketika [pengaturan yang dikelola](/id/managed-settings) berlaku, entri menunjukkan saluran pengiriman dalam tanda kurung, misalnya `Enterprise managed settings (remote)`, `(plist)`, `(HKLM)`, `(HKCU)`, atau `(file)`. Lapisan muncul dalam daftar hanya ketika sumber itu dimuat dengan setidaknya satu kunci, jadi daftar kosong berarti tidak ada sumber pengaturan yang ditemukan.677Jalankan `/status` di dalam Claude Code untuk melihat sumber pengaturan mana yang aktif. Di dalam menu, tab **Status** mencakup baris `Setting sources` yang mencantumkan setiap lapisan Claude Code yang dimuat untuk sesi saat ini, seperti `User settings` atau `Project local settings`. Ketika [pengaturan yang dikelola](/id/admin-setup#decide-how-settings-reach-devices) berlaku, entri menunjukkan saluran pengiriman dalam tanda kurung, misalnya `Enterprise managed settings (remote)`, `(plist)`, `(HKLM)`, `(HKCU)`, atau `(file)`. Lapisan muncul dalam daftar hanya saat sumber itu dimuat dengan setidaknya satu kunci, jadi daftar kosong berarti tidak ada sumber pengaturan yang ditemukan.

593 678 

594Baris `Setting sources` mengonfirmasi sumber mana yang sedang dibaca. Ini tidak menunjukkan lapisan mana yang memasok setiap kunci individual. Tab Config dalam dialog yang sama adalah editor untuk set toggle tetap seperti tema dan output verbose, bukan tampilan konten `settings.json` Anda. Jika file pengaturan berisi kesalahan, seperti JSON tidak valid atau nilai yang gagal validasi, `/status` melaporkan masalah sehingga Anda dapat memperbaikinya.679Baris `Setting sources` mengonfirmasi sumber mana yang sedang dibaca. Ini tidak menunjukkan lapisan mana yang memasok setiap kunci individual. Tab **Config** dalam dialog yang sama adalah editor untuk set toggle tetap seperti tema dan output verbose, bukan tampilan konten `settings.json` Anda.

680 

681Jika file pengaturan berisi kesalahan, seperti JSON tidak valid atau nilai yang gagal validasi, Claude Code menampilkan pemberitahuan masalah setup saat startup dan `/status` mencantumkan file yang terpengaruh. Jalankan `/doctor` untuk melihat detail untuk setiap kesalahan.

595 682 

596<h3 id="key-points-about-the-configuration-system">683<h3 id="key-points-about-the-configuration-system">

597 Poin kunci tentang sistem konfigurasi684 Poin kunci tentang sistem konfigurasi


602* **Skills**: Prompt khusus yang dapat dipanggil dengan `/skill-name` atau dimuat oleh Claude secara otomatis689* **Skills**: Prompt khusus yang dapat dipanggil dengan `/skill-name` atau dimuat oleh Claude secara otomatis

603* **MCP servers**: Perluas Claude Code dengan tools dan integrasi tambahan690* **MCP servers**: Perluas Claude Code dengan tools dan integrasi tambahan

604* **Prioritas**: Konfigurasi tingkat lebih tinggi (Managed) menimpa yang tingkat lebih rendah (User/Project)691* **Prioritas**: Konfigurasi tingkat lebih tinggi (Managed) menimpa yang tingkat lebih rendah (User/Project)

605* **Warisan**: Pengaturan digabungkan di seluruh cakupan; nilai skalar dari cakupan prioritas lebih tinggi menimpa, dan array digabungkan692* **Warisan**: Pengaturan digabungkan di seluruh cakupan; nilai skalar dari cakupan prioritas lebih tinggi menimpa, dan array digabungkan. Pengecualian: `fallbackModel`, di mana cakupan dengan prioritas tertinggi yang mendefinisikannya memasok seluruh rantai, dan sejak v2.1.175, `availableModels`, di mana nilai yang dikelola atau kebijakan menggantikan entri prioritas lebih rendah sepenuhnya

606 693 

607<h3 id="system-prompt">694<h3 id="system-prompt">

608 Prompt sistem695 Prompt sistem


683 770 

684* **Pengaturan pengguna** (`~/.claude/settings.json`): Preferensi plugin pribadi771* **Pengaturan pengguna** (`~/.claude/settings.json`): Preferensi plugin pribadi

685* **Pengaturan proyek** (`.claude/settings.json`): Plugin spesifik proyek yang dibagikan dengan tim772* **Pengaturan proyek** (`.claude/settings.json`): Plugin spesifik proyek yang dibagikan dengan tim

686* **Pengaturan lokal** (`.claude/settings.local.json`): Penggantian per-mesin (tidak dikomit)773* **Pengaturan lokal** (`.claude/settings.local.json`): Penggantian per-mesin, diabaikan saat Claude Code membuatnya

687* **Pengaturan yang dikelola** (`managed-settings.json`): Penggantian kebijakan organisasi yang memblokir instalasi di semua cakupan dan menyembunyikan plugin dari marketplace774* **Pengaturan yang dikelola** (`managed-settings.json`): Penggantian kebijakan organisasi yang memblokir instalasi di semua cakupan dan menyembunyikan plugin dari marketplace

688 775 

689<Note>776<Note>


746* `hostPattern`: Pola regex untuk mencocokkan host marketplace (menggunakan `hostPattern`)833* `hostPattern`: Pola regex untuk mencocokkan host marketplace (menggunakan `hostPattern`)

747* `settings`: marketplace inline yang dideklarasikan langsung dalam settings.json tanpa repositori yang dihosting terpisah (menggunakan `name` dan `plugins`)834* `settings`: marketplace inline yang dideklarasikan langsung dalam settings.json tanpa repositori yang dihosting terpisah (menggunakan `name` dan `plugins`)

748 835 

836Jenis sumber `git` bekerja dengan layanan hosting git apa pun, termasuk GitLab dan Bitbucket yang dihosting sendiri. Claude Code mengkloning repositori dengan autentikasi yang sama yang akan digunakan `git clone` di mesin tersebut: pembantu kredensial yang dikonfigurasi, kunci SSH, atau variabel lingkungan token khusus host. Lihat [Repositori pribadi](/id/plugin-marketplaces#private-repositories) untuk detail pengaturan.

837 

749Untuk sumber `github` dan `git`, atur `"skipLfs": true` di dalam objek `source` (bersama `repo` atau `url`) untuk melewati unduhan Git LFS saat Claude Code mengkloning atau memperbarui repositori marketplace. File pointer LFS tetap sebagai pointer daripada mengunduh kontennya. Gunakan ini ketika repositori berisi objek LFS besar yang tidak terkait dengan konten plugin. {/* min-version: 2.1.153 */}Memerlukan Claude Code v2.1.153 atau lebih baru.838Untuk sumber `github` dan `git`, atur `"skipLfs": true` di dalam objek `source` (bersama `repo` atau `url`) untuk melewati unduhan Git LFS saat Claude Code mengkloning atau memperbarui repositori marketplace. File pointer LFS tetap sebagai pointer daripada mengunduh kontennya. Gunakan ini ketika repositori berisi objek LFS besar yang tidak terkait dengan konten plugin. {/* min-version: 2.1.153 */}Memerlukan Claude Code v2.1.153 atau lebih baru.

750 839 

751Setiap entri marketplace juga menerima Boolean `autoUpdate` opsional. Atur `"autoUpdate": true` bersama `source` untuk membuat Claude Code menyegarkan marketplace tersebut dan memperbarui plugin yang terinstal saat startup. Jika dihilangkan, marketplace Anthropic resmi default ke `true` dan semua marketplace lainnya default ke `false`. Lihat [Konfigurasi pembaruan otomatis](/id/discover-plugins#configure-auto-updates).840Setiap entri marketplace juga menerima Boolean `autoUpdate` opsional. Atur `"autoUpdate": true` bersama `source` untuk membuat Claude Code menyegarkan marketplace tersebut dan memperbarui plugin yang terinstal saat startup. Jika dihilangkan, marketplace Anthropic resmi default ke `true` dan semua marketplace lainnya default ke `false`. Lihat [Konfigurasi pembaruan otomatis](/id/discover-plugins#configure-auto-updates).

setup.md +26 −4

Details

258 258 

259Dalam [managed settings](/id/permissions#managed-settings), ini memberlakukan minimum di seluruh organisasi yang tidak dapat ditimpa oleh pengaturan pengguna dan proyek.259Dalam [managed settings](/id/permissions#managed-settings), ini memberlakukan minimum di seluruh organisasi yang tidak dapat ditimpa oleh pengaturan pengguna dan proyek.

260 260 

261Pengaturan `minimumVersion` hanya membatasi pembaruan. Untuk membuat Claude Code menolak untuk memulai di luar rentang versi, gunakan pengaturan terkelola `requiredMinimumVersion` dan `requiredMaximumVersion` sebagai gantinya. Pembaruan juga menghormati batas `requiredMaximumVersion`. Lihat [available settings](/id/settings#available-settings).

262 

261<h3 id="disable-auto-updates">263<h3 id="disable-auto-updates">

262 Nonaktifkan pembaruan otomatis264 Nonaktifkan pembaruan otomatis

263</h3>265</h3>


366 Instal dengan manajer paket Linux368 Instal dengan manajer paket Linux

367</h3>369</h3>

368 370 

369Claude Code menerbitkan repositori apt, dnf, dan apk yang ditandatangani. Ganti `stable` dengan `latest` untuk saluran rolling. Instalasi manajer paket tidak auto-update melalui Claude Code; pembaruan tiba melalui alur upgrade sistem normal Anda.371Claude Code menerbitkan repositori apt, dnf, dan apk yang ditandatangani. Setiap repositori menawarkan dua saluran: `stable` melayani versi yang biasanya sekitar satu minggu lama, melewati rilis dengan regresi besar, dan `latest` melayani setiap rilis segera setelah dikirim. Perintah di bawah mengonfigurasi saluran `stable`, yang sesuai untuk sebagian besar pengguna; setiap tab juga menunjukkan URL repositori `latest`. Instalasi manajer paket tidak auto-update melalui Claude Code; pembaruan tiba melalui alur upgrade sistem normal Anda.

370 372 

371Semua repositori ditandatangani dengan [kunci penandatanganan rilis Claude Code](#binary-integrity-and-code-signing). Sebelum mempercayai kunci, verifikasi seperti yang dijelaskan di setiap tab.373Semua repositori ditandatangani dengan [kunci penandatanganan rilis Claude Code](#binary-integrity-and-code-signing). Sebelum mempercayai kunci, verifikasi seperti yang dijelaskan di setiap tab.

372 374 

373<Tabs>375<Tabs>

374 <Tab title="apt">376 <Tab title="apt">

375 Untuk Debian dan Ubuntu. Untuk menggunakan saluran rolling, ubah kedua kemunculan `stable` di baris `deb`: jalur URL dan nama suite.377 Untuk Debian dan Ubuntu. Perintah berikut mengonfigurasi saluran `stable`:

376 378 

377 ```bash theme={null}379 ```bash theme={null}

378 sudo install -d -m 0755 /etc/apt/keyrings380 sudo install -d -m 0755 /etc/apt/keyrings


384 sudo apt install claude-code386 sudo apt install claude-code

385 ```387 ```

386 388 

389 Untuk menggunakan saluran `latest` sebagai gantinya, jalur URL dan nama suite keduanya berubah. Gunakan baris `deb` ini:

390 

391 ```bash theme={null}

392 echo "deb [signed-by=/etc/apt/keyrings/claude-code.asc] https://downloads.claude.ai/claude-code/apt/latest latest main" \

393 | sudo tee /etc/apt/sources.list.d/claude-code.list

394 ```

395 

387 Verifikasi sidik jari kunci GPG sebelum mempercayainya: `gpg --show-keys /etc/apt/keyrings/claude-code.asc` harus melaporkan `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`.396 Verifikasi sidik jari kunci GPG sebelum mempercayainya: `gpg --show-keys /etc/apt/keyrings/claude-code.asc` harus melaporkan `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`.

388 397 

389 Untuk upgrade nanti, jalankan `sudo apt update && sudo apt upgrade claude-code`.398 Untuk upgrade nanti, jalankan `sudo apt update && sudo apt upgrade claude-code`.

390 </Tab>399 </Tab>

391 400 

392 <Tab title="dnf">401 <Tab title="dnf">

393 Untuk Fedora dan RHEL:402 Untuk Fedora dan RHEL. Perintah berikut mengonfigurasi saluran `stable`:

394 403 

395 ```bash theme={null}404 ```bash theme={null}

396 sudo tee /etc/yum.repos.d/claude-code.repo <<'EOF'405 sudo tee /etc/yum.repos.d/claude-code.repo <<'EOF'


404 sudo dnf install claude-code413 sudo dnf install claude-code

405 ```414 ```

406 415 

416 Untuk menggunakan saluran `latest` sebagai gantinya, atur `baseurl` ke repositori `latest`:

417 

418 ```ini theme={null}

419 baseurl=https://downloads.claude.ai/claude-code/rpm/latest

420 ```

421 

407 dnf mengunduh kunci pada instalasi pertama dan meminta Anda untuk mengkonfirmasi sidik jari. Verifikasi itu cocok dengan `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE` sebelum menerima.422 dnf mengunduh kunci pada instalasi pertama dan meminta Anda untuk mengkonfirmasi sidik jari. Verifikasi itu cocok dengan `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE` sebelum menerima.

408 423 

409 Untuk upgrade nanti, jalankan `sudo dnf upgrade claude-code`.424 Untuk upgrade nanti, jalankan `sudo dnf upgrade claude-code`.

410 </Tab>425 </Tab>

411 426 

412 <Tab title="apk">427 <Tab title="apk">

413 Untuk Alpine Linux:428 Untuk Alpine Linux. Perintah berikut mengonfigurasi saluran `stable`:

414 429 

415 ```sh theme={null}430 ```sh theme={null}

416 wget -O /etc/apk/keys/claude-code.rsa.pub \431 wget -O /etc/apk/keys/claude-code.rsa.pub \


419 apk add claude-code434 apk add claude-code

420 ```435 ```

421 436 

437 Untuk beralih ke saluran `latest`, hapus baris repositori `stable` dan tambahkan repositori `latest`:

438 

439 ```sh theme={null}

440 sed -i '\|downloads.claude.ai/claude-code/apk/stable|d' /etc/apk/repositories

441 echo "https://downloads.claude.ai/claude-code/apk/latest" >> /etc/apk/repositories

442 ```

443 

422 Verifikasi kunci yang diunduh dengan `sha256sum /etc/apk/keys/claude-code.rsa.pub`, yang harus melaporkan `395759c1f7449ef4cdef305a42e820f3c766d6090d142634ebdb049f113168b6`.444 Verifikasi kunci yang diunduh dengan `sha256sum /etc/apk/keys/claude-code.rsa.pub`, yang harus melaporkan `395759c1f7449ef4cdef305a42e820f3c766d6090d142634ebdb049f113168b6`.

423 445 

424 Untuk upgrade nanti, jalankan `apk update && apk upgrade claude-code`.446 Untuk upgrade nanti, jalankan `apk update && apk upgrade claude-code`.

skills.md +19 −6

Details

22 Skills bundel22 Skills bundel

23</h2>23</h2>

24 24 

25Claude Code menyertakan serangkaian skills bundel yang tersedia di setiap sesi, termasuk `/code-review`, `/batch`, `/debug`, `/loop`, dan `/claude-api`. Tidak seperti sebagian besar perintah bawaan, yang menjalankan logika tetap secara langsung, skills bundel berbasis prompt: mereka memberikan Claude instruksi terperinci dan membiarkannya mengorkestrasi pekerjaan menggunakan tools-nya. Anda menginvokasinya dengan cara yang sama seperti skill lainnya, dengan mengetik `/` diikuti dengan nama skill.25Claude Code menyertakan serangkaian skills bundel yang tersedia di setiap sesi kecuali dinonaktifkan dengan pengaturan [`disableBundledSkills`](/id/settings#available-settings), termasuk `/code-review`, `/batch`, `/debug`, `/loop`, dan `/claude-api`. Tidak seperti sebagian besar perintah bawaan, yang menjalankan logika tetap secara langsung, skills bundel berbasis prompt: mereka memberikan Claude instruksi terperinci dan membiarkannya mengorkestrasi pekerjaan menggunakan tools-nya. Anda menginvokasinya dengan cara yang sama seperti skill lainnya, dengan mengetik `/` diikuti dengan nama skill.

26 26 

27Skills bundel terdaftar bersama perintah bawaan dalam [referensi perintah](/id/commands), ditandai **Skill** di kolom Tujuan.27Skills bundel terdaftar bersama perintah bawaan dalam [referensi perintah](/id/commands), ditandai **Skill** di kolom Tujuan.

28 28 


117| Proyek | `.claude/skills/<skill-name>/SKILL.md` | Proyek ini saja |117| Proyek | `.claude/skills/<skill-name>/SKILL.md` | Proyek ini saja |

118| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Tempat plugin diaktifkan |118| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Tempat plugin diaktifkan |

119 119 

120Ketika skills berbagi nama yang sama di berbagai level, enterprise menggantikan pribadi, dan pribadi menggantikan proyek. Skills plugin menggunakan namespace `plugin-name:skill-name`, jadi mereka tidak dapat bertentangan dengan level lain. Jika Anda memiliki file di `.claude/commands/`, file tersebut bekerja dengan cara yang sama, tetapi jika skill dan perintah berbagi nama yang sama, skill mengambil alih.120Ketika skills berbagi nama yang sama di berbagai level, enterprise menggantikan pribadi, dan pribadi menggantikan proyek. Skill di salah satu level ini juga menggantikan skill bundel dengan nama yang sama. Misalnya, skill `code-review` di `.claude/skills/` proyek Anda menggantikan `/code-review` bundel. Skills plugin menggunakan namespace `plugin-name:skill-name`, jadi mereka tidak dapat bertentangan dengan level lain. Jika Anda memiliki file di `.claude/commands/`, file tersebut bekerja dengan cara yang sama, tetapi jika skill dan perintah berbagi nama yang sama, skill mengambil alih.

121 

122Skills juga memuat dari direktori `.claude/skills/` bersarang di bawah direktori kerja Anda. Ketika Claude membaca atau mengedit file di subdirektori, skills dari `.claude/skills/` subdirektori tersebut menjadi tersedia. Ini memungkinkan paket monorepo menyediakan skills mereka sendiri yang berlaku saat bekerja pada paket tersebut, bahkan jika sesi dimulai di akar repo.

123 

124Jika skill bersarang berbagi nama dengan skill lain, keduanya tetap tersedia. Misalnya, dengan skill `deploy` di akar proyek dan skill lain di `apps/web/.claude/skills/`:

125 

126* Yang bersarang muncul di bawah nama yang memenuhi direktori, `apps/web:deploy`.

127* Deskripsinya mengatakan direktori mana yang berlaku.

128* Claude memilih varian yang cocok dengan file yang sedang dikerjakan.

129 

130Mengetik `/deploy` menjalankan skill akar proyek. Ketik nama yang memenuhi `/apps/web:deploy` untuk menjalankan varian bersarang secara eksplisit.

121 131 

122<Note>132<Note>

123 Tambahkan `.claude-plugin/plugin.json` ke folder skill dan itu dimuat sebagai [plugin](/id/plugins-reference#skills-directory-plugins) bernama `<name>@skills-dir`, sehingga dapat menggabungkan agents, hooks, dan server MCP. Di `.claude/skills/` proyek, ini memerlukan menerima dialog kepercayaan workspace terlebih dahulu.133 Tambahkan `.claude-plugin/plugin.json` ke folder skill dan itu dimuat sebagai [plugin](/id/plugins-reference#skills-directory-plugins) bernama `<name>@skills-dir`, sehingga dapat menggabungkan agents, hooks, dan server MCP. Di `.claude/skills/` proyek, ini memerlukan menerima dialog kepercayaan workspace terlebih dahulu.


262Tabel di bawah menunjukkan dari mana nama perintah berasal untuk setiap tata letak:272Tabel di bawah menunjukkan dari mana nama perintah berasal untuk setiap tata letak:

263 273 

264| Lokasi skill | Sumber nama perintah | Contoh |274| Lokasi skill | Sumber nama perintah | Contoh |

265| :------------------------------------------------------------------ | :---------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |275| :------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |

266| Direktori skill di bawah `~/.claude/skills/` atau `.claude/skills/` | Nama direktori | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |276| Direktori skill di bawah `~/.claude/skills/` atau `.claude/skills/` | Nama direktori | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |

277| [Bersarang](#where-skills-live) direktori `.claude/skills/`, ketika nama bentrok dengan skill lain | Jalur subdirektori relatif terhadap direktori kerja, kemudian nama direktori skill | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |

267| File di bawah `.claude/commands/` | Nama file tanpa ekstensi | `.claude/commands/deploy.md` → `/deploy` |278| File di bawah `.claude/commands/` | Nama file tanpa ekstensi | `.claude/commands/deploy.md` → `/deploy` |

268| Subdirektori `skills/` plugin | Nama direktori, diberi namespace oleh plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review` |279| Subdirektori `skills/` plugin | Nama direktori, diberi namespace oleh plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review` |

269| Plugin root `SKILL.md` | Frontmatter `name`, dengan nama direktori plugin sebagai fallback | `my-plugin/SKILL.md` dengan `name: review` → `/my-plugin:review`. Lihat [Aturan perilaku path](/id/plugins-reference#path-behavior-rules) |280| Plugin root `SKILL.md` | Frontmatter `name`, dengan nama direktori plugin sebagai fallback | `my-plugin/SKILL.md` dengan `name: review` → `/my-plugin:review`. Lihat [Aturan perilaku path](/id/plugins-reference#path-behavior-rules) |


288 299 

289Argumen yang diindeks menggunakan quoting gaya shell, jadi bungkus nilai multi-kata dalam tanda kutip untuk meneruskannya sebagai argumen tunggal. Misalnya, `/my-skill "hello world" second` membuat `$0` berkembang menjadi `hello world` dan `$1` menjadi `second`. Placeholder `$ARGUMENTS` selalu berkembang menjadi string argumen lengkap seperti yang diketik.300Argumen yang diindeks menggunakan quoting gaya shell, jadi bungkus nilai multi-kata dalam tanda kutip untuk meneruskannya sebagai argumen tunggal. Misalnya, `/my-skill "hello world" second` membuat `$0` berkembang menjadi `hello world` dan `$1` menjadi `second`. Placeholder `$ARGUMENTS` selalu berkembang menjadi string argumen lengkap seperti yang diketik.

290 301 

302Untuk menyertakan literal `$` sebelum digit, `ARGUMENTS`, atau nama argumen yang dideklarasikan, seperti `$1.00` dalam prosa, escape dengan backslash: `\$1.00`. Backslash sebelum `$` lainnya dibiarkan tidak berubah. Hanya satu backslash langsung sebelum token yang escape-nya. Backslash ganda seperti `\\$1` meninggalkan kedua backslash di tempat, dan `$1` masih berkembang menjadi nilai argumen.

303 

291**Contoh menggunakan substitusi:**304**Contoh menggunakan substitusi:**

292 305 

293```yaml theme={null}306```yaml theme={null}


395---408---

396```409```

397 410 

398Untuk memblokir skill dari menggunakan tools tertentu, tambahkan aturan deny dalam [pengaturan izin](/id/permissions) Anda sebagai gantinya.411Untuk menghapus tools dari kumpulan tools yang tersedia Claude saat skill aktif, daftarkan mereka dalam `disallowed-tools` di frontmatter skill. Pembatasan dihapus saat Anda mengirim pesan berikutnya. Untuk memblokir tools di semua skills dan prompts, tambahkan aturan deny dalam [pengaturan izin](/id/permissions) Anda.

399 412 

400<h3 id="pass-arguments-to-skills">413<h3 id="pass-arguments-to-skills">

401 Lewatkan argumen ke skills414 Lewatkan argumen ke skills


557 570 

558Bidang `agent` menentukan konfigurasi subagent mana yang digunakan. Opsi termasuk agen bawaan (`Explore`, `Plan`, `general-purpose`) atau subagent kustom apa pun dari `.claude/agents/`. Jika dihilangkan, menggunakan `general-purpose`.571Bidang `agent` menentukan konfigurasi subagent mana yang digunakan. Opsi termasuk agen bawaan (`Explore`, `Plan`, `general-purpose`) atau subagent kustom apa pun dari `.claude/agents/`. Jika dihilangkan, menggunakan `general-purpose`.

559 572 

560<h3 id="restrict-claude-s-skill-access">573<h3 id="restrict-claudes-skill-access">

561 Batasi akses skill Claude574 Batasi akses skill Claude

562</h3>575</h3>

563 576 


850 Deskripsi skill dipotong pendek863 Deskripsi skill dipotong pendek

851</h3>864</h3>

852 865 

853Deskripsi skill dimuat ke dalam konteks sehingga Claude tahu apa yang tersedia. Semua nama skill selalu disertakan, tetapi jika Anda memiliki banyak skills, deskripsi diperpendek agar sesuai dengan anggaran karakter, yang dapat menghilangkan kata kunci yang dibutuhkan Claude untuk mencocokkan permintaan Anda. Anggaran diskalakan pada 1% dari jendela konteks model. Ketika meluap, deskripsi untuk skills yang Anda invokasinya paling sedikit dijatuhkan terlebih dahulu, sehingga skills yang benar-benar Anda gunakan tetap mempertahankan teks lengkapnya. Jalankan `/doctor` untuk melihat apakah anggaran meluap dan skills mana yang terpengaruh.866Deskripsi skill dimuat ke dalam konteks sehingga Claude tahu apa yang tersedia. Semua nama skill selalu disertakan, tetapi jika Anda memiliki banyak skills, deskripsi diperpendek agar sesuai dengan anggaran karakter, yang dapat menghilangkan kata kunci yang dibutuhkan Claude untuk mencocokkan permintaan Anda. Anggaran diskalakan pada 1% dari jendela konteks model. Ketika meluap, deskripsi untuk skills yang Anda invokasinya paling sedikit dijatuhkan terlebih dahulu, sehingga skills yang benar-benar Anda gunakan tetap mempertahankan teks lengkapnya. Jalankan `/doctor` untuk melihat berapa banyak deskripsi skill yang diperpendek atau dijatuhkan dan skills mana yang terpengaruh.

854 867 

855Untuk menaikkan anggaran, atur pengaturan [`skillListingBudgetFraction`](/id/settings#available-settings) (misalnya `0.02` = 2%) atau variabel lingkungan `SLASH_COMMAND_TOOL_CHAR_BUDGET` ke jumlah karakter tetap. Untuk membebaskan anggaran bagi skills lainnya, atur entri prioritas rendah ke `"name-only"` di [`skillOverrides`](#override-skill-visibility-from-settings) sehingga mereka terdaftar tanpa deskripsi. Anda juga dapat memangkas teks `description` dan `when_to_use` di sumbernya: depankan kasus penggunaan utama, karena teks gabungan setiap entri dibatasi pada 1.536 karakter terlepas dari anggaran. Batas dapat dikonfigurasi dengan [`maxSkillDescriptionChars`](/id/settings#available-settings).868Untuk menaikkan anggaran, atur pengaturan [`skillListingBudgetFraction`](/id/settings#available-settings) (misalnya `0.02` = 2%) atau variabel lingkungan `SLASH_COMMAND_TOOL_CHAR_BUDGET` ke jumlah karakter tetap. Untuk membebaskan anggaran bagi skills lainnya, atur entri prioritas rendah ke `"name-only"` di [`skillOverrides`](#override-skill-visibility-from-settings) sehingga mereka terdaftar tanpa deskripsi. Anda juga dapat memangkas teks `description` dan `when_to_use` di sumbernya: depankan kasus penggunaan utama, karena teks gabungan setiap entri dibatasi pada 1.536 karakter terlepas dari anggaran. Batas dapat dikonfigurasi dengan [`maxSkillDescriptionChars`](/id/settings#available-settings).

856 869 

slack.md +1 −1

Details

182 182 

183Model berbasis saluran ini memungkinkan tim untuk membatasi penggunaan Claude Code ke saluran tertentu, memberikan lapisan kontrol akses tambahan di luar izin tingkat workspace.183Model berbasis saluran ini memungkinkan tim untuk membatasi penggunaan Claude Code ke saluran tertentu, memberikan lapisan kontrol akses tambahan di luar izin tingkat workspace.

184 184 

185<h2 id="what-s-accessible-where">185<h2 id="whats-accessible-where">

186 Apa yang dapat diakses di mana186 Apa yang dapat diakses di mana

187</h2>187</h2>

188 188 

statusline.md +64 −22

Details

15* Bekerja di berbagai sesi dan perlu membedakannya15* Bekerja di berbagai sesi dan perlu membedakannya

16* Ingin cabang git dan status selalu terlihat16* Ingin cabang git dan status selalu terlihat

17 17 

18Claude Code juga dapat merender [lencana tautan footer](/id/settings#footer-link-badges): chip yang dapat diklik yang muncul di footer ketika regex yang dikonfigurasi cocok dengan teks dalam percakapan. Ini independen dari baris status dan tidak berinteraksi dengan skrip Anda; konfigurasikan dengan pengaturan [`footerLinksRegexes`](/id/settings#footer-link-badges) sebagai gantinya.

19 

18Berikut adalah contoh [baris status multi-baris](#display-multiple-lines) yang menampilkan informasi git di baris pertama dan bilah konteks berkode warna di baris kedua.20Berikut adalah contoh [baris status multi-baris](#display-multiple-lines) yang menampilkan informasi git di baris pertama dan bilah konteks berkode warna di baris kedua.

19 21 

20<Frame>22<Frame>


23 25 

24Halaman ini memandu Anda melalui [pengaturan baris status dasar](#set-up-a-status-line), menjelaskan [bagaimana aliran data](#how-status-lines-work) dari Claude Code ke skrip Anda, mencantumkan [semua bidang yang dapat Anda tampilkan](#available-data), dan menyediakan [contoh siap pakai](#examples) untuk pola umum seperti status git, pelacakan biaya, dan bilah kemajuan.26Halaman ini memandu Anda melalui [pengaturan baris status dasar](#set-up-a-status-line), menjelaskan [bagaimana aliran data](#how-status-lines-work) dari Claude Code ke skrip Anda, mencantumkan [semua bidang yang dapat Anda tampilkan](#available-data), dan menyediakan [contoh siap pakai](#examples) untuk pola umum seperti status git, pelacakan biaya, dan bilah kemajuan.

25 27 

26## Atur baris status28<h2 id="set-up-a-status-line">

29 Atur baris status

30</h2>

27 31 

28Gunakan [perintah `/statusline`](#use-the-statusline-command) untuk membuat Claude Code menghasilkan skrip untuk Anda, atau [buat skrip secara manual](#manually-configure-a-status-line) dan tambahkan ke pengaturan Anda.32Gunakan [perintah `/statusline`](#use-the-%2Fstatusline-command) untuk membuat Claude Code menghasilkan skrip untuk Anda, atau [buat skrip secara manual](#manually-configure-a-status-line) dan tambahkan ke pengaturan Anda.

29 33 

30### Gunakan perintah /statusline34<h3 id="use-the-/statusline-command">

35 Gunakan perintah /statusline

36</h3>

31 37 

32Perintah `/statusline` menerima instruksi bahasa alami yang menjelaskan apa yang ingin Anda tampilkan. Claude Code menghasilkan file skrip di `~/.claude/` dan memperbarui pengaturan Anda secara otomatis:38Perintah `/statusline` menerima instruksi bahasa alami yang menjelaskan apa yang ingin Anda tampilkan. Claude Code menghasilkan file skrip di `~/.claude/` dan memperbarui pengaturan Anda secara otomatis:

33 39 


35/statusline show model name and context percentage with a progress bar41/statusline show model name and context percentage with a progress bar

36```42```

37 43 

38### Konfigurasikan baris status secara manual44<h3 id="manually-configure-a-status-line">

45 Konfigurasikan baris status secara manual

46</h3>

39 47 

40Tambahkan bidang `statusLine` ke pengaturan pengguna Anda (`~/.claude/settings.json`, di mana `~` adalah direktori home Anda) atau [pengaturan proyek](/id/settings#settings-files). Atur `type` ke `"command"` dan arahkan `command` ke jalur skrip atau perintah shell inline. Untuk panduan lengkap membuat skrip, lihat [Bangun baris status langkah demi langkah](#build-a-status-line-step-by-step).48Tambahkan bidang `statusLine` ke pengaturan pengguna Anda (`~/.claude/settings.json`, di mana `~` adalah direktori home Anda) atau [pengaturan proyek](/id/settings#settings-files). Atur `type` ke `"command"` dan arahkan `command` ke jalur skrip atau perintah shell inline. Untuk panduan lengkap membuat skrip, lihat [Bangun baris status langkah demi langkah](#build-a-status-line-step-by-step).

41 49 


66 74 

67Bidang `hideVimModeIndicator` opsional menekan teks `-- INSERT --` bawaan di bawah prompt. Atur ini ke `true` ketika skrip Anda merender [`vim.mode`](#available-data) itu sendiri, sehingga mode tidak ditampilkan dua kali.75Bidang `hideVimModeIndicator` opsional menekan teks `-- INSERT --` bawaan di bawah prompt. Atur ini ke `true` ketika skrip Anda merender [`vim.mode`](#available-data) itu sendiri, sehingga mode tidak ditampilkan dua kali.

68 76 

69### Nonaktifkan baris status77<h3 id="disable-the-status-line">

78 Nonaktifkan baris status

79</h3>

70 80 

71Jalankan `/statusline` dan minta untuk menghapus atau menghapus baris status Anda (misalnya, `/statusline delete`, `/statusline clear`, `/statusline remove it`). Anda juga dapat secara manual menghapus bidang `statusLine` dari settings.json Anda.81Jalankan `/statusline` dan minta untuk menghapus atau menghapus baris status Anda (misalnya, `/statusline delete`, `/statusline clear`, `/statusline remove it`). Anda juga dapat secara manual menghapus bidang `statusLine` dari settings.json Anda.

72 82 

73## Bangun baris status langkah demi langkah83<h2 id="build-a-status-line-step-by-step">

84 Bangun baris status langkah demi langkah

85</h2>

74 86 

75Panduan ini menunjukkan apa yang terjadi di balik layar dengan membuat baris status secara manual yang menampilkan model saat ini, direktori kerja, dan persentase penggunaan jendela konteks.87Panduan ini menunjukkan apa yang terjadi di balik layar dengan membuat baris status secara manual yang menampilkan model saat ini, direktori kerja, dan persentase penggunaan jendela konteks.

76 88 

77<Note>Menjalankan [`/statusline`](#use-the-statusline-command) dengan deskripsi apa yang Anda inginkan mengonfigurasi semua ini untuk Anda secara otomatis.</Note>89<Note>Menjalankan [`/statusline`](#use-the-%2Fstatusline-command) dengan deskripsi apa yang Anda inginkan mengonfigurasi semua ini untuk Anda secara otomatis.</Note>

78 90 

79Contoh-contoh ini menggunakan skrip Bash, yang berfungsi di macOS dan Linux. Di Windows, lihat [Konfigurasi Windows](#windows-configuration) untuk contoh PowerShell dan Git Bash.91Contoh-contoh ini menggunakan skrip Bash, yang berfungsi di macOS dan Linux. Di Windows, lihat [Konfigurasi Windows](#windows-configuration) untuk contoh PowerShell dan Git Bash.

80 92 


128 </Step>140 </Step>

129</Steps>141</Steps>

130 142 

131## Bagaimana baris status bekerja143<h2 id="how-status-lines-work">

144 Bagaimana baris status bekerja

145</h2>

132 146 

133Claude Code menjalankan skrip Anda dan menyalurkan [data sesi JSON](#available-data) ke dalamnya melalui stdin. Skrip Anda membaca JSON, mengekstrak apa yang dibutuhkan, dan mencetak teks ke stdout. Claude Code menampilkan apa pun yang dicetak skrip Anda.147Claude Code menjalankan skrip Anda dan menyalurkan [data sesi JSON](#available-data) ke dalamnya melalui stdin. Skrip Anda membaca JSON, mengekstrak apa yang dibutuhkan, dan mencetak teks ke stdout. Claude Code menampilkan apa pun yang dicetak skrip Anda.

134 148 


150 164 

151<Note>Baris status berjalan secara lokal dan tidak menggunakan token API. Itu sementara bersembunyi selama interaksi UI tertentu, termasuk saran pelengkapan otomatis, menu bantuan, dan prompt izin.</Note>165<Note>Baris status berjalan secara lokal dan tidak menggunakan token API. Itu sementara bersembunyi selama interaksi UI tertentu, termasuk saran pelengkapan otomatis, menu bantuan, dan prompt izin.</Note>

152 166 

153## Data yang tersedia167<h2 id="available-data">

168 Data yang tersedia

169</h2>

154 170 

155Claude Code mengirim bidang JSON berikut ke skrip Anda melalui stdin:171Claude Code mengirim bidang JSON berikut ke skrip Anda melalui stdin:

156 172 


297 Tangani bidang yang hilang dengan akses bersyarat dan nilai null dengan default fallback dalam skrip Anda.313 Tangani bidang yang hilang dengan akses bersyarat dan nilai null dengan default fallback dalam skrip Anda.

298</Accordion>314</Accordion>

299 315 

300### Bidang jendela konteks316<h3 id="context-window-fields">

317 Bidang jendela konteks

318</h3>

301 319 

302Objek `context_window` menjelaskan jendela konteks langsung dari respons API terbaru. Mulai dari v2.1.132, `total_input_tokens` dan `total_output_tokens` mencerminkan penggunaan konteks saat ini, bukan total sesi kumulatif.320Objek `context_window` menjelaskan jendela konteks langsung dari respons API terbaru. Mulai dari v2.1.132, `total_input_tokens` dan `total_output_tokens` mencerminkan penggunaan konteks saat ini, bukan total sesi kumulatif.

303 321 


319 337 

320Objek `current_usage` adalah `null` sebelum panggilan API pertama dalam sesi, dan lagi segera setelah `/compact` hingga panggilan API berikutnya mengisinya kembali.338Objek `current_usage` adalah `null` sebelum panggilan API pertama dalam sesi, dan lagi segera setelah `/compact` hingga panggilan API berikutnya mengisinya kembali.

321 339 

322## Contoh340<h2 id="examples">

341 Contoh

342</h2>

323 343 

324Contoh-contoh ini menunjukkan pola baris status umum. Untuk menggunakan contoh apa pun:344Contoh-contoh ini menunjukkan pola baris status umum. Untuk menggunakan contoh apa pun:

325 345 


329 349 

330Contoh Bash menggunakan [`jq`](https://jqlang.github.io/jq/) untuk mengurai JSON. Python dan Node.js memiliki penguraian JSON bawaan.350Contoh Bash menggunakan [`jq`](https://jqlang.github.io/jq/) untuk mengurai JSON. Python dan Node.js memiliki penguraian JSON bawaan.

331 351 

332### Penggunaan jendela konteks352<h3 id="context-window-usage">

353 Penggunaan jendela konteks

354</h3>

333 355 

334Tampilkan model saat ini dan penggunaan jendela konteks dengan bilah kemajuan visual. Setiap skrip membaca JSON dari stdin, mengekstrak bidang `used_percentage`, dan membangun bilah 10 karakter di mana blok yang diisi (▓) mewakili penggunaan:356Tampilkan model saat ini dan penggunaan jendela konteks dengan bilah kemajuan visual. Setiap skrip membaca JSON dari stdin, mengekstrak bidang `used_percentage`, dan membangun bilah 10 karakter di mana blok yang diisi (▓) mewakili penggunaan:

335 357 


396 ```418 ```

397</CodeGroup>419</CodeGroup>

398 420 

399### Status git dengan warna421<h3 id="git-status-with-colors">

422 Status git dengan warna

423</h3>

400 424 

401Tampilkan cabang git dengan indikator berkode warna untuk file yang dipentingkan dan dimodifikasi. Skrip ini menggunakan [kode escape ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) untuk warna terminal: `\033[32m` adalah hijau, `\033[33m` adalah kuning, dan `\033[0m` mengatur ulang ke default.425Tampilkan cabang git dengan indikator berkode warna untuk file yang dipentingkan dan dimodifikasi. Skrip ini menggunakan [kode escape ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) untuk warna terminal: `\033[32m` adalah hijau, `\033[33m` adalah kuning, dan `\033[0m` mengatur ulang ke default.

402 426 


490 ```514 ```

491</CodeGroup>515</CodeGroup>

492 516 

493### Pelacakan biaya dan durasi517<h3 id="cost-and-duration-tracking">

518 Pelacakan biaya dan durasi

519</h3>

494 520 

495Lacak biaya API sesi dan waktu yang telah berlalu. Bidang `cost.total_cost_usd` mengakumulasi biaya semua panggilan API dalam sesi saat ini. Bidang `cost.total_duration_ms` mengukur total waktu yang telah berlalu sejak sesi dimulai, sementara `cost.total_api_duration_ms` melacak hanya waktu yang dihabiskan menunggu respons API.521Lacak biaya API sesi dan waktu yang telah berlalu. Bidang `cost.total_cost_usd` mengakumulasi biaya semua panggilan API dalam sesi saat ini. Bidang `cost.total_duration_ms` mengukur total waktu yang telah berlalu sejak sesi dimulai, sementara `cost.total_api_duration_ms` melacak hanya waktu yang dihabiskan menunggu respons API.

496 522 


551 ```577 ```

552</CodeGroup>578</CodeGroup>

553 579 

554### Tampilkan beberapa baris580<h3 id="display-multiple-lines">

581 Tampilkan beberapa baris

582</h3>

555 583 

556Skrip Anda dapat menampilkan beberapa baris untuk membuat tampilan yang lebih kaya. Setiap pernyataan `echo` menghasilkan baris terpisah di area status.584Skrip Anda dapat menampilkan beberapa baris untuk membuat tampilan yang lebih kaya. Setiap pernyataan `echo` menghasilkan baris terpisah di area status.

557 585 


658 ```686 ```

659</CodeGroup>687</CodeGroup>

660 688 

661### Tautan yang dapat diklik689<h3 id="clickable-links">

690 Tautan yang dapat diklik

691</h3>

662 692 

663Contoh ini membuat tautan yang dapat diklik ke repositori GitHub Anda. Itu membaca URL remote git, mengonversi format SSH ke HTTPS dengan `sed`, dan membungkus nama repo dalam kode escape OSC 8. Tahan Cmd (macOS) atau Ctrl (Windows/Linux) dan klik untuk membuka tautan di browser Anda.693Contoh ini membuat tautan yang dapat diklik ke repositori GitHub Anda. Itu membaca URL remote git, mengonversi format SSH ke HTTPS dengan `sed`, dan membungkus nama repo dalam kode escape OSC 8. Tahan Cmd (macOS) atau Ctrl (Windows/Linux) dan klik untuk membuka tautan di browser Anda.

664 694 


738 ```768 ```

739</CodeGroup>769</CodeGroup>

740 770 

741### Penggunaan batas laju771<h3 id="rate-limit-usage">

772 Penggunaan batas laju

773</h3>

742 774 

743Tampilkan penggunaan batas laju langganan Claude.ai dalam baris status. Objek `rate_limits` berisi `five_hour` (jendela bergulir 5 jam) dan `seven_day` (jendela mingguan). Setiap jendela menyediakan `used_percentage` (0-100) dan `resets_at` (detik epoch Unix ketika jendela direset).775Tampilkan penggunaan batas laju langganan Claude.ai dalam baris status. Objek `rate_limits` berisi `five_hour` (jendela bergulir 5 jam) dan `seven_day` (jendela mingguan). Setiap jendela menyediakan `used_percentage` (0-100) dan `resets_at` (detik epoch Unix ketika jendela direset).

744 776 


804 ```836 ```

805</CodeGroup>837</CodeGroup>

806 838 

807### Cache operasi yang mahal839<h3 id="cache-expensive-operations">

840 Cache operasi yang mahal

841</h3>

808 842 

809Skrip baris status Anda berjalan sering selama sesi aktif. Perintah seperti `git status` atau `git diff` dapat lambat, terutama di repositori besar. Contoh ini menyimpan informasi git ke file temp dan hanya menyegarkannya setiap 5 detik.843Skrip baris status Anda berjalan sering selama sesi aktif. Perintah seperti `git status` atau `git diff` dapat lambat, terutama di repositori besar. Contoh ini menyimpan informasi git ke file temp dan hanya menyegarkannya setiap 5 detik.

810 844 


935 ```969 ```

936</CodeGroup>970</CodeGroup>

937 971 

938### Konfigurasi Windows972<h3 id="windows-configuration">

973 Konfigurasi Windows

974</h3>

939 975 

940Di Windows, Claude Code menjalankan perintah baris status melalui Git Bash ketika Git Bash diinstal, atau melalui PowerShell ketika Git Bash tidak ada.976Di Windows, Claude Code menjalankan perintah baris status melalui Git Bash ketika Git Bash diinstal, atau melalui PowerShell ketika Git Bash tidak ada.

941 977 


990 ```1026 ```

991</CodeGroup>1027</CodeGroup>

992 1028 

993## Baris status subagen1029<h2 id="subagent-status-lines">

1030 Baris status subagen

1031</h2>

994 1032 

995Pengaturan `subagentStatusLine` merender badan baris khusus untuk setiap [subagen](/id/sub-agents) yang ditampilkan di panel agen di bawah prompt. Gunakan untuk mengganti baris default `name · description · token count` dengan pemformatan Anda sendiri.1033Pengaturan `subagentStatusLine` merender badan baris khusus untuk setiap [subagen](/id/sub-agents) yang ditampilkan di panel agen di bawah prompt. Gunakan untuk mengganti baris default `name · description · token count` dengan pemformatan Anda sendiri.

996 1034 


1009 1047 

1010Gerbang kepercayaan dan `disableAllHooks` yang sama yang berlaku untuk `statusLine` berlaku di sini. Plugin dapat mengirimkan `subagentStatusLine` default dalam [`settings.json`](/id/plugins-reference#standard-plugin-layout) mereka.1048Gerbang kepercayaan dan `disableAllHooks` yang sama yang berlaku untuk `statusLine` berlaku di sini. Plugin dapat mengirimkan `subagentStatusLine` default dalam [`settings.json`](/id/plugins-reference#standard-plugin-layout) mereka.

1011 1049 

1012## Tips1050<h2 id="tips">

1051 Tips

1052</h2>

1013 1053 

1014* **Uji dengan input mock**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`1054* **Uji dengan input mock**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`

1015* **Jaga output tetap pendek**: bilah status memiliki lebar terbatas, jadi output panjang mungkin dipotong atau membungkus dengan canggung1055* **Jaga output tetap pendek**: bilah status memiliki lebar terbatas, jadi output panjang mungkin dipotong atau membungkus dengan canggung


1017 1057 

1018Proyek komunitas seperti [ccstatusline](https://github.com/sirmalloc/ccstatusline) dan [starship-claude](https://github.com/martinemde/starship-claude) menyediakan konfigurasi pra-bangun dengan tema dan fitur tambahan.1058Proyek komunitas seperti [ccstatusline](https://github.com/sirmalloc/ccstatusline) dan [starship-claude](https://github.com/martinemde/starship-claude) menyediakan konfigurasi pra-bangun dengan tema dan fitur tambahan.

1019 1059 

1020## Troubleshooting1060<h2 id="troubleshooting">

1061 Troubleshooting

1062</h2>

1021 1063 

1022**Baris status tidak muncul**1064**Baris status tidak muncul**

1023 1065 

sub-agents.md +50 −20

Details

61 * **Tools**: Alat hanya-baca (akses ditolak ke alat Write dan Edit)61 * **Tools**: Alat hanya-baca (akses ditolak ke alat Write dan Edit)

62 * **Purpose**: Penelitian basis kode untuk perencanaan62 * **Purpose**: Penelitian basis kode untuk perencanaan

63 63 

64 Ketika Anda dalam plan mode dan Claude perlu memahami basis kode Anda, Claude mendelegasikan penelitian ke subagent Plan. Ini mencegah nesting tak terbatas (subagent tidak dapat menelurkan subagent lain) sambil tetap mengumpulkan konteks yang diperlukan.64 Ketika Anda dalam plan mode dan Claude perlu memahami basis kode Anda, Claude mendelegasikan penelitian ke subagent Plan sehingga output eksplorasi tetap dalam jendela konteks terpisah sementara percakapan utama tetap hanya-baca.

65 </Tab>65 </Tab>

66 66 

67 <Tab title="General-purpose">67 <Tab title="General-purpose">


84 </Tab>84 </Tab>

85</Tabs>85</Tabs>

86 86 

87Subagent bawaan selalu terdaftar dalam sesi interaktif. Untuk memblokir tipe bawaan tertentu, tambahkan ke `permissions.deny` seperti yang ditunjukkan dalam [Nonaktifkan subagent tertentu](#disable-specific-subagents). Untuk mencegah Claude mendelegasikan ke subagent apa pun, tolak alat `Agent` itu sendiri dengan [`permissions.deny`](/id/permissions#tool-specific-permission-rules). Dalam [mode non-interaktif](/id/headless) dan [Agent SDK](/id/agent-sdk/overview), atur [`CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1`](/id/env-vars) untuk menghapus semua tipe bawaan dan menyediakan hanya milik Anda sendiri.

88 

87Selain subagent bawaan ini, Anda dapat membuat subagent Anda sendiri dengan prompt khusus, pembatasan alat, mode izin, hooks, dan skills. Bagian berikut menunjukkan cara memulai dan menyesuaikan subagent.89Selain subagent bawaan ini, Anda dapat membuat subagent Anda sendiri dengan prompt khusus, pembatasan alat, mode izin, hooks, dan skills. Bagian berikut menunjukkan cara memulai dan menyesuaikan subagent.

88 90 

89<h2 id="quickstart-create-your-first-subagent">91<h2 id="quickstart-create-your-first-subagent">


158 Gunakan perintah /agents160 Gunakan perintah /agents

159</h3>161</h3>

160 162 

161Perintah `/agents` membuka antarmuka bertab untuk mengelola subagent. Tab **Running** menunjukkan subagent langsung dan memungkinkan Anda membuka atau menghentikannya. Tab **Library** memungkinkan Anda:163Perintah `/agents` membuka antarmuka bertab untuk mengelola subagent. Tab **Running** menunjukkan subagent langsung dan yang baru selesai serta memungkinkan Anda membuka atau menghentikannya. Tab **Library** memungkinkan Anda:

162 164 

163* Melihat semua subagent yang tersedia (bawaan, pengguna, proyek, dan plugin)165* Melihat semua subagent yang tersedia (bawaan, pengguna, proyek, dan plugin)

164* Membuat subagent baru dengan setup terpandu atau generasi Claude166* Membuat subagent baru dengan setup terpandu atau generasi Claude


184 186 

185**Subagent proyek** (`.claude/agents/`) ideal untuk subagent khusus untuk basis kode. Periksa mereka ke kontrol versi sehingga tim Anda dapat menggunakannya dan meningkatkannya secara kolaboratif.187**Subagent proyek** (`.claude/agents/`) ideal untuk subagent khusus untuk basis kode. Periksa mereka ke kontrol versi sehingga tim Anda dapat menggunakannya dan meningkatkannya secara kolaboratif.

186 188 

187Subagent proyek ditemukan dengan berjalan naik dari direktori kerja saat ini. Direktori yang ditambahkan dengan `--add-dir` [memberikan akses file saja](/id/permissions#additional-directories-grant-file-access-not-configuration) dan tidak dipindai untuk subagent. Untuk berbagi subagent di seluruh proyek, gunakan `~/.claude/agents/` atau [plugin](/id/plugins).189Subagent proyek ditemukan dengan berjalan naik dari direktori kerja saat ini, sehingga setiap `.claude/agents/` antara sana dan akar repositori dipindai. {/* min-version: 2.1.178 */}Sejak v2.1.178, ketika lebih dari satu direktori bersarang ini mendefinisikan `name` yang sama, Claude Code menggunakan definisi yang paling dekat dengan direktori kerja.

190 

191Direktori yang ditambahkan dengan `--add-dir` juga dipindai: folder `.claude/agents/` di dalam direktori yang ditambahkan dimuat bersama subagent proyek. Lihat [Direktori tambahan](/id/permissions#additional-directories-grant-file-access-not-configuration) untuk jenis konfigurasi lain mana yang dimuat dari `--add-dir`. Untuk berbagi subagent di seluruh proyek tanpa `--add-dir`, gunakan `~/.claude/agents/` atau [plugin](/id/plugins).

188 192 

189**Subagent pengguna** (`~/.claude/agents/`) adalah subagent pribadi yang tersedia di semua proyek Anda.193**Subagent pengguna** (`~/.claude/agents/`) adalah subagent pribadi yang tersedia di semua proyek Anda.

190 194 


282| `description` | Ya | Kapan Claude harus mendelegasikan ke subagent ini |286| `description` | Ya | Kapan Claude harus mendelegasikan ke subagent ini |

283| `tools` | Tidak | [Alat](#available-tools) yang dapat digunakan subagent. Mewarisi semua alat jika dihilangkan. Untuk memuat Skills ke dalam konteks, gunakan bidang `skills` daripada mencantumkan `Skill` di sini |287| `tools` | Tidak | [Alat](#available-tools) yang dapat digunakan subagent. Mewarisi semua alat jika dihilangkan. Untuk memuat Skills ke dalam konteks, gunakan bidang `skills` daripada mencantumkan `Skill` di sini |

284| `disallowedTools` | Tidak | Alat untuk ditolak, dihapus dari daftar yang diwarisi atau ditentukan |288| `disallowedTools` | Tidak | Alat untuk ditolak, dihapus dari daftar yang diwarisi atau ditentukan |

285| `model` | Tidak | [Model](#choose-a-model) untuk digunakan: `sonnet`, `opus`, `haiku`, ID model lengkap (misalnya, `claude-opus-4-8`), atau `inherit`. Default ke `inherit` |289| `model` | Tidak | [Model](#choose-a-model) untuk digunakan: `sonnet`, `opus`, `haiku`, `fable`, ID model lengkap (misalnya, `claude-opus-4-8`), atau `inherit`. Default ke `inherit` |

286| `permissionMode` | Tidak | [Mode izin](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, atau `plan`. Diabaikan untuk [subagent plugin](#choose-the-subagent-scope) |290| `permissionMode` | Tidak | [Mode izin](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, atau `plan`. Diabaikan untuk [subagent plugin](#choose-the-subagent-scope) |

287| `maxTurns` | Tidak | Jumlah maksimum putaran agentic sebelum subagent berhenti |291| `maxTurns` | Tidak | Jumlah maksimum putaran agentic sebelum subagent berhenti |

288| `skills` | Tidak | [Skills](/id/skills) untuk dimuat ke dalam konteks subagent saat startup. Konten skill lengkap disuntikkan, bukan hanya deskripsi. Subagent masih dapat memanggil project, user, dan plugin skills yang tidak tercantum melalui alat Skill |292| `skills` | Tidak | [Skills](/id/skills) untuk dimuat ke dalam konteks subagent saat startup. Konten skill lengkap disuntikkan, bukan hanya deskripsi. Subagent masih dapat memanggil project, user, dan plugin skills yang tidak tercantum melalui alat Skill |


301 305 

302Bidang `model` mengontrol [model AI](/id/model-config) mana yang digunakan subagent:306Bidang `model` mengontrol [model AI](/id/model-config) mana yang digunakan subagent:

303 307 

304* **Alias model**: Gunakan salah satu alias yang tersedia: `sonnet`, `opus`, atau `haiku`308* **Alias model**: Gunakan salah satu alias yang tersedia: `sonnet`, `opus`, `haiku`, atau `fable`

305* **ID model lengkap**: Gunakan ID model lengkap seperti `claude-opus-4-8` atau `claude-sonnet-4-6`. Menerima nilai yang sama dengan flag `--model`309* **ID model lengkap**: Gunakan ID model lengkap seperti `claude-opus-4-8` atau `claude-sonnet-4-6`. Menerima nilai yang sama dengan flag `--model`

306* **inherit**: Gunakan model yang sama dengan percakapan utama310* **inherit**: Gunakan model yang sama dengan percakapan utama

307* **Dihilangkan**: Jika tidak ditentukan, default ke `inherit` (menggunakan model yang sama dengan percakapan utama)311* **Dihilangkan**: Jika tidak ditentukan, default ke `inherit` (menggunakan model yang sama dengan percakapan utama)


325 329 

326Subagent mewarisi [alat internal](/id/tools-reference) dan alat MCP yang tersedia dalam percakapan utama secara default. Alat berikut bergantung pada UI percakapan utama atau status sesi dan tidak tersedia untuk subagent, bahkan ketika tercantum dalam bidang `tools`:330Subagent mewarisi [alat internal](/id/tools-reference) dan alat MCP yang tersedia dalam percakapan utama secara default. Alat berikut bergantung pada UI percakapan utama atau status sesi dan tidak tersedia untuk subagent, bahkan ketika tercantum dalam bidang `tools`:

327 331 

328* `Agent`

329* `AskUserQuestion`332* `AskUserQuestion`

330* `EnterPlanMode`333* `EnterPlanMode`

331* `ExitPlanMode`, kecuali [`permissionMode`](#permission-modes) subagent adalah `plan`334* `ExitPlanMode`, kecuali [`permissionMode`](#permission-modes) subagent adalah `plan`


354 357 

355Jika keduanya diatur, `disallowedTools` diterapkan terlebih dahulu, kemudian `tools` diselesaikan terhadap kumpulan yang tersisa. Alat yang tercantum di keduanya dihapus.358Jika keduanya diatur, `disallowedTools` diterapkan terlebih dahulu, kemudian `tools` diselesaikan terhadap kumpulan yang tersisa. Alat yang tercantum di keduanya dihapus.

356 359 

360Kedua bidang menerima pola tingkat server MCP selain nama alat yang tepat: `mcp__<server>` atau `mcp__<server>__*` memberikan atau menghapus setiap alat dari server bernama. Dalam `disallowedTools`, `mcp__*` juga menghapus setiap alat MCP dari server apa pun. Contoh ini menghapus setiap alat dari server MCP `github` sambil menyimpan alat dari server lain dan setiap alat bawaan:

361 

362```yaml theme={null}

363---

364name: local-only

365description: Inherits every tool except those from the github MCP server

366disallowedTools: mcp__github

367---

368```

369 

357<h4 id="restrict-which-subagents-can-be-spawned">370<h4 id="restrict-which-subagents-can-be-spawned">

358 Batasi subagent mana yang dapat dihasilkan371 Batasi subagent mana yang dapat dihasilkan

359</h4>372</h4>


378tools: Agent, Read, Bash391tools: Agent, Read, Bash

379```392```

380 393 

381Jika `Agent` dihilangkan dari daftar `tools` sepenuhnya, agen tidak dapat menelurkan subagent apa pun. Pembatasan ini hanya berlaku untuk agen yang berjalan sebagai thread utama dengan `claude --agent`. Subagent tidak dapat menelurkan subagent lain, jadi `Agent(agent_type)` tidak berpengaruh dalam definisi subagent.394Jika `Agent` dihilangkan dari daftar `tools` sepenuhnya, agen tidak dapat menelurkan subagent apa pun.

395 

396Sintaks allowlist `Agent(agent_type)` hanya berlaku untuk agen yang berjalan sebagai thread utama dengan `claude --agent`. Dalam definisi subagent, mencantumkan `Agent` dalam `tools` memungkinkan subagent itu untuk [menelurkan subagent bersarang](#spawn-nested-subagents), tetapi daftar jenis apa pun di dalam tanda kurung diabaikan.

382 397 

383<h4 id="scope-mcp-servers-to-a-subagent">398<h4 id="scope-mcp-servers-to-a-subagent">

384 Cakupan MCP servers ke subagent399 Cakupan MCP servers ke subagent


444| `plan` | Plan mode (eksplorasi hanya-baca) |459| `plan` | Plan mode (eksplorasi hanya-baca) |

445 460 

446<Warning>461<Warning>

447 Gunakan `bypassPermissions` dengan hati-hati. Ini melewati prompt izin, memungkinkan subagent untuk menjalankan operasi tanpa persetujuan, termasuk penulisan ke `.git`, `.config/git`, `.claude`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn`, dan `.mvn`. Penghapusan direktori root dan home seperti `rm -rf /` masih meminta sebagai circuit breaker. Lihat [permission modes](/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) untuk detail.462 Gunakan `bypassPermissions` dengan hati-hati. Ini melewati prompt izin, memungkinkan subagent untuk menjalankan operasi tanpa persetujuan, termasuk penulisan ke `.git`, `.config/git`, `.claude`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn`, dan `.mvn`. Aturan [`ask` eksplisit](/id/permissions#manage-permissions) dan penghapusan direktori root dan home seperti `rm -rf /` masih meminta. Lihat [permission modes](/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) untuk detail.

448</Warning>463</Warning>

449 464 

450Jika induk menggunakan `bypassPermissions` atau `acceptEdits`, ini mengambil alih dan tidak dapat ditimpa. Jika induk menggunakan [auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode), subagent mewarisi auto mode dan `permissionMode` apa pun dalam frontmatternya diabaikan: pengklasifikasi mengevaluasi panggilan alat subagent dengan aturan blok dan izin yang sama dengan sesi induk.465Jika induk menggunakan `bypassPermissions` atau `acceptEdits`, ini mengambil alih dan tidak dapat ditimpa. Jika induk menggunakan [auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode), subagent mewarisi auto mode dan `permissionMode` apa pun dalam frontmatternya diabaikan: pengklasifikasi mengevaluasi panggilan alat subagent dengan aturan blok dan izin yang sama dengan sesi induk.


761 776 

762Untuk menonaktifkan semua fungsionalitas background task, atur variabel lingkungan `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` ke `1`. Lihat [Environment variables](/id/env-vars).777Untuk menonaktifkan semua fungsionalitas background task, atur variabel lingkungan `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` ke `1`. Lihat [Environment variables](/id/env-vars).

763 778 

764Ketika [`CLAUDE_CODE_FORK_SUBAGENT`](#fork-the-current-conversation) diatur, setiap spawn subagent berjalan di background terlepas dari bidang `background`. Fork masih menampilkan prompt izin di terminal Anda saat terjadi; subagent bernama auto-deny apa pun yang sebaliknya akan meminta, seperti dijelaskan di atas.779Ketika [`CLAUDE_CODE_FORK_SUBAGENT`](#fork-the-current-conversation) diatur ke `1`, setiap spawn subagent berjalan di background terlepas dari bidang `background`. Fork masih menampilkan prompt izin di terminal Anda saat terjadi; subagent bernama auto-deny apa pun yang sebaliknya akan meminta, seperti dijelaskan di atas.

765 780 

766<h3 id="common-patterns">781<h3 id="common-patterns">

767 Pola umum782 Pola umum


826 841 

827Untuk pertanyaan cepat tentang sesuatu yang sudah ada dalam percakapan Anda, gunakan [`/btw`](/id/interactive-mode#side-questions-with-%2Fbtw) sebagai gantinya dari subagent. Ini melihat konteks penuh Anda tetapi tidak memiliki akses alat, dan jawabannya dibuang daripada ditambahkan ke riwayat.842Untuk pertanyaan cepat tentang sesuatu yang sudah ada dalam percakapan Anda, gunakan [`/btw`](/id/interactive-mode#side-questions-with-%2Fbtw) sebagai gantinya dari subagent. Ini melihat konteks penuh Anda tetapi tidak memiliki akses alat, dan jawabannya dibuang daripada ditambahkan ke riwayat.

828 843 

829<Note>844<h3 id="spawn-nested-subagents">

830 Subagent tidak dapat menelurkan subagent lain. Jika alur kerja Anda memerlukan delegasi bersarang, gunakan [Skills](/id/skills) atau [rantai subagent](#chain-subagents) dari percakapan utama.845 Hasilkan subagent bersarang

831</Note>846</h3>

847 

848{/* min-version: 2.1.172 */}Mulai dari Claude Code v2.1.172, subagent dapat menghasilkan subagent-nya sendiri. Gunakan ini ketika tugas yang didelegasikan itu sendiri terbagi menjadi subtask paralel, seperti subagent reviewer yang mengirimkan verifier per temuan, sehingga output perantara tidak pernah mencapai percakapan utama Anda. Hanya ringkasan subagent tingkat atas yang kembali kepada Anda.

849 

850Subagent bersarang dikonfigurasi dengan cara yang sama seperti subagent tingkat atas dan diselesaikan dari [scope](#choose-the-subagent-scope) yang sama. Panel subagent di bawah input prompt menunjukkan pohon lengkap: setiap baris menampilkan hitungan `(+N)` keturunan, dan membuka baris menunjukkan anak langsung subagent itu dengan jalur kembali ke `main`. Tab Running dalam [`/agents`](#use-the-%2Fagents-command) mencantumkan subagent yang berjalan sebagai daftar datar.

851 

852Kedalaman dihitung sebagai jumlah level subagent di bawah percakapan utama, terlepas dari apakah setiap level berjalan di [foreground atau background](#run-subagents-in-foreground-or-background):

853 

854* **Subagent foreground**: dapat menghasilkan pada kedalaman apa pun. Setiap level memblokir induknya sampai kembali, jadi rantai membatasi diri sendiri: percakapan utama menunggu seluruh rantai.

855* **Subagent background**: subagent background pada kedalaman lima tidak menerima alat Agent dan tidak dapat menghasilkan lebih lanjut. Batasnya tetap dan tidak dapat dikonfigurasi, dan ada untuk mencegah pohon bersamaan yang liar.

856 

857Untuk mencegah subagent tertentu menghasilkan yang lain, hilangkan `Agent` dari daftar [`tools`](#available-tools) atau tambahkan ke `disallowedTools`.

858 

859[Fork](#fork-the-current-conversation) masih tidak dapat menghasilkan fork lain. Ini dapat menghasilkan jenis subagent lain, dan mereka dihitung menuju batas kedalaman.

832 860 

833<h3 id="manage-subagent-context">861<h3 id="manage-subagent-context">

834 Kelola konteks subagent862 Kelola konteks subagent


860 888 

861Subagent yang dilanjutkan mempertahankan riwayat percakapan lengkap mereka, termasuk semua panggilan alat sebelumnya, hasil, dan penalaran. Subagent melanjutkan tepat di mana ia berhenti daripada memulai segar.889Subagent yang dilanjutkan mempertahankan riwayat percakapan lengkap mereka, termasuk semua panggilan alat sebelumnya, hasil, dan penalaran. Subagent melanjutkan tepat di mana ia berhenti daripada memulai segar.

862 890 

863Ketika subagent selesai, Claude menerima ID agennya. Claude menggunakan alat `SendMessage` dengan ID agen sebagai bidang `to` untuk melanjutkannya. Alat `SendMessage` hanya tersedia ketika [tim agen](/id/agent-teams) diaktifkan melalui `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.891Ketika subagent selesai, Claude menerima ID agennya. Agen bawaan Explore dan Plan adalah one-shot dan tidak mengembalikan ID agen, jadi mereka tidak dapat dilanjutkan; gunakan `general-purpose` atau subagent khusus ketika Anda perlu melanjutkan pekerjaan. Claude menggunakan alat `SendMessage` dengan ID agen sebagai bidang `to` untuk melanjutkannya. Alat `SendMessage` hanya tersedia ketika [tim agen](/id/agent-teams) diaktifkan melalui `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`.

864 892 

865Untuk melanjutkan subagent, minta Claude untuk melanjutkan pekerjaan sebelumnya:893Untuk melanjutkan subagent, minta Claude untuk melanjutkan pekerjaan sebelumnya:

866 894 


886 Auto-compaction914 Auto-compaction

887</h4>915</h4>

888 916 

889Subagent mendukung pemadatan otomatis menggunakan logika yang sama dengan percakapan utama. Secara default, auto-compaction dipicu pada kapasitas sekitar 95%. Untuk memicu pemadatan lebih awal, atur `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` ke persentase yang lebih rendah (misalnya, `50`). Lihat [environment variables](/id/env-vars) untuk detail.917Subagent mendukung pemadatan otomatis menggunakan logika yang sama dengan percakapan utama. Pemadatan dipicu di bawah kondisi yang sama, dan `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` berlaku untuk subagent juga. Lihat [environment variables](/id/env-vars) untuk kapan override berlaku.

890 918 

891Peristiwa pemadatan dicatat dalam file transkrip subagent:919Peristiwa pemadatan dicatat dalam file transkrip subagent:

892 920 


908</h2>936</h2>

909 937 

910<Note>938<Note>

911 Subagent yang di-fork memerlukan Claude Code v2.1.117 atau lebih baru. {/* min-version: 2.1.161 */}Mulai dari v2.1.161 perintah `/fork` diaktifkan secara default; pada versi sebelumnya memerlukan pengaturan variabel lingkungan [`CLAUDE_CODE_FORK_SUBAGENT`](/id/env-vars) ke `1`. Membuat fork menjadi perilaku spawn *default* model bersifat eksperimental dan mungkin berubah di rilis mendatang; aktifkan dengan menetapkan variabel yang sama. Variabel ini dihormati dalam mode interaktif dan melalui SDK atau `claude -p`.939 Subagent yang di-fork memerlukan Claude Code v2.1.117 atau lebih baru. {/* min-version: 2.1.161 */}Mulai dari v2.1.161 perintah `/fork` diaktifkan secara default; pada versi sebelumnya memerlukan pengaturan variabel lingkungan [`CLAUDE_CODE_FORK_SUBAGENT`](/id/env-vars) ke `1`. Membiarkan Claude sendiri menelurkan fork bersifat eksperimental dan mungkin berubah di rilis mendatang. Kemampuan ini juga dapat diaktifkan dalam sesi interaktif sebagai bagian dari peluncuran bertahap.

912</Note>940</Note>

913 941 

914Fork adalah subagent yang mewarisi seluruh percakapan sejauh ini daripada memulai segar. Ini menghilangkan isolasi input yang sebaliknya disediakan subagent: fork melihat prompt sistem yang sama, alat, model, dan riwayat pesan sebagai sesi utama, sehingga Anda dapat menyerahkan tugas sampingan tanpa menjelaskan situasinya lagi. Panggilan alat fork sendiri masih tetap keluar dari percakapan Anda dan hanya hasil akhirnya yang kembali, sehingga jendela konteks utama Anda tetap bersih. Gunakan fork ketika subagent bernama memerlukan terlalu banyak latar belakang untuk berguna, atau ketika Anda ingin mencoba beberapa pendekatan secara paralel dari titik awal yang sama.942Fork adalah subagent yang mewarisi seluruh percakapan sejauh ini daripada memulai segar. Ini menghilangkan isolasi input yang sebaliknya disediakan subagent: fork melihat prompt sistem yang sama, alat, model, dan riwayat pesan sebagai sesi utama, sehingga Anda dapat menyerahkan tugas sampingan tanpa menjelaskan situasinya lagi. Panggilan alat fork sendiri masih tetap keluar dari percakapan Anda dan hanya hasil akhirnya yang kembali, sehingga jendela konteks utama Anda tetap bersih. Gunakan fork ketika subagent bernama memerlukan terlalu banyak latar belakang untuk berguna, atau ketika Anda ingin mencoba beberapa pendekatan secara paralel dari titik awal yang sama.

915 943 

916Menetapkan `CLAUDE_CODE_FORK_SUBAGENT` mengubah Claude Code dalam dua cara:944Untuk mengontrol mode fork terlepas dari peluncuran bertahap, atur [`CLAUDE_CODE_FORK_SUBAGENT`](/id/env-vars) ke `1` untuk mengaktifkannya secara eksplisit atau ke `0` untuk menonaktifkannya. Variabel ini dihormati dalam mode interaktif dan melalui SDK atau `claude -p`.

945 

946Mengaktifkan mode fork mengubah Claude Code dalam dua cara:

917 947 

918* Claude menelurkan fork setiap kali Claude akan menggunakan subagent [general-purpose](#built-in-subagents). Subagent bernama seperti Explore masih menelurkan seperti sebelumnya.948* Claude dapat menelurkan fork dengan meminta tipe subagent `fork` secara eksplisit. Spawn tanpa tipe subagent masih menggunakan subagent [general-purpose](#built-in-subagents), dan subagent bernama seperti Explore masih menelurkan seperti sebelumnya.

919* Setiap spawn subagent berjalan di [background](#run-subagents-in-foreground-or-background), apakah itu fork atau subagent bernama. Atur `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` ke `1` untuk menjaga spawn tetap sinkron.949* Setiap spawn subagent berjalan di [background](#run-subagents-in-foreground-or-background), apakah itu fork atau subagent bernama. Atur `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` ke `1` untuk menjaga spawn tetap sinkron.

920 950 

921Anda dapat memulai fork sendiri dengan `/fork` diikuti oleh direktif, dengan atau tanpa variabel yang ditetapkan. Claude Code memberi nama fork dari kata-kata pertama direktif. Contoh berikut mem-fork percakapan untuk draft kasus uji sementara Anda melanjutkan dengan implementasi dalam sesi utama:951Anda dapat memulai fork sendiri dengan `/fork` diikuti oleh direktif, dengan atau tanpa variabel yang ditetapkan. Claude Code memberi nama fork dari kata-kata pertama direktif. Contoh berikut mem-fork percakapan untuk draft kasus uji sementara Anda melanjutkan dengan implementasi dalam sesi utama:


948| | Fork | Subagent bernama |978| | Fork | Subagent bernama |

949| :--------------------- | :----------------------------- | :-------------------------------------------------------------------------------------- |979| :--------------------- | :----------------------------- | :-------------------------------------------------------------------------------------- |

950| Konteks | Riwayat percakapan lengkap | Konteks segar dengan prompt yang Anda lewatkan |980| Konteks | Riwayat percakapan lengkap | Konteks segar dengan prompt yang Anda lewatkan |

951| Prompt sistem dan alat | Sama dengan sesi utama | Dari [file definisi](#write-subagent-files) subagent |981| Prompt sistem dan alat | Sama dengan sesi utama | Dari file definisi subagent |

952| Model | Sama dengan sesi utama | Dari bidang `model` subagent |982| Model | Sama dengan sesi utama | Dari bidang `model` subagent |

953| Izin | Prompt muncul di terminal Anda | [Pra-disetujui](#run-subagents-in-foreground-or-background) saat berjalan di background |983| Izin | Prompt muncul di terminal Anda | [Pra-disetujui](#run-subagents-in-foreground-or-background) saat berjalan di background |

954| Prompt cache | Dibagikan dengan sesi utama | Cache terpisah |984| Prompt cache | Dibagikan dengan sesi utama | Cache terpisah |

955 985 

956Karena prompt sistem fork dan definisi alat identik dengan induk, permintaan pertamanya menggunakan kembali cache prompt induk. Ini membuat forking lebih murah daripada menelurkan subagent segar untuk tugas yang memerlukan konteks yang sama.986Karena prompt sistem fork dan definisi alat identik dengan induk, permintaan pertamanya menggunakan kembali cache prompt induk [prompt cache](/id/prompt-caching#subagents-and-the-cache). Ini membuat forking lebih murah daripada menelurkan subagent segar untuk tugas yang memerlukan konteks yang sama.

957 987 

958Ketika Claude menelurkan fork melalui alat Agent, Claude dapat melewatkan `isolation: "worktree"` sehingga edit file fork ditulis ke git worktree terpisah daripada checkout Anda.988Ketika Claude menelurkan fork melalui alat Agent, Claude dapat melewatkan `isolation: "worktree"` sehingga edit file fork ditulis ke git worktree terpisah daripada checkout Anda.

959 989 


961 Keterbatasan991 Keterbatasan

962</h3>992</h3>

963 993 

964Menetapkan `CLAUDE_CODE_FORK_SUBAGENT=1` mengaktifkan fork mode dalam sesi interaktif, [non-interactive mode](/id/headless), dan Agent SDK. Fork tidak dapat menelurkan fork lebih lanjut.994Menetapkan `CLAUDE_CODE_FORK_SUBAGENT=1` mengaktifkan fork mode dalam sesi interaktif, [non-interactive mode](/id/headless), dan Agent SDK; menetapkannya ke `0` menonaktifkan fork mode di mana-mana, termasuk peluncuran server-side apa pun. Fork tidak dapat menelurkan fork lebih lanjut.

965 995 

966<h2 id="example-subagents">996<h2 id="example-subagents">

967 Contoh subagent997 Contoh subagent

Details

6 6 

7> Pelajari bagaimana Claude Code dapat terintegrasi dengan berbagai layanan pihak ketiga dan infrastruktur untuk memenuhi persyaratan penyebaran enterprise.7> Pelajari bagaimana Claude Code dapat terintegrasi dengan berbagai layanan pihak ketiga dan infrastruktur untuk memenuhi persyaratan penyebaran enterprise.

8 8 

9export const ContactSalesCard = ({surface}) => {

10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;

11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">

12 <line x1="5" y1="12" x2="19" y2="12" />

13 <polyline points="12 5 19 12 12 19" />

14 </svg>;

15 const STYLES = `

16.cc-cs {

17 --cs-slate: #141413;

18 --cs-clay: #d97757;

19 --cs-clay-deep: #c6613f;

20 --cs-gray-000: #ffffff;

21 --cs-gray-700: #3d3d3a;

22 --cs-border-default: rgba(31, 30, 29, 0.15);

23 font-family: inherit;

24}

25.dark .cc-cs {

26 --cs-slate: #f0eee6;

27 --cs-gray-000: #262624;

28 --cs-gray-700: #bfbdb4;

29 --cs-border-default: rgba(240, 238, 230, 0.14);

30}

31.cc-cs-card {

32 display: flex; align-items: center; justify-content: space-between;

33 gap: 16px; padding: 14px 16px; margin: 0;

34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);

35 border-radius: 8px; flex-wrap: wrap;

36}

37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }

38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }

39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

40.cc-cs-btn-clay {

41 display: inline-flex; align-items: center; gap: 8px;

42 background: var(--cs-clay-deep); color: #fff; border: none;

43 border-radius: 8px; padding: 8px 14px;

44 font-size: 13px; font-weight: 500;

45 transition: background-color 0.15s; white-space: nowrap;

46}

47.cc-cs-btn-clay:hover { background: var(--cs-clay); }

48.cc-cs-btn-ghost {

49 display: inline-flex; align-items: center; gap: 8px;

50 background: transparent; color: var(--cs-gray-700);

51 border: 0.5px solid var(--cs-border-default);

52 border-radius: 8px; padding: 8px 14px;

53 font-size: 13px; font-weight: 500;

54}

55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }

56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }

57@media (max-width: 720px) {

58 .cc-cs-actions { width: 100%; }

59}

60`;

61 return <div className="cc-cs not-prose">

62 <style>{STYLES}</style>

63 <div className="cc-cs-card">

64 <div className="cc-cs-text">

65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.

66 </div>

67 <div className="cc-cs-actions">

68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">

69 View plans

70 </a>

71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">

72 Contact sales {iconArrowRight()}

73 </a>

74 </div>

75 </div>

76 </div>;

77};

78 

9Organisasi dapat menyebarkan Claude Code melalui Anthropic secara langsung atau melalui penyedia cloud. Halaman ini membantu Anda memilih konfigurasi yang tepat.79Organisasi dapat menyebarkan Claude Code melalui Anthropic secara langsung atau melalui penyedia cloud. Halaman ini membantu Anda memilih konfigurasi yang tepat.

10 80 

81<ContactSalesCard surface="third_party_overview" />

82 

11<h2 id="compare-deployment-options">83<h2 id="compare-deployment-options">

12 Bandingkan opsi penyebaran84 Bandingkan opsi penyebaran

13</h2>85</h2>


58 130 

59 <tr>131 <tr>

60 <td>Wilayah</td>132 <td>Wilayah</td>

61 <td>[Negara](https://www.anthropic.com/supported-countries) yang didukung</td>133 <td>Didukung [negara](https://www.anthropic.com/supported-countries)</td>

62 <td>[Negara](https://www.anthropic.com/supported-countries) yang didukung</td>134 <td>Didukung [negara](https://www.anthropic.com/supported-countries)</td>

63 <td>[Wilayah](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html) AWS yang beragam</td>135 <td>Beragam [wilayah](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html) AWS</td>

64 <td>Wilayah AWS yang beragam</td>136 <td>Beragam wilayah AWS</td>

65 <td>[Wilayah](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations) GCP yang beragam</td>137 <td>Beragam [wilayah](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations) GCP</td>

66 <td>[Wilayah](https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/) Azure yang beragam</td>138 <td>Beragam [wilayah](https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/) Azure</td>

67 </tr>139 </tr>

68 140 

69 <tr>141 <tr>


271 Versi model pin untuk penyedia cloud343 Versi model pin untuk penyedia cloud

272</h3>344</h3>

273 345 

274Jika Anda menyebarkan melalui [Bedrock](/id/amazon-bedrock), [Vertex AI](/id/google-vertex-ai), [Foundry](/id/microsoft-foundry), atau [Claude Platform on AWS](/id/claude-platform-on-aws), pin versi model tertentu menggunakan `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`, dan `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Tanpa pinning, alias model menyelesaikan versi terbaru, yang mungkin belum diaktifkan di akun Anda ketika Anthropic merilis pembaruan. Pinning memungkinkan Anda mengontrol kapan pengguna Anda pindah ke model baru. Lihat [Konfigurasi model](/id/model-config#pin-models-for-third-party-deployments) untuk apa yang dilakukan setiap penyedia ketika versi terbaru tidak tersedia.346Jika Anda menyebarkan melalui [Bedrock](/id/amazon-bedrock), [Vertex AI](/id/google-vertex-ai), [Foundry](/id/microsoft-foundry), atau [Claude Platform on AWS](/id/claude-platform-on-aws), pin versi model tertentu menggunakan `ANTHROPIC_DEFAULT_FABLE_MODEL`, `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`, dan `ANTHROPIC_DEFAULT_HAIKU_MODEL`. Tanpa pinning, alias model menyelesaikan ke default bawaan Claude Code untuk penyedia tersebut, yang dapat tertinggal dari rilis terbaru dan mungkin belum diaktifkan di akun Anda. Pinning memungkinkan Anda mengontrol kapan pengguna Anda pindah ke model baru. Lihat [Konfigurasi model](/id/model-config#pin-models-for-third-party-deployments) untuk apa yang dilakukan setiap penyedia ketika default tidak tersedia.

275 347 

276<h3 id="configure-security-policies">348<h3 id="configure-security-policies">

277 Konfigurasi kebijakan keamanan349 Konfigurasi kebijakan keamanan

Details

44| `TaskOutput` | (Tidak digunakan lagi) Mengambil output dari tugas latar belakang. Lebih suka `Read` pada jalur file output tugas | Tidak |44| `TaskOutput` | (Tidak digunakan lagi) Mengambil output dari tugas latar belakang. Lebih suka `Read` pada jalur file output tugas | Tidak |

45| `TaskStop` | Membunuh tugas latar belakang yang sedang berjalan berdasarkan ID | Tidak |45| `TaskStop` | Membunuh tugas latar belakang yang sedang berjalan berdasarkan ID | Tidak |

46| `TaskUpdate` | Memperbarui status tugas, dependensi, detail, atau menghapus tugas | Tidak |46| `TaskUpdate` | Memperbarui status tugas, dependensi, detail, atau menghapus tugas | Tidak |

47| `TeamCreate` | Membuat [agent team](/id/agent-teams) dengan beberapa anggota tim. Hanya tersedia saat `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` diatur | Tidak |

48| `TeamDelete` | Membubarkan agent team dan membersihkan proses anggota tim. Hanya tersedia saat `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` diatur | Tidak |

49| `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 |47| `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 |

50| `ToolSearch` | Mencari dan memuat tools tertunda saat [pencarian tool](/id/mcp#scale-with-mcp-tool-search) diaktifkan | Tidak |48| `ToolSearch` | Mencari dan memuat tools tertunda saat [pencarian tool](/id/mcp#scale-with-mcp-tool-search) diaktifkan | Tidak |

51| `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 |49| `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 |


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

71 69 

72| Format Aturan | Berlaku untuk | Detail |70| Format Aturan | Berlaku untuk | Detail |

73| :----------------------------- | :------------------------ | :----------------------------------------------------------------- |71| :----------------------------- | :------------------------ | :------------------------------------------------------------------------- |

74| `Bash(npm run *)` | Bash, Monitor | [Pencocokan pola perintah](/id/permissions#bash) |72| `Bash(npm run *)` | Bash, Monitor | [Pencocokan pola perintah](/id/permissions#bash) |

75| `PowerShell(Get-ChildItem *)` | PowerShell | [Pencocokan pola perintah](/id/permissions#powershell) |73| `PowerShell(Get-ChildItem *)` | PowerShell | [Pencocokan pola perintah](/id/permissions#powershell) |

76| `Read(~/secrets/**)` | Read, Grep, Glob, LSP | [Pencocokan pola path](/id/permissions#read-and-edit) |74| `Read(~/secrets/**)` | Read, Grep, Glob, LSP | [Pencocokan pola path](/id/permissions#read-and-edit) |

77| `Edit(/src/**)` | Edit, Write, NotebookEdit | [Pencocokan pola path](/id/permissions#read-and-edit) |75| `Edit(/src/**)` | Edit, Write, NotebookEdit | [Pencocokan pola path](/id/permissions#read-and-edit) |

78| `Skill(deploy *)` | Skill | [Pencocokan nama skill](/id/skills#restrict-claude's-skill-access) |76| `Skill(deploy *)` | Skill | [Pencocokan nama skill](/id/skills#restrict-claude%E2%80%99s-skill-access) |

79| `Agent(Explore)` | Agent | [Pencocokan tipe subagent](/id/permissions#agent-subagents) |77| `Agent(Explore)` | Agent | [Pencocokan tipe subagent](/id/permissions#agent-subagents) |

80| `WebFetch(domain:example.com)` | WebFetch | [Pencocokan domain](/id/permissions#webfetch) |78| `WebFetch(domain:example.com)` | WebFetch | [Pencocokan domain](/id/permissions#webfetch) |

81| `WebSearch` | WebSearch | Tidak ada specifier; izinkan atau tolak tool secara keseluruhan |79| `WebSearch` | WebSearch | Tidak ada specifier; izinkan atau tolak tool secara keseluruhan |


186* Lompat ke definisi simbol184* Lompat ke definisi simbol

187* Temukan semua referensi ke simbol185* Temukan semua referensi ke simbol

188* Dapatkan informasi tipe pada posisi186* Dapatkan informasi tipe pada posisi

189* Daftar simbol dalam file atau workspace187* Daftar simbol dalam file

188* Cari simbol berdasarkan nama di seluruh workspace

190* Temukan implementasi antarmuka189* Temukan implementasi antarmuka

191* Lacak hierarki panggilan190* Lacak hierarki panggilan

192 191 


305* Respons di-cache selama 15 menit, jadi fetch berulang dari URL yang sama kembali dengan cepat.304* Respons di-cache selama 15 menit, jadi fetch berulang dari URL yang sama kembali dengan cepat.

306* 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.305* 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.

307 306 

308Dalam mode izin default dan `acceptEdits`, WebFetch meminta pertama kali mencapai domain baru. Untuk mengizinkan domain 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.307Dalam 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.

309 308 

310WebFetch 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. [Sandbox](/id/sandboxing) aturan jaringan dikonfigurasi secara terpisah, jadi domain yang ingin dijangkau proses sandboxed masih memerlukan aturan izin sandbox eksplisit.309Aturan `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.

310 

311WebFetch 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.

311 312 

312<h2 id="websearch-tool-behavior">313<h2 id="websearch-tool-behavior">

313 Perilaku WebSearch tool314 Perilaku WebSearch tool


349 350 

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

351 352 

353<Note>

354 [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.

355</Note>

356 

352<h2 id="see-also">357<h2 id="see-also">

353 Lihat juga358 Lihat juga

354</h2>359</h2>

Details

24| `TLS connect error` atau `SSL/TLS secure channel` | [Perbarui sertifikat CA](#tls-or-ssl-connection-errors) |24| `TLS connect error` atau `SSL/TLS secure channel` | [Perbarui sertifikat CA](#tls-or-ssl-connection-errors) |

25| `Failed to fetch version` atau tidak dapat menjangkau server download | [Periksa pengaturan jaringan dan proxy](#check-network-connectivity) |25| `Failed to fetch version` atau tidak dapat menjangkau server download | [Periksa pengaturan jaringan dan proxy](#check-network-connectivity) |

26| `irm is not recognized` atau `&& is not valid` | [Gunakan perintah yang tepat untuk shell Anda](#wrong-install-command-on-windows) |26| `irm is not recognized` atau `&& is not valid` | [Gunakan perintah yang tepat untuk shell Anda](#wrong-install-command-on-windows) |

27| `Cask 'claude-code' is unavailable: No Cask with this name exists` | [Perbarui Homebrew](#homebrew-cask-unavailable-or-outdated) |

27| `'bash' is not recognized as the name of a cmdlet` | [Gunakan perintah installer Windows](#wrong-install-command-on-windows) |28| `'bash' is not recognized as the name of a cmdlet` | [Gunakan perintah installer Windows](#wrong-install-command-on-windows) |

28| `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell` | [Instal shell](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell) |29| `Claude Code on Windows requires either Git for Windows (for bash) or PowerShell` | [Instal shell](#claude-code-on-windows-requires-either-git-for-windows-for-bash-or-powershell) |

29| `Claude Code does not support 32-bit Windows` | [Buka Windows PowerShell, bukan entri x86](#claude-code-does-not-support-32-bit-windows) |30| `Claude Code does not support 32-bit Windows` | [Buka Windows PowerShell, bukan entri x86](#claude-code-does-not-support-32-bit-windows) |


61curl -sI https://downloads.claude.ai/claude-code-releases/latest62curl -sI https://downloads.claude.ai/claude-code-releases/latest

62```63```

63 64 

65Di PowerShell, jalankan `curl.exe -sI` sebagai gantinya. PowerShell membuat alias `curl` ke `Invoke-WebRequest`, yang menolak flag `-sI`.

66 

64Baris `HTTP/2 200` berarti Anda menjangkau server. Jika Anda tidak melihat output, `Could not resolve host`, atau connection timeout, jaringan Anda memblokir koneksi. Penyebab umum:67Baris `HTTP/2 200` berarti Anda menjangkau server. Jika Anda tidak melihat output, `Could not resolve host`, atau connection timeout, jaringan Anda memblokir koneksi. Penyebab umum:

65 68 

66* Corporate firewalls atau proxies memblokir `downloads.claude.ai`69* Corporate firewalls atau proxies memblokir `downloads.claude.ai`


95 98 

96Jika instalasi berhasil tetapi Anda mendapatkan error `command not found` atau `not recognized` saat menjalankan `claude`, direktori instalasi tidak ada di PATH Anda. Shell Anda mencari program di direktori yang tercantum di PATH, dan installer menempatkan `claude` di `~/.local/bin/claude` di macOS/Linux atau `%USERPROFILE%\.local\bin\claude.exe` di Windows.99Jika instalasi berhasil tetapi Anda mendapatkan error `command not found` atau `not recognized` saat menjalankan `claude`, direktori instalasi tidak ada di PATH Anda. Shell Anda mencari program di direktori yang tercantum di PATH, dan installer menempatkan `claude` di `~/.local/bin/claude` di macOS/Linux atau `%USERPROFILE%\.local\bin\claude.exe` di Windows.

97 100 

101<Note>

102 Ekstensi [VS Code](/id/vs-code) tidak menempatkan `claude` di lokasi ini. Ini menggabungkan salinan pribadi CLI di dalam direktori ekstensi untuk panel chat-nya sendiri dan tidak menambahkannya ke PATH. Jika Anda hanya telah menginstal ekstensi, `~/.local/bin/claude` tidak akan ada. Jalankan [instalasi standalone](/id/setup) untuk menggunakan `claude` dari terminal, kemudian lanjutkan di bawah.

103</Note>

104 

98Periksa apakah direktori instalasi ada di PATH Anda dengan membuat daftar entri PATH dan memfilter untuk `local/bin`:105Periksa apakah direktori instalasi ada di PATH Anda dengan membuat daftar entri PATH dan memfilter untuk `local/bin`:

99 106 

100<Tabs>107<Tabs>


188 ls -la ~/.local/bin/claude195 ls -la ~/.local/bin/claude

189 ```196 ```

190 197 

198 Jika salah satu perintah `ls` mencetak `No such file or directory`, itu bukan error. Ini berarti tidak ada yang terinstal di lokasi itu, jadi lanjutkan ke pemeriksaan berikutnya.

199 

191 ```bash theme={null}200 ```bash theme={null}

192 ls -la ~/.claude/local/201 ls -la ~/.claude/local/

193 ```202 ```


390 winget install Anthropic.ClaudeCode399 winget install Anthropic.ClaudeCode

391 ```400 ```

392 401 

402<h3 id="homebrew-cask-unavailable-or-outdated">

403 Homebrew cask unavailable or outdated

404</h3>

405 

406Homebrew melaporkan `Error: Cask 'claude-code' is unavailable: No Cask with this name exists` ketika salinan lokal indeks cask Homebrew Anda mendahului publikasi cask. Segarkan indeks dan coba ulang:

407 

408```bash theme={null}

409brew update

410brew install --cask claude-code

411```

412 

413Jika Homebrew menginstal versi Claude Code yang lebih lama dari yang Anda harapkan, indeks yang sudah usang biasanya menjadi penyebabnya. Cask `claude-code` melacak saluran stabil dan biasanya tertinggal sekitar satu minggu dari rilis terbaru; untuk versi terbaru jalankan `brew install --cask claude-code@latest` sebagai gantinya. Lihat [Configure release channel](/id/setup#configure-release-channel) untuk perbedaan antara dua cask.

414 

393<h3 id="tls-or-ssl-connection-errors">415<h3 id="tls-or-ssl-connection-errors">

394 TLS or SSL connection errors416 TLS or SSL connection errors

395</h3>417</h3>


592 614 

593Jika Git Anda diinstal di tempat lain, temukan path dengan menjalankan `where.exe git` di PowerShell dan gunakan path `bin\bash.exe` dari direktori itu.615Jika Git Anda diinstal di tempat lain, temukan path dengan menjalankan `where.exe git` di PowerShell dan gunakan path `bin\bash.exe` dari direktori itu.

594 616 

617**Jika path sudah benar dan file ada** tetapi Claude Code masih melaporkannya tidak ditemukan, software endpoint security seperti AppLocker, Group Policy software restriction policies, atau EDR agents mungkin mengganggu. Pada versi sebelum v2.1.116, Claude Code menjalankan child process (`cmd.exe`) untuk memverifikasi path, yang policies ini dapat blokir — sinyal umum adalah bahwa `cmd.exe /c dir "C:\Program Files\Git\bin\bash.exe"` berfungsi saat Anda menjalankannya langsung di PowerShell tetapi gagal diam-diam saat diluncurkan oleh `claude.exe`.

618 

619Claude Code v2.1.116 dan lebih baru memeriksa filesystem secara langsung, jadi perbarui terlebih dahulu. Jika error berlanjut pada versi saat ini, minta tim IT Anda untuk allowlist `claude.exe` dan proses yang dijalankannya, termasuk `cmd.exe` dan `bash.exe`, dalam kebijakan endpoint protection Anda.

620 

595<h3 id="claude-code-does-not-support-32-bit-windows">621<h3 id="claude-code-does-not-support-32-bit-windows">

596 Claude Code does not support 32-bit Windows622 Claude Code does not support 32-bit Windows

597</h3>623</h3>

Details

361. Gunakan `/compact` secara teratur untuk mengurangi ukuran konteks361. Gunakan `/compact` secara teratur untuk mengurangi ukuran konteks

372. Tutup dan mulai ulang Claude Code di antara tugas-tugas besar372. Tutup dan mulai ulang Claude Code di antara tugas-tugas besar

383. Pertimbangkan menambahkan direktori build besar ke file `.gitignore` Anda383. Pertimbangkan menambahkan direktori build besar ke file `.gitignore` Anda

394. Mulai ulang dengan [`claude --safe-mode`](/id/cli-reference#cli-flags) untuk memeriksa apakah plugin, server MCP, atau hook adalah sumbernya. Ini menonaktifkan semua kustomisasi untuk sesi; jika penggunaan turun, lihat [Debug your configuration](/id/debug-your-config#test-against-a-clean-configuration) untuk menemukan yang mana

39 40 

40Jika penggunaan memori tetap tinggi setelah langkah-langkah ini, jalankan `/heapdump` untuk menulis snapshot heap JavaScript dan rincian memori ke `~/Desktop`. Di Linux tanpa folder Desktop, file ditulis ke direktori home Anda.41Jika penggunaan memori tetap tinggi setelah langkah-langkah ini, jalankan `/heapdump` untuk menulis snapshot heap JavaScript dan rincian memori ke `~/Desktop`. Di Linux tanpa folder Desktop, file ditulis ke direktori home Anda.

41 42 


65 66 

66Memulai ulang tidak kehilangan percakapan Anda. Jalankan `claude --resume` di direktori yang sama untuk melanjutkan sesi.67Memulai ulang tidak kehilangan percakapan Anda. Jalankan `claude --resume` di direktori yang sama untuk melanjutkan sesi.

67 68 

68<h3 id="garbled-or-corrupted-text-in-an-editor-s-integrated-terminal">69<h3 id="garbled-or-corrupted-text-in-an-editors-integrated-terminal">

69 Garbled or corrupted text in an editor's integrated terminal70 Garbled or corrupted text in an editor's integrated terminal

70</h3>71</h3>

71 72 


1303. **Gunakan Windows native sebagai gantinya**: pertimbangkan menjalankan Claude Code secara native di Windows alih-alih melalui WSL, untuk kinerja filesystem yang lebih baik.1313. **Gunakan Windows native sebagai gantinya**: pertimbangkan menjalankan Claude Code secara native di Windows alih-alih melalui WSL, untuk kinerja filesystem yang lebih baik.

131 132 

132<h2 id="get-more-help">133<h2 id="get-more-help">

133 Get more help134 Dapatkan bantuan lebih lanjut

134</h2>135</h2>

135 136 

136Jika Anda mengalami masalah yang tidak tercakup di sini:137Jika Anda mengalami masalah yang tidak tercakup di sini:

ultrareview.md +1 −1

Details

115 Sumber daya terkait115 Sumber daya terkait

116</h2>116</h2>

117 117 

118* [Claude Code di web](/id/claude-code-on-the-web): pelajari cara kerja sesi jarak jauh dan sandbox cloud118* [Claude Code di web](/id/claude-code-on-the-web): pelajari cara kerja sesi cloud dan sandbox cloud

119* [Rencanakan perubahan kompleks dengan ultraplan](/id/ultraplan): rekan perencanaan untuk ultrareview untuk pekerjaan desain di muka119* [Rencanakan perubahan kompleks dengan ultraplan](/id/ultraplan): rekan perencanaan untuk ultrareview untuk pekerjaan desain di muka

120* [Kelola biaya secara efektif](/id/costs): lacak penggunaan dan tetapkan batas pengeluaran120* [Kelola biaya secara efektif](/id/costs): lacak penggunaan dan tetapkan batas pengeluaran

vs-code.md +34 −8

Details

19Sebelum menginstal, pastikan Anda memiliki:19Sebelum menginstal, pastikan Anda memiliki:

20 20 

21* VS Code 1.98.0 atau lebih tinggi21* VS Code 1.98.0 atau lebih tinggi

22* Akun Anthropic (Anda akan masuk saat pertama kali membuka ekstensi). Jika Anda menggunakan penyedia pihak ketiga seperti Amazon Bedrock atau Google Vertex AI, lihat [Gunakan penyedia pihak ketiga](#use-third-party-providers) sebagai gantinya.22* Akun Anthropic: langganan Claude berbayar apa pun (Pro, Max, Team, atau Enterprise) atau akun Claude Console berfungsi, dan tidak ada kunci API yang diperlukan. Anda akan [masuk](/id/authentication#log-in-to-claude-code) dengan akun ini saat pertama kali membuka ekstensi. Jika Anda mengakses Claude melalui penyedia pihak ketiga seperti Amazon Bedrock atau Google Vertex AI, lihat [Gunakan penyedia pihak ketiga](#use-third-party-providers) untuk petunjuk penyiapan.

23 23 

24<Tip>24<Tip>

25 Ekstensi mencakup CLI (command-line interface), yang dapat Anda akses dari terminal terintegrasi VS Code untuk fitur lanjutan. Lihat [Ekstensi VS Code vs. Claude Code CLI](#vs-code-extension-vs-claude-code-cli) untuk detail.25 Ekstensi menggabungkan salinan CLI (command-line interface) miliknya sendiri untuk panel obrolan. Untuk menjalankan `claude` di terminal terintegrasi VS Code, Anda juga memerlukan [instalasi CLI mandiri](/id/setup). Lihat [Ekstensi VS Code vs. Claude Code CLI](#vs-code-extension-vs-claude-code-cli) untuk detail.

26</Tip>26</Tip>

27 27 

28<h2 id="install-the-extension">28<h2 id="install-the-extension">


36 36 

37Atau di VS Code, tekan `Cmd+Shift+X` (Mac) atau `Ctrl+Shift+X` (Windows/Linux) untuk membuka tampilan Extensions, cari "Claude Code", dan klik **Install**.37Atau di VS Code, tekan `Cmd+Shift+X` (Mac) atau `Ctrl+Shift+X` (Windows/Linux) untuk membuka tampilan Extensions, cari "Claude Code", dan klik **Install**.

38 38 

39Ekstensi juga dapat diinstal di fork VS Code lainnya seperti Devin Desktop atau Kiro. Cari "Claude Code" di tampilan Extensions editor Anda, atau instal dari [registri Open VSX](https://open-vsx.org/extension/Anthropic/claude-code). Jika editor Anda tidak dapat menginstal ekstensi, jalankan `claude` di terminal terintegrasi-nya. [CLI](/id/quickstart) berfungsi di terminal apa pun.39Ekstensi juga dapat diinstal di fork VS Code lainnya seperti Devin Desktop atau Kiro. Cari "Claude Code" di tampilan Extensions editor Anda, atau instal dari [registri Open VSX](https://open-vsx.org/extension/Anthropic/claude-code). Jika editor Anda tidak dapat menginstal ekstensi, [instal CLI](/id/quickstart) dan jalankan `claude` di terminal terintegrasi-nya. CLI berfungsi di terminal apa pun.

40 40 

41<Note>Jika ekstensi tidak muncul setelah instalasi, restart VS Code atau jalankan "Developer: Reload Window" dari Command Palette.</Note>41<Note>Jika ekstensi tidak muncul setelah instalasi, restart VS Code atau jalankan "Developer: Reload Window" dari Command Palette.</Note>

42 42 


131 131 

132Klik tombol **Session history** di bagian atas panel Claude Code untuk mengakses riwayat percakapan Anda. Anda dapat mencari berdasarkan kata kunci atau menelusuri berdasarkan waktu (Today, Yesterday, Last 7 days, dll.). Klik percakapan apa pun untuk melanjutkannya dengan riwayat pesan lengkap. Sesi baru menerima judul yang dihasilkan AI berdasarkan pesan pertama Anda. Arahkan kursor ke sesi untuk mengungkapkan tindakan rename dan remove: rename untuk memberikan judul deskriptif, atau remove untuk menghapusnya dari daftar. Untuk lebih lanjut tentang melanjutkan sesi, lihat [Kelola sesi](/id/sessions).132Klik tombol **Session history** di bagian atas panel Claude Code untuk mengakses riwayat percakapan Anda. Anda dapat mencari berdasarkan kata kunci atau menelusuri berdasarkan waktu (Today, Yesterday, Last 7 days, dll.). Klik percakapan apa pun untuk melanjutkannya dengan riwayat pesan lengkap. Sesi baru menerima judul yang dihasilkan AI berdasarkan pesan pertama Anda. Arahkan kursor ke sesi untuk mengungkapkan tindakan rename dan remove: rename untuk memberikan judul deskriptif, atau remove untuk menghapusnya dari daftar. Untuk lebih lanjut tentang melanjutkan sesi, lihat [Kelola sesi](/id/sessions).

133 133 

134<h3 id="resume-remote-sessions-from-claude-ai">134<h3 id="resume-cloud-sessions-from-claude-ai">

135 Lanjutkan sesi jarak jauh dari Claude.ai135 Lanjutkan sesi jarak jauh dari Claude.ai

136</h3>136</h3>

137 137 


155 Hanya sesi web yang dimulai dengan repositori GitHub yang muncul di tab Remote. Melanjutkan memuat riwayat percakapan secara lokal; perubahan tidak disinkronkan kembali ke claude.ai.155 Hanya sesi web yang dimulai dengan repositori GitHub yang muncul di tab Remote. Melanjutkan memuat riwayat percakapan secara lokal; perubahan tidak disinkronkan kembali ke claude.ai.

156</Note>156</Note>

157 157 

158<h3 id="check-account-and-usage">

159 Periksa akun dan penggunaan

160</h3>

161 

162Jalankan `/usage` dari menu perintah untuk membuka dialog Account & usage. Dialog ini menampilkan akun yang Anda masuki, paket, dan batang penggunaan untuk sesi saat ini dan minggu ini dengan berapa lama hingga setiap batas direset.

163 

164Dialog juga merinci apa yang berkontribusi pada batas paket Anda. Dialog ini menandai perilaku yang menyumbang 10% atau lebih dari penggunaan terbaru, seperti cache misses, konteks panjang, dan sesi yang berat subagent atau sangat paralel, masing-masing dengan tip untuk menguranginya. Tabel atribusi menunjukkan berapa banyak penggunaan yang berasal dari setiap skill, subagent, plugin, dan MCP server. Memerlukan Claude Code v2.1.174 atau lebih baru.

165 

166Gunakan toggle Day dan Week untuk beralih antara 24 jam terakhir dan 7 hari terakhir. Angka-angka tersebut perkiraan dan dihitung dari sesi lokal di mesin ini, jadi penggunaan dari perangkat lain atau claude.ai tidak disertakan. Untuk lebih lanjut tentang pelacakan dan pengurangan penggunaan, lihat [Lacak biaya Anda](/id/costs#track-your-costs).

167 

158<h2 id="customize-your-workflow">168<h2 id="customize-your-workflow">

159 Sesuaikan alur kerja Anda169 Sesuaikan alur kerja Anda

160</h2>170</h2>


366 Ekstensi VS Code vs. Claude Code CLI376 Ekstensi VS Code vs. Claude Code CLI

367</h2>377</h2>

368 378 

369Claude Code tersedia sebagai ekstensi VS Code (panel grafis) dan CLI (command-line interface di terminal). Beberapa fitur hanya tersedia di CLI. Jika Anda memerlukan fitur khusus CLI, jalankan `claude` di terminal terintegrasi VS Code.379Claude Code tersedia sebagai ekstensi VS Code (panel grafis) dan CLI (command-line interface di terminal). Beberapa fitur hanya tersedia di CLI. Jika Anda memerlukan fitur khusus CLI, jalankan `claude` di terminal terintegrasi VS Code. Ini memerlukan [instalasi CLI standalone](/id/setup): ekstensi tidak menambahkan `claude` ke PATH Anda. Lihat [Jalankan CLI di VS Code](#run-cli-in-vs-code).

370 380 

371| Fitur | CLI | Ekstensi VS Code |381| Fitur | CLI | Ekstensi VS Code |

372| ---------------------- | --------------------- | ------------------------------------------------------------------------------------------ |382| ---------------------- | --------------------- | ------------------------------------------------------------------------------------------ |


394 404 

395Untuk menggunakan CLI sambil tetap berada di VS Code, buka terminal terintegrasi (`` Ctrl+` `` di Windows/Linux atau `` Cmd+` `` di Mac) dan jalankan `claude`. CLI secara otomatis terintegrasi dengan IDE Anda untuk fitur seperti tampilan diff dan berbagi diagnostik.405Untuk menggunakan CLI sambil tetap berada di VS Code, buka terminal terintegrasi (`` Ctrl+` `` di Windows/Linux atau `` Cmd+` `` di Mac) dan jalankan `claude`. CLI secara otomatis terintegrasi dengan IDE Anda untuk fitur seperti tampilan diff dan berbagi diagnostik.

396 406 

407Menginstal ekstensi tidak menempatkan `claude` di PATH shell Anda. Ekstensi menggabungkan salinan pribadi CLI untuk panel chatnya, tetapi mengetik `claude` di terminal memerlukan [instalasi CLI standalone](/id/setup). Jalankan instalasi sekali dan perintah di halaman ini, termasuk `claude mcp add` dan `claude --resume`, bekerja di terminal apa pun. Jika `claude` masih tidak ditemukan setelah menginstal, [verifikasi PATH Anda](/id/troubleshoot-install#verify-your-path).

408 

397Jika menggunakan terminal eksternal, jalankan `/ide` di dalam Claude Code untuk menghubungkannya ke VS Code.409Jika menggunakan terminal eksternal, jalankan `/ide` di dalam Claude Code untuk menghubungkannya ke VS Code.

398 410 

399<h3 id="switch-between-extension-and-cli">411<h3 id="switch-between-extension-and-cli">


530 Perbaiki masalah umum542 Perbaiki masalah umum

531</h2>543</h2>

532 544 

533<h3 id="extension-won-t-install">545<h3 id="extension-wont-install">

534 Ekstensi tidak akan diinstal546 Ekstensi tidak akan diinstal

535</h3>547</h3>

536 548 


5862. Cari "Claude Code"5982. Cari "Claude Code"

5873. Klik **Uninstall**5993. Klik **Uninstall**

588 600 

589Untuk juga menghapus data ekstensi dan reset semua pengaturan:601Untuk juga menghapus data ekstensi dan reset semua pengaturan, hapus direktori penyimpanan ekstensi untuk platform Anda.

602 

603Di macOS:

590 604 

591```bash theme={null}605```bash theme={null}

592rm -rf ~/.vscode/globalStorage/anthropic.claude-code606rm -rf ~/Library/"Application Support"/Code/User/globalStorage/anthropic.claude-code

607```

608 

609Di Linux:

610 

611```bash theme={null}

612rm -rf ~/.config/Code/User/globalStorage/anthropic.claude-code

613```

614 

615Di Windows, di PowerShell:

616 

617```powershell theme={null}

618Remove-Item -Recurse -Force "$env:APPDATA\Code\User\globalStorage\anthropic.claude-code"

593```619```

594 620 

595Untuk bantuan tambahan, lihat [panduan troubleshooting](/id/troubleshooting).621Untuk bantuan tambahan, lihat [panduan troubleshooting](/id/troubleshooting).

Details

129 </Step>129 </Step>

130 130 

131 <Step title="Pilih mode izin">131 <Step title="Pilih mode izin">

132 Dropdown mode di sebelah input default ke **Terima otomatis editan**, di mana Claude membuat perubahan dan mendorong cabang tanpa berhenti untuk persetujuan. Beralih ke **Plan mode** jika Anda ingin Claude mengusulkan pendekatan dan menunggu persetujuan Anda sebelum mengedit file. Sesi cloud tidak menawarkan izin Ask, mode Auto, atau izin Bypass. Lihat [Mode izin](/id/permission-modes) untuk daftar lengkap.132 Dropdown mode di sebelah input default ke **Terima otomatis editan**, di mana Claude membuat perubahan dan mendorong cabang tanpa berhenti untuk persetujuan. Beralih ke **Plan mode** jika Anda ingin Claude mengusulkan pendekatan dan menunggu persetujuan Anda sebelum mengedit file. Sesi cloud tidak menawarkan izin Ask atau izin Bypass. Lihat [Mode izin](/id/permission-modes) untuk daftar lengkap.

133 </Step>133 </Step>

134 134 

135 <Step title="Jelaskan tugas dan kirimkan">135 <Step title="Jelaskan tugas dan kirimkan">

whats-new.md +16 −0

Details

8 8 

9Ringkasan dev mingguan menyoroti fitur yang paling mungkin mengubah cara Anda bekerja. Setiap entri mencakup kode yang dapat dijalankan, demo singkat, dan tautan ke dokumentasi lengkap. Untuk setiap perbaikan bug dan peningkatan kecil, lihat [changelog](/id/changelog).9Ringkasan dev mingguan menyoroti fitur yang paling mungkin mengubah cara Anda bekerja. Setiap entri mencakup kode yang dapat dijalankan, demo singkat, dan tautan ke dokumentasi lengkap. Untuk setiap perbaikan bug dan peningkatan kecil, lihat [changelog](/id/changelog).

10 10 

11<Update label="Week 24" description="June 8–12, 2026" tags={["v2.1.166–v2.1.176"]}>

12 **`/cd`**: pindahkan sesi saat ini ke direktori kerja baru di tengah percakapan tanpa membangun kembali cache prompt.

13 

14 Juga minggu ini: **sub-agent dapat menelurkan sub-agent mereka sendiri** (rantai latar belakang dibatasi pada lima level dalam); **`--safe-mode`** memulai Claude Code dengan semua kustomisasi dinonaktifkan untuk pemecahan masalah; dan **`fallbackModel`** mengonfigurasi hingga tiga model fallback yang dicoba secara berurutan.

15 

16 [Baca ringkasan Week 24 →](/id/whats-new/2026-w24)

17</Update>

18 

19<Update label="Week 23" description="June 1–5, 2026" tags={["v2.1.158–v2.1.165"]}>

20 **Auto mode di Bedrock, Vertex, dan Foundry**: auto mode sekarang tersedia di penyedia pihak ketiga untuk Opus 4.7 dan Opus 4.8, menggantikan prompt izin dengan pemeriksaan keamanan latar belakang.

21 

22 Juga minggu ini: **pengeditan otomatis yang lebih aman** meminta persetujuan sebelum menulis file yang dapat menjalankan kode dalam mode `acceptEdits`; **`/plugin list`** mencetak plugin terinstal Anda secara inline; dan **persyaratan versi** memungkinkan penerapan terkelola untuk memerlukan rentang versi Claude Code yang disetujui.

23 

24 [Baca ringkasan Week 23 →](/id/whats-new/2026-w23)

25</Update>

26 

11<Update label="Week 22" description="May 25–29, 2026" tags={["v2.1.150–v2.1.157"]}>27<Update label="Week 22" description="May 25–29, 2026" tags={["v2.1.150–v2.1.157"]}>

12 **Claude Opus 4.8**: model default baru untuk Max, Team Premium, Enterprise pay-as-you-go, dan akun Anthropic API, dengan upaya tinggi secara default dan `/effort xhigh` untuk tugas-tugas tersulit.28 **Claude Opus 4.8**: model default baru untuk Max, Team Premium, Enterprise pay-as-you-go, dan akun Anthropic API, dengan upaya tinggi secara default dan `/effort xhigh` untuk tugas-tugas tersulit.

13 29 

whats-new/2026-w23.md +100 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Minggu 23 · 1–5 Juni 2026

6 

7> Jalankan auto mode di Bedrock, Vertex, dan Foundry, minta persetujuan sebelum menulis file yang dapat menjalankan kode dalam mode acceptEdits, daftar plugin yang terinstal dengan /plugin list, dan perlukan rentang versi yang disetujui untuk penerapan terkelola.

8 

9<div className="digest-meta">

10 <span>Rilis <a href="/docs/id/changelog#2-1-158">v2.1.158 → v2.1.165</a></span>

11 <span>4 fitur · 1–5 Juni</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Auto mode di Bedrock, Vertex, dan Foundry</span>

17 <span className="digest-feature-pill">v2.1.158</span>

18 </div>

19 

20 <p className="digest-feature-lede">Auto mode kini tersedia di Bedrock, Vertex, dan Foundry untuk Opus 4.7 dan Opus 4.8, menggantikan prompt izin dengan pemeriksaan keamanan latar belakang pada penyedia pihak ketiga. Pilih untuk mengaktifkan dengan menetapkan <code>CLAUDE\_CODE\_ENABLE\_AUTO\_MODE=1</code>.</p>

21 

22 <p className="digest-feature-try">Pilih untuk mengaktifkan pada penyedia pihak ketiga, kemudian beralih ke auto mode dengan Shift+Tab:</p>

23 

24 ```bash terminal theme={null}

25 export CLAUDE_CODE_ENABLE_AUTO_MODE=1

26 ```

27 

28 <a className="digest-feature-link" href="/docs/id/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry">Aktifkan auto mode pada penyedia pihak ketiga</a>

29</div>

30 

31<div className="digest-feature">

32 <div className="digest-feature-header">

33 <span className="digest-feature-title">Pengeditan otomatis yang lebih aman</span>

34 <span className="digest-feature-pill">v2.1.160</span>

35 </div>

36 

37 <p className="digest-feature-lede">Claude Code kini meminta persetujuan sebelum menulis file yang dapat menjalankan kode, bahkan dalam mode <code>acceptEdits</code>. Set yang dilindungi mencakup file startup shell seperti <code>.zshenv</code> dan <code>.bash\_login</code>, konfigurasi git di bawah <code>\~/.config/git/</code>, dan konfigurasi alat build seperti <code>.npmrc</code>, <code>.bazelrc</code>, dan <code>.pre-commit-config.yaml</code>. Penulisan ini tidak pernah disetujui secara otomatis dalam mode apa pun kecuali <code>bypassPermissions</code>.</p>

38 

39 <p className="digest-feature-try">Bekerja dalam mode acceptEdits; Claude kini berhenti sebelum menulis file-file ini:</p>

40 

41 ```bash terminal theme={null}

42 claude --permission-mode acceptEdits

43 ```

44 

45 <a className="digest-feature-link" href="/docs/id/permission-modes#protected-paths">Jalur yang dilindungi</a>

46</div>

47 

48<div className="digest-feature">

49 <div className="digest-feature-header">

50 <span className="digest-feature-title">Daftar plugin yang terinstal dengan /plugin list</span>

51 <span className="digest-feature-pill">v2.1.163</span>

52 </div>

53 

54 <p className="digest-feature-lede">Perintah <code>/plugin list</code> yang baru mencetak plugin yang terinstal secara inline, tanpa membuka menu <code>/plugin</code>, dan juga tersedia sebagai <code>claude plugin list</code> dari shell. Dalam bentuk interaktif, tambahkan `--enabled` atau `--disabled` untuk menampilkan hanya plugin dalam status tersebut.</p>

55 

56 <p className="digest-feature-try">Daftar plugin yang saat ini diaktifkan:</p>

57 

58 ```text Claude Code theme={null}

59 > /plugin list --enabled

60 ```

61 

62 <a className="digest-feature-link" href="/docs/id/plugins-reference#plugin-list">Perintah plugin</a>

63</div>

64 

65<div className="digest-feature">

66 <div className="digest-feature-header">

67 <span className="digest-feature-title">Persyaratan versi untuk penerapan terkelola</span>

68 <span className="digest-feature-pill">v2.1.163</span>

69 </div>

70 

71 <p className="digest-feature-lede">Dua pengaturan terkelola, <code>requiredMinimumVersion</code> dan <code>requiredMaximumVersion</code>, memungkinkan organisasi Anda untuk memerlukan rentang versi Claude Code yang disetujui. Klien di luar rentang keluar saat startup dan memberi tahu pengguna untuk memperbarui melalui metode organisasi. <code>claude update</code>, <code>claude install</code>, dan <code>claude doctor</code> terus bekerja sehingga pengguna masih dapat pulih.</p>

72 

73 <p className="digest-feature-try">Tambahkan batas minimum ke pengaturan terkelola Anda sehingga klien lama menolak untuk memulai:</p>

74 

75 ```json managed-settings.json theme={null}

76 "requiredMinimumVersion": "2.1.163"

77 ```

78 

79 <a className="digest-feature-link" href="/docs/id/admin-setup#decide-what-to-enforce">Tentukan apa yang akan diterapkan</a>

80</div>

81 

82<div className="digest-wins">

83 <p className="digest-wins-title">Kemenangan lainnya</p>

84 

85 <div className="digest-wins-grid">

86 <div>Kata kunci pemicu untuk <a href="/docs/id/workflows">alur kerja dinamis</a> berubah dari <code>workflow</code> menjadi <code>ultracode</code>; meminta alur kerja dengan kata-kata Anda sendiri masih berfungsi, dan kata kunci disorot dalam warna ungu di prompt</div>

87 <div><a href="/docs/id/hooks">Hook Stop dan SubagentStop</a> dapat mengembalikan <code>hookSpecificOutput.additionalContext</code> untuk memberikan umpan balik Claude dan membuat giliran terus berlanjut alih-alih diperlakukan sebagai kesalahan</div>

88 <div><code>claude mcp</code> list, get, dan add tidak lagi mencetak rahasia: referensi variabel lingkungan tidak diperluas, dan header kredensial serta rahasia URL diredaksi</div>

89 <div>Perintah Bash yang gagal dalam batch alat paralel tidak lagi membatalkan yang lain; setiap alat mengembalikan hasilnya sendiri secara independen</div>

90 <div>Mengedit file tidak lagi memerlukan Read terpisah ketika Anda melihatnya dengan <code>grep</code>, <code>egrep</code>, atau <code>fgrep</code> file tunggal</div>

91 <div>Mengklik perintah dalam menu pelengkapan otomatis kini mengisinya ke dalam prompt Anda alih-alih menjalankannya segera; tekan Enter untuk menjalankan</div>

92 <div>Mendaftar <code>Grep</code> atau <code>Glob</code> dalam `--tools` kini menyediakan alat pencarian khusus pada build native dengan pencarian tertanam, alih-alih diam-diam mengabaikan nama-nama tersebut</div>

93 <div><code>/effort</code> kini mengonfirmasi ketika tingkat pilihan Anda akan bertahan sebagai default untuk sesi baru</div>

94 <div>Nilai <code>OTEL\_RESOURCE\_ATTRIBUTES</code> kini dilampirkan sebagai label pada titik data metrik, sehingga Anda dapat mengiris metrik penggunaan menurut dimensi kustom seperti tim atau repo</div>

95 <div>Windsurf diganti nama menjadi Devin Desktop di <code>/ide</code>, <code>/terminal-setup</code>, dan <code>/scroll-speed</code>, mengikuti rebranding editor</div>

96 <div><code>/btw</code> mendapatkan pintasan <code>c to copy</code> yang menyalin jawaban markdown mentah ke clipboard</div>

97 </div>

98</div>

99 

100[Changelog lengkap untuk v2.1.158–v2.1.165 →](/id/changelog#2-1-158)

whats-new/2026-w24.md +84 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Minggu 24 · 8–12 Juni 2026

6 

7> Pindahkan sesi ke direktori baru dengan /cd, biarkan sub-agen menjalankan sub-agen mereka sendiri, dan selesaikan konfigurasi yang rusak dengan mode aman.

8 

9<div className="digest-meta">

10 <span>Rilis <a href="/docs/id/changelog#2-1-166">v2.1.166 → v2.1.176</a></span>

11 <span>3 fitur · 8–12 Juni</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Pindahkan sesi dengan /cd</span>

17 <span className="digest-feature-pill">v2.1.169</span>

18 </div>

19 

20 <p className="digest-feature-lede">Perintah <code>/cd</code> baru memindahkan sesi saat ini ke direktori kerja yang berbeda tanpa membangun ulang cache prompt: <code>CLAUDE.md</code> direktori baru ditambahkan sebagai pesan alih-alih mengganti prompt sistem. Sesi berpindah ke penyimpanan proyek direktori baru, jadi `--resume` dan `--continue` menemukannya di sana. Claude meminta Anda untuk mempercayai direktori jika Anda belum pernah bekerja di dalamnya sebelumnya.</p>

21 

22 <p className="digest-feature-try">Pindahkan sesi ke proyek lain tanpa memulai ulang:</p>

23 

24 ```text Claude Code theme={null}

25 > /cd ../other-project

26 ```

27 

28 <a className="digest-feature-link" href="/docs/id/commands#all-commands">Referensi perintah</a>

29</div>

30 

31<div className="digest-feature">

32 <div className="digest-feature-header">

33 <span className="digest-feature-title">Sub-agen dapat menjalankan sub-agen</span>

34 <span className="digest-feature-pill">v2.1.172</span>

35 </div>

36 

37 <p className="digest-feature-lede">Sub-agen sekarang dapat menjalankan sub-agen mereka sendiri. Panel subagen di bawah prompt menunjukkan pohon lengkap: setiap baris membawa hitungan keturunannya dan jalur kembali ke <code>main</code>. Sub-agen latar belakang dibatasi pada lima tingkat kedalaman untuk mencegah pohon bersamaan yang liar; rantai latar depan dapat menjalankan pada kedalaman apa pun dan membatasi diri sendiri.</p>

38 

39 <p className="digest-feature-try">Buka tampilan agen untuk menonton pohon bersarang saat pekerjaan menyebar:</p>

40 

41 ```text Claude Code theme={null}

42 > /agents

43 ```

44 

45 <a className="digest-feature-link" href="/docs/id/sub-agents#spawn-nested-subagents">Jalankan subagen bersarang</a>

46</div>

47 

48<div className="digest-feature">

49 <div className="digest-feature-header">

50 <span className="digest-feature-title">Selesaikan dengan mode aman</span>

51 <span className="digest-feature-pill">v2.1.169</span>

52 </div>

53 

54 <p className="digest-feature-lede">Mulai Claude Code dengan `--safe-mode`, atau atur <code>CLAUDE\_CODE\_SAFE\_MODE</code>, untuk meluncurkan dengan semua kustomisasi dinonaktifkan: <code>CLAUDE.md</code>, skills, plugins, hooks, server MCP, dan perintah dan agen khusus tidak dimuat. Autentikasi, pemilihan model, alat bawaan, dan izin masih berfungsi. Jika masalah hilang dalam mode aman, salah satu permukaan tersebut adalah penyebabnya.</p>

55 

56 <p className="digest-feature-try">Luncurkan sesi bersih untuk mengisolasi konfigurasi yang rusak:</p>

57 

58 ```bash terminal theme={null}

59 claude --safe-mode

60 ```

61 

62 <a className="digest-feature-link" href="/docs/id/debug-your-config#test-against-a-clean-configuration">Uji terhadap konfigurasi bersih</a>

63</div>

64 

65<div className="digest-wins">

66 <p className="digest-wins-title">Kemenangan lainnya</p>

67 

68 <div className="digest-wins-grid">

69 <div><a href="/docs/id/model-config#fallback-model-chains"><code>fallbackModel</code></a> mengonfigurasi hingga tiga model fallback yang dicoba secara berurutan ketika model utama kelebihan beban atau tidak tersedia, dan `--fallback-model` sekarang juga berlaku untuk sesi interaktif</div>

70 <div>Judul sesi sekarang dihasilkan dalam bahasa percakapan Anda; pin satu tertentu dengan pengaturan <code>language</code></div>

71 <div>`claude agents --json` menambahkan `--all` untuk menyertakan sesi yang selesai ditambah bidang <code>id</code> dan <code>state</code> baru, dan tidak lagi menghilangkan sesi yang diblokir atau baru dikirim</div>

72 <div>Menjelajahi plugin marketplace di <code>/plugin</code> sekarang memiliki bilah pencarian</div>

73 <div>Pengaturan <code>disableBundledSkills</code> baru dan <code>CLAUDE\_CODE\_DISABLE\_BUNDLED\_SKILLS</code> menyembunyikan skills bundel, alur kerja, dan perintah bawaan dari model</div>

74 <div>Aturan penolakan menerima glob dalam posisi nama alat, jadi <code>"\*"</code> menolak semua alat, dan nama alat yang tidak dikenal dalam aturan penolakan sekarang memperingatkan saat startup</div>

75 <div>Pesan lintas sesi diperkuat: pesan yang diteruskan melalui <code>SendMessage</code> dari sesi lain tidak lagi membawa otoritas pengguna, dan mode otomatis memblokir mereka</div>

76 <div>Amazon Bedrock membaca wilayah AWS dari file konfigurasi `~/.aws` ketika <code>AWS\_REGION</code> tidak diatur, dan `/status` menunjukkan dari mana wilayah berasal</div>

77 <div>Pengaturan terkelola <code>enforceAvailableModels</code> baru membuat daftar allowlist <code>availableModels</code> juga membatasi model Default</div>

78 <div>Claude dalam alat browser Chrome sekarang dimuat dalam satu panggilan batch tunggal alih-alih satu per alat</div>

79 <div><code>claude update</code> mengumumkan versi target sebelum mengunduh alih-alih diam</div>

80 <div>Pengaturan <code>footerLinksRegexes</code> baru menambahkan lencana tautan yang cocok regex ke baris footer</div>

81 </div>

82</div>

83 

84[Changelog lengkap untuk v2.1.166–v2.1.176 →](/id/changelog#2-1-166)

workflows.md +3 −1

Details

9{/* plan-availability: feature=workflows plans=pro,max,team,enterprise providers=all */}9{/* plan-availability: feature=workflows plans=pro,max,team,enterprise providers=all */}

10 10 

11<Note>11<Note>

12 Alur kerja dinamis berada dalam pratinjau penelitian. Mereka memerlukan Claude Code v2.1.154 atau lebih baru dan tersedia di semua paket berbayar, dengan akses API Anthropic, dan di Amazon Bedrock, Google Cloud Vertex AI, dan Microsoft Foundry. Di Pro, aktifkan dari baris Dynamic workflows di `/config`.12 Alur kerja dinamis memerlukan Claude Code v2.1.154 atau lebih baru dan tersedia di semua paket berbayar, dengan akses API Anthropic, dan di Amazon Bedrock, Google Cloud Vertex AI, dan Microsoft Foundry. Di Pro, aktifkan dari baris Dynamic workflows di `/config`.

13</Note>13</Note>

14 14 

15Alur kerja dinamis adalah skrip JavaScript yang mengorkestrasi [subagen](/id/sub-agents) dalam skala besar. Claude menulis skrip untuk tugas yang Anda jelaskan, dan runtime menjalankannya di latar belakang sementara sesi Anda tetap responsif.15Alur kerja dinamis adalah skrip JavaScript yang mengorkestrasi [subagen](/id/sub-agents) dalam skala besar. Claude menulis skrip untuk tugas yang Anda jelaskan, dan runtime menjalankannya di latar belakang sementara sesi Anda tetap responsif.


198 198 

199Tekan Enter untuk menyimpan. Alur kerja berjalan sebagai `/<name>` di sesi mendatang dari lokasi mana pun.199Tekan Enter untuk menyimpan. Alur kerja berjalan sebagai `/<name>` di sesi mendatang dari lokasi mana pun.

200 200 

201{/* min-version: 2.1.178 */}Mulai dari v2.1.178, menyimpan ke lokasi proyek menulis ke direktori `.claude/workflows/` terdekat yang sudah ada antara direktori kerja Anda dan akar repositori, atau ke akar repositori jika belum ada. Alur kerja proyek juga dimuat dari setiap `.claude/workflows/` di sepanjang jalur itu, dan ketika lebih dari satu mendefinisikan nama yang sama Claude Code menjalankan yang terdekat dengan direktori kerja.

202 

201Jika alur kerja proyek dan alur kerja pribadi berbagi nama, yang proyek berjalan.203Jika alur kerja proyek dan alur kerja pribadi berbagi nama, yang proyek berjalan.

202 204 

203<h3 id="pass-input-to-a-saved-workflow">205<h3 id="pass-input-to-a-saved-workflow">

worktrees.md +3 −1

Details

36 36 

37Anda juga dapat meminta Claude untuk "bekerja dalam worktree" selama sesi, dan itu akan membuat satu dengan tool [`EnterWorktree`](/id/tools-reference). Setelah berada dalam worktree, Claude dapat beralih langsung ke worktree lain di bawah `.claude/worktrees/` dengan memanggil `EnterWorktree` dengan jalur target. Worktree sebelumnya tetap berada di disk tanpa disentuh.37Anda juga dapat meminta Claude untuk "bekerja dalam worktree" selama sesi, dan itu akan membuat satu dengan tool [`EnterWorktree`](/id/tools-reference). Setelah berada dalam worktree, Claude dapat beralih langsung ke worktree lain di bawah `.claude/worktrees/` dengan memanggil `EnterWorktree` dengan jalur target. Worktree sebelumnya tetap berada di disk tanpa disentuh.

38 38 

39Sebelum menggunakan `--worktree` di direktori untuk pertama kalinya, terima dialog kepercayaan workspace dengan menjalankan `claude` sekali di direktori tersebut. Jika kepercayaan belum diterima, `--worktree` keluar dengan kesalahan dan meminta Anda untuk menjalankan `claude` di direktori terlebih dahulu, termasuk ketika digabungkan dengan `-p`.39Sebelum menggunakan `--worktree` secara interaktif di direktori untuk pertama kalinya, terima dialog kepercayaan workspace dengan menjalankan `claude` sekali di direktori tersebut. Jika kepercayaan belum diterima, `--worktree` keluar dengan kesalahan dan meminta Anda untuk menjalankan `claude` di direktori terlebih dahulu. Jalankan non-interaktif dengan `-p` melewati [pemeriksaan kepercayaan](/id/security), jadi `claude -p --worktree` melanjutkan tanpanya.

40 40 

41<Tip>41<Tip>

42 Tambahkan `.claude/worktrees/` ke `.gitignore` Anda sehingga konten worktree tidak muncul sebagai file yang tidak dilacak dalam checkout utama Anda.42 Tambahkan `.claude/worktrees/` ke `.gitignore` Anda sehingga konten worktree tidak muncul sebagai file yang tidak dilacak dalam checkout utama Anda.


102 102 

103Worktrees yang Claude buat untuk subagent dan [sesi latar belakang](/id/agent-view#how-file-edits-are-isolated) dihapus secara otomatis setelah mereka lebih tua dari pengaturan [`cleanupPeriodDays`](/id/settings#available-settings) Anda, asalkan mereka tidak memiliki perubahan yang belum dilakukan, tidak ada file yang tidak dilacak, dan tidak ada commit yang belum didorong. Worktrees yang Anda buat dengan `--worktree` tidak pernah dihapus oleh sapuan ini.103Worktrees yang Claude buat untuk subagent dan [sesi latar belakang](/id/agent-view#how-file-edits-are-isolated) dihapus secara otomatis setelah mereka lebih tua dari pengaturan [`cleanupPeriodDays`](/id/settings#available-settings) Anda, asalkan mereka tidak memiliki perubahan yang belum dilakukan, tidak ada file yang tidak dilacak, dan tidak ada commit yang belum didorong. Worktrees yang Anda buat dengan `--worktree` tidak pernah dihapus oleh sapuan ini.

104 104 

105Saat agen sedang berjalan, Claude menjalankan `git worktree lock` pada worktreenya sehingga pembersihan bersamaan tidak dapat menghapusnya. Kunci dilepaskan ketika agen selesai. Untuk membersihkan worktree yang disimpan oleh sapuan, jalankan `git worktree remove`, tambahkan `--force` jika worktree memiliki perubahan yang belum dilakukan atau file yang tidak dilacak.

106 

105<h2 id="manage-worktrees-manually">107<h2 id="manage-worktrees-manually">

106 Kelola worktrees secara manual108 Kelola worktrees secara manual

107</h2>109</h2>

Details

4 4 

5# Retensi data nol5# Retensi data nol

6 6 

7> Pelajari tentang Zero Data Retention (ZDR) untuk Claude Code di Claude for Enterprise, termasuk cakupan, fitur yang dinonaktifkan, dan cara meminta pengaktifan.7> Pelajari tentang Zero Data Retention (ZDR) untuk Claude Code, tersedia untuk akun yang memenuhi syarat di Claude for Enterprise, termasuk cakupan, fitur yang dinonaktifkan, dan cara meminta pengaktifan.

8 8 

9Zero Data Retention (ZDR) tersedia untuk Claude Code ketika digunakan melalui Claude for Enterprise. Ketika ZDR diaktifkan, prompt dan respons model yang dihasilkan selama sesi Claude Code diproses secara real-time dan tidak disimpan oleh Anthropic setelah respons dikembalikan, kecuali jika diperlukan untuk mematuhi hukum atau memerangi penyalahgunaan.9Zero Data Retention (ZDR) untuk Claude Code tersedia untuk akun yang memenuhi syarat di Claude for Enterprise. Ketika ZDR diaktifkan, prompt dan respons model yang dihasilkan selama sesi Claude Code diproses secara real-time dan tidak disimpan oleh Anthropic setelah respons dikembalikan, kecuali jika diperlukan untuk mematuhi hukum atau memerangi penyalahgunaan.

10 

11<Note>

12 ZDR tidak termasuk dalam paket Claude for Enterprise standar dan tidak dapat diaktifkan dari pengaturan admin Anda. ZDR tersedia untuk akun yang memenuhi syarat dan memerlukan pengaktifan terpisah oleh Anthropic. Jika organisasi Anda memerlukan ZDR, [hubungi penjualan](https://www.anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=zero_data_retention_request) atau tim akun Anthropic Anda untuk mengonfirmasi kelayakan.

13</Note>

10 14 

11ZDR di Claude for Enterprise memberikan pelanggan enterprise kemampuan untuk menggunakan Claude Code dengan retensi data nol dan mengakses kemampuan administratif:15ZDR di Claude for Enterprise memberikan pelanggan enterprise kemampuan untuk menggunakan Claude Code dengan retensi data nol dan mengakses kemampuan administratif:

12 16 


31 Apa yang dicakup ZDR35 Apa yang dicakup ZDR

32</h3>36</h3>

33 37 

34ZDR mencakup panggilan inferensi model yang dilakukan melalui Claude Code di Claude for Enterprise. Ketika Anda menggunakan Claude Code di terminal Anda, prompt yang Anda kirim dan respons yang dihasilkan Claude tidak disimpan oleh Anthropic. Ini berlaku terlepas dari model Claude mana yang digunakan.38ZDR mencakup panggilan inferensi model yang dilakukan melalui Claude Code di Claude for Enterprise. Ketika Anda menggunakan Claude Code di terminal Anda, prompt yang Anda kirim dan respons yang dihasilkan Claude tidak disimpan oleh Anthropic. Ini berlaku untuk setiap model yang tersedia untuk organisasi ZDR. Beberapa model memerlukan retensi data dan tidak tersedia di bawah ZDR; lihat [Ketersediaan model di bawah ZDR](#model-availability-under-zdr).

35 39 

36<h3 id="what-zdr-does-not-cover">40<h3 id="what-zdr-does-not-cover">

37 Apa yang tidak dicakup ZDR41 Apa yang tidak dicakup ZDR


54Ketika ZDR diaktifkan untuk organisasi Claude Code di Claude for Enterprise, fitur-fitur tertentu yang memerlukan penyimpanan prompt atau completion secara otomatis dinonaktifkan di tingkat backend:58Ketika ZDR diaktifkan untuk organisasi Claude Code di Claude for Enterprise, fitur-fitur tertentu yang memerlukan penyimpanan prompt atau completion secara otomatis dinonaktifkan di tingkat backend:

55 59 

56| Fitur | Alasan |60| Fitur | Alasan |

57| -------------------------------------------------------------------- | ------------------------------------------------------------------- |61| ------------------------------------------------------------------ | ------------------------------------------------------------------- |

58| [Claude Code di Web](/id/claude-code-on-the-web) | Memerlukan penyimpanan percakapan di sisi server. |62| [Claude Code di Web](/id/claude-code-on-the-web) | Memerlukan penyimpanan riwayat percakapan di sisi server. |

59| [Remote sessions](/id/desktop#remote-sessions) dari aplikasi Desktop | Memerlukan data sesi persisten yang mencakup prompt dan completion. |63| [Cloud sessions](/id/desktop#cloud-sessions) dari aplikasi Desktop | Memerlukan data sesi persisten yang mencakup prompt dan completion. |

60| Pengiriman umpan balik (`/feedback`) | Mengirimkan umpan balik mengirimkan data percakapan ke Anthropic. |64| Pengiriman umpan balik (`/feedback`) | Mengirimkan umpan balik mengirimkan data percakapan ke Anthropic. |

61 65 

62Fitur-fitur ini diblokir di backend terlepas dari tampilan sisi klien. Jika Anda melihat fitur yang dinonaktifkan di terminal Claude Code selama startup, mencoba menggunakannya mengembalikan kesalahan yang menunjukkan kebijakan organisasi tidak memungkinkan tindakan tersebut.66Fitur-fitur ini diblokir di backend terlepas dari tampilan sisi klien. Jika Anda melihat fitur yang dinonaktifkan di terminal Claude Code selama startup, mencoba menggunakannya mengembalikan kesalahan yang menunjukkan kebijakan organisasi tidak memungkinkan tindakan tersebut.

63 67 

64Fitur-fitur di masa depan juga dapat dinonaktifkan jika memerlukan penyimpanan prompt atau completion.68Fitur-fitur di masa depan juga dapat dinonaktifkan jika memerlukan penyimpanan prompt atau completion.

65 69 

70<h3 id="model-availability-under-zdr">

71 Ketersediaan model di bawah ZDR

72</h3>

73 

74Claude Fable 5 tidak tersedia untuk organisasi dengan zero data retention yang diaktifkan. Kelas model ini [memerlukan retensi data](https://platform.claude.com/docs/en/manage-claude/api-and-data-retention#model-specific-data-retention-requirements), sehingga permintaan dari organisasi ZDR tidak dapat dilayani olehnya. Model ini baik tidak ada di pemilih `/model` untuk organisasi ZDR atau ditampilkan sebagai dinonaktifkan dengan pemberitahuan bahwa menonaktifkan ZDR diperlukan, dan server menolak permintaan untuknya terlepas dari konfigurasi klien.

75 

76Model lainnya tetap tersedia di bawah ZDR. Fable 5 bukan model default, dan alias `best`, yang diselesaikan ke Fable 5 di mana tersedia, diselesaikan ke Opus untuk organisasi di mana tidak tersedia, termasuk organisasi ZDR.

77 

66<h2 id="data-retention-for-policy-violations">78<h2 id="data-retention-for-policy-violations">

67 Retensi data untuk pelanggaran kebijakan79 Retensi data untuk pelanggaran kebijakan

68</h2>80</h2>