SpyBara
Go Premium

Documentation 2026-07-28 23:57 UTC to 2026-07-29 19:02 UTC

5 files changed +620 −63. View all changes and history on the product overview
2026
Wed 29 19:02 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

claude-apps-gateway.md +351 −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# Claude apps gateway untuk Amazon Bedrock, Claude Platform di AWS, Google Cloud, dan Microsoft Foundry

6 

7> Jalankan Claude Code melalui Amazon Bedrock, Claude Platform di AWS, Google Cloud, atau Microsoft Foundry di balik gateway yang di-host sendiri dengan SSO sign-in, akses model per-grup, dan telemetri OTLP.

8 

9<Note>

10 Claude apps gateway dirancang untuk organisasi yang harus — atau lebih suka — merutekan inferensi melalui penyedia cloud mereka sendiri, misalnya untuk memenuhi persyaratan [residensi data](/docs/id/claude-apps-gateway-deploy#compliance-posture). Jika Anda tidak memiliki persyaratan ini, dan menginginkan akses ke fitur lain seperti penyediaan SCIM atau Claude Code di web dan mobile, Claude Enterprise mungkin lebih cocok. Lihat halaman [ketersediaan fitur](/docs/id/feature-availability) untuk perbandingan lengkap semua metode penyebaran.

11</Note>

12 

13Claude apps gateway adalah layanan yang di-host sendiri yang berada di antara klien Claude Code pengembang Anda dan penyedia model Anda. Pengembang masuk dengan penyedia identitas perusahaan Anda (IdP) alih-alih menyimpan kunci API atau kredensial cloud. Gateway menyimpan kredensial upstream, memberlakukan akses model dan [pengaturan terkelola](/docs/id/permissions#managed-settings) berdasarkan grup IdP, dan meneruskan telemetri penggunaan ke tumpukan observabilitas Anda sendiri.

14 

15Ini disertakan dalam biner `claude`, jadi executable yang sama yang menjalankan Claude Code di laptop menjalankan server gateway dengan `claude gateway --config gateway.yaml`.

16 

17Halaman ini mencakup:

18 

19* [Mengapa Claude apps gateway](#why-claude-apps-gateway), apa yang ditambahkannya dibandingkan menjalankan milik Anda sendiri, dan kapan sesuatu yang lain lebih cocok

20* [Quickstart](#quickstart) dengan [prasyarat](#prerequisites) yang membawa gateway dari nol ke pengembang yang masuk

21* [Menghubungkan pengembang](#connect-developers), termasuk menetapkan URL gateway melalui pengaturan terkelola

22* [Ketersediaan dan keterbatasan](#availability-and-limitations) mencakup fitur Claude Code mana yang bekerja melalui gateway dan apa yang didukung server

23 

24Halaman pendamping menggali lebih dalam. [Referensi konfigurasi](/docs/id/claude-apps-gateway-config) mencakup setiap opsi dalam file YAML yang ditulis quickstart, dan [panduan penyebaran](/docs/id/claude-apps-gateway-deploy) mencakup penyiapan per-IdP, penyebaran Kubernetes dan Cloud Run, serta operasi.

25 

26<h2 id="why-claude-apps-gateway">

27 Mengapa Claude apps gateway

28</h2>

29 

30[Gambaran umum gateway](/docs/id/gateways) mencakup apa yang dilakukan gateway dan mengapa Anda akan menjalankannya. Claude apps gateway adalah gateway Anthropic sendiri, dibangun ke dalam biner `claude` dan diuji bersama setiap rilis Claude Code, jadi ia meneruskan header dan bidang permintaan yang dikirim Claude Code tanpa operator mempertahankan daftar izin terpisah. Setelah digunakan, ia memberi Anda:

31 

32* **Kredensial**: kunci API upstream atau kredensial cloud hanya ada di infrastruktur Anda. Pengembang melakukan autentikasi dengan SSO perusahaan dan menerima token bearer berumur pendek, jadi offboarding terjadi di IdP Anda. Hapus penyediaan pengguna dan akses gateway mereka kedaluwarsa dalam masa pakai sesi, satu jam secara default.

33* **Kontrol akses**: grup IdP Anda memetakan ke daftar izin model dan kebijakan [pengaturan terkelola](/docs/id/permissions#managed-settings). Gateway memberlakukan akses model di sisi server, menolak permintaan untuk model yang tidak diberikan, dan memilih kebijakan pengaturan terkelola setiap grup, yang diterapkan CLI di [tingkat pengaturan terkelola](/docs/id/settings#settings-precedence). Tim yang berbeda mendapatkan model, alat, dan izin yang berbeda, dan pengembang tidak dapat mengganti apa yang dikunci kebijakan mereka.

34* **Pengiriman pengaturan**: gateway mengirimkan pengaturan terkelola ke klien yang masuk sendiri, menggantikan [pengaturan yang dikelola server](/docs/id/server-managed-settings) dari konsol admin claude.ai.

35* **Telemetri**: setiap tujuan yang dikonfigurasi, seperti Datadog, Splunk, atau ClickHouse, menerima [metrik OpenTelemetry Protocol (OTLP)](/docs/id/monitoring-usage) dengan hitungan token, model, identitas pengguna, dan latensi secara default, dengan log dan jejak sebagai opt-in per-tujuan.

36* **Perutean upstream**: klien berbicara API Pesan Anthropic ke gateway, dan gateway menerjemahkan untuk setiap upstream, baik Bedrock, [Claude Platform on AWS](/docs/id/claude-platform-on-aws), Agent Platform Google Cloud, Foundry, atau API Anthropic, dengan failover di antara mereka. Anda dapat mengubah wilayah, penyedia, atau urutan failover tanpa pengembang menyadari atau mengonfigurasi ulang.

37 

38<Frame>

39 <img src="https://mintcdn.com/claude-code/st9_ZQOFsZa3cKFl/images/claude-gateway-architecture.svg?fit=max&auto=format&n=st9_ZQOFsZa3cKFl&q=85&s=560770d8f49bbd6f1ca7090ed1f13c03" alt="Diagram menunjukkan klien Claude Code terhubung melalui HTTPS dengan token bearer ke gateway Claude apps yang di-host sendiri di dalam infrastruktur Anda, yang menandatangani pengguna terhadap IdP Anda, menyimpan status auth di PostgreSQL, meneruskan telemetri ke kolektor OTLP Anda, dan meneruskan inferensi ke Amazon Bedrock, Claude Platform on AWS, Google Cloud, Microsoft Foundry, atau API Anthropic" width="760" height="320" data-path="images/claude-gateway-architecture.svg" />

40</Frame>

41 

42<Note>

43 Bidang data gateway sendiri tidak mengirim apa pun ke infrastruktur Anthropic kecuali API Anthropic adalah upstream yang dikonfigurasi. Anda mengontrol ke mana telemetri, log audit, pengaturan terkelola, dan identitas IdP pengembang Anda pergi, dan gateway tidak mengirimkan salah satu dari mereka ke Anthropic. Untuk lalu lintas yang tersisa proses CLI dapat mengirim dan cara menutupnya, lihat [Compliance posture](/docs/id/claude-apps-gateway-deploy#compliance-posture).

44</Note>

45 

46Untuk fitur Claude Code mana yang bekerja melalui gateway dan apa yang didukung server itu sendiri, lihat [Ketersediaan dan keterbatasan](#availability-and-limitations) di bawah. Untuk keputusan seperti biaya, bypass, menjalankan beberapa gateway, dan platform serverless, lihat [panduan penyebaran](/docs/id/claude-apps-gateway-deploy#deployment).

47 

48<h3 id="other-gateway-implementations">

49 Implementasi gateway lainnya

50</h3>

51 

52Jika Anda sudah menjalankan gateway LLM atau gateway API yang memenuhi kebutuhan Anda, terus gunakan; [Gateway LLM lainnya](/docs/id/llm-gateway) mencakup konfigurasi Claude Code terhadapnya.

53 

54[Referensi protokol gateway](/docs/id/llm-gateway-protocol) mendokumentasikan kontrak yang diharapkan Claude Code dari gateway apa pun: endpoint yang dipanggilnya, header dan bidang body untuk diteruskan, dan apa yang berhenti bekerja ketika mereka dihapus. Gateway Claude apps yang berjalan melayani superset kontrak itu di `GET /protocol`, menambahkan endpoint khusus gateway Claude apps untuk SSO sign-in, pengiriman pengaturan terkelola, dan telemetri. Ambilnya dengan `curl https://claude-gateway.internal.example.com/protocol` dari gateway yang digunakan apa pun, seperti yang dihasilkan [quickstart](#quickstart) di bawah. Perubahan breaking pada protokol diumumkan sebelumnya, tetapi kompatibilitas backward yang tidak terbatas tidak dijamin.

55 

56<h2 id="quickstart">

57 Quickstart

58</h2>

59 

60Quickstart ini berjalan di jalur minimal: daftarkan klien OAuth di IdP Anda, tulis `gateway.yaml`, jalankan gateway bersama Postgres dengan Docker Compose, dan verifikasi sign-in end to end. Ini menggunakan upstream Amazon Bedrock; Claude Platform on AWS, Agent Platform Google Cloud, Microsoft Foundry, dan API Anthropic sama-sama didukung dengan menukar blok `upstreams` seperti yang ditunjukkan dalam [referensi konfigurasi](/docs/id/claude-apps-gateway-config#upstreams). Di akhir Anda memiliki gateway yang dapat `/login` pengembang.

61 

62<Note>

63 **Terapkan di jaringan pribadi Anda.** Claude Code hanya terhubung ke gateway yang alamatnya pribadi. Ini adalah penjaga keamanan, karena gateway yang dipercaya dapat mendorong pengaturan yang menjalankan perintah pada mesin pengembang. Letakkan gateway di balik load balancer internal atau VPN dan berikan nama host yang hanya diselesaikan ke IP pribadi.

64 

65 Titik akhir gateway publik yang dioperasikan Anthropic adalah pengecualian: `/login` menerimanya melalui `https://`. Ini adalah kumpulan tetap kecil dari gateway yang dioperasikan Anthropic sendiri; mereka bukan opsi penyebaran yang dapat Anda pilih atau konfigurasi. Daftar dikompilasi ke dalam Claude Code, jadi tidak ada konfigurasi yang dapat menambahkan nama host ke dalamnya dan tidak ada gateway yang Anda hosting yang memenuhi syarat untuk pengecualian. {/* min-version: 2.1.206 */}Sebelum v2.1.206, `/login` menolak titik akhir tersebut seperti alamat publik lainnya.

66</Note>

67 

68<h3 id="prerequisites">

69 Prasyarat

70</h3>

71 

72Miliki ini sebelum Anda mulai:

73 

74| Anda membutuhkan | Detail |

75| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

76| Claude Code v2.1.195 atau lebih baru | Subperintah `claude gateway` dan alur sign-in gateway dikirim di v2.1.195. Build publik sebelumnya tidak menyertakannya. Baik mesin yang menjalankan server gateway maupun mesin setiap pengembang harus pada v2.1.195 atau lebih baru; jalankan `claude update` untuk mendapatkan rilis terbaru. {/* min-version: 2.1.198 */}Upstream [Claude Platform on AWS](/docs/id/claude-apps-gateway-config#claude-platform-on-aws) memerlukan Claude Code v2.1.198 atau lebih baru di server gateway. |

77| Penyedia identitas OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak, atau Dex, atau IdP yang sesuai dengan OIDC lainnya seperti PingFederate. Gateway menjalankan penemuan OIDC standar dan alur kode otorisasi terhadapnya. SAML dan LDAP tidak didukung. |

78| PostgreSQL 14 atau lebih baru | Mendukung alur sign-in perangkat, di mana callback browser menulis dan CLI polling membaca, ditambah penghitung batas laju. Postgres yang dikelola apa pun berfungsi, termasuk tingkat terkecil. Tanpa batas pengeluaran yang dikonfigurasi, gateway menyimpan beberapa KB status auth berumur pendek; dengan [batas pengeluaran](/docs/id/claude-apps-gateway-spend-limits), ia juga menyimpan tabel pengeluaran, audit, dan identitas yang tahan lama yang harus dicadangkan. TLS melalui `?sslmode=require` direkomendasikan. |

79| Model upstream | Kredensial Amazon Bedrock, kredensial Claude Platform on AWS, kredensial Google Cloud, sumber daya Microsoft Foundry, atau kunci API Anthropic. Beberapa upstream didukung dengan failover. |

80| HTTPS | Gateway harus dapat dijangkau melalui `https://` dari laptop pengembang dan dari browser apa pun yang digunakan untuk sign-in; gateway melayani halaman verifikasi perangkat pada pendengar yang sama. Berikan sertifikat TLS melalui `listen.tls`, atau jalankan di balik ingress yang menghentikan TLS dan atur `listen.public_url`. Asal `http://` biasa hanya diterima di loopback, untuk pengembangan lokal. |

81| Alamat jaringan pribadi | Di `/login`, Claude Code memerlukan nama host atau alamat IP gateway untuk diselesaikan hanya ke alamat pribadi: RFC 1918, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7`, atau loopback untuk pengembangan lokal. Pemeriksaan berjalan pada setiap IP yang diselesaikan, jadi jika alamat apa pun yang diselesaikan nama adalah publik, `/login` menolak URL. Jika mesin pengembang merutekan HTTPS melalui proxy perusahaan, sign-in juga memerlukan host proxy untuk diselesaikan ke alamat pribadi; jika tidak, tambahkan host gateway ke `NO_PROXY` sehingga CLI terhubung langsung. {/* min-version: 2.1.206 */}Titik akhir gateway publik yang dioperasikan Anthropic dikecualikan dari pemeriksaan alamat pribadi dan proxy: `/login` menerimanya melalui `https://` dengan pencocokan nama host yang tepat, jadi persyaratan jaringan pribadi hanya berlaku untuk gateway yang Anda hosting sendiri. Sebelum v2.1.206, `/login` menolak titik akhir yang dioperasikan Anthropic seperti alamat publik lainnya. |

82| Runtime Linux | Server gateway hanya berjalan pada biner Linux asli. macOS berfungsi untuk pengembangan lokal. Windows tidak didukung sebagai platform server. |

83 

84Server gateway memerlukan biner `claude` asli; unduh rilis yang disematkan seperti yang dijelaskan dalam [Install Claude Code](/docs/id/setup). Server menggunakan fitur runtime yang tidak tersedia ketika Claude Code berjalan di bawah Node. Jika Anda melihat `requires the native binary` saat boot, beralih ke salah satu metode instalasi standalone.

85 

86<h3 id="steps">

87 Langkah-langkah

88</h3>

89 

90<Steps>

91 <Step title="Daftarkan klien OAuth di IdP Anda">

92 Tentukan nama host gateway terlebih dahulu, karena URI pengalihan harus cocok dengannya. Buat aplikasi web OIDC baru dan atur URI pengalihan ke `https://claude-gateway.<your-domain>/oauth/callback`, di mana host adalah nilai yang sama yang Anda atur sebagai [`listen.public_url`](/docs/id/claude-apps-gateway-config#listen) di langkah 3. Catat `client_id` dan `client_secret`. Instruksi per-IdP ada di [Identity provider setup](/docs/id/claude-apps-gateway-deploy#identity-provider-setup).

93 </Step>

94 

95 <Step title="Sediakan database PostgreSQL">

96 Postgres 14 atau lebih baru apa pun berfungsi, termasuk tingkat terkelola terkecil. Gateway menjalankan migrasi skema sendiri saat boot, jadi pengguna database memerlukan izin `CREATE TABLE`. Jika kebijakan keamanan Anda melarang DDL dari peran aplikasi, buat skema sebelumnya; lihat [`store`](/docs/id/claude-apps-gateway-config#store).

97 </Step>

98 

99 <Step title="Tulis gateway.yaml">

100 Rahasia dibaca melalui ekspansi `${ENV_VAR}` sehingga file itu sendiri dapat hidup dalam kontrol versi. Gunakan nama host `public_url` yang diselesaikan ke IP pribadi di jaringan Anda, karena `/login` menolak alamat publik. Konfigurasi minimal memiliki lima bagian, dan setiap bidang lainnya memiliki default:

101 

102 ```yaml gateway.yaml theme={null}

103 listen:

104 host: 0.0.0.0

105 port: 8080

106 # Diperlukan di balik proxy apa pun yang menghentikan TLS. Digunakan untuk IdP

107 # redirect_uri dan dokumen penemuan.

108 public_url: https://claude-gateway.internal.example.com

109 

110 oidc:

111 issuer: https://login.example.com # harus melayani /.well-known/openid-configuration

112 client_id: 0oa1example2

113 client_secret: ${OIDC_CLIENT_SECRET}

114 allowed_email_domains: [example.com] # tolak id_tokens di luar organisasi Anda

115 userinfo_fallback: true # untuk IdP yang id_token-nya menghilangkan email/groups; tidak berbahaya sebaliknya

116 

117 session:

118 jwt_secret: ${GATEWAY_JWT_SECRET} # openssl rand -base64 32

119 ttl_hours: 1 # juga membatasi latensi revokasi pada deprovisi IdP

120 

121 store:

122 postgres_url: ${GATEWAY_POSTGRES_URL} # tambahkan ?sslmode=require untuk Postgres terkelola

123 

124 upstreams:

125 - provider: bedrock

126 region: us-east-1

127 auth: {} # kosong: rantai kredensial default AWS

128 # (IRSA, peran tugas EC2/ECS, variabel env, ~/.aws)

129 

130 # Model diterjemahkan per upstream secara otomatis. Katalog bawaan

131 # memetakan claude-opus-4-8 ke us.anthropic.claude-opus-4-8 dan seterusnya untuk setiap

132 # model Claude yang didukung Bedrock. Atur false dan tambahkan daftar `models:` untuk

133 # mengekspos hanya model tertentu.

134 auto_include_builtin_models: true

135 ```

136 

137 Konfigurasi ini cukup untuk loop sign-in yang berfungsi dengan katalog model Bedrock default. Setelah berjalan, tambahkan RBAC per-grup dan pengaturan terkelola melalui [`managed.policies`](/docs/id/claude-apps-gateway-config#managed), fan-out telemetri melalui [`telemetry`](/docs/id/claude-apps-gateway-config#telemetry), dan failover multi-upstream, ARN throughput yang disediakan, atau wilayah non-AS melalui [`models`](/docs/id/claude-apps-gateway-config#models).

138 

139 <Note>

140 Upstream Bedrock memerlukan principal AWS dengan `bedrock:InvokeModel` dan `bedrock:InvokeModelWithResponseStream` pada ARN `inference-profile/us.anthropic.*` dan ARN `foundation-model/anthropic.*` yang mendasar, dan akses model diaktifkan di konsol Bedrock untuk model Claude yang Anda inginkan. Sediakan kredensial dengan IRSA di EKS, peran tugas ECS, atau profil instans EC2 daripada kunci statis. [Referensi `upstreams`](/docs/id/claude-apps-gateway-config#upstreams) memiliki detail IAM lengkap, matriks kredensial lintas cloud, dan blok `auth` untuk penyedia lain.

141 </Note>

142 </Step>

143 

144 <Step title="Jalankan">

145 Bangun gambar kontainer di sekitar biner `claude` yang memenuhi [persyaratan gambar](/docs/id/claude-apps-gateway-deploy#container-image), kemudian jalankan bersama Postgres:

146 

147 ```yaml docker-compose.yaml theme={null}

148 services:

149 gateway:

150 image: <your-registry>/claude-gateway:<version>

151 ports: ["8080:8080"]

152 volumes: ["./gateway.yaml:/etc/claude/gateway.yaml:ro"]

153 environment:

154 OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET}

155 GATEWAY_JWT_SECRET: ${GATEWAY_JWT_SECRET}

156 GATEWAY_POSTGRES_URL: postgres://gw:pw@postgres/gateway

157 # Kredensial AWS: dalam produksi, hilangkan ini dan gunakan peran instans

158 # Untuk pengujian Compose lokal, teruskan milik Anda sendiri:

159 AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}

160 AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}

161 AWS_SESSION_TOKEN: ${AWS_SESSION_TOKEN}

162 depends_on:

163 postgres:

164 condition: service_healthy

165 postgres:

166 image: postgres:16-alpine

167 environment: { POSTGRES_USER: gw, POSTGRES_PASSWORD: pw, POSTGRES_DB: gateway }

168 healthcheck:

169 test: ["CMD-SHELL", "pg_isready -U gw"]

170 interval: 5s

171 volumes: ["pgdata:/var/lib/postgresql/data"]

172 volumes: { pgdata: }

173 ```

174 

175 Gateway adalah biner Linux tunggal yang membaca konfigurasi, menjalankan penemuan OIDC terhadap IdP Anda, menerapkan migrasi skema Postgres-nya, membangun klien upstream, dan mulai mendengarkan. Boot gagal-tertutup untuk konfigurasi, koneksi Postgres dengan timeout 5 detik, penemuan OIDC, dan konstruksi klien upstream. Jika salah satu dari mereka tidak dapat dijangkau atau salah konfigurasi, gateway keluar dengan kesalahan daripada melayani lalu lintas dalam keadaan terdegradasi.

176 

177 Boot yang berhasil tidak memvalidasi jalur inferensi, karena kredensial instans Bedrock dan Agent Platform diselesaikan pada permintaan pertama, bukan saat boot.

178 

179 Tonton stderr untuk urutan boot. Baris log menggunakan format `[gateway] <timestamp> <level> <message>`, acara audit adalah JSON satu baris dengan bidang `evt`, dan spanduk startup, dihilangkan di bawah, dicetak di antara baris migrasi dan mendengarkan. Anda harus melihat, dalam urutan:

180 

181 ```text theme={null}

182 {"ts":"2026-06-10T17:03:21.114Z","evt":"config.load","path":"/etc/claude/gateway.yaml","sha256":"…"}

183 [gateway] 2026-06-10T17:03:21.408Z info migration 1 applied

184 [gateway] 2026-06-10T17:03:21.512Z info claude gateway listening on http://0.0.0.0:8080

185 ```

186 

187 Jika boot keluar sebelum baris `claude gateway listening on`, baris terakhir stderr menamai masalahnya:

188 

189 * Postgres yang tidak dapat dijangkau

190 * Peran Postgres tanpa izin DDL

191 * Dokumen penemuan OIDC yang tidak dapat dijangkau atau tidak valid

192 * Pelanggaran skema konfigurasi dengan jalur bidang yang menyinggung

193 

194 Perbaiki dan mulai ulang.

195 

196 Jika Anda sudah memiliki ingress yang menghentikan TLS, lewati Compose dan jalankan biner secara langsung dengan `claude gateway --config gateway.yaml`. Atur `public_url` ke asal ingress dan ikat `listen` ke alamat loopback atau internal kluster.

197 </Step>

198 

199 <Step title="Verifikasi permukaan auth">

200 Tiga pemeriksaan mengkonfirmasi gateway dapat mengautentikasi pengguna nyata sebelum Anda menyerahkannya kepada pengembang.

201 

202 Contoh menggunakan URL publik gateway; untuk penyiapan Compose lokal tanpa ingress, ganti `http://localhost:8080` dalam dua pemeriksaan pertama. Pemeriksaan ketiga membuka `verification_uri_complete`, yang dibangun dari `public_url`, jadi untuk Compose lokal atur `public_url: http://localhost:8080` di `gateway.yaml`, dan tambahkan `http://localhost:8080/oauth/callback` sebagai URI pengalihan kedua pada klien OAuth dari langkah 1, karena gateway membangun IdP `redirect_uri` dari `public_url`. Tautan verifikasi kemudian terbuka di browser lokal Anda.

203 

204 Di Windows PowerShell, jalankan `curl.exe`; `curl` biasa adalah alias untuk `Invoke-WebRequest` dan menolak flag ini.

205 

206 Pertama, ambil dokumen penemuan, yang mengkonfirmasi gateway aktif, konfigurasi valid, dan semua pemeriksaan boot lulus:

207 

208 ```bash theme={null}

209 curl -s https://claude-gateway.internal.example.com/.well-known/oauth-authorization-server | jq

210 ```

211 

212 ```json theme={null}

213 {

214 "issuer": "https://claude-gateway.internal.example.com",

215 "device_authorization_endpoint": "…/oauth/device_authorization",

216 "token_endpoint": "…/oauth/token",

217 "grant_types_supported": ["urn:ietf:params:oauth:grant-type:device_code", "refresh_token"]

218 }

219 ```

220 

221 Respons mencakup bidang tambahan, seperti `response_types_supported` dan `scopes_supported`.

222 

223 Kedua, minta otorisasi perangkat, yang mengkonfirmasi alur sign-in perangkat berfungsi dan Postgres dapat dijangkau dan dapat ditulis:

224 

225 ```bash theme={null}

226 curl -s -X POST https://claude-gateway.internal.example.com/oauth/device_authorization | jq

227 ```

228 

229 ```json theme={null}

230 {

231 "device_code": "…",

232 "user_code": "WDJB-MJHT",

233 "verification_uri": "https://claude-gateway.internal.example.com/device",

234 "verification_uri_complete": "https://claude-gateway.internal.example.com/device?user_code=WDJB-MJHT",

235 "expires_in": 600,

236 "interval": 5

237 }

238 ```

239 

240 Ketiga, uji leg browser dengan membuka `verification_uri_complete` di browser dan mengkonfirmasi kode. Anda harus dialihkan ke halaman sign-in IdP Anda, dan setelah masuk, mendarat kembali di gateway dengan konfirmasi yang masuk.

241 

242 Gunakan pemeriksaan pertama yang gagal untuk menemukan masalahnya:

243 

244 * **Pemeriksaan pertama gagal**: boot tidak selesai; periksa stderr

245 * **Pemeriksaan kedua gagal**: Postgres tidak dapat dijangkau dari gateway atau peran tidak dapat menulis; periksa string koneksi dan hibah

246 * **Pemeriksaan ketiga tidak mencapai IdP**: periksa bahwa URI pengalihan IdP cocok dengan `https://<gateway>/oauth/callback` persis

247 * **Pemeriksaan ketiga mencapai IdP tetapi memantul kembali dengan kesalahan**: baca log audit gateway, yang mencatat setiap penolakan auth dengan alasan, seperti `email domain not allowed`

248 </Step>

249 

250 <Step title="Masukkan pengembang">

251 Langkah terakhir ini terjadi pada mesin pengembang, bukan server. Atur `forceLoginMethod` ke `"gateway"` dan `forceLoginGatewayUrl` ke `public_url` gateway Anda dalam [file pengaturan terkelola](/docs/id/settings#settings-files) mesin itu, kemudian jalankan `/login`, tekan Enter pada layar **Cloud gateway**, dan selesaikan sign-in browser. [Atur URL gateway](#set-the-gateway-url) di bawah mencakup distribusi kedua kunci dalam skala besar.

252 </Step>

253</Steps>

254 

255<h2 id="connect-developers">

256 Hubungkan pengembang

257</h2>

258 

259Pengembang terhubung dari laptop mereka sendiri dengan satu sign-in browser, menggunakan akun kerja perusahaan mereka. Mereka tidak memerlukan akun claude.ai, kunci API, atau langganan, karena permintaan ke model melewati gateway menggunakan kredensial upstream organisasi. Koneksi didorong oleh [pengaturan terkelola sisi klien](/docs/id/claude-apps-gateway-config#client-side-managed-settings) yang Anda dorong melalui MDM, jadi tidak ada penyiapan manual di sisi pengembang; bagian ini mencakup apa yang dikonfigurasi admin.

260 

261CLI memfingerprintkan sertifikat daun TLS gateway pada koneksi pertama dan menyematkannya per nama host. Publikasikan sidik jari SHA-256 yang diharapkan bersama URL gateway sehingga pengembang memiliki sesuatu untuk dibandingkan. Dapatkan sidik jari dari file sertifikat dengan `openssl x509 -noout -fingerprint -sha256 -in cert.pem`; prompt `/login` menunjukkan 16 karakter pertama dari digest sebagai heksadesimal huruf kecil tanpa pemisah.

262 

263Ketika sertifikat berputar, setiap pengembang melihat prompt kepercayaan lagi, jadi perlakukan rotasi sebagai acara yang direncanakan dan publikasikan ulang sidik jari.

264 

265Setelah masuk, [pemilih model](/docs/id/model-config) menunjukkan model dalam daftar izin `availableModels` pengembang, pengaturan terkelola diterapkan saat startup dan refresh setiap jam, dan telemetri merutekan ke kolektor Anda. Sesi menyegarkan secara diam-diam sebelum kedaluwarsa `ttl_hours`, dan refresh yang gagal setelah deprovisi IdP meminta re-login.

266 

267<h3 id="set-the-gateway-url">

268 Atur URL gateway

269</h3>

270 

271Atur kedua kunci dalam file [pengaturan terkelola](/docs/id/settings#settings-files) per-OS yang Anda terapkan melalui MDM atau langsung di disk, dan `/login` terbuka langsung pada layar **Cloud gateway** dengan URL diisi:

272 

273```json theme={null}

274{

275 "forceLoginMethod": "gateway",

276 "forceLoginGatewayUrl": "https://claude-gateway.internal.example.com"

277}

278```

279 

280Pengembang menekan Enter untuk terhubung. Prompt sidik jari TLS koneksi pertama masih muncul.

281 

282Tidak ada opsi gateway di pemilih login untuk pengembang memilih secara manual, dan `forceLoginGatewayUrl` diabaikan dalam file pengaturan pengembang mereka sendiri. `forceLoginMethod` saja, tanpa URL, meninggalkan pengembang pada pesan "Hubungi administrator IT Anda". Kedua kunci milik file yang Anda dorong ke mesin, bukan di blok `managed.policies[].cli` gateway, yang hanya menjangkau klien yang sudah terhubung.

283 

284<h3 id="ci-pipelines-and-remote-machines">

285 Pipeline CI dan mesin jarak jauh

286</h3>

287 

288Tidak ada alur token layanan untuk pipeline yang tidak diawasi. Sign-in gateway selalu menjalankan alur perangkat browser, jadi pekerjaan CI tanpa pengembang untuk menyetujui sign-in tidak dapat mengautentikasi; konfigurasikan mereka terhadap penyedia Anda secara langsung.

289 

290Setelah pengembang masuk, setiap invokasi Claude Code pada mesin itu menggunakan sesi gateway, termasuk run `claude -p` non-interaktif dan sesi yang dimulai oleh Agent SDK, dan [kebijakan gateway berlaku untuk semuanya](/docs/id/claude-apps-gateway-config#managed).

291 

292Alur perangkat memisahkan CLI polling dari browser yang menyetujui, jadi kotak pengembangan jarak jauh tanpa tampilan masih berfungsi: pengembang menjalankan `/login` melalui SSH pada mesin jarak jauh dan membuka tautan verifikasi di browser di laptop mereka.

293 

294<h3 id="what’s-enforced-on-developers">

295 Apa yang diberlakukan pada pengembang

296</h3>

297 

298Jaminan ini berlaku untuk setiap sesi gateway yang masuk.

299 

300* **Akses model**: permintaan untuk model yang tidak diberikan kebijakan mengembalikan 400, dan pemilih `/model` disaring ke daftar izin `availableModels` kebijakan. Atur [`enforceAvailableModels: true`](/docs/id/model-config#default-model-behavior) dalam kebijakan sehingga opsi Default diselesaikan ke model di dalam `availableModels` alih-alih ke default bawaan Claude Code; tanpanya, Default tetap dapat dipilih dan ditolak saat permintaan jika model itu tidak diberikan.

301* **Tujuan telemetri**: ketika [penerusan telemetri](/docs/id/claude-apps-gateway-config#telemetry) dikonfigurasi, endpoint ekspor OTLP disematkan ke gateway, dan konfigurasi yang didorong gateway mengganti variabel `OTEL_*` yang ditetapkan secara lokal.

302* **Kredensial**: token gateway adalah satu-satunya kredensial sesi. `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_API_KEY`, `apiKeyHelper`, dan login claude.ai sebelumnya diabaikan saat masuk, jadi pengembang tidak perlu keluar dari claude.ai terlebih dahulu.

303* **Pengaturan terkelola**: kunci terkunci tidak dapat ditimpa secara lokal. CLI menerapkan kebijakan saat startup dan pada setiap polling setiap jam.

304* **Startup**: sesi yang masuk keluar saat startup dengan kesalahan setelah sekitar 10 detik ketika gateway tidak dapat dijangkau, daripada memulai tanpa pengaturan mereka.

305* **Deprovisi**: sesi yang penggunanya dinonaktifkan di IdP kedaluwarsa dalam `ttl_hours` ketika refresh berikutnya gagal.

306 

307<h3 id="what-the-organization-can-see">

308 Apa yang dapat dilihat organisasi

309</h3>

310 

311Telemetri penggunaan membawa identitas pengembang, hitungan token, model, dan latensi ke kolektor organisasi. Gateway tidak mencatat atau menyimpan konten prompt atau penyelesaian. Apakah telemetri yang lebih kaya seperti log dan jejak dikumpulkan, yang dapat mencakup perintah dan jalur file, adalah pilihan organisasi [per-tujuan](/docs/id/claude-apps-gateway-config#telemetry).

312 

313<h2 id="availability-and-limitations">

314 Ketersediaan dan keterbatasan

315</h2>

316 

317Tabel mencakup fitur Claude Code mana yang bekerja ketika pengembang terhubung melalui gateway, dan apa yang didukung server gateway itu sendiri. Di mana sesuatu tidak didukung, kolom Catatan memberikan alternatif.

318 

319Gateway mengirimkan nilai [`anthropic-beta`](https://platform.claude.com/docs/en/api/beta-headers) yang dikirim CLI ke setiap upstream, jadi operator tidak mempertahankan daftar izin beta. Untuk Amazon Bedrock, yang mengabaikan header, gateway memindahkan nilai ke bidang `anthropic_beta` badan permintaan; upstream lainnya menerima header seperti yang dikirim.

320 

321Set beta sesi gateway CLI menghilangkan beta khusus pihak pertama dan beta extended-cache-ttl, itulah mengapa baris tersebut di bawah menunjukkan sebagai tidak tersedia.

322 

323| Fitur | Status | Catatan |

324| ----------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

325| Penerusan inferensi (Amazon Bedrock, Claude Platform on AWS, Agent Platform Google Cloud, Microsoft Foundry, Anthropic) | Tersedia | Dengan terjemahan model per-upstream dan failover. Upstream Amazon Bedrock menggunakan endpoint `bedrock-runtime` dan rantai kredensial default AWS; [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint) Amazon Bedrock bukan upstream yang didukung. [Upstream Claude Platform on AWS](/docs/id/claude-apps-gateway-config#claude-platform-on-aws) memerlukan Claude Code v2.1.198 atau lebih baru di server gateway. |

326| Akses model dan pengaturan terkelola berdasarkan grup IdP | Tersedia | Akses model diberlakukan di sisi server; pengaturan terkelola disampaikan per grup IdP dan diterapkan oleh CLI di [tingkat pengaturan terkelola](/docs/id/settings#settings-precedence) |

327| Fan-out telemetri (OTLP/HTTP) | Tersedia | Identitas-stamped per ekspor; kedua pengkodean protobuf dan JSON |

328| Penyedia identitas OIDC | Tersedia | Penyedia IdP yang sesuai dengan OIDC; gateway menjalankan penemuan OIDC standar dan alur kode otorisasi. Lihat [Pengaturan penyedia identitas](/docs/id/claude-apps-gateway-deploy#identity-provider-setup) untuk konfigurasi per-IdP |

329| Batas pengeluaran per-pengguna dan per-grup | Tersedia | Lihat [Spend limits](/docs/id/claude-apps-gateway-spend-limits) |

330| Pencarian web sisi server | Tidak tersedia | CLI tidak dapat melihat penyedia upstream mana yang dirutekan gateway, jadi tidak dapat memverifikasi dukungan pencarian web dan menonaktifkan WebSearch pada sesi gateway |

331| Prompt caching standar | Tersedia | Breakpoint `cache_control` diteruskan ke setiap upstream |

332| TTL cache 1 jam | Tidak tersedia | CLI menghilangkan beta extended-cache-ttl pada sesi gateway, karena tidak setiap upstream yang dapat dirutekan gateway mendukung TTL 1 jam, jadi prompt caching melalui gateway menggunakan TTL 5 menit; lihat catatan header beta di atas |

333| Mode Auto | Tersedia | Mengikuti [aturan penyedia pihak ketiga](/docs/id/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry): hanya model yang memenuhi syarat di penyedia pihak ketiga yang dapat menggunakannya. {/* min-version: 2.1.207 */}Sebelum v2.1.207, mode auto pada sesi gateway memerlukan pengaturan `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, dapat dikirimkan melalui blok `env` kebijakan terkelola |

334| Optimasi khusus pihak pertama seperti cakupan cache global dan alat yang efisien token | Tidak tersedia | CLI tidak mengaktifkannya pada sesi gateway; lihat catatan header beta di atas |

335| OTLP/gRPC | Tidak didukung | OTLP melalui HTTP saja |

336| SAML, LDAP, dan auth non-OIDC lainnya | Tidak didukung | OIDC saja. Depan dengan jembatan OIDC jika diperlukan |

337| Multi-tenant (beberapa penerbit OIDC) | Tidak didukung | Satu penerbit per gateway. Jalankan instans terpisah |

338| Server Windows | Tidak didukung | Terapkan di Linux. macOS untuk pengembangan lokal saja |

339| Helm chart | Tidak tersedia | Gateway berjalan sebagai Deployment stateless standar; lihat [panduan penyebaran](/docs/id/claude-apps-gateway-deploy#kubernetes) |

340| Admin UI | Tidak tersedia | Konfigurasi adalah file YAML; terapkan ulang untuk mengubahnya |

341 

342<h2 id="next-steps">

343 Langkah berikutnya

344</h2>

345 

346Quickstart meninggalkan Anda dengan konfigurasi minimal yang berjalan di bawah Docker Compose. Untuk membawanya lebih jauh:

347 

348* Perluas `gateway.yaml` di luar konfigurasi minimal, misalnya untuk menambahkan RBAC per-grup, failover multi-upstream, atau tujuan telemetri. [Referensi konfigurasi](/docs/id/claude-apps-gateway-config) mencakup setiap opsi.

349* Pindah dari Compose ke penyebaran produksi di Kubernetes atau Cloud Run, siapkan IdP Anda dengan benar, dan tinjau model keamanan. [Panduan penyebaran dan operasi](/docs/id/claude-apps-gateway-deploy) mencakup penyiapan per-IdP, persyaratan gambar kontainer, probe kesehatan, dan pemecahan masalah.

350* Letakkan batas pengeluaran pada pengembang atau grup individual sehingga beban kerja yang liar tidak dapat mengonsumsi seluruh komitmen Anda. [Spend limits](/docs/id/claude-apps-gateway-spend-limits) mencakup API admin dan cara penegakan bekerja.

351* Untuk contoh lengkap yang dikerjakan di Google Cloud, dengan Cloud Run, Cloud SQL, dan Secret Manager, lihat [Deploy on Google Cloud](/docs/id/claude-apps-gateway-on-gcp).

corporate-launcher.md +142 −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# Jalankan Claude Code di balik peluncur korporat

6 

7> Arahkan proses yang dimulai Claude Code dari binernya sendiri, termasuk layanan latar belakang dan setiap sesi tampilan agen, melalui peluncur yang diperlukan dengan CLAUDE_CODE_PROCESS_WRAPPER.

8 

9Beberapa organisasi memerlukan setiap proses pada workstation untuk dimulai melalui peluncur wajib. Peluncur menerapkan sandbox, kontrol jaringan, atau injeksi kredensial yang postur keamanan perusahaan bergantung padanya, dan biner yang dimulai tanpanya adalah pelanggaran kebijakan.

10 

11`CLAUDE_CODE_PROCESS_WRAPPER` memulai setiap proses yang diluncurkan Claude Code dari binernya sendiri melalui peluncur Anda: layanan latar belakang, setiap sesi yang dihosting dalam [tampilan agen](/docs/id/agent-view), dan peluncuran ulang Claude Code setelah pembaruan. Atur ke jalur absolut peluncur Anda, dan Claude Code menjalankan peluncur dengan perintah Claude Code sebagai argumennya.

12 

13Peluncur yang membungkus perintah `claude` pada `PATH` Anda tidak dapat menjangkau proses-proses ini, karena mereka dimulai dari jalur langsung biner tanpa mencari `claude`.

14 

15<Note>

16 `CLAUDE_CODE_PROCESS_WRAPPER` memerlukan Claude Code v2.1.208 atau lebih baru. Versi sebelumnya mengabaikan variabel dan memulai setiap proses tanpa pembungkus.

17</Note>

18 

19<h2 id="what-the-launcher-covers">

20 Apa yang dicakup peluncur

21</h2>

22 

23Dengan `CLAUDE_CODE_PROCESS_WRAPPER` diatur, Claude Code memulai masing-masing proses berikut melalui peluncur Anda:

24 

25* Layanan latar belakang yang dimulai `claude agents` dan sesi latar belakang sesuai permintaan.

26* Host terminal dan sesi Claude Code di dalam setiap baris tampilan agen, termasuk sesi siaga hangat yang disimpan layanan.

27* Sesi yang diluncurkan ulang layanan setelah pembaruan atau kerusakan.

28* Peluncuran ulang yang dilakukan Claude Code pada dirinya sendiri untuk menyelesaikan pemasangan pembaruan, termasuk tindakan restart-for-update tampilan agen.

29 

30Di Windows, variabel diabaikan: kontrak peluncur bergantung pada `exec`, yang tidak didukung Windows. Mesin Windows dengan variabel yang diatur menjalankan setiap proses tanpa pembungkus dan terus bekerja, dan satu-satunya sinyal adalah peringatan dalam [log debug](/docs/id/troubleshooting). Jika kebijakan peluncur Anda mencakup Windows, variabel tidak memuaskannya di sana: hitung mesin Windows sebagai tanpa pembungkus saat Anda merencanakan peluncuran.

31 

32<h3 id="processes-that-start-outside-the-launcher">

33 Proses yang dimulai di luar peluncur

34</h3>

35 

36Tiga proses tidak pernah dimulai melalui peluncur:

37 

38* [Layanan latar belakang yang diinstal](/docs/id/agent-view#the-supervisor-process): `launchd` atau `systemd` memulai proses itu dari file unitnya. `/status` dan `claude daemon status` memperingatkan ketika ini berlaku, dan sesi yang diluncurkan layanan masih dimulai melalui peluncur setelah layanan dimulai ulang dengan variabel dalam pengaturannya.

39* Sesi yang Anda mulai sendiri di terminal, yang berjalan bagaimanapun Anda menginvokasinya. Untuk mencakup sesi-sesi ini, letakkan skrip bernama `claude` di direktori sebelumnya pada `PATH` yang menjalankan peluncur Anda dengan biner asli; jangan ganti symlink yang dikelola. Self-spawn tidak berkonsultasi dengan `PATH`, jadi dua peluncur tidak pernah bertumpuk.

40* Proses pertama dari deep link `claude-cli://`, yang dimulai handler protokol sistem operasi secara langsung. Semua yang dimulai sesi itu di latar belakang sesudahnya berjalan melalui peluncur. Untuk menutup jalur ini sepenuhnya, [cegah pendaftaran handler](/docs/id/deep-links#registration-and-supported-platforms) dengan pengaturan `disableDeepLinkRegistration`.

41 

42<h3 id="helper-process-names-in-process-monitors">

43 Nama proses pembantu dalam monitor proses

44</h3>

45 

46Dengan peluncur yang dikonfigurasi, `ps` dan Activity Monitor menampilkan nama biner versi untuk proses pembantu latar belakang alih-alih label `claude bg-pty-host` dan `claude bg-spare` Claude Code, karena `exec` peluncur membangun ulang daftar argumen. Penamaan ulang adalah efek samping, bukan penyembunyian: proses-proses sebaliknya tidak berubah, dan Claude Code mengidentifikasi proses-prosesnya sendiri berdasarkan jalur biner, tidak pernah berdasarkan nama tampilan.

47 

48<h2 id="set-up-the-launcher">

49 Atur peluncur

50</h2>

51 

52<Steps>

53 <Step title="Tulis skrip peluncur">

54 Buat skrip yang dapat dieksekusi di jalur absolut, seperti `/opt/corp/launcher`. Claude Code menjalankannya dengan perintah Claude Code lengkap sebagai argumennya, dan skrip harus diakhiri dengan memanggil `exec "$@"` sehingga menggantikan dirinya dengan Claude Code:

55 

56 ```bash theme={null}

57 #!/bin/sh

58 # Pengaturan organisasi Anda: masukkan sandbox, terapkan

59 # kontrol jaringan, atau injeksikan kredensial.

60 exec "$@"

61 ```

62 

63 Buat dapat dieksekusi dengan `chmod +x`. Bagian pengaturan adalah apa pun yang harus dilakukan peluncur Anda sebelum Claude Code berjalan; [kontrak peluncur](#the-launcher-contract) di bawah mencantumkan aturan yang harus diikuti skrip.

64 

65 <Note>

66 Jika Anda sebelumnya mengganti symlink `~/.local/bin/claude` dengan peluncur Anda, pulihkan symlink asli dalam perubahan yang sama. Symlink yang diganti membuat sesi pembungkus pertama memulai layanan latar belakang melalui kedua peluncur sekaligus, dan menempatkan instalasi dalam keadaan yang dikelola secara eksternal: `/doctor` melaporkannya, auto-update membiarkan file tetap ada, dan pembersihan versi lama tetap dinonaktifkan sampai installer mengelola jalur itu lagi.

67 </Note>

68 </Step>

69 

70 <Step title="Atur CLAUDE_CODE_PROCESS_WRAPPER dalam pengaturan">

71 Atur variabel dalam blok `env` file pengaturan sehingga layanan latar belakang yang terpisah mewarisinya. `export` shell tidak cukup: layanan latar belakang dimulai sesuai permintaan, bertahan lebih lama dari shell Anda, dan tidak pernah membaca ulang profil shell.

72 

73 Untuk satu mesin, tambahkan ke `~/.claude/settings.json`. Untuk menerapkannya ke setiap mesin di organisasi Anda, letakkan blok yang sama dalam [pengaturan yang dikelola](/docs/id/permissions#managed-settings):

74 

75 ```json theme={null}

76 {

77 "env": {

78 "CLAUDE_CODE_PROCESS_WRAPPER": "/opt/corp/launcher"

79 }

80 }

81 ```

82 

83 Ketika lebih dari satu sumber menetapkan variabel, nilai pengaturan yang dikelola menggantikan baik `~/.claude/settings.json` maupun nilai yang diekspor dalam shell, sehingga pengguna tidak dapat mengarahkan self-spawn ke peluncur yang berbeda.

84 

85 Pengaturan proyek dan lokal tidak dapat menetapkan variabel ini. File yang dikomitkan ke repositori tidak boleh dapat menempatkan biner di depan setiap proses Claude Code pada mesin, jadi `CLAUDE_CODE_PROCESS_WRAPPER` dalam `.claude/settings.json` atau `.claude/settings.local.json` diabaikan, dengan peringatan dalam [log debug](/docs/id/troubleshooting).

86 </Step>

87 

88 <Step title="Mulai ulang layanan latar belakang dan sesi Anda">

89 Layanan latar belakang yang berjalan dan sesi `claude` apa pun yang terbuka membaca variabel sekali saat startup, jadi mereka terus meluncurkan proses tanpa pembungkus sampai dimulai ulang. Jalankan `claude daemon stop --any` untuk menghentikan layanan sesuai permintaan; perintah berikutnya yang membutuhkannya, seperti `claude agents`, memulai yang dibungkus. [Layanan yang diinstal](/docs/id/agent-view#the-supervisor-process) mengambil `claude daemon stop` tanpa `--any`. Kemudian mulai ulang sesi `claude` terbuka Anda.

90 

91 Pada mesin yang tidak dapat Anda mulai ulang dengan tangan, sesi pertama yang dimulai setelah push pengaturan secara otomatis menghentikan layanan sesuai permintaan yang tersisa tanpa pembungkus. Mesin di mana tidak ada sesi baru yang dimulai menyimpan layanannya yang tanpa pembungkus sampai satu dimulai, dan layanan yang diinstal selalu memerlukan restart dalam langkah ini.

92 </Step>

93 

94 <Step title="Verifikasi">

95 Jalankan `/status` dalam sesi: entri Self-exec menunjukkan perintah peluncuran yang diselesaikan dan memperingatkan ketika layanan latar belakang yang berjalan tidak cocok dengannya. `claude daemon status` mencetak informasi yang sama dari shell, termasuk setelah Anda membatalkan pengaturan variabel, ketika `/status` tidak lagi menampilkan entri.

96 </Step>

97</Steps>

98 

99<h2 id="the-launcher-contract">

100 Kontrak peluncur

101</h2>

102 

103Ketika peluncur tidak dapat berjalan, Claude Code menolak untuk memulai proses alih-alih memulainya tanpa pembungkus. Di Windows, [variabel diabaikan](#what-the-launcher-covers) dan proses dimulai tanpa pembungkus. Claude Code memegang skrip ke aturan-aturan ini:

104 

105* **Akhiri dengan `exec "$@"`.** Peluncur yang melahirkan anak dan keluar meninggalkan proses Claude Code yatim piatu yang tidak dapat dilacak layanan latar belakang. Tampilan agen menandai sesi seperti itu gagal dengan pesan yang menyebutkan peluncur, dan layanan mengumpulkan apa yang ditinggalkan peluncur.

106* **Jangan urutkan ulang, serap, atau tambahkan argumen.** Argumen pertama adalah biner Claude Code dan semuanya setelahnya adalah argv-nya.

107* **Lewatkan setiap variabel lingkungan yang diwarisi melalui ke `exec`.** Menambahkan variabel, seperti kredensial yang disuntikkan, baik-baik saja; menjatuhkan yang diwarisi tidak.

108 * Token autentikasi per-sesi, pemilihan model dan penyedia, dan `CLAUDE_CODE_PROCESS_WRAPPER` itu sendiri semuanya berjalan di lingkungan yang diwarisi, jadi peluncur yang membangun ulangnya dari daftar izin memecahkan sesi yang dimulainya, dan `/status` melaporkan ketidakcocokan peluncur.

109 * Jika peluncur harus memasuki namespace atau sandbox yang mengatur ulang lingkungan, ekspor ulang lingkungan yang diwarisi di dalamnya secara verbatim.

110* **Capai `exec` dalam sekitar tiga detik setiap kali peluncur berjalan.** Pengiriman latar belakang dingin menjalankan peluncur dua kali berturut-turut sebelum byte pertama output, jadi lakukan pekerjaan lambat seperti pertukaran single sign-on dengan malas atau dari cache.

111 * Peluncur yang berjalan jauh melampaui anggaran diperlakukan sebagai awal yang terhenti dan dimulai ulang.

112* **Toleransi untuk diinvokasi dari dalam dirinya sendiri.** Claude Code menerapkan peluncur ke setiap self-spawn bersarang, jadi peluncur yang memperoleh sumber daya eksklusif harus mendeteksi bahwa itu sudah memegangnya.

113* **Jangan tulis ke terminal sebelum Claude Code dimulai.** Apa pun yang dicetak sebelum `exec` dilaporkan sebagai penyebab kerusakan jika sesi mati sebelum inisialisasi.

114 

115<h3 id="format-of-the-claude_code_process_wrapper-value">

116 Format nilai `CLAUDE_CODE_PROCESS_WRAPPER`

117</h3>

118 

119Untuk sebagian besar peluncur, nilainya hanya jalur absolut skrip, seperti `/opt/corp/launcher`.

120 

121Untuk melewatkan argumen peluncur Anda sendiri, tuliskan setelah jalur. Claude Code menguraikan nilai sebagai daftar argumen, bukan perintah shell:

122 

123* Whitespace memisahkan token, dan tanda kutip ganda mengelompokkan token yang berisi spasi.

124* Nilai yang dimulai dengan `[` dibaca sebagai array string JSON, seperti `["/opt/corp/launcher", "--profile", "cc"]`.

125* Sintaks shell tidak berfungsi: tidak ada ekspansi variabel atau globbing, dan operator yang tidak dikutip seperti `;`, `|`, `&`, atau `$(` ditolak sebagai kesalahan konfigurasi daripada diinterpretasikan ulang.

126 

127Ketika nilai tidak dapat digunakan, Claude Code menolak untuk memulai proses yang terpengaruh dan [melaporkan alasannya](/docs/id/errors#claude_code_process_wrapper-launcher-errors).

128 

129<h2 id="relationship-to-claude_code_shell_prefix">

130 Hubungan dengan `CLAUDE_CODE_SHELL_PREFIX`

131</h2>

132 

133`CLAUDE_CODE_PROCESS_WRAPPER` membungkus proses Claude Code sendiri dan melewatkan perintah melalui sebagai token argv terpisah untuk peluncur ke `exec`. [`CLAUDE_CODE_SHELL_PREFIX`](/docs/id/env-vars) membungkus perintah shell yang dijalankan Claude Code atas nama Anda, seperti panggilan alat Bash, hooks, dan perintah yang memulai server MCP stdio, dan melewatkan masing-masing sebagai string yang dikutip shell tunggal dalam `$1` untuk pembungkus untuk mengevaluasi ulang. Peluncur yang ditulis untuk satu tidak berfungsi sebagai yang lain.

134 

135<h2 id="related-resources">

136 Sumber daya terkait

137</h2>

138 

139* [Tampilan agen](/docs/id/agent-view): sesi latar belakang dan proses supervisor yang dicakup peluncur

140* [Variabel lingkungan](/docs/id/env-vars): entri referensi `CLAUDE_CODE_PROCESS_WRAPPER`

141* [Pengaturan yang dikelola](/docs/id/permissions#managed-settings): berikan blok `env` di seluruh armada

142* [Referensi kesalahan peluncur](/docs/id/errors#claude_code_process_wrapper-launcher-errors): pesan penolakan dan cara memulihkan

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

llm-gateway.md +64 −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# Gateway LLM lainnya

6 

7> Arahkan Claude Code melalui gateway LLM yang sudah dijalankan organisasi Anda. Mencakup menghubungkan Claude Code ke gateway, meluncurkannya untuk organisasi Anda, dan apa yang Claude Code kirimkan ke gateway.

8 

9Bagian ini mencakup penggunaan produk gateway yang sudah dijalankan organisasi Anda, bukan [gateway aplikasi Claude](/docs/id/claude-apps-gateway). Untuk apa itu gateway, bagaimana gateway berada di antara Claude Code dan penyedia Anda, dan cara memilih antara gateway aplikasi Claude dan produk lain, lihat [gambaran umum gateway](/docs/id/gateways).

10 

11<Note>

12 * Jika Anda adalah pengembang yang terhubung ke gateway yang ada: [hubungkan Claude Code ke gateway Anda](/docs/id/llm-gateway-connect)

13 * Jika Anda adalah admin yang meluncurkan gateway untuk organisasi Anda: [terapkan dan distribusikan gateway](/docs/id/llm-gateway-rollout)

14 * Jika Anda mengonfigurasi produk gateway: [referensi protokol gateway](/docs/id/llm-gateway-protocol)

15</Note>

16 

17Setiap gateway yang mengekspos [format API yang didukung](/docs/id/llm-gateway-protocol#api-formats) berfungsi. Anthropic tidak mendukung, memelihara, atau mengaudit produk gateway pihak ketiga, dan tidak mendukung perutean Claude Code ke model non-Claude melalui gateway apa pun. Terapkan gateway mengikuti dokumentasinya sendiri, kemudian selesaikan sisi Claude Code dengan [langkah-langkah peluncuran di bawah](#roll-out-a-gateway).

18 

19<h2 id="what-a-gateway-provides">

20 Apa yang disediakan gateway

21</h2>

22 

23Gateway memberikan organisasi Anda satu tempat untuk mengelola:

24 

25* **Kredensial**: kunci penyedia tetap di sisi server; pengembang memegang kredensial gateway sebagai gantinya

26* **Pelacakan penggunaan**: atribusikan penggunaan berdasarkan pengembang atau tim, terlepas dari penyedia mana yang melayani permintaan

27* **Kontrol biaya**: terapkan anggaran dan batas laju di satu tempat

28* **Pencatatan audit**: catat setiap permintaan model untuk kepatuhan

29* **Peralihan penyedia**: ubah penyedia dalam konfigurasi gateway, tanpa menyentuh mesin pengembang

30 

31Semua ini kecuali peralihan penyedia berlaku apakah upstream adalah API Anthropic atau [penyedia cloud](/docs/id/third-party-integrations). Peralihan penyedia tanpa mengonfigurasi ulang mesin pengembang juga bergantung pada gateway yang mengekspos satu [endpoint format Anthropic](/docs/id/llm-gateway-protocol#api-formats) terlepas dari upstream; gateway yang mengekspos format penyedia sendiri mengikat konfigurasi klien ke penyedia itu.

32 

33Pertukaran adalah bahwa gateway menjadi infrastruktur yang dioperasikan organisasi Anda. Claude Code menambahkan kemampuan dengan setiap rilis, dan gateway yang tidak meneruskannya merusak fitur yang sesuai, jadi produk gateway perlu tetap diperbarui seiring Claude Code berkembang. [Referensi protokol gateway](/docs/id/llm-gateway-protocol) mencakup apa yang harus diteruskan.

34 

35<h2 id="roll-out-a-gateway">

36 Luncurkan gateway

37</h2>

38 

39Ketika Anda siap meluncurkan gateway LLM ke organisasi Anda, urutannya sama terlepas dari produk gateway mana yang Anda pilih:

40 

411. Terapkan gateway dan berikan kredensial penyedia Anda, sehingga dapat mengautentikasi permintaan yang diteruskannya.

422. Keluarkan setiap pengembang kredensial gateway, sehingga penggunaan dikaitkan dengan pengembang dan offboarding mencabut satu kredensial.

433. Distribusikan konfigurasi melalui [file pengaturan terkelola](/docs/id/settings#settings-files) dan alat rahasia Anda, sehingga setiap mesin menerima URL dasar dan kredensial. Ketika keduanya didistribusikan, pengembang tidak mengonfigurasi apa pun. Jika Anda tidak memiliki distribusi pengaturan, pengembang mengikuti [halaman koneksi](/docs/id/llm-gateway-connect) untuk menetapkan variabel sendiri.

444. Minta setiap pengembang [memeriksa konfigurasi di Claude Code](/docs/id/llm-gateway-connect#check-for-an-existing-configuration), sehingga masalah distribusi muncul sebelum mereka bergantung pada gateway.

45 

46[Luncurkan gateway LLM untuk organisasi Anda](/docs/id/llm-gateway-rollout) menjelaskan setiap langkah dan menunjukkan file konfigurasi untuk didistribusikan di setiap langkah. Gateway adalah satu bagian dari pengaturan organisasi; untuk penegakan kebijakan, visibilitas penggunaan, dan keputusan penanganan data, lihat [Siapkan Claude Code untuk organisasi Anda](/docs/id/admin-setup).

47 

48<h2 id="subscriptions-and-gateways">

49 Langganan dan gateway

50</h2>

51 

52Sementara [variabel kredensial gateway](/docs/id/llm-gateway-connect#set-the-credential-variable) atau `apiKeyHelper` aktif, langganan claude.ai pengembang tidak digunakan: kredensial menggantikan login langganan untuk sesi itu, dan batas penggunaan langganan tidak berlaku. Lalu lintas itu ditagih per token kepada siapa pun yang memiliki kredensial yang diteruskan gateway, seperti akun Anthropic Console organisasi Anda, atau akun Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry Anda ketika gateway merutekan ke sana.

53 

54[`ANTHROPIC_BASE_URL`](/docs/id/llm-gateway-connect#set-the-base-url-and-credential) adalah variabel yang menunjukkan Claude Code ke gateway. Menetapkan hanya variabel itu, tanpa kredensial gateway, tidak menggantikan langganan. Permintaan masih merutekan melalui gateway, tetapi login claude.ai yang disimpan tetap menjadi kredensial aktif, sehingga batas penggunaan dan penagihan berlaku. Gateway yang meneruskan lalu lintas ini ke Anthropic harus meneruskan kemampuan OAuth di `anthropic-beta`; lihat [referensi header permintaan](/docs/id/llm-gateway-protocol#request-headers).

55 

56<h2 id="related-pages">

57 Halaman terkait

58</h2>

59 

60* [Gambaran umum gateway](/docs/id/gateways): bagaimana gateway bekerja dan cara memilih antara gateway aplikasi Claude dan produk lain

61* [Gateway aplikasi Claude](/docs/id/claude-apps-gateway): gateway yang dihosting sendiri oleh Anthropic dengan masuk SSO dan telemetri OTLP

62* [Hubungkan Claude Code ke gateway LLM](/docs/id/llm-gateway-connect): atur URL dasar dan kredensial di mesin Anda sendiri, dengan konfigurasi per-permukaan dan tabel pemecahan masalah

63* [Luncurkan gateway LLM untuk organisasi Anda](/docs/id/llm-gateway-rollout): daftar periksa admin untuk menerapkan gateway, mengeluarkan kredensial pengembang, dan mendistribusikan pengaturan terkelola

64* [Referensi protokol gateway](/docs/id/llm-gateway-protocol): apa yang Claude Code kirimkan ke gateway, untuk operator yang mengonfigurasi satu, mencakup endpoint, header untuk diteruskan, dan pass-through fitur

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