SpyBara
Go Premium

Documentation 2026-07-28 23:57 UTC to 2026-07-29 07:01 UTC

2 files changed +63 −63. View all changes and history on the product overview
2026
Wed 29 07:01 Tue 28 23:57 Mon 27 21:02 Sun 26 19:02 Sat 25 21:59 Fri 24 23:01 Thu 23 23:57 Wed 22 23:59 Tue 21 23:00 Mon 20 23:01 Sat 18 16:02 Fri 17 22:57 Thu 16 22:59 Wed 15 22:00 Tue 14 23:01 Mon 13 23:57 Sat 11 19:03 Fri 10 17:00 Thu 9 23:58 Wed 8 16:02 Tue 7 16:02 Mon 6 23:57 Sat 4 03:01 Fri 3 23:00 Thu 2 23:59 Wed 1 21:01

devcontainer.md +25 −25

Details

12 12 

13<Warning>13<Warning>

14 Meskipun dev container menyediakan perlindungan yang substansial, tidak ada sistem yang sepenuhnya kebal terhadap semua serangan.14 Meskipun dev container menyediakan perlindungan yang substansial, tidak ada sistem yang sepenuhnya kebal terhadap semua serangan.

15 Ketika dijalankan dengan `--dangerously-skip-permissions`, dev container tidak mencegah proyek berbahaya dari mengekstraksi apa pun yang dapat diakses di dalam kontainer, termasuk kredensial Claude Code yang disimpan di [`~/.claude`](/id/claude-directory).15 Ketika dijalankan dengan `--dangerously-skip-permissions`, dev container tidak mencegah proyek berbahaya dari mengekstraksi apa pun yang dapat diakses di dalam kontainer, termasuk kredensial Claude Code yang disimpan di [`~/.claude`](/docs/id/claude-directory).

16 Hanya gunakan dev container saat mengembangkan dengan repositori terpercaya, dan pantau aktivitas Claude.16 Hanya gunakan dev container saat mengembangkan dengan repositori terpercaya, dan pantau aktivitas Claude.

17 Hindari memasang rahasia host seperti `~/.ssh` atau file kredensial cloud ke dalam kontainer; lebih suka token yang dibatasi repositori atau token berumur pendek.17 Hindari memasang rahasia host seperti `~/.ssh` atau file kredensial cloud ke dalam kontainer; lebih suka token yang dibatasi repositori atau token berumur pendek.

18</Warning>18</Warning>


20<Accordion title="Bagaimana dev container bekerja dengan editor Anda">20<Accordion title="Bagaimana dev container bekerja dengan editor Anda">

21 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="Diagram menunjukkan editor di host yang terhubung ke Docker dev container. Claude Code, terminal, dan alat build berjalan di dalam kontainer. Repositori host di-bind-mount ke dalam kontainer sebagai workspace." width="640" height="300" data-path="images/devcontainer-architecture.svg" />21 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="Diagram menunjukkan editor di host yang terhubung ke Docker dev container. Claude Code, terminal, dan alat build berjalan di dalam kontainer. Repositori host di-bind-mount ke dalam kontainer sebagai workspace." width="640" height="300" data-path="images/devcontainer-architecture.svg" />

22 22 

23 <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=ef00c8e25b1ea7a3a152895f1488831b" className="hidden dark:block" alt="Diagram menunjukkan editor di host yang terhubung ke Docker dev container. Claude Code, terminal, dan alat build berjalan di dalam kontainer. Repositori host di-bind-mount ke dalam kontainer sebagai workspace." width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />23 <img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=a0a340b1f2afc6a590696102c8acaaca" className="hidden dark:block" alt="Diagram menunjukkan editor di host yang terhubung ke Docker dev container. Claude Code, terminal, dan alat build berjalan di dalam kontainer. Repositori host di-bind-mount ke dalam kontainer sebagai workspace." width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />

24 24 

25 Dev container berjalan sebagai Docker container, baik di mesin Anda atau di host cloud seperti GitHub Codespaces. Editor yang mendukung spesifikasi Dev Containers, seperti VS Code, GitHub Codespaces, JetBrains IDE, atau Cursor, terhubung ke kontainer tersebut: Anda menjelajahi dan mengedit file di editor seperti biasa, tetapi terminal terintegrasi, language server, dan alat build semuanya berjalan di dalam kontainer daripada di host Anda. Editor tanpa dukungan dev container, seperti Vim biasa, bukan bagian dari alur kerja ini.25 Dev container berjalan sebagai Docker container, baik di mesin Anda atau di host cloud seperti GitHub Codespaces. Editor yang mendukung spesifikasi Dev Containers, seperti VS Code, GitHub Codespaces, JetBrains IDE, atau Cursor, terhubung ke kontainer tersebut: Anda menjelajahi dan mengedit file di editor seperti biasa, tetapi terminal terintegrasi, language server, dan alat build semuanya berjalan di dalam kontainer daripada di host Anda. Editor tanpa dukungan dev container, seperti Vim biasa, bukan bagian dari alur kerja ini.

26 26 

27 Claude Code berjalan di dalam kontainer, jadi ia melihat file, dependensi, dan alat yang sama seperti sisa toolchain proyek Anda. Di VS Code Anda dapat menggunakan [panel ekstensi Claude Code](/id/vs-code) atau menjalankan `claude` di terminal terintegrasi; keduanya berjalan di dalam kontainer dan berbagi konfigurasi `~/.claude` yang sama.27 Claude Code berjalan di dalam kontainer, jadi ia melihat file, dependensi, dan alat yang sama seperti sisa toolchain proyek Anda. Di VS Code Anda dapat menggunakan [panel ekstensi Claude Code](/docs/id/vs-code) atau menjalankan `claude` di terminal terintegrasi; keduanya berjalan di dalam kontainer dan berbagi konfigurasi `~/.claude` yang sama.

28</Accordion>28</Accordion>

29 29 

30<h2 id="add-claude-code-to-your-dev-container">30<h2 id="add-claude-code-to-your-dev-container">


75Apa yang Anda lihat di permintaan autentikasi tergantung pada penyedia Anda:75Apa yang Anda lihat di permintaan autentikasi tergantung pada penyedia Anda:

76 76 

77* **Anthropic**: masuk melalui browser dengan akun Claude atau Anthropic Console Anda77* **Anthropic**: masuk melalui browser dengan akun Claude atau Anthropic Console Anda

78* **[Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry](/id/third-party-integrations)**: Claude Code menggunakan kredensial penyedia cloud Anda, tanpa permintaan browser78* **[Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry](/docs/id/third-party-integrations)**: Claude Code menggunakan kredensial penyedia cloud Anda, tanpa permintaan browser

79 79 

80Untuk penyedia cloud, teruskan kredensial ke dalam kontainer sebagai variabel lingkungan melalui `containerEnv`, rahasia Codespaces, atau identitas workload cloud Anda daripada memasang file kredensial dari host. Lihat [Amazon Bedrock](/id/amazon-bedrock), [Google Cloud's Agent Platform](/id/google-vertex-ai), atau [Microsoft Foundry](/id/microsoft-foundry) untuk rantai kredensial yang dibaca Claude Code.80Untuk penyedia cloud, teruskan kredensial ke dalam kontainer sebagai variabel lingkungan melalui `containerEnv`, rahasia Codespaces, atau identitas workload cloud Anda daripada memasang file kredensial dari host. Lihat [Amazon Bedrock](/docs/id/amazon-bedrock), [Google Cloud's Agent Platform](/docs/id/google-vertex-ai), atau [Microsoft Foundry](/docs/id/microsoft-foundry) untuk rantai kredensial yang dibaca Claude Code.

81 81 

82Lihat [Pilih penyedia API Anda](/id/admin-setup#choose-your-api-provider) untuk memutuskan jalur mana yang sesuai dengan organisasi Anda.82Lihat [Pilih penyedia API Anda](/docs/id/admin-setup#choose-your-api-provider) untuk memutuskan jalur mana yang sesuai dengan organisasi Anda.

83 83 

84<Note>84<Note>

85 Jika masuk browser selesai tetapi callback tidak pernah mencapai kontainer, salin kode yang ditampilkan di browser dan tempel di permintaan `Paste code here if prompted` di terminal. Ini dapat terjadi ketika port forwarding editor tidak merutekan callback localhost.85 Jika masuk browser selesai tetapi callback tidak pernah mencapai kontainer, salin kode yang ditampilkan di browser dan tempel di permintaan `Paste code here if prompted` di terminal. Ini dapat terjadi ketika port forwarding editor tidak merutekan callback localhost.


89 Pertahankan autentikasi dan pengaturan di seluruh rebuild89 Pertahankan autentikasi dan pengaturan di seluruh rebuild

90</h2>90</h2>

91 91 

92Secara default, direktori home kontainer dibuang saat rebuild, jadi insinyur harus masuk lagi setiap kali. Claude Code menyimpan token autentikasi, pengaturan pengguna, dan riwayat sesi di bawah [`~/.claude`](/id/claude-directory). Pasang volume bernama di jalur tersebut untuk menjaga status ini di seluruh rebuild.92Secara default, direktori home kontainer dibuang saat rebuild, jadi insinyur harus masuk lagi setiap kali. Claude Code menyimpan token autentikasi, pengaturan pengguna, dan riwayat sesi di bawah [`~/.claude`](/docs/id/claude-directory). Pasang volume bernama di jalur tersebut untuk menjaga status ini di seluruh rebuild.

93 93 

94Contoh berikut memasang volume di direktori home pengguna `node`:94Contoh berikut memasang volume di direktori home pengguna `node`:

95 95 


99]99]

100```100```

101 101 

102Ganti `/home/node` dengan direktori home `remoteUser` kontainer Anda. Jika Anda memasang volume di tempat lain selain `~/.claude`, atur [`CLAUDE_CONFIG_DIR`](/id/env-vars) ke jalur mount sehingga Claude Code membaca dan menulis di sana.102Ganti `/home/node` dengan direktori home `remoteUser` kontainer Anda. Jika Anda memasang volume di tempat lain selain `~/.claude`, atur [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars) ke jalur mount sehingga Claude Code membaca dan menulis di sana.

103 103 

104Untuk mengisolasi status per proyek daripada berbagi satu volume di semua repositori, sertakan variabel `${devcontainerId}` dalam nama sumber. [Konfigurasi referensi](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) menggunakan `source=claude-code-config-${devcontainerId}` untuk tujuan ini.104Untuk mengisolasi status per proyek daripada berbagi satu volume di semua repositori, sertakan variabel `${devcontainerId}` dalam nama sumber. [Konfigurasi referensi](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) menggunakan `source=claude-code-config-${devcontainerId}` untuk tujuan ini.

105 105 

106Di GitHub Codespaces, `~/.claude` bertahan di seluruh penghentian dan memulai codespace, tetapi masih dihapus saat Anda membangun kembali kontainer, jadi pemasangan volume di atas juga berlaku di sana. Untuk membawa autentikasi di seluruh codespace, simpan `ANTHROPIC_API_KEY` atau `CLAUDE_CODE_OAUTH_TOKEN` dari [`claude setup-token`](/id/authentication#generate-a-long-lived-token) sebagai [rahasia Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces); Codespaces membuat rahasia tersedia sebagai variabel lingkungan di dalam kontainer secara otomatis.106Di GitHub Codespaces, `~/.claude` bertahan di seluruh penghentian dan memulai codespace, tetapi masih dihapus saat Anda membangun kembali kontainer, jadi pemasangan volume di atas juga berlaku di sana. Untuk membawa autentikasi di seluruh codespace, simpan `ANTHROPIC_API_KEY` atau `CLAUDE_CODE_OAUTH_TOKEN` dari [`claude setup-token`](/docs/id/authentication#generate-a-long-lived-token) sebagai [rahasia Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces); Codespaces membuat rahasia tersedia sebagai variabel lingkungan di dalam kontainer secara otomatis.

107 107 

108<h2 id="enforce-organization-policy">108<h2 id="enforce-organization-policy">

109 Terapkan kebijakan organisasi109 Terapkan kebijakan organisasi


111 111 

112Dev container adalah tempat yang nyaman untuk menerapkan kebijakan organisasi, karena citra dan konfigurasi yang sama berjalan di mesin setiap insinyur.112Dev container adalah tempat yang nyaman untuk menerapkan kebijakan organisasi, karena citra dan konfigurasi yang sama berjalan di mesin setiap insinyur.

113 113 

114Claude Code membaca `/etc/claude-code/managed-settings.json` di Linux dan menerapkannya dengan prioritas tertinggi dalam [hierarki pengaturan](/id/settings#how-scopes-interact), jadi nilai di sana menggantikan apa pun yang ditetapkan insinyur di `~/.claude` atau direktori `.claude/` proyek. Salin file ke tempat dari Dockerfile Anda:114Claude Code membaca `/etc/claude-code/managed-settings.json` di Linux dan menerapkannya dengan prioritas tertinggi dalam [hierarki pengaturan](/docs/id/settings#how-scopes-interact), jadi nilai di sana menggantikan apa pun yang ditetapkan insinyur di `~/.claude` atau direktori `.claude/` proyek. Salin file ke tempat dari Dockerfile Anda:

115 115 

116```dockerfile Dockerfile theme={null}116```dockerfile Dockerfile theme={null}

117RUN mkdir -p /etc/claude-code117RUN mkdir -p /etc/claude-code

118COPY managed-settings.json /etc/claude-code/managed-settings.json118COPY managed-settings.json /etc/claude-code/managed-settings.json

119```119```

120 120 

121Karena Dockerfile berada di repositori, siapa pun dengan akses tulis dapat mengubah atau menghapus langkah ini. Untuk kebijakan yang tidak dapat dilewati insinyur dengan mengedit file repositori, berikan pengaturan terkelola melalui [pengaturan yang dikelola server](/id/server-managed-settings) atau MDM Anda. Lihat [file pengaturan terkelola](/id/settings#settings-files) untuk kunci yang tersedia dan jalur pengiriman lainnya.121Karena Dockerfile berada di repositori, siapa pun dengan akses tulis dapat mengubah atau menghapus langkah ini. Untuk kebijakan yang tidak dapat dilewati insinyur dengan mengedit file repositori, berikan pengaturan terkelola melalui [pengaturan yang dikelola server](/docs/id/server-managed-settings) atau MDM Anda. Lihat [file pengaturan terkelola](/docs/id/settings#settings-files) untuk kunci yang tersedia dan jalur pengiriman lainnya.

122 122 

123Untuk mengatur [variabel lingkungan](/id/env-vars) yang berlaku untuk setiap sesi Claude Code di kontainer, tambahkan ke `containerEnv` di `devcontainer.json` Anda. Contoh berikut memilih keluar dari telemetri dan pelaporan kesalahan dan mencegah Claude Code dari auto-update setelah instalasi:123Untuk mengatur [variabel lingkungan](/docs/id/env-vars) yang berlaku untuk setiap sesi Claude Code di kontainer, tambahkan ke `containerEnv` di `devcontainer.json` Anda. Contoh berikut memilih keluar dari telemetri dan pelaporan kesalahan dan mencegah Claude Code dari auto-update setelah instalasi:

124 124 

125```json devcontainer.json theme={null}125```json devcontainer.json theme={null}

126"containerEnv": {126"containerEnv": {


131 131 

132Dev Container Feature selalu menginstal rilis Claude Code terbaru. Untuk menentukan versi Claude Code tertentu untuk build yang dapat direproduksi, instal dari Dockerfile Anda dengan `npm install -g @anthropic-ai/claude-code@X.Y.Z` daripada menggunakan fitur, dan atur `DISABLE_AUTOUPDATER` seperti yang ditunjukkan di atas.132Dev Container Feature selalu menginstal rilis Claude Code terbaru. Untuk menentukan versi Claude Code tertentu untuk build yang dapat direproduksi, instal dari Dockerfile Anda dengan `npm install -g @anthropic-ai/claude-code@X.Y.Z` daripada menggunakan fitur, dan atur `DISABLE_AUTOUPDATER` seperti yang ditunjukkan di atas.

133 133 

134Untuk daftar lengkap kontrol kebijakan termasuk aturan izin, pembatasan alat, dan allowlist server MCP, lihat [Atur Claude Code untuk organisasi Anda](/id/admin-setup).134Untuk daftar lengkap kontrol kebijakan termasuk aturan izin, pembatasan alat, dan allowlist server MCP, lihat [Atur Claude Code untuk organisasi Anda](/docs/id/admin-setup).

135 135 

136Untuk membuat [server MCP](/id/mcp) tersedia di dalam kontainer, tentukan di [cakupan proyek](/id/mcp#mcp-installation-scopes) dalam file `.mcp.json` di akar repositori sehingga diperiksa bersama konfigurasi dev container Anda. Instal binari apa pun yang bergantung pada server stdio lokal di Dockerfile Anda, dan tambahkan domain server jarak jauh ke allowlist jaringan Anda.136Untuk membuat [server MCP](/docs/id/mcp) tersedia di dalam kontainer, tentukan di [cakupan proyek](/docs/id/mcp#mcp-installation-scopes) dalam file `.mcp.json` di akar repositori sehingga diperiksa bersama konfigurasi dev container Anda. Instal binari apa pun yang bergantung pada server stdio lokal di Dockerfile Anda, dan tambahkan domain server jarak jauh ke allowlist jaringan Anda.

137 137 

138<h2 id="restrict-network-egress">138<h2 id="restrict-network-egress">

139 Batasi egress jaringan139 Batasi egress jaringan

140</h2>140</h2>

141 141 

142Anda dapat membatasi lalu lintas keluar kontainer hanya ke domain yang dibutuhkan Claude Code. Lihat [Persyaratan akses jaringan](/id/network-config#network-access-requirements) untuk domain inferensi dan autentikasi, dan [Layanan telemetri](/id/data-usage#telemetry-services) untuk koneksi telemetri dan pelaporan kesalahan opsional dan cara menonaktifkannya.142Anda dapat membatasi lalu lintas keluar kontainer hanya ke domain yang dibutuhkan Claude Code. Lihat [Persyaratan akses jaringan](/docs/id/network-config#network-access-requirements) untuk domain inferensi dan autentikasi, dan [Layanan telemetri](/docs/id/data-usage#telemetry-services) untuk koneksi telemetri dan pelaporan kesalahan opsional dan cara menonaktifkannya.

143 143 

144Kontainer referensi mencakup skrip [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) yang memblokir semua lalu lintas keluar kecuali domain yang dibutuhkan Claude Code dan alat pengembangan Anda. Menjalankan firewall di dalam kontainer memerlukan izin ekstra, jadi referensi menambahkan kemampuan `NET_ADMIN` dan `NET_RAW` melalui `runArgs`. Skrip firewall dan kemampuan ini tidak diperlukan untuk Claude Code itu sendiri: Anda dapat meninggalkannya dan mengandalkan kontrol jaringan Anda sendiri.144Kontainer referensi mencakup skrip [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh) yang memblokir semua lalu lintas keluar kecuali domain yang dibutuhkan Claude Code dan alat pengembangan Anda. Menjalankan firewall di dalam kontainer memerlukan izin ekstra, jadi referensi menambahkan kemampuan `NET_ADMIN` dan `NET_RAW` melalui `runArgs`. Skrip firewall dan kemampuan ini tidak diperlukan untuk Claude Code itu sendiri: Anda dapat meninggalkannya dan mengandalkan kontrol jaringan Anda sendiri.

145 145 


151 151 

152Melewatkan permintaan izin menghilangkan kesempatan Anda untuk meninjau panggilan alat sebelum dijalankan. Claude masih dapat memodifikasi file apa pun di workspace yang di-bind-mount, yang muncul langsung di host Anda, dan menjangkau apa pun yang diizinkan kebijakan jaringan kontainer. Pasangkan flag ini dengan [pembatasan egress jaringan](#restrict-network-egress) di atas untuk membatasi apa yang dapat dijangkau sesi yang dilewati.152Melewatkan permintaan izin menghilangkan kesempatan Anda untuk meninjau panggilan alat sebelum dijalankan. Claude masih dapat memodifikasi file apa pun di workspace yang di-bind-mount, yang muncul langsung di host Anda, dan menjangkau apa pun yang diizinkan kebijakan jaringan kontainer. Pasangkan flag ini dengan [pembatasan egress jaringan](#restrict-network-egress) di atas untuk membatasi apa yang dapat dijangkau sesi yang dilewati.

153 153 

154Jika Anda menginginkan lebih sedikit permintaan tanpa menonaktifkan pemeriksaan keamanan, pertimbangkan [mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode), yang memiliki pengklasifikasi meninjau tindakan sebelum dijalankan. Untuk mencegah insinyur menggunakan `--dangerously-skip-permissions` sama sekali, atur `permissions.disableBypassPermissionsMode` ke `"disable"` dalam [pengaturan terkelola](/id/settings#permission-settings).154Jika Anda menginginkan lebih sedikit permintaan tanpa menonaktifkan pemeriksaan keamanan, pertimbangkan [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), yang memiliki pengklasifikasi meninjau tindakan sebelum dijalankan. Untuk mencegah insinyur menggunakan `--dangerously-skip-permissions` sama sekali, atur `permissions.disableBypassPermissionsMode` ke `"disable"` dalam [pengaturan terkelola](/docs/id/settings#permission-settings).

155 155 

156<h2 id="try-the-reference-container">156<h2 id="try-the-reference-container">

157 Coba kontainer referensi157 Coba kontainer referensi


193 193 

194Setelah Claude Code berjalan di dev container Anda, halaman di bawah mencakup sisa peluncuran organisasi: memilih jalur autentikasi, memberikan kebijakan terkelola di luar repositori, memantau penggunaan, dan memahami apa yang disimpan dan dikirim Claude Code.194Setelah Claude Code berjalan di dev container Anda, halaman di bawah mencakup sisa peluncuran organisasi: memilih jalur autentikasi, memberikan kebijakan terkelola di luar repositori, memantau penggunaan, dan memahami apa yang disimpan dan dikirim Claude Code.

195 195 

196* [Atur Claude Code untuk organisasi Anda](/id/admin-setup): pilih penyedia autentikasi, putuskan bagaimana kebijakan mencapai perangkat, dan rencanakan peluncuran196* [Atur Claude Code untuk organisasi Anda](/docs/id/admin-setup): pilih penyedia autentikasi, putuskan bagaimana kebijakan mencapai perangkat, dan rencanakan peluncuran

197* [Pengaturan yang dikelola server](/id/server-managed-settings): berikan kebijakan terkelola dari konsol admin Claude.ai sehingga insinyur tidak dapat melewatinya dengan mengedit file repositori197* [Pengaturan yang dikelola server](/docs/id/server-managed-settings): berikan kebijakan terkelola dari konsol admin Claude.ai sehingga insinyur tidak dapat melewatinya dengan mengedit file repositori

198* [Pantau penggunaan dan aktivitas audit](/id/monitoring-usage): ekspor metrik OpenTelemetry dan tinjau apa yang dijalankan tim Anda198* [Pantau penggunaan dan aktivitas audit](/docs/id/monitoring-usage): ekspor metrik OpenTelemetry dan tinjau apa yang dijalankan tim Anda

199* [Persyaratan akses jaringan](/id/network-config#network-access-requirements): daftar domain lengkap untuk proxy dan firewall199* [Persyaratan akses jaringan](/docs/id/network-config#network-access-requirements): daftar domain lengkap untuk proxy dan firewall

200* [Layanan telemetri dan opt-out](/id/data-usage#telemetry-services): apa yang dikirim Claude Code secara default dan variabel lingkungan yang menonaktifkannya200* [Layanan telemetri dan opt-out](/docs/id/data-usage#telemetry-services): apa yang dikirim Claude Code secara default dan variabel lingkungan yang menonaktifkannya

201* [Jelajahi direktori `.claude`](/id/claude-directory): apa yang disimpan pemasangan volume, termasuk kredensial, pengaturan, dan riwayat sesi201* [Jelajahi direktori `.claude`](/docs/id/claude-directory): apa yang disimpan pemasangan volume, termasuk kredensial, pengaturan, dan riwayat sesi

202* [Lingkungan sandbox](/id/sandbox-environments): bandingkan dev container dengan sandbox Bash bawaan, container khusus, dan VM202* [Lingkungan sandbox](/docs/id/sandbox-environments): bandingkan dev container dengan sandbox Bash bawaan, container khusus, dan VM

203* [Model keamanan](/id/security): bagaimana sistem izin Claude Code, sandboxing, dan perlindungan injeksi prompt cocok bersama203* [Model keamanan](/docs/id/security): bagaimana sistem izin Claude Code, sandboxing, dan perlindungan injeksi prompt cocok bersama

204* [Mode izin](/id/permission-modes): rentang lengkap dari mode rencana ke mode otomatis ke bypass, dan kapan menggunakan masing-masing204* [Mode izin](/docs/id/permission-modes): rentang lengkap dari mode rencana ke mode otomatis ke bypass, dan kapan menggunakan masing-masing

prompt-caching.md +38 −38

Details

20 20 

21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="Empat giliran ditampilkan sebagai batang horizontal yang berkembang. Permintaan setiap giliran berisi semuanya dari giliran sebelumnya ditambah pertukaran terbaru ditambahkan di akhir. Pada giliran dua dan tiga, prefix yang tidak berubah dibaca dari cache dan hanya pertukaran baru yang diproses. Pada giliran empat, prompt sistem berubah, jadi prefix tidak lagi cocok dan seluruh permintaan diproses ulang dan ditulis." width="720" height="454" data-path="images/prompt-caching-prefix.svg" />21<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=f2e8f0b8298a50305fe428ca3f1d1594" className="dark:hidden" alt="Empat giliran ditampilkan sebagai batang horizontal yang berkembang. Permintaan setiap giliran berisi semuanya dari giliran sebelumnya ditambah pertukaran terbaru ditambahkan di akhir. Pada giliran dua dan tiga, prefix yang tidak berubah dibaca dari cache dan hanya pertukaran baru yang diproses. Pada giliran empat, prompt sistem berubah, jadi prefix tidak lagi cocok dan seluruh permintaan diproses ulang dan ditulis." width="720" height="454" data-path="images/prompt-caching-prefix.svg" />

22 22 

23<img src="https://mintcdn.com/claude-code/VbDJw--l6T9a9Wvm/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=VbDJw--l6T9a9Wvm&q=85&s=7434a04e08187edd26ec6c3dd332f624" className="hidden dark:block" alt="Empat giliran ditampilkan sebagai batang horizontal yang berkembang. Permintaan setiap giliran berisi semuanya dari giliran sebelumnya ditambah pertukaran terbaru ditambahkan di akhir. Pada giliran dua dan tiga, prefix yang tidak berubah dibaca dari cache dan hanya pertukaran baru yang diproses. Pada giliran empat, prompt sistem berubah, jadi prefix tidak lagi cocok dan seluruh permintaan diproses ulang dan ditulis." width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />23<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/prompt-caching-prefix-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=297dc1c639f0915cae858d0c4b6f3be5" className="hidden dark:block" alt="Empat giliran ditampilkan sebagai batang horizontal yang berkembang. Permintaan setiap giliran berisi semuanya dari giliran sebelumnya ditambah pertukaran terbaru ditambahkan di akhir. Pada giliran dua dan tiga, prefix yang tidak berubah dibaca dari cache dan hanya pertukaran baru yang diproses. Pada giliran empat, prompt sistem berubah, jadi prefix tidak lagi cocok dan seluruh permintaan diproses ulang dan ditulis." width="720" height="454" data-path="images/prompt-caching-prefix-dark.svg" />

24 24 

25Untuk mendapatkan hasil maksimal dari pencocokan prefix, Claude Code mengurutkan setiap permintaan sehingga konten yang jarang berubah di antara giliran datang terlebih dahulu:25Untuk mendapatkan hasil maksimal dari pencocokan prefix, Claude Code mengurutkan setiap permintaan sehingga konten yang jarang berubah di antara giliran datang terlebih dahulu:

26 26 


32 32 

33Perubahan pada layer percakapan meninggalkan prompt sistem dan konteks proyek di-cache. Perubahan pada prompt sistem membatalkan semuanya, karena semua konten selanjutnya sekarang berada di belakang prefix yang berbeda. Kolom ketiga memberikan pemicu umum daripada daftar lengkap, dan bagian di bawah mencakup set lengkap, termasuk konten seperti gaya output yang ditetapkan pada awal sesi.33Perubahan pada layer percakapan meninggalkan prompt sistem dan konteks proyek di-cache. Perubahan pada prompt sistem membatalkan semuanya, karena semua konten selanjutnya sekarang berada di belakang prefix yang berbeda. Kolom ketiga memberikan pemicu umum daripada daftar lengkap, dan bagian di bawah mencakup set lengkap, termasuk konten seperti gaya output yang ditetapkan pada awal sesi.

34 34 

35Aturan pencocokan prefix menjelaskan sebagian besar perilaku di halaman ini. [Plan mode](/id/permission-modes#analyze-before-you-edit-with-plan-mode) dan [skill loading](/id/skills), misalnya, menambahkan instruksi mereka sebagai pesan percakapan, jadi prefix yang di-cache tetap utuh.35Aturan pencocokan prefix menjelaskan sebagian besar perilaku di halaman ini. [Plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) dan [skill loading](/docs/id/skills), misalnya, menambahkan instruksi mereka sebagai pesan percakapan, jadi prefix yang di-cache tetap utuh.

36 36 

37Dua pengaturan tidak termasuk dalam teks prompt sama sekali, jadi mereka tidak muncul dalam tabel layer, tetapi keduanya adalah bagian dari kunci cache:37Dua pengaturan tidak termasuk dalam teks prompt sama sekali, jadi mereka tidak muncul dalam tabel layer, tetapi keduanya adalah bagian dari kunci cache:

38 38 


49 49 

50Caching terjadi di sisi server, dalam infrastruktur apa pun yang melayani model Anda. Tempat itu tergantung pada cara Anda melakukan autentikasi:50Caching terjadi di sisi server, dalam infrastruktur apa pun yang melayani model Anda. Tempat itu tergantung pada cara Anda melakukan autentikasi:

51 51 

52* **API key, langganan Claude, atau [Claude Platform on AWS](/id/claude-platform-on-aws)**: cache berada di infrastruktur Anthropic, diakses melalui [Claude API](https://platform.claude.com/docs)52* **API key, langganan Claude, atau [Claude Platform on AWS](/docs/id/claude-platform-on-aws)**: cache berada di infrastruktur Anthropic, diakses melalui [Claude API](https://platform.claude.com/docs)

53* **Amazon Bedrock atau Google Cloud's Agent Platform**: cache berada di infrastruktur penyajian penyedia cloud Anda53* **Amazon Bedrock atau Google Cloud's Agent Platform**: cache berada di infrastruktur penyajian penyedia cloud Anda

54* **Microsoft Foundry**: permintaan merutekan ke infrastruktur Anthropic54* **Microsoft Foundry**: permintaan merutekan ke infrastruktur Anthropic

55* **Custom `ANTHROPIC_BASE_URL` atau [LLM gateway](/id/llm-gateway)**: cache berada di mana pun permintaan Anda diteruskan, dan apakah caching berfungsi tergantung pada gateway55* **Custom `ANTHROPIC_BASE_URL` atau [LLM gateway](/docs/id/llm-gateway)**: cache berada di mana pun permintaan Anda diteruskan, dan apakah caching berfungsi tergantung pada gateway

56 56 

57Untuk apa yang disimpan dan diproses setiap penyedia, lihat [data usage](/id/data-usage). Di mana pun cache berada, entri kedaluwarsa setelah periode tidak aktif, dan [Cache lifetime](#cache-lifetime) di bawah mencakup TTL dan cara memperpanjangnya.57Untuk apa yang disimpan dan diproses setiap penyedia, lihat [data usage](/docs/id/data-usage). Di mana pun cache berada, entri kedaluwarsa setelah periode tidak aktif, dan [Cache lifetime](#cache-lifetime) di bawah mencakup TTL dan cara memperpanjangnya.

58 58 

59<h2 id="actions-that-invalidate-the-cache">59<h2 id="actions-that-invalidate-the-cache">

60 Tindakan yang membatalkan cache60 Tindakan yang membatalkan cache


75 Beralih model75 Beralih model

76</h3>76</h3>

77 77 

78Setiap model memiliki cache-nya sendiri. Beralih dengan [`/model`](/id/model-config#setting-your-model) berarti permintaan berikutnya membaca seluruh riwayat percakapan tanpa cache hits, meskipun kontennya identik.78Setiap model memiliki cache-nya sendiri. Beralih dengan [`/model`](/docs/id/model-config#setting-your-model) berarti permintaan berikutnya membaca seluruh riwayat percakapan tanpa cache hits, meskipun kontennya identik.

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`](/docs/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.82[Fallback model otomatis](/docs/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 83 

84<h3 id="changing-effort-level">84<h3 id="changing-effort-level">

85 Mengubah tingkat effort85 Mengubah tingkat effort

86</h3>86</h3>

87 87 

88Cache dikunci oleh [tingkat effort](/id/model-config#adjust-effort-level) serta model, jadi beralih dengan `/effort` berarti permintaan berikutnya membaca seluruh riwayat percakapan tanpa cache hits. Setelah percakapan dimulai, Claude Code menampilkan dialog konfirmasi sebelum menerapkan perubahan effort yang akan membatalkan cache. Perubahan yang diselesaikan ke tingkat yang sama yang sudah berlaku, seperti menetapkan default model secara eksplisit, melewati dialog dan menjaga cache.88Cache dikunci oleh [tingkat effort](/docs/id/model-config#adjust-effort-level) serta model, jadi beralih dengan `/effort` berarti permintaan berikutnya membaca seluruh riwayat percakapan tanpa cache hits. Setelah percakapan dimulai, Claude Code menampilkan dialog konfirmasi sebelum menerapkan perubahan effort yang akan membatalkan cache. Perubahan yang diselesaikan ke tingkat yang sama yang sudah berlaku, seperti menetapkan default model secara eksplisit, melewati dialog dan menjaga cache.

89 89 

90<h3 id="turning-on-fast-mode">90<h3 id="turning-on-fast-mode">

91 Mengaktifkan fast mode91 Mengaktifkan fast mode

92</h3>92</h3>

93 93 

94Mengaktifkan [fast mode](/id/fast-mode) menambahkan header permintaan yang merupakan bagian dari cache key, jadi permintaan berikutnya membaca seluruh riwayat percakapan tanpa cache hits. Token input yang tidak di-cache tersebut ditagih dengan [fast mode rates](/id/fast-mode#understand-the-cost-tradeoff), itulah mengapa mengaktifkannya di awal sesi lebih murah daripada mengaktifkannya jauh ke dalam sesi yang panjang. Mengaktifkan fast mode dari model non-Opus juga [beralih model Anda](#switching-models), yang memulai cache segar dengan sendirinya.94Mengaktifkan [fast mode](/docs/id/fast-mode) menambahkan header permintaan yang merupakan bagian dari cache key, jadi permintaan berikutnya membaca seluruh riwayat percakapan tanpa cache hits. Token input yang tidak di-cache tersebut ditagih dengan [fast mode rates](/docs/id/fast-mode#understand-the-cost-tradeoff), itulah mengapa mengaktifkannya di awal sesi lebih murah daripada mengaktifkannya jauh ke dalam sesi yang panjang. Mengaktifkan fast mode dari model non-Opus juga [beralih model Anda](#switching-models), yang memulai cache segar dengan sendirinya.

95 95 

96Biaya berlaku sekali per percakapan. Setelah giliran fast mode pertama, Claude Code terus mengirim header dan hanya memvariasikan pengaturan kecepatan permintaan, yang bukan bagian dari cache key. Mengaktifkan fast mode, [fallback otomatis ke kecepatan standar](/id/fast-mode#handle-rate-limits) setelah rate limit, dan mengaktifkannya kembali nanti semua menjaga cache. `/clear` dan `/compact` mengatur ulang ini, karena mereka membangun kembali cache di titik-titik tersebut bagaimanapun.96Biaya berlaku sekali per percakapan. Setelah giliran fast mode pertama, Claude Code terus mengirim header dan hanya memvariasikan pengaturan kecepatan permintaan, yang bukan bagian dari cache key. Mengaktifkan fast mode, [fallback otomatis ke kecepatan standar](/docs/id/fast-mode#handle-rate-limits) setelah rate limit, dan mengaktifkannya kembali nanti semua menjaga cache. `/clear` dan `/compact` mengatur ulang ini, karena mereka membangun kembali cache di titik-titik tersebut bagaimanapun.

97 97 

98<h3 id="connecting-or-disconnecting-an-mcp-server">98<h3 id="connecting-or-disconnecting-an-mcp-server">

99 Menghubungkan atau memutuskan server MCP99 Menghubungkan atau memutuskan server MCP

100</h3>100</h3>

101 101 

102Definisi 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:102Definisi alat berada di layer prompt sistem, jadi cache membatalkan ketika set definisi alat dalam permintaan berubah di antara giliran. Mengalihkan [advisor tool](/docs/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](/docs/id/mcp) melakukan ini tergantung pada apakah alatnya ditunda oleh [tool search](/docs/id/mcp#scale-with-mcp-tool-search) atau dimuat ke dalam prefix:

103 103 

104* **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.104* **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.

105* **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 Google Cloud's Agent Platform 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).105* **Alat yang dimuat ke dalam prefix**: perubahan apa pun pada mereka membatalkan cache. Ini terjadi ketika [tool search tidak tersedia atau dinonaktifkan](/docs/id/mcp#configure-tool-search), seperti pada Google Cloud's Agent Platform atau dengan gateway `ANTHROPIC_BASE_URL` kustom. Ini juga terjadi untuk server atau alat yang ditandai [`alwaysLoad`](/docs/id/mcp#exempt-a-server-from-deferral), dan untuk definisi yang disimpan di depan oleh [threshold-based loading](/docs/id/mcp#configure-tool-search).

106 106 

107Ketika alat dimuat ke dalam prefix, penyebab paling umum dari pembatalan adalah server yang terhubung atau terputus di tengah sesi, yang dapat terjadi tanpa tindakan apa pun dari pihak Anda: proses server stdio keluar, sesi HTTP kedaluwarsa, atau server [reconnects secara otomatis setelah kegagalan sementara](/id/mcp#automatic-reconnection). Server yang terhubung juga dapat mendorong [dynamic tool update](/id/mcp#dynamic-tool-updates) yang mengubah daftar alatnya.107Ketika alat dimuat ke dalam prefix, penyebab paling umum dari pembatalan adalah server yang terhubung atau terputus di tengah sesi, yang dapat terjadi tanpa tindakan apa pun dari pihak Anda: proses server stdio keluar, sesi HTTP kedaluwarsa, atau server [reconnects secara otomatis setelah kegagalan sementara](/docs/id/mcp#automatic-reconnection). Server yang terhubung juga dapat mendorong [dynamic tool update](/docs/id/mcp#dynamic-tool-updates) yang mengubah daftar alatnya.

108 108 

109Mengedit konfigurasi MCP Anda tidak dengan sendirinya mengubah cache. Konfigurasi baru berlaku hanya setelah restart, yaitu ketika server terhubung atau terputus.109Mengedit konfigurasi MCP Anda tidak dengan sendirinya mengubah cache. Konfigurasi baru berlaku hanya setelah restart, yaitu ketika server terhubung atau terputus.

110 110 


112 Mengaktifkan atau menonaktifkan plugin112 Mengaktifkan atau menonaktifkan plugin

113</h3>113</h3>

114 114 

115[Plugin](/id/plugins) menggabungkan beberapa jenis komponen, dan biaya perubahan tergantung pada komponen mana yang disediakan plugin. Skills, commands, agents, hooks, LSP servers, monitors, dan themes tidak pernah membatalkan cache: apa pun yang mereka tambahkan ke permintaan ditambahkan setelah percakapan yang ada, jadi permintaan berikutnya membayar untuk konten baru tetapi masih membaca semuanya sebelumnya dari cache.115[Plugin](/docs/id/plugins) menggabungkan beberapa jenis komponen, dan biaya perubahan tergantung pada komponen mana yang disediakan plugin. Skills, commands, agents, hooks, LSP servers, monitors, dan themes tidak pernah membatalkan cache: apa pun yang mereka tambahkan ke permintaan ditambahkan setelah percakapan yang ada, jadi permintaan berikutnya membayar untuk konten baru tetapi masih membaca semuanya sebelumnya dari cache.

116 116 

117Pengecualiannya 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.117Pengecualiannya adalah plugin yang menyediakan [server MCP](/docs/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.

118 118 

119Perubahan 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.119Perubahan plugin berlaku ketika Anda menjalankan [`/reload-plugins`](/docs/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.

120 120 

121Menonaktifkan 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.121Menonaktifkan 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.

122 122 


124 Menolak seluruh tool124 Menolak seluruh tool

125</h3>125</h3>

126 126 

127Menambahkan 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).127Menambahkan nama tool yang sederhana seperti `Bash` atau `WebFetch` sebagai [deny rule](/docs/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](/docs/id/settings#when-edits-take-effect).

128 128 

129Hanya 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.129Hanya deny rule yang cocok di posisi nama-tool yang memiliki efek ini: nama tool yang sederhana, bentuk setara `Bash(*)`, atau [tool-name glob](/docs/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.

130 130 

131<h3 id="compacting-the-conversation">131<h3 id="compacting-the-conversation">

132 Memadatkan percakapan132 Memadatkan percakapan

133</h3>133</h3>

134 134 

135[Compaction](/id/context-window#what-survives-compaction) menggantikan riwayat pesan Anda dengan ringkasan. Dengan desain, ini membatalkan layer percakapan, karena permintaan berikutnya memiliki riwayat baru yang lebih pendek yang tidak berbagi prefix dengan yang lama. Claude Code menggunakan kembali layer prompt sistem dan memuat ulang konteks proyek dari disk, yang cache-hits hanya jika CLAUDE.md dan memory tidak berubah sejak sesi dimulai.135[Compaction](/docs/id/context-window#what-survives-compaction) menggantikan riwayat pesan Anda dengan ringkasan. Dengan desain, ini membatalkan layer percakapan, karena permintaan berikutnya memiliki riwayat baru yang lebih pendek yang tidak berbagi prefix dengan yang lama. Claude Code menggunakan kembali layer prompt sistem dan memuat ulang konteks proyek dari disk, yang cache-hits hanya jika CLAUDE.md dan memory tidak berubah sejak sesi dimulai.

136 136 

137Untuk menghasilkan ringkasan, Claude Code mengirim permintaan satu kali dengan prompt sistem, alat, dan riwayat yang sama dengan percakapan Anda, ditambah instruksi summarisasi ditambahkan sebagai pesan pengguna akhir. Karena berbagi prefix Anda, permintaan itu membaca cache yang ada daripada memproses ulang riwayat lengkap. Sebagian besar waktu compaction dihabiskan untuk menghasilkan ringkasan, bukan untuk cache miss. Giliran yang mengikuti membangun kembali cache percakapan hanya untuk ringkasan yang jauh lebih pendek, jadi giliran pasca-compaction bukan bagian yang lambat.137Untuk menghasilkan ringkasan, Claude Code mengirim permintaan satu kali dengan prompt sistem, alat, dan riwayat yang sama dengan percakapan Anda, ditambah instruksi summarisasi ditambahkan sebagai pesan pengguna akhir. Karena berbagi prefix Anda, permintaan itu membaca cache yang ada daripada memproses ulang riwayat lengkap. Sebagian besar waktu compaction dihabiskan untuk menghasilkan ringkasan, bukan untuk cache miss. Giliran yang mengikuti membangun kembali cache percakapan hanya untuk ringkasan yang jauh lebih pendek, jadi giliran pasca-compaction bukan bagian yang lambat.

138 138 


144 Meningkatkan Claude Code144 Meningkatkan Claude Code

145</h3>145</h3>

146 146 

147Versi Claude Code baru biasanya memperbarui prompt sistem atau definisi alat, jadi permintaan pertama setelah upgrade membangun kembali cache dari atas. [Auto-update](/id/setup#auto-updates) mengunduh versi baru di latar belakang tetapi menerapkannya pada peluncuran berikutnya, tidak pernah di tengah sesi, jadi Anda melihat ini sebagai giliran pertama tanpa cache setelah restart daripada kejutan selama sesi. Atur `DISABLE_AUTOUPDATER=1` untuk mengontrol kapan upgrade diterapkan.147Versi Claude Code baru biasanya memperbarui prompt sistem atau definisi alat, jadi permintaan pertama setelah upgrade membangun kembali cache dari atas. [Auto-update](/docs/id/setup#auto-updates) mengunduh versi baru di latar belakang tetapi menerapkannya pada peluncuran berikutnya, tidak pernah di tengah sesi, jadi Anda melihat ini sebagai giliran pertama tanpa cache setelah restart daripada kejutan selama sesi. Atur `DISABLE_AUTOUPDATER=1` untuk mengontrol kapan upgrade diterapkan.

148 148 

149<Note>149<Note>

150 [Melanjutkan sesi](/id/sessions#resume-a-session) setelah upgrade memproses ulang seluruh riwayat percakapan tanpa cache hits, karena riwayat sekarang berada di belakang prompt sistem yang berbeda. Biaya diskalakan dengan seberapa lama percakapan yang dilanjutkan, jadi giliran pertama kembali ke sesi panjang dapat menjadi permintaan paling mahal yang Anda kirim.150 [Melanjutkan sesi](/docs/id/sessions#resume-a-session) setelah upgrade memproses ulang seluruh riwayat percakapan tanpa cache hits, karena riwayat sekarang berada di belakang prompt sistem yang berbeda. Biaya diskalakan dengan seberapa lama percakapan yang dilanjutkan, jadi giliran pertama kembali ke sesi panjang dapat menjadi permintaan paling mahal yang Anda kirim.

151</Note>151</Note>

152 152 

153<h2 id="actions-that-keep-the-cache">153<h2 id="actions-that-keep-the-cache">


177 177 

178File CLAUDE.md tingkat akar proyek dan tingkat pengguna dibaca sekali pada awal sesi dan disimpan dalam memori. Mengedit mereka di tengah sesi tidak membatalkan cache, tetapi edit juga tidak berlaku. Claude terus bekerja dengan versi yang dimuat pada awal sesi. Konten baru dimuat pada `/clear`, `/compact`, atau restart berikutnya.178File CLAUDE.md tingkat akar proyek dan tingkat pengguna dibaca sekali pada awal sesi dan disimpan dalam memori. Mengedit mereka di tengah sesi tidak membatalkan cache, tetapi edit juga tidak berlaku. Claude terus bekerja dengan versi yang dimuat pada awal sesi. Konten baru dimuat pada `/clear`, `/compact`, atau restart berikutnya.

179 179 

180[File CLAUDE.md bersarang di subdirektori](/id/memory) dan [aturan dengan frontmatter `paths:`](/id/memory#path-specific-rules) dimuat nanti, ketika Claude pertama kali membaca file yang cocok. Mengedit satu sebelum dimuat memang berlaku. Setelah dimuat, konten adalah bagian dari riwayat percakapan, jadi edit di tengah sesi tidak secara retroaktif mengubahnya.180[File CLAUDE.md bersarang di subdirektori](/docs/id/memory) dan [aturan dengan frontmatter `paths:`](/docs/id/memory#path-specific-rules) dimuat nanti, ketika Claude pertama kali membaca file yang cocok. Mengedit satu sebelum dimuat memang berlaku. Setelah dimuat, konten adalah bagian dari riwayat percakapan, jadi edit di tengah sesi tidak secara retroaktif mengubahnya.

181 181 

182<h3 id="changing-output-style">182<h3 id="changing-output-style">

183 Mengubah gaya output183 Mengubah gaya output

184</h3>184</h3>

185 185 

186[Output style](/id/output-styles) adalah bagian dari prompt sistem, yang Claude Code baca sekali pada awal sesi. Mengubahnya melalui `/config` atau pengaturan `outputStyle` di tengah sesi tidak membatalkan cache, tetapi perubahan juga tidak berlaku. Claude terus menggunakan gaya yang dimuat pada awal sesi. Gaya baru dimuat pada `/clear` atau restart berikutnya.186[Output style](/docs/id/output-styles) adalah bagian dari prompt sistem, yang Claude Code baca sekali pada awal sesi. Mengubahnya melalui `/config` atau pengaturan `outputStyle` di tengah sesi tidak membatalkan cache, tetapi perubahan juga tidak berlaku. Claude terus menggunakan gaya yang dimuat pada awal sesi. Gaya baru dimuat pada `/clear` atau restart berikutnya.

187 187 

188<h3 id="changing-permission-mode">188<h3 id="changing-permission-mode">

189 Mengubah mode izin189 Mengubah mode izin

190</h3>190</h3>

191 191 

192Beralih di antara [permission modes](/id/permission-modes), seperti dari default ke accept edits, tidak mengubah prompt sistem atau definisi alat, jadi perubahan mode aman cache. Pengecualiannya adalah plan mode dengan pengaturan model [`opusplan`](/id/model-config#opusplan-model-setting), yang beralih model di antara Opus dan Sonnet saat Anda memasuki atau meninggalkan plan mode. Itu membuat toggle mode menjadi [model switch](#switching-models).192Beralih di antara [permission modes](/docs/id/permission-modes), seperti dari default ke accept edits, tidak mengubah prompt sistem atau definisi alat, jadi perubahan mode aman cache. Pengecualiannya adalah plan mode dengan pengaturan model [`opusplan`](/docs/id/model-config#opusplan-model-setting), yang beralih model di antara Opus dan Sonnet saat Anda memasuki atau meninggalkan plan mode. Itu membuat toggle mode menjadi [model switch](#switching-models).

193 193 

194<h3 id="invoking-skills-and-commands">194<h3 id="invoking-skills-and-commands">

195 Memanggil skills dan commands195 Memanggil skills dan commands

196</h3>196</h3>

197 197 

198[Skills](/id/skills) dan [commands](/id/commands) menyuntikkan instruksi mereka sebagai pesan pengguna pada titik invokasi. Tidak ada yang lebih awal dalam percakapan yang berubah.198[Skills](/docs/id/skills) dan [commands](/docs/id/commands) menyuntikkan instruksi mereka sebagai pesan pengguna pada titik invokasi. Tidak ada yang lebih awal dalam percakapan yang berubah.

199 199 

200<h3 id="running-/recap">200<h3 id="running-/recap">

201 Menjalankan `/recap`201 Menjalankan `/recap`

202</h3>202</h3>

203 203 

204[`/recap`](/id/interactive-mode#session-recap) menghasilkan ringkasan untuk ditampilkan di terminal Anda. Tidak seperti `/compact`, ini menambahkan ringkasan sebagai output perintah daripada menggantikan riwayat pesan Anda, jadi prefix yang di-cache tetap utuh.204[`/recap`](/docs/id/interactive-mode#session-recap) menghasilkan ringkasan untuk ditampilkan di terminal Anda. Tidak seperti `/compact`, ini menambahkan ringkasan sebagai output perintah daripada menggantikan riwayat pesan Anda, jadi prefix yang di-cache tetap utuh.

205 205 

206<h3 id="rewinding-the-conversation">206<h3 id="rewinding-the-conversation">

207 Memutar ulang percakapan207 Memutar ulang percakapan

208</h3>208</h3>

209 209 

210[`/rewind`](/id/checkpointing) memotong percakapan Anda kembali ke giliran sebelumnya. Riwayat yang tersisa adalah konten yang sama yang cache dibangun darinya pada saat itu, dan layer prompt sistem dan konteks proyek tidak berubah, jadi permintaan berikutnya mencapai entri cache sebelumnya. Setiap giliran sejak saat itu telah membaca melalui prefix itu, yang menjaga entri tetap hangat bahkan jika giliran asli lebih lama dari TTL.210[`/rewind`](/docs/id/checkpointing) memotong percakapan Anda kembali ke giliran sebelumnya. Riwayat yang tersisa adalah konten yang sama yang cache dibangun darinya pada saat itu, dan layer prompt sistem dan konteks proyek tidak berubah, jadi permintaan berikutnya mencapai entri cache sebelumnya. Setiap giliran sejak saat itu telah membaca melalui prefix itu, yang menjaga entri tetap hangat bahkan jika giliran asli lebih lama dari TTL.

211 211 

212Memulihkan checkpoint file bersama percakapan tidak memiliki efek terpisah pada cache. Konten file memasuki konteks hanya ketika Claude membacanya, sama seperti [mengedit file di repositori Anda](#editing-files-in-your-repository).212Memulihkan checkpoint file bersama percakapan tidak memiliki efek terpisah pada cache. Konten file memasuki konteks hanya ketika Claude membacanya, sama seperti [mengedit file di repositori Anda](#editing-files-in-your-repository).

213 213 


239 Ganti TTL239 Ganti TTL

240</h3>240</h3>

241 241 

242Atur `FORCE_PROMPT_CACHING_5M=1` untuk memaksa TTL lima menit terlepas dari autentikasi. Ini berguna ketika Anda men-debug perilaku cache, membandingkan dua TTL, atau mengganti `ENABLE_PROMPT_CACHING_1H` yang ditetapkan dalam [managed settings](/id/settings#settings-files).242Atur `FORCE_PROMPT_CACHING_5M=1` untuk memaksa TTL lima menit terlepas dari autentikasi. Ini berguna ketika Anda men-debug perilaku cache, membandingkan dua TTL, atau mengganti `ENABLE_PROMPT_CACHING_1H` yang ditetapkan dalam [managed settings](/docs/id/settings#settings-files).

243 243 

244<h2 id="cache-scope">244<h2 id="cache-scope">

245 Cakupan cache245 Cakupan cache


249 249 

250Sesi yang Anda jalankan secara paralel di direktori yang sama membangun prefix yang cocok dan membaca cache satu sama lain. Sesi berurutan berbagi prefix hanya ketika snapshot status git pada startup cocok, karena prompt sistem juga menangkap cabang dan commit terbaru.250Sesi yang Anda jalankan secara paralel di direktori yang sama membangun prefix yang cocok dan membaca cache satu sama lain. Sesi berurutan berbagi prefix hanya ketika snapshot status git pada startup cocok, karena prompt sistem juga menangkap cabang dan commit terbaru.

251 251 

252Cache API yang mendasarinya lebih luas. Cache diisolasi di antara organisasi, dan pada beberapa penyedia, [di antara workspace dalam organisasi](https://platform.claude.com/docs/id/build-with-claude/prompt-caching#cache-storage-and-sharing). Dalam batas-batas itu, setiap dua permintaan dengan model dan prefix yang sama membaca cache yang sama. Untuk pemanggil Agent SDK yang menjalankan armada proses otomatis, lihat [improve prompt caching across users and machines](/id/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) untuk menekan bagian per-mesin dari prompt sistem dan berbagi cache di seluruh mesin.252Cache API yang mendasarinya lebih luas. Cache diisolasi di antara organisasi, dan pada beberapa penyedia, [di antara workspace dalam organisasi](https://platform.claude.com/docs/id/build-with-claude/prompt-caching#cache-storage-and-sharing). Dalam batas-batas itu, setiap dua permintaan dengan model dan prefix yang sama membaca cache yang sama. Untuk pemanggil Agent SDK yang menjalankan armada proses otomatis, lihat [improve prompt caching across users and machines](/docs/id/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) untuk menekan bagian per-mesin dari prompt sistem dan berbagi cache di seluruh mesin.

253 253 

254<h2 id="check-cache-performance">254<h2 id="check-cache-performance">

255 Periksa kinerja cache255 Periksa kinerja cache

256</h2>256</h2>

257 257 

258Kinerja cache muncul sebagai dua hitungan token yang dilaporkan API pada setiap respons. Cara paling langsung untuk menontonnya secara langsung adalah [statusline script](/id/statusline) yang membaca objek `current_usage`:258Kinerja cache muncul sebagai dua hitungan token yang dilaporkan API pada setiap respons. Cara paling langsung untuk menontonnya secara langsung adalah [statusline script](/docs/id/statusline) yang membaca objek `current_usage`:

259 259 

260| Field | Arti |260| Field | Arti |

261| ----------------------------- | ------------------------------------------------------------------------------------------------------- |261| ----------------------------- | ------------------------------------------------------------------------------------------------------- |


264 264 

265Rasio baca-ke-kreasi yang tinggi berarti caching berfungsi dengan baik. Jika kreasi tetap tinggi giliran demi giliran, sesuatu berubah dalam prefix Anda. Bagian [actions that invalidate the cache](#actions-that-invalidate-the-cache) mencantumkan penyebab umum.265Rasio baca-ke-kreasi yang tinggi berarti caching berfungsi dengan baik. Jika kreasi tetap tinggi giliran demi giliran, sesuatu berubah dalam prefix Anda. Bagian [actions that invalidate the cache](#actions-that-invalidate-the-cache) mencantumkan penyebab umum.

266 266 

267Untuk visibilitas di seluruh organisasi, exporter OpenTelemetry melaporkan token baca dan kreasi cache per pengguna dan sesi. Lihat [Monitor usage](/id/monitoring-usage) untuk referensi metrik dan atribut acara.267Untuk visibilitas di seluruh organisasi, exporter OpenTelemetry melaporkan token baca dan kreasi cache per pengguna dan sesi. Lihat [Monitor usage](/docs/id/monitoring-usage) untuk referensi metrik dan atribut acara.

268 268 

269<h2 id="subagents-and-the-cache">269<h2 id="subagents-and-the-cache">

270 Subagents dan cache270 Subagents dan cache

271</h2>271</h2>

272 272 

273[Subagent](/id/sub-agents) memulai percakapannya sendiri dengan prompt sistem dan set alat-nya sendiri, terpisah dari induk. Ini membangun cache-nya sendiri, dimulai tanpa cache hits pada panggilan pertamanya dan menghangat di seluruh giliran-nya sendiri. Subagents menggunakan TTL lima menit bahkan pada langganan, karena TTL satu jam otomatis berlaku untuk percakapan utama.273[Subagent](/docs/id/sub-agents) memulai percakapannya sendiri dengan prompt sistem dan set alat-nya sendiri, terpisah dari induk. Ini membangun cache-nya sendiri, dimulai tanpa cache hits pada panggilan pertamanya dan menghangat di seluruh giliran-nya sendiri. Subagents menggunakan TTL lima menit bahkan pada langganan, karena TTL satu jam otomatis berlaku untuk percakapan utama.

274 274 

275Cache induk tidak terpengaruh. Dari sisi induk, panggilan dan hasil subagent ditambahkan ke percakapan, meninggalkan prefix induk utuh.275Cache induk tidak terpengaruh. Dari sisi induk, panggilan dan hasil subagent ditambahkan ke percakapan, meninggalkan prefix induk utuh.

276 276 

277[Fork](/id/sub-agents#fork-the-current-conversation), sebaliknya, mewarisi prompt sistem induk, alat, dan riwayat percakapan dengan tepat, jadi permintaan pertamanya membaca cache induk. Panggilan summarisasi compaction yang dijelaskan dalam [Compacting the conversation](#compacting-the-conversation) menggunakan pendekatan berbagi prefix yang sama.277[Fork](/docs/id/sub-agents#fork-the-current-conversation), sebaliknya, mewarisi prompt sistem induk, alat, dan riwayat percakapan dengan tepat, jadi permintaan pertamanya membaca cache induk. Panggilan summarisasi compaction yang dijelaskan dalam [Compacting the conversation](#compacting-the-conversation) menggunakan pendekatan berbagi prefix yang sama.

278 278 

279<h2 id="disable-prompt-caching">279<h2 id="disable-prompt-caching">

280 Nonaktifkan prompt caching280 Nonaktifkan prompt caching


290| `DISABLE_PROMPT_CACHING_OPUS` | Nonaktifkan untuk Opus saja |290| `DISABLE_PROMPT_CACHING_OPUS` | Nonaktifkan untuk Opus saja |

291| `DISABLE_PROMPT_CACHING_FABLE` | Nonaktifkan untuk Fable saja |291| `DISABLE_PROMPT_CACHING_FABLE` | Nonaktifkan untuk Fable saja |

292 292 

293Untuk 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.293Untuk menetapkan kebijakan caching di seluruh organisasi, masukkan salah satu dari ini atau [TTL variables](#cache-lifetime) dalam blok `env` dari [managed settings](/docs/id/settings#settings-files). Untuk penggunaan normal, biarkan caching diaktifkan.

294 294 

295<h2 id="related-resources">295<h2 id="related-resources">

296 Sumber daya terkait296 Sumber daya terkait

297</h2>297</h2>

298 298 

299* [Lessons from building Claude Code: Prompt caching is everything](https://claude.com/blog/lessons-from-building-claude-code-prompt-caching-is-everything): alasan desain untuk plan mode, deferred tool loading, dan compaction299* [Lessons from building Claude Code: Prompt caching is everything](https://claude.com/blog/lessons-from-building-claude-code-prompt-caching-is-everything): alasan desain untuk plan mode, deferred tool loading, dan compaction

300* [Explore the context window](/id/context-window): apa yang dimuat ke konteks dan kapan300* [Explore the context window](/docs/id/context-window): apa yang dimuat ke konteks dan kapan

301* [Reduce token usage](/id/costs#reduce-token-usage): strategi di luar caching untuk mengelola ukuran konteks301* [Reduce token usage](/docs/id/costs#reduce-token-usage): strategi di luar caching untuk mengelola ukuran konteks

302* [Track and reduce costs](/id/agent-sdk/cost-tracking): pelacakan token cache dan konfigurasi TTL untuk pemanggil Agent SDK302* [Track and reduce costs](/docs/id/agent-sdk/cost-tracking): pelacakan token cache dan konfigurasi TTL untuk pemanggil Agent SDK

303* [Prompt caching](https://platform.claude.com/docs/id/build-with-claude/prompt-caching): mekanisme API yang mendasarinya, breakpoints, dan pricing303* [Prompt caching](https://platform.claude.com/docs/id/build-with-claude/prompt-caching): mekanisme API yang mendasarinya, breakpoints, dan pricing