689 689
690### `admin`690### `admin`
691 691
692Opsional. Mengaktifkan `/v1/organizations/spend_limits`, yang mencerminkan Admin API publik Anthropic, dan penegakan pengeluaran per-pengembang di `/v1/messages`. Lihat [Batas pengeluaran](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md) untuk cara batas ditetapkan dan diterapkan; bagian ini mencakup kunci `gateway.yaml` yang mengaktifkan fitur dan menyetelnya.692Opsional. Mengaktifkan `/v1/organizations/spend_limits`, yang mencerminkan Admin API publik Anthropic, serta penegakan batas pengeluaran per developer pada `/v1/messages`. Lihat [Batas pengeluaran](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md) untuk cara batas ditetapkan dan ditegakkan; bagian ini membahas kunci `gateway.yaml` yang mengaktifkan fitur tersebut dan menyesuaikannya.
693 693
694```yaml theme={null}694```yaml theme={null}
695admin:695admin:
707 blocked_message: request an increase at https://go.example.com/claude-limits707 blocked_message: request an increase at https://go.example.com/claude-limits
708```708```
709 709
710| Field | Diperlukan | Deskripsi |710| Bidang | Wajib | Deskripsi |
711| - | - | - |711| - | - | - |
712| `write_keys` | Tidak | Array dari `{id, key}`. `x-api-key` yang cocok dengan salah satu dari ini dapat mendaftar, menetapkan, dan menghapus batas pengeluaran. Nilai kunci harus setidaknya 32 karakter; `id` harus unik di seluruh `read_keys` dan `write_keys`. |712| `write_keys` | Tidak | Array `{id, key}`. `x-api-key` yang cocok dengan salah satunya dapat mencantumkan, menetapkan, dan menghapus batas pengeluaran. Nilai kunci harus minimal 32 karakter; `id` harus unik di seluruh `read_keys` dan `write_keys`. |
713| `read_keys` | Tidak | Array dari `{id, key}`. Read-only: setiap endpoint `GET`, termasuk mendaftar batas, mengambil satu berdasarkan ID, dan membaca [`/effective`](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits#%2Feffective) dan [`/audit`](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits#%2Faudit). |713| `read_keys` | Tidak | Array `{id, key}`. Read-only: setiap endpoint `GET`, termasuk mencantumkan batas, mengambil satu batas berdasarkan ID, serta membaca [`/effective`](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits#%2Feffective) dan [`/audit`](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits#%2Faudit). |
714| `admin_groups` | Tidak | Nama grup IdP. Gateway JWT yang klaim `groups` mencakup salah satu dari ini memiliki akses admin penuh, baca dan tulis, dan audit sebagai `oidc:<sub>`. Gunakan ini untuk admin manusia; gunakan kunci API untuk mesin. Entri kosong dalam daftar ini menghentikan gateway saat boot. Lihat [Nilai matcher yang menghentikan gateway saat boot](#matcher-values-that-stop-the-gateway-at-boot). |714| `admin_groups` | Tidak | Nama grup IdP. JWT gateway yang klaim `groups`-nya menyertakan salah satu grup ini memiliki akses admin penuh, baca dan tulis, dan tercatat di audit sebagai `oidc:<sub>`. Gunakan ini untuk admin manusia; gunakan kunci API untuk mesin. Entri kosong dalam daftar ini menghentikan gateway saat boot. Lihat [Nilai matcher yang menghentikan gateway saat boot](#matcher-values-that-stop-the-gateway-at-boot). |
715| `blocked_message` | Tidak | Ditambahkan verbatim ke `429 billing_error` yang dilihat pengembang yang diblokir. Tulis seluruh instruksi, seperti URL atau saluran Slack. Jika tidak diatur, gateway mengirim hanya pesan default. Lihat [Cara kerja penegakan](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md#how-enforcement-works). |715| `blocked_message` | Tidak | Ditambahkan apa adanya ke `429 billing_error` yang dilihat developer yang diblokir. Tulis instruksi lengkapnya, seperti URL atau channel Slack. Jika tidak disetel, gateway hanya mengirim pesan default. Lihat [Cara kerja penegakan](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md#how-enforcement-works). |
716| `audit_retention_days` | Tidak | Default `365`. Baris `admin_audit` yang lebih lama disapu. |716| `audit_retention_days` | Tidak | Default `365`. Baris `admin_audit` yang lebih lama akan dihapus. |
717| `spend_retention_months` | Tidak | Default `13`. Baris penghitung `spend` yang lebih lama dari ini disapu. Default menjaga tahun penuh ditambah bulan parsial saat ini untuk pelaporan tahun-ke-tahun. |717| `spend_retention_months` | Tidak | Default `13`. Baris penghitung `spend` yang lebih lama dari ini akan dihapus. Default ini menyimpan satu tahun penuh ditambah bulan parsial saat ini untuk pelaporan tahun ke tahun. |
718| `identity_retention_days` | Tidak | Default `90`. TTL terakhir dilihat untuk baris `principal_emails`, yang menyimpan email, nama tampilan, dan grup setiap pengembang (PII). Sengaja lebih pendek dari retensi pengeluaran sehingga identitas yang dihapus provisioning habis masa berlaku sementara penghitung pengeluaran anonimnya tetap ada. |718| `identity_retention_days` | Tidak | Default `90`. TTL sejak terakhir terlihat untuk baris `principal_emails`, yang menyimpan email, nama tampilan, dan grup setiap developer (PII). Sengaja dibuat lebih pendek daripada retensi pengeluaran agar identitas yang aksesnya sudah dicabut kedaluwarsa sementara penghitung pengeluaran anonimnya tetap ada. |
719| `group_limit_mode` | Tidak | `min` (default) atau `max`. Ketika pengembang berada di beberapa grup dengan batas, `min` menegakkan yang paling ketat dan `max` yang paling longgar. Digunakan oleh penegakan dan `/effective`. |719| `group_limit_mode` | Tidak | `min` (default) atau `max`. Jika developer berada di beberapa grup yang memiliki batas, `min` menegakkan yang paling ketat dan `max` yang paling longgar. Digunakan oleh penegakan dan `/effective`. |
720 720
721### `enforcement`721### `enforcement`
722 722
723Blok `enforcement` mengontrol bagaimana pemeriksaan batas pengeluaran berperilaku ketika penyimpanan tidak tersedia.723Blok `enforcement` mengontrol perilaku pemeriksaan batas pengeluaran saat penyimpanan tidak tersedia.
724 724
725| Field | Diperlukan | Deskripsi |725| Bidang | Wajib | Deskripsi |
726| - | - | - |726| - | - | - |
727| `fail_closed_on_error` | Tidak | Default `false`. Penegakan pengeluaran gagal terbuka pada pemadaman Postgres, sehingga inferensi tetap aktif. Atur `true` untuk gagal tertutup: pengembang yang melebihi batas diblokir, tetapi begitu juga semua orang jika penyimpanan tidak dapat dijangkau. Memerlukan blok [`admin:`](#admin): penegakan pengeluaran hanya berjalan ketika `admin` dikonfigurasi, dan gateway menolak untuk memulai jika Anda menetapkan ini `true` tanpa satu. |727| `fail_closed_on_error` | Tidak | Default `false`. Penegakan pengeluaran fail open saat Postgres mengalami gangguan, sehingga inferensi tetap berjalan. Setel `true` untuk fail closed: developer yang melebihi batas diblokir, tetapi begitu juga semua orang lainnya jika penyimpanan tidak dapat dijangkau. Memerlukan blok [`admin:`](#admin): penegakan pengeluaran hanya berjalan saat `admin` dikonfigurasi, dan gateway menolak untuk mulai jika Anda menyetel ini ke `true` tanpa blok tersebut. |
728 728
729### `pricing`729### `pricing`
730 730
731Blok `pricing` memberi tahu meter pengeluaran apa yang harus dikenakan alih-alih harga daftar USD, sehingga batas dan [`/effective`](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits#%2Feffective) mencerminkan tarif kontrak Anda. Jumlah tetap dalam USD dan tetap merupakan perkiraan, bukan faktur. Dua prasyarat:731Blok `pricing` memberi tahu meter pengeluaran tarif apa yang dikenakan sebagai pengganti harga daftar USD, sehingga batas dan [`/effective`](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits#%2Feffective) mencerminkan tarif kontrak Anda. Jumlah tetap dalam USD dan tetap merupakan estimasi, bukan faktur. Ada dua prasyarat:
732 732
733* Claude Code v2.1.227 atau lebih baru di server gateway. Versi sebelumnya menolak kunci yang tidak dikenal saat boot.733* Claude Code v2.1.227 atau yang lebih baru di server gateway. Versi sebelumnya menolak kunci yang tidak dikenal saat boot.
734* Blok [`admin:`](#admin) atau, di v2.1.268 atau lebih baru, blok [`managed:`](#managed) dengan setidaknya satu kebijakan. Gateway menolak untuk memulai dengan `pricing` diatur dan tidak ada blok, karena tidak ada yang akan membacanya.734* Blok [`admin:`](#admin) atau, pada v2.1.268 atau yang lebih baru, blok [`managed:`](#managed) dengan setidaknya satu kebijakan. Gateway menolak untuk mulai jika `pricing` disetel tanpa salah satu blok tersebut, karena tidak ada yang akan membacanya.
735 735
736```yaml theme={null}736```yaml theme={null}
737pricing:737pricing:
745 cache_write: 4.125745 cache_write: 4.125
746```746```
747 747
748| Field | Diperlukan | Deskripsi |748| Bidang | Wajib | Deskripsi |
749| - | - | - |749| - | - | - |
750| `multiplier` | Tidak | Default `1`. Meter mengalikan setiap jumlah yang diukur dengan ini, baik harga daftar atau ditimpa, jadi `0.85` menagih 85% dari harga. Harus lebih besar dari 0 dan paling banyak 10, dan nilai di atas 1 adalah [markup](#mark-prices-up). |750| `multiplier` | Tidak | Default `1`. Meter mengalikan setiap jumlah yang diukur dengan nilai ini, baik berdasarkan harga daftar maupun yang ditimpa, sehingga `0.85` menagih 85% dari harga. Harus lebih besar dari 0 dan paling banyak 10, dan nilai di atas 1 merupakan [markup](#mark-prices-up). |
751| `overrides` | Tidak | Baris dari `{upstream, model, input, output, cache_read, cache_write}` dalam USD per juta token. Keempat tarif diperlukan. Masing-masing harus lebih besar dari 0 dan paling banyak 10000. |751| `overrides` | Tidak | Baris `{upstream, model, input, output, cache_read, cache_write}` dalam USD per juta token. Keempat tarif wajib diisi. Masing-masing harus lebih besar dari 0 dan paling banyak 10000. |
752 752
753Bagaimana meter mencocokkan baris override:753Cara meter mencocokkan baris override:
754 754
755* Baris menggantikan harga daftar untuk permintaan yang `upstream`, [`upstreams[].name`](#upstreams), layani untuk `model`. Itu termasuk tarif [fast mode](https://code.claude.com/docs/id/fast-mode.md#understand-the-cost-tradeoff) yang lebih tinggi, jadi permintaan fast dan standard diukur dengan tarif yang sama empat.755* Sebuah baris menggantikan harga daftar untuk permintaan yang dilayani `upstream`, sebuah [`upstreams[].name`](#upstreams), untuk `model`. Itu termasuk tarif [fast mode](https://code.claude.com/docs/id/fast-mode.md#understand-the-cost-tradeoff) yang lebih tinggi, sehingga permintaan fast dan standar diukur dengan empat tarif yang sama.
756* ID bawaan seperti `claude-sonnet-4-6`, dicocokkan seperti [`models[].id`](#models), mencakup setiap bentuk tertanggal, bentuk Amazon Bedrock regional, atau bentuk Google Cloud's Agent Platform yang meter hargai sebagai model itu. String lain apa pun, seperti alias atau ARN profil inferensi, cocok dengan ID yang dikirim klien atau string yang dikirim upstream, tidak peka huruf besar-kecil.756* ID bawaan seperti `claude-sonnet-4-6`, yang dicocokkan seperti [`models[].id`](#models), mencakup setiap bentuk bertanggal, bentuk regional Amazon Bedrock, atau bentuk Agent Platform Google Cloud yang diberi harga oleh meter sebagai model tersebut. String lain, seperti alias atau ARN inference-profile, dicocokkan dengan ID yang dikirim klien atau string yang dikirim ke upstream, tanpa membedakan huruf besar-kecil.
757* Di mana baris tumpang tindih, meter memilih baris yang paling spesifik daripada baris pertama: baris yang `model` adalah string model yang tepat dikirim upstream, kemudian baris yang cocok dengan ID yang tepat yang dikirim klien, kemudian baris yang menamai model bawaan.757* Jika baris tumpang tindih, meter memilih baris yang paling spesifik, bukan baris pertama: baris yang `model`-nya adalah string model persis yang dikirim ke upstream, lalu baris yang cocok dengan ID persis yang dikirim klien, lalu baris yang menyebut model bawaan.
758* Nama upstream yang tidak dikenal gagal boot, begitu juga dua baris untuk satu upstream yang menamai model yang sama, termasuk dua ejaan dari satu model bawaan. Gateway memperingatkan saat boot tentang baris yang tidak ada model yang dapat diminta yang dapat menggunakannya.758* Nama upstream yang tidak dikenal menggagalkan boot, begitu pula dua baris untuk satu upstream yang menyebut model yang sama, termasuk dua ejaan dari satu model bawaan. Gateway memberi peringatan saat boot tentang baris yang tidak dapat digunakan oleh model apa pun yang dapat diminta.
759* Permintaan pencarian web tetap pada harga daftar \$0.01; pengali masih berlaku untuk mereka.759* Permintaan web-search tetap pada harga daftar \$0.01; multiplier tetap berlaku untuk permintaan tersebut.
760 760
761Untuk tarif per-region, berikan setiap region upstream bernama sendiri dan satu baris per upstream.761Untuk tarif per region, berikan setiap region upstream bernama miliknya sendiri dan satu baris per upstream.
762 762
763#### Tandai harga naik763#### Menaikkan harga
764 764
765Dengan v2.1.271 atau lebih baru di server gateway, Anda dapat menetapkan `multiplier` di atas 1, hingga 10, untuk mengukur lebih dari yang dikenakan penyedia, misalnya tarif chargeback internal. Contoh ini mengukur setiap permintaan pada 120% dari harga:765Dengan v2.1.271 atau yang lebih baru di server gateway, Anda dapat menyetel `multiplier` di atas 1, hingga 10, untuk mengukur lebih dari yang dikenakan penyedia, misalnya tarif chargeback internal. Contoh ini mengukur setiap permintaan pada 120% dari harga:
766 766
767```yaml theme={null}767```yaml theme={null}
768pricing:768pricing:
769 multiplier: 1.2769 multiplier: 1.2
770```770```
771 771
772Dengan blok [`admin:`](#admin), markup juga berlaku untuk batas pengeluaran. Meter menghitung 120% dari harga, sehingga pengembang mencapai batas mereka lebih cepat. Gateway mencatat peringatan saat boot yang mengatakan demikian.772Dengan blok [`admin:`](#admin), markup juga berlaku untuk batas pengeluaran. Meter menghitung 120% dari harga, sehingga developer mencapai batasnya lebih cepat. Gateway mencatat peringatan saat boot yang menyatakan hal tersebut.
773 773
774Pengali tidak mengubah apa yang dikenakan penyedia upstream untuk permintaan.774Multiplier tidak mengubah apa yang dikenakan penyedia upstream untuk permintaan tersebut.
775 775
776Jika gateway juga [mengirim tarif ke klien yang masuk](#send-the-rates-to-signed-in-clients), pengembang memerlukan Claude Code v2.1.271 atau lebih baru untuk melihat markup. Klien sebelumnya mengabaikan `multiplier` di atas 1 dan menunjukkan biaya tanpanya.776Jika gateway juga [mengirim tarif ke klien yang sudah masuk](#send-the-rates-to-signed-in-clients), developer memerlukan Claude Code v2.1.271 atau yang lebih baru untuk melihat markup. Klien sebelumnya mengabaikan `multiplier` di atas 1 dan menampilkan biaya tanpanya.
777 777
778Server gateway sebelumnya dari v2.1.271 menolak untuk memulai jika Anda menetapkan `multiplier` di atas 1.778Server gateway yang lebih lama dari v2.1.271 menolak untuk mulai jika Anda menyetel `multiplier` di atas 1.
779 779
780#### Kirim tarif ke klien yang masuk780#### Mengirim tarif ke klien yang sudah masuk
781 781
782Dengan v2.1.268 atau lebih baru di server gateway, gateway juga menempatkan tarif dari `pricing` ke dalam kebijakan [`managed`](#managed) yang disajikannya, sebagai pengaturan terkelola [`modelPricing`](https://code.claude.com/docs/id/settings-reference#modelpricing). Pengembang yang cocok dengan kebijakan kemudian melihat tarif `pricing` untuk upstream pertama yang melayani setiap ID model di `/usage`, baris status, dan OpenTelemetry. Pengembang yang tidak cocok dengan kebijakan apa pun tidak menerima pengaturan terkelola, sehingga angka mereka tetap pada harga daftar. Klien menerapkan pengaturan di Claude Code v2.1.242 atau lebih baru.782Dengan v2.1.268 atau yang lebih baru di server gateway, gateway juga memasukkan tarif dari `pricing` ke dalam kebijakan [`managed`](#managed) yang dilayaninya, sebagai pengaturan terkelola [`modelPricing`](https://code.claude.com/docs/id/settings-reference#modelpricing). Developer yang cocok dengan suatu kebijakan kemudian melihat tarif `pricing` untuk upstream pertama yang melayani setiap ID model di `/usage`, baris status, dan OpenTelemetry. Developer yang tidak cocok dengan kebijakan apa pun tidak menerima pengaturan terkelola, sehingga angka mereka tetap pada harga daftar. Klien menerapkan pengaturan ini di Claude Code v2.1.242 atau yang lebih baru.
783 783
784* Apa yang ditambahkan gateway: kecuali blok `cli` kebijakan sudah menetapkan `modelPricing`, gateway menambahkan `multiplier` dan, untuk setiap ID model yang dapat diminta klien, baris override dari upstream pertama yang melayani ID itu. Tarif yang hanya upstream failover yang mengenakan tetap di gateway.784* Apa yang ditambahkan gateway: kecuali blok `cli` suatu kebijakan sudah menyetel `modelPricing`, gateway menambahkan `multiplier` dan, untuk setiap ID model yang dapat diminta klien, baris override dari upstream pertama yang melayani ID tersebut. Tarif yang hanya dikenakan oleh upstream failover tetap di gateway.
785* Opt satu kebijakan keluar: atur `modelPricing` ke `{}` dalam blok `cli` kebijakan itu, dan pengembangnya tetap pada harga daftar.785* Mengecualikan satu kebijakan: setel `modelPricing` ke `{}` di blok `cli` kebijakan tersebut, dan developer-nya tetap pada harga daftar.
786* Pertahankan tarif kebijakan sendiri: kebijakan yang blok `cli` menetapkan `modelPricing` dengan `multiplier` atau `overrides` sendiri menyimpan `modelPricing` itu utuh, dan gateway tidak menambahkan tarif sendiri ke dalamnya.786* Mempertahankan tarif milik kebijakan: kebijakan yang blok `cli`-nya menyetel `modelPricing` dengan `multiplier` atau `overrides` sendiri mempertahankan `modelPricing` tersebut secara utuh, dan gateway tidak menambahkan tarifnya sendiri ke dalamnya.
787 787
788### `models`788### `models`
789 789
790Blok `models` adalah daftar model yang dikurasi admin opsional, disajikan di `/v1/models` dan digunakan untuk menerjemahkan ID model per upstream. Diperlukan untuk region Amazon Bedrock non-AS, ARN throughput-provisioned Amazon Bedrock, dan nama deployment Microsoft Foundry.790Blok `models` adalah daftar model opsional yang dikurasi admin, dilayani di `/v1/models` dan digunakan untuk menerjemahkan ID model per upstream. Blok ini wajib untuk region Amazon Bedrock di luar AS, ARN provisioned-throughput Amazon Bedrock, dan nama deployment Microsoft Foundry.
791 791
792```yaml theme={null}792```yaml theme={null}
793auto_include_builtin_models: true # false: expose only the list below793auto_include_builtin_models: true # false: expose only the list below
801 foundry: your-opus-deployment-name801 foundry: your-opus-deployment-name
802```802```
803 803
804Setiap kunci di bawah `upstream_model` harus cocok dengan `name` dari upstream yang dikonfigurasi, yang default ke nama penyedia. Kunci yang tidak cocok dengan upstream apa pun gagal boot, jadi abaikan baris untuk penyedia yang tidak Anda gunakan.804Setiap kunci di bawah `upstream_model` harus cocok dengan `name` dari upstream yang dikonfigurasi, yang secara default adalah nama penyedia. Kunci yang tidak cocok dengan upstream mana pun menggagalkan boot, jadi hapus baris untuk penyedia yang tidak Anda gunakan.
805 805
806### `managed`806### `managed`
807 807
808Blok `managed` mendefinisikan kebijakan akses berbasis peran yang dikunci pada grup IdP atau domain email. Kebijakan dievaluasi secara berurutan; kecocokan pertama dipilih, kemudian digabungkan ke basis catch-all `match: {}`. Mereka disajikan per-pengguna di `GET /managed/settings` dengan caching ETag/304.808Blok `managed` mendefinisikan kebijakan akses berbasis peran yang didasarkan pada grup IdP atau domain email. Kebijakan dievaluasi secara berurutan; kecocokan pertama dipilih, lalu digabungkan ke dasar catch-all `match: {}`. Kebijakan dilayani per pengguna di `GET /managed/settings` dengan caching ETag/304.
809 809
810```yaml theme={null}810```yaml theme={null}
811managed:811managed:
824 enforceAvailableModels: true824 enforceAvailableModels: true
825```825```
826 826
827Catch-all `match: {}`, secara konvensional terdaftar terakhir, diperlakukan sebagai lapisan dasar. Setiap kebijakan lain mewarisi kunci apa pun yang tidak ditetapkannya dari catch-all, sehingga entri per-peran hanya perlu mencantumkan apa yang berbeda dari default org. Aturan penggabungan tergantung pada jenis kunci:827Catch-all `match: {}`, yang secara konvensi dicantumkan terakhir, diperlakukan sebagai lapisan dasar. Setiap kebijakan lain mewarisi kunci apa pun yang tidak disetelnya dari catch-all, sehingga entri per peran hanya perlu mencantumkan apa yang berbeda dari default organisasi. Aturan penggabungan bergantung pada jenis kunci:
828 828
829* **Allow-lists**: `availableModels` dan `permissions.allow`. Daftar kebijakan spesifik sepenuhnya menggantikan dasar.829* **Allow-list**: `availableModels` dan `permissions.allow`. Daftar kebijakan spesifik sepenuhnya menggantikan daftar dasar.
830* **Deny-list dan array hook**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces`, `deniedModels`, dan setiap array jenis event `hooks`. Ini mengambil gabungan (union) dari basis dan kebijakan, sehingga deny atau hook audit untuk seluruh organisasi tidak dapat secara tidak sengaja terhapus oleh override per peran.830* **Deny-list dan array hook**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces`, `deniedModels`, dan setiap array tipe event `hooks`. Kunci ini mengambil gabungan (union) dari dasar dan kebijakan, sehingga deny atau hook audit di seluruh organisasi tidak dapat terhapus secara tidak sengaja oleh override per peran.
831* **Record-typed keys**: `env`, `modelOverrides`, dan `skillOverrides`. Ini shallow-merge, jadi blok `env` per-peran menimpa kunci yang ditetapkannya dan mewarisi sisanya dari dasar.831* **Kunci bertipe record**: `env`, `modelOverrides`, dan `skillOverrides`. Kunci ini digabungkan secara dangkal (shallow-merge), sehingga blok `env` per peran menimpa kunci yang disetelnya dan mewarisi sisanya dari dasar.
832 832
833`availableModels` juga diterapkan server-side di `/v1/messages`, jadi model yang ditolak mengembalikan `400` terlepas dari apa yang dikirim klien. Daftar kosong menolak setiap model. Pemeriksaan ini juga mencakup model tempat sesi dimulai sebelum pengembang memilih model, jadi [mulai sesi pada model yang diizinkan kebijakan](#start-sessions-on-a-model-the-policy-allows).833`availableModels` juga ditegakkan di sisi server pada `/v1/messages`, sehingga model yang ditolak mengembalikan `400` terlepas dari apa yang dikirim klien. Daftar kosong menolak setiap model. Pemeriksaan ini juga mencakup model yang digunakan sesi saat dimulai sebelum developer memilih model, jadi [mulai sesi pada model yang diizinkan kebijakan](#start-sessions-on-a-model-the-policy-allows).
834 834
835Gateway memvalidasi nilai `model` itu sendiri sebelum meneruskan permintaan, sehingga nilai yang salah format tidak pernah mencapai upstream. Ini menolak permintaan dengan `400` dalam dua kasus:835Gateway memvalidasi nilai `model` sendiri sebelum meneruskan permintaan, sehingga nilai yang salah format tidak pernah mencapai upstream. Gateway menolak permintaan dengan `400` dalam dua kasus:
836 836
837* Ketika nilai hilang atau kosong, gateway menolak permintaan dengan pesan `model is required`. Pemeriksaan itu memerlukan gateway yang menjalankan Claude Code v2.1.228 atau lebih baru.837* Jika nilainya tidak ada atau kosong, gateway menolak permintaan dengan pesan `model is required`. Pemeriksaan itu memerlukan gateway yang menjalankan Claude Code v2.1.228 atau yang lebih baru.
838* Ketika nilai ada tetapi bukan string, gateway menolak permintaan dengan pesan `model must be a string`. Memerlukan gateway yang menjalankan Claude Code v2.1.221 atau lebih baru.838* Jika nilainya ada tetapi bukan string, gateway menolak permintaan dengan pesan `model must be a string`. Memerlukan gateway yang menjalankan Claude Code v2.1.221 atau yang lebih baru.
839 839
840| Matcher | Perilaku |840| Matcher | Perilaku |
841| - | - |841| - | - |
842| `match: {}` | Cocok dengan setiap pengguna yang diautentikasi. Mulai dengan salah satu dari ini dan tambahkan kebijakan yang dibatasi grup di atasnya nanti. |842| `match: {}` | Cocok dengan setiap pengguna yang terautentikasi. Mulailah dengan salah satu dari ini dan tambahkan kebijakan berlingkup grup di atasnya nanti. |
843| `match: { groups: [a, b] }` | Cocok jika klaim `groups` JWT berisi salah satu grup yang terdaftar. Peka huruf besar-kecil: grup harus cocok dengan casing yang tepat dari IdP. |843| `match: { groups: [a, b] }` | Cocok jika klaim `groups` JWT berisi salah satu grup yang tercantum. Peka huruf besar-kecil: grup harus cocok dengan penulisan huruf persis di IdP. |
844| `match: { email_domain: example.com }` | Cocok dengan bagian setelah `@` terakhir dalam klaim `email` JWT, tidak peka huruf besar-kecil. Menerima satu domain per kebijakan. |844| `match: { email_domain: example.com }` | Mencocokkan bagian setelah `@` terakhir dalam klaim `email` JWT, tanpa membedakan huruf besar-kecil. Menerima satu domain per kebijakan. |
845| `match: { groups: [a], email_domain: example.com }` | Kedua kondisi harus cocok |845| `match: { groups: [a], email_domain: example.com }` | Kedua kondisi harus cocok |
846 846
847Pengguna yang diautentikasi yang tidak cocok dengan kebijakan apa pun mendapatkan default gateway, yang berarti setiap model dalam katalog dan tidak ada pengaturan terkelola. Tambahkan catch-all `match: {}` terakhir jika Anda menginginkan kebijakan default yang dijamin.847Pengguna terautentikasi yang tidak cocok dengan kebijakan apa pun mendapatkan default gateway, yang berarti setiap model dalam katalog dan tanpa pengaturan terkelola. Tambahkan catch-all `match: {}` di akhir jika Anda menginginkan kebijakan default yang terjamin.
848 848
849> [!NOTE]849> [!NOTE]
850>850>
851> Gateway tidak menyimpan direktori pengguna sendiri. Ini mengotorisasi setiap permintaan dari token IdP pengguna, membaca keanggotaan grup dari klaim `groups` token dan mengevaluasi kebijakan terhadapnya. Tidak ada roster untuk menghitung dan tidak ada akun untuk dibuat sebelumnya, dan oleh karena itu tidak ada endpoint SCIM, karena tidak ada yang dapat disinkronkan SCIM ke dalamnya.851> Gateway tidak menyimpan direktori pengguna sendiri. Gateway mengotorisasi setiap permintaan dari token IdP pengguna, membaca keanggotaan grup dari klaim `groups` token dan mengevaluasi kebijakan terhadapnya. Tidak ada daftar pengguna untuk dienumerasi dan tidak ada akun untuk dibuat sebelumnya, dan karena itu tidak ada endpoint SCIM, karena tidak ada yang perlu disinkronkan oleh SCIM.
852>852>
853> Jalankan manajemen siklus hidup pengguna dan grup di sumber kebenaran, yang merupakan penyediaan SCIM asli IdP Anda atau platform tata kelola identitas khusus. Keanggotaan dan deprovisioning yang diatur di sana mengalir ke gateway secara otomatis melalui token. Jika Anda menginginkan penyediaan SCIM dari akun Claude itu sendiri, itu adalah kemampuan [Claude for Enterprise](https://code.claude.com/docs/id/admin-setup.md).853> Jalankan manajemen siklus hidup pengguna dan grup di sumber kebenaran, yaitu provisioning SCIM bawaan IdP Anda atau platform tata kelola identitas khusus. Keanggotaan dan deprovisioning yang diatur di sana mengalir ke gateway secara otomatis melalui token. Jika Anda menginginkan provisioning SCIM untuk akun Claude itu sendiri, itu adalah kemampuan [Claude for Enterprise](https://code.claude.com/docs/id/admin-setup.md).
854>854>
855> Dua jam propagasi berlaku:855> Ada dua waktu propagasi yang berlaku:
856>856>
857> * **Konten kebijakan**: mengedit kebijakan dan men-deploy ulang mencapai klien Claude Code yang terhubung pada polling pengaturan terkelola berikutnya, dalam satu jam, kecuali [perubahan yang hanya berlaku pada peluncuran berikutnya](https://code.claude.com/docs/id/server-managed-settings.md#fetch-and-caching-behavior)857> * **Isi kebijakan**: mengedit kebijakan dan men-deploy ulang menjangkau klien Claude Code yang terhubung pada polling pengaturan terkelola berikutnya, dalam satu jam, kecuali [perubahan yang hanya berlaku pada peluncuran berikutnya](https://code.claude.com/docs/id/server-managed-settings.md#fetch-and-caching-behavior)
858> * **Keanggotaan grup**: mengubah keanggotaan grup pengguna mengubah kebijakan mana yang cocok dengan mereka. Ini berlaku pada pembaruan sesi berikutnya, yang berarti penyegaran senyap berikutnya, dibatasi oleh `session.ttl_hours`.858> * **Keanggotaan grup**: mengubah keanggotaan grup pengguna mengubah kebijakan mana yang cocok dengannya. Ini berlaku pada penerbitan ulang sesi berikutnya, yaitu refresh senyap berikutnya, yang dibatasi oleh `session.ttl_hours`.
859>859>
860> Claude Desktop mengikuti [jadwalnya sendiri](#when-a-policy-change-reaches-claude-desktop).860> Claude Desktop mengikuti [jadwalnya sendiri](#when-a-policy-change-reaches-claude-desktop).
861 861
862#### Mulai sesi pada model yang diizinkan kebijakan862#### Memulai sesi pada model yang diizinkan kebijakan
863 863
864Jika `availableModels` tidak mencantumkan model default Claude Code, sesi mendapatkan respons `400` hingga pengembang memilih model yang terdaftar, misalnya dengan `/model`. Dalam sesi gateway, default-nya adalah model Opus yang dituju oleh alias `opus`, dan `availableModels` saja tidak mengubahnya.864Jika `availableModels` tidak menyertakan model default Claude Code, sesi mendapatkan respons `400` hingga developer memilih model yang tercantum, misalnya dengan `/model`. Dalam sesi gateway, default-nya adalah model Opus yang dituju alias `opus`, dan `availableModels` saja tidak mengubahnya.
865 865
866Untuk memperbaikinya, atur [`enforceAvailableModels: true`](https://code.claude.com/docs/id/model-config#enforce-the-allowlist-for-the-default-model) dalam blok `cli` yang sama, lalu periksa jenis entri apa yang ada dalam daftar:866Untuk memperbaikinya, setel [`enforceAvailableModels: true`](https://code.claude.com/docs/id/model-config#enforce-the-allowlist-for-the-default-model) di blok `cli` yang sama, lalu periksa jenis entri yang ada dalam daftar:
867 867
868* **Alias seperti `sonnet`, atau ID bawaan seperti `claude-sonnet-4-6`**: sesi dimulai pada salah satu model tersebut, dan opsi Default di `/model` mengarah ke model itu868* **Alias seperti `sonnet`, atau ID bawaan seperti `claude-sonnet-4-6`**: sesi dimulai pada salah satu model tersebut, dan opsi Default di `/model` mengarah ke model itu
869* **Tidak ada alias atau ID bawaan dalam daftar**: sesi masih dapat dimulai pada default bawaan, jadi atur juga [`model`](https://code.claude.com/docs/id/model-config#control-the-model-users-run-on) ke salah satu ID yang terdaftar dalam blok `cli` kebijakan itu869* **Tidak ada alias atau ID bawaan dalam daftar**: sesi dapat tetap dimulai pada default bawaan, jadi setel juga [`model`](https://code.claude.com/docs/id/model-config#control-the-model-users-run-on) ke salah satu ID yang tercantum di blok `cli` kebijakan tersebut
870 870
871Kebijakan ini mencantumkan satu ID kustom yang didefinisikan oleh [`models`](#models), dan memulai sesi pada ID tersebut:871Kebijakan ini mencantumkan satu ID kustom yang didefinisikan [`models`](#models), dan memulai sesi pada ID tersebut:
872 872
873```yaml theme={null}873```yaml theme={null}
874managed:874managed:
882 882
883#### Nilai matcher yang menghentikan gateway saat boot883#### Nilai matcher yang menghentikan gateway saat boot
884 884
885Saat boot, gateway memeriksa blok `match` dari setiap kebijakan dan daftar [`admin_groups`](#admin). Salah satu dari nilai ini menghentikan gateway dengan kesalahan yang menamai bidang:885Saat boot, gateway memeriksa blok `match` setiap kebijakan dan daftar [`admin_groups`](#admin). Salah satu nilai berikut menghentikan gateway dengan error yang menyebutkan bidangnya:
886 886
887* Daftar `groups` kosong887* Daftar `groups` yang kosong
888* Entri kosong dalam `groups` atau dalam `admin_groups`888* Entri kosong di `groups` atau di `admin_groups`
889* `email_domain` kosong889* `email_domain` yang kosong
890* `email_domain` yang berisi `@`, whitespace, atau koma. Gateway memangkas nilai dan menghapus satu `@` terkemuka sebelum pemeriksaan ini. Tulis satu domain telanjang, seperti `example.com`.890* `email_domain` yang berisi `@`, spasi, atau koma. Gateway memangkas nilai tersebut dan menghapus satu `@` di awal sebelum pemeriksaan ini. Tulis satu domain polos, seperti `example.com`.
891 891
892Sebelum v2.1.232, gateway dimulai dengan nilai-nilai ini. Setiap nilai memiliki efek ini:892Sebelum v2.1.232, gateway tetap mulai dengan nilai-nilai ini. Setiap nilai memiliki efek berikut:
893 893
894* `email_domain` kosong: gateway melewati pemeriksaan domain, jadi kebijakan dengan `email_domain` kosong dan tidak ada daftar `groups` cocok dengan setiap pengguna yang diautentikasi894* `email_domain` kosong: gateway melewati pemeriksaan domain, sehingga kebijakan dengan `email_domain` kosong dan tanpa daftar `groups` cocok dengan setiap pengguna yang terautentikasi
895* Daftar `groups` kosong: kebijakan tidak cocok dengan siapa pun895* Daftar `groups` kosong: kebijakan tidak cocok dengan siapa pun
896* `email_domain` berisi `@`, whitespace, atau koma: kebijakan tidak cocok dengan siapa pun896* `email_domain` yang berisi `@`, spasi, atau koma: kebijakan tidak cocok dengan siapa pun
897* Entri kosong dalam `groups` atau dalam `admin_groups`: entri cocok dengan pengguna hanya ketika klaim IdP `groups` pengguna itu juga berisi entri kosong. Dalam `admin_groups`, kecocokan itu memberikan akses admin. Jika daftar `admin_groups` Anda tidak pernah berisi entri kosong, tidak ada yang mendapatkan akses admin dengan cara ini.897* Entri kosong di `groups` atau di `admin_groups`: entri tersebut hanya cocok dengan pengguna jika klaim `groups` IdP pengguna itu juga berisi entri kosong. Di `admin_groups`, kecocokan itu memberikan akses admin. Jika daftar `admin_groups` Anda tidak pernah berisi entri kosong, tidak ada yang memperoleh akses admin dengan cara ini.
898 898
899#### Memilih `cli` atau `code`899#### Memilih `cli` atau `code`
900 900
901> [!WARNING]901> [!WARNING]
902>902>
903> Ketika suatu kebijakan menggunakan kunci `code`, masing-masing hal berikut menghentikan gateway untuk mulai:903> Jika kebijakan menggunakan kunci `code`, masing-masing hal berikut mencegah gateway untuk mulai:
904>904>
905> * **Versi gateway**: `code` memerlukan Claude Code v2.1.296 atau yang lebih baru di server gateway. Gateway versi lebih lama menolak untuk mulai ketika menemukan kunci tersebut. Tingkatkan setiap replika sebelum Anda menambahkan kunci, dan ubah `code` kembali ke `cli` sebelum Anda melakukan rollback ke versi sebelumnya.905> * **Versi gateway**: `code` memerlukan Claude Code v2.1.296 atau yang lebih baru di server gateway. Gateway yang lebih lama menolak untuk mulai saat menemukan kunci tersebut. Tingkatkan setiap replika sebelum Anda menambahkan kunci, dan ubah `code` kembali ke `cli` sebelum Anda melakukan rollback ke versi sebelumnya.
906> * **Kunci campuran**: file yang memiliki `code` dan `cli` sekaligus, atau ejaan lamanya `settings`, menghentikan gateway saat boot. Letakkan setiap blok di bawah satu kunci, dalam satu kali edit.906> * **Kunci campuran**: file yang memiliki `code` dan `cli`, atau ejaan sebelumnya `settings`, menghentikan gateway saat boot. Letakkan setiap blok di bawah satu kunci, dalam satu pengeditan.
907 907
908Pengaturan Claude Code suatu kebijakan, seperti aturan yang menolak pembacaan file `.env`, diletakkan dalam blok di bawah kunci `cli` atau `code`. `code` adalah kunci yang direkomendasikan, dan `cli` adalah kunci lama. Kedua kunci menerima isi yang sama. Kunci tersebut menentukan di mana pengaturan ditegakkan:908Pengaturan Claude Code suatu kebijakan, seperti aturan yang menolak membaca file `.env`, ditempatkan dalam blok di bawah kunci `cli` atau `code`. `code` adalah kunci yang direkomendasikan, dan `cli` adalah kunci lama. Kedua kunci menerima isi yang sama. Kunci menentukan di mana pengaturan ditegakkan:
909 909
910* **`cli`**: terminal, ekstensi VS Code dan JetBrains, serta Agent SDK. Di bawah `cli`, tab Code di Claude Desktop mendapatkan [pengaturan turunan](#claude-desktop-overlay), sehingga aturan berlingkup seperti `Read(./.env)` tidak menghentikan pengguna di sana.910* **`cli`**: terminal, ekstensi VS Code dan JetBrains, dan Agent SDK. Di bawah `cli`, tab Code di Claude Desktop mendapatkan [pengaturan turunan](#claude-desktop-overlay), sehingga aturan berlingkup seperti `Read(./.env)` tidak menghentikan pengguna di sana.
911* **`code`**: tempat yang sama, dan tab Code di Claude Desktop juga dapat dicakup.911* **`code`**: tempat yang sama, dan tab Code di Claude Desktop juga dapat dicakup.
912 912
913File yang menggunakan `cli` tetap berfungsi seperti sebelumnya, dan gateway yang menemukan `cli` dalam kebijakan dengan kunci [`desktop`](#claude-desktop-overlay) memberi peringatan saat boot dan tetap dimulai. Beralihlah ke `code` agar pengaturan juga dapat mencakup tab Code.913File yang menggunakan `cli` berfungsi seperti sebelumnya, dan gateway yang menemukan `cli` dalam kebijakan dengan kunci [`desktop`](#claude-desktop-overlay) memberi peringatan saat boot dan tetap mulai. Beralihlah ke `code` agar pengaturan juga dapat mencakup tab Code.
914 914
915Sebelum beralih, baca [Menerapkan pengaturan `code` di tab Code](#apply-code-settings-in-the-code-tab). Kebijakan memerlukan kunci `desktop` dan mesin pengguna memerlukan penyiapan sebelum pengaturan berlaku di sana, dan pencarian web dimatikan di Claude Desktop.915Sebelum beralih, baca [Menerapkan pengaturan `code` di tab Code](#apply-code-settings-in-the-code-tab). Kebijakan memerlukan kunci `desktop` dan mesin pengguna memerlukan penyiapan sebelum pengaturan berlaku di sana, dan pencarian web dimatikan di Claude Desktop.
916 916
917Kebijakan ini menempatkan aturan penolakan di bawah `code`, dengan kunci `desktop` kosong:917Kebijakan ini menempatkan aturan deny di bawah `code`, dengan kunci `desktop` kosong:
918 918
919```yaml theme={null}919```yaml theme={null}
920managed:920managed:
925 desktop: {}925 desktop: {}
926```926```
927 927
928Saat Anda beralih, hapus baris `serve_to_desktop` apa pun dalam edit yang sama yang mengganti nama blok. Ketika suatu instruksi menyebut blok `cli`, gunakan blok `code` Anda.928Saat beralih, hapus baris `serve_to_desktop` apa pun dalam pengeditan yang sama yang mengganti nama blok. Di mana suatu instruksi menyebut blok `cli`, gunakan blok `code` Anda.
929 929
930#### Apa yang masuk dalam `cli`930`serve_to_desktop: true` adalah cara lama untuk menawarkan pengaturan `cli` suatu kebijakan ke tab Code. Ini tidak berpengaruh ketika Claude Desktop terhubung melalui [`bootstrapUrl`](#claude-desktop-overlay). Selama kebijakan Anda menggunakan `cli`, peringatan boot yang menyebut kunci ini berarti pengaturan tersebut tidak mencapai tab Code:
931 931
932Setiap nilai `code` atau `cli` adalah dokumen `managed-settings.json` Claude Code yang lengkap, dengan skema yang sama yang akan Anda deploy melalui MDM atau `/etc/claude-code/managed-settings.json`, yang di sini dinyatakan sebagai YAML. CLI menerapkan dokumen yang dikirim pada tingkat terkelola, di atas pengaturan pengguna dan proyek, sebagai pengganti pengaturan terkelola server. Karena itu, CLI mengabaikan pengaturan yang [dibatasi untuk sumber kebijakan tingkat OS](https://code.claude.com/docs/id/server-managed-settings.md#current-limitations), seperti `policyHelper` dan `wslInheritsWindowsSettings`.932* **Untuk mencakup tab Code**: beralih ke `code`, setelah mesin pengguna memenuhi kondisi di [Menerapkan pengaturan `code` di tab Code](#apply-code-settings-in-the-code-tab)
933* **Untuk tetap menggunakan `cli`**: tetapkan `serve_to_desktop: false` di samping `cli` dalam suatu kebijakan untuk menyembunyikan peringatan
933 934
934Gateway memvalidasi setiap dokumen terhadap skema pengaturan CLI saat boot, jadi kunci tingkat atas yang tidak dikenali gagal boot dengan kesalahan yang menamai setiap kunci yang menyinggung. Bagian skema yang sengaja terbuka masih menerima nilai arbitrer, karena klien yang lebih baru mungkin mengenali entri yang skema gateway tidak. Kunci terbuka ini termasuk `env`, `pluginConfigs`, dan kunci bersarang di bawah `permissions`.935#### Apa yang dimasukkan ke `cli`
935 936
936Karena validasi menggunakan skema yang disertakan dengan versi gateway yang diinstal, menempatkan kunci pengaturan tingkat atas yang diperkenalkan oleh rilis Claude Code yang lebih baru ke dalam konfigurasi terkelola memerlukan upgrade gateway terlebih dahulu. Smoke-test kebijakan baru pada satu klien sebelum menggulirnya.937Setiap nilai `code` atau `cli` adalah dokumen `managed-settings.json` Claude Code yang lengkap, skema yang sama yang akan Anda deploy melalui MDM atau `/etc/claude-code/managed-settings.json`, yang dinyatakan di sini sebagai YAML. CLI menerapkan dokumen yang dikirim pada tingkat terkelola, di atas pengaturan pengguna dan proyek, sebagai pengganti pengaturan terkelola server. Karena itu CLI mengabaikan pengaturan yang [dibatasi untuk sumber kebijakan tingkat OS](https://code.claude.com/docs/id/server-managed-settings.md#current-limitations), seperti `policyHelper` dan `wslInheritsWindowsSettings`.
937 938
938Referensi kunci lengkap ada di [Pengaturan Claude Code](https://code.claude.com/docs/id/settings-reference.md#all-settings). Kunci yang paling sering digunakan operator:939Gateway memvalidasi setiap dokumen terhadap skema pengaturan CLI saat boot, sehingga kunci tingkat atas yang tidak dikenali menggagalkan boot dengan error yang menyebutkan setiap kunci yang bermasalah. Bagian skema yang sengaja dibuat terbuka tetap menerima nilai arbitrer, karena klien yang lebih baru mungkin mengenali entri yang tidak dikenali skema gateway. Kunci terbuka ini mencakup `env`, `pluginConfigs`, dan kunci yang bersarang di bawah `permissions`.
940
941Karena validasi menggunakan skema yang dibundel dengan versi gateway yang terpasang, memasukkan kunci pengaturan tingkat atas yang diperkenalkan oleh rilis Claude Code yang lebih baru ke dalam konfigurasi terkelola memerlukan peningkatan gateway terlebih dahulu. Lakukan smoke test pada kebijakan baru di satu klien sebelum meluncurkannya.
942
943Referensi kunci lengkap ada di [Pengaturan Claude Code](https://code.claude.com/docs/id/settings-reference.md#all-settings). Kunci yang paling sering digunakan operator terlebih dahulu:
939 944
940```yaml theme={null}945```yaml theme={null}
941managed:946managed:
970 - { type: command, command: /usr/local/bin/audit-edit.sh }975 - { type: command, command: /usr/local/bin/audit-edit.sh }
971```976```
972 977
973| Kunci | Diterapkan oleh | Efek |978| Kunci | Ditegakkan oleh | Efek |
974| - | - | - |979| - | - | - |
975| `availableModels` | Gateway + CLI | Allowlist model. Juga diperiksa di `/v1/messages`, jadi klien yang dipatch tidak dapat membypassnya. |980| `availableModels` | Gateway + CLI | Allowlist model. Juga diperiksa di `/v1/messages`, sehingga klien yang dimodifikasi tidak dapat melewatinya. |
976| [`deniedModels`](https://code.claude.com/docs/id/settings-reference#deniedmodels), [`availableModelsMatch`](https://code.claude.com/docs/id/settings-reference#availablemodelsmatch) | Gateway + CLI | [Memblokir model atau versi tertentu](https://code.claude.com/docs/id/model-config.md#block-specific-models-or-versions) yang sebaliknya diizinkan oleh `availableModels`. Model yang diblokir ditolak dengan `400` di `/v1/messages` dan tidak disertakan di `/v1/models`. Pemeriksaan milik gateway memerlukan Claude Code v2.1.299 atau lebih baru di server gateway. Pemeriksaan CLI memerlukan v2.1.283 atau lebih baru di klien, dan klien sebelumnya mengabaikan kedua kunci. |981| [`deniedModels`](https://code.claude.com/docs/id/settings-reference#deniedmodels), [`availableModelsMatch`](https://code.claude.com/docs/id/settings-reference#availablemodelsmatch) | Gateway + CLI | [Memblokir model atau versi tertentu](https://code.claude.com/docs/id/model-config.md#block-specific-models-or-versions) yang sebaliknya akan diizinkan oleh `availableModels`. Model yang diblokir ditolak dengan `400` di `/v1/messages` dan tidak disertakan di `/v1/models`. Pemeriksaan gateway sendiri memerlukan Claude Code v2.1.299 atau yang lebih baru di server gateway. Pemeriksaan CLI memerlukan v2.1.283 atau yang lebih baru di klien, dan klien sebelumnya mengabaikan kedua kunci. |
977| `permissions.allow` / `.deny` | CLI | Aturan tool dan perintah. Lihat [Permissions](https://code.claude.com/docs/id/permissions.md). |982| `permissions.allow` / `.deny` | CLI | Aturan tool dan perintah. Lihat [Izin](https://code.claude.com/docs/id/permissions.md) dan [apa yang tidak dicocokkan oleh aturan Bash](https://code.claude.com/docs/id/permissions.md#bash-rule-limits). |
978| `permissions.disableBypassPermissionsMode` | CLI | Atur ke `disable` untuk memblokir [`bypassPermissions`](https://code.claude.com/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode), mode yang melewati permintaan izin, dan flag `--dangerously-skip-permissions` |983| `permissions.disableBypassPermissionsMode` | CLI | Setel ke `disable` untuk memblokir [`bypassPermissions`](https://code.claude.com/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode), mode yang melewati permintaan izin, dan flag `--dangerously-skip-permissions` |
979| `allowManagedPermissionRulesOnly` | CLI | Ketika `true`, pengaturan terkelola menjadi satu-satunya sumber pengaturan aturan izin. Entri [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/id/settings-reference#allowmanagedpermissionrulesonly) mencantumkan setiap sumber yang Claude Code kemudian abaikan. |984| `allowManagedPermissionRulesOnly` | CLI | Jika `true`, pengaturan terkelola menjadi satu-satunya sumber pengaturan untuk aturan izin. Entri [`allowManagedPermissionRulesOnly`](https://code.claude.com/docs/id/settings-reference#allowmanagedpermissionrulesonly) mencantumkan setiap sumber yang kemudian diabaikan Claude Code. |
980| `env` | CLI | Environment variable yang digabungkan ke dalam proses CLI. Gunakan untuk telemetri, auto-update, dan override nama model. |985| `env` | CLI | Environment variable yang digabungkan ke dalam proses CLI. Gunakan untuk telemetri, pembaruan otomatis, dan override nama model. |
981| `hooks` | CLI | [Hooks](https://code.claude.com/docs/id/hooks.md) di seluruh org |986| `hooks` | CLI | [Hook](https://code.claude.com/docs/id/hooks.md) di seluruh organisasi |
982| `managedMcpServers` | CLI | Server MCP remote [disediakan untuk setiap pengembang yang cocok](https://code.claude.com/docs/id/managed-mcp.md#provide-servers-through-managed-settings) bersama server yang mereka tambahkan sendiri, `http` dan `sse` saja. Lihat [Server MCP dalam kebijakan](#mcp-servers-in-a-policy). Memerlukan Claude Code v2.1.259 atau lebih baru di server gateway dan pada klien. Klien sebelumnya mengabaikan kunci. |987| `managedMcpServers` | CLI | Server MCP jarak jauh yang [disediakan untuk setiap developer yang cocok](https://code.claude.com/docs/id/managed-mcp.md#provide-servers-through-managed-settings) bersama server yang mereka tambahkan sendiri, hanya `http` dan `sse`. Lihat [Server MCP dalam kebijakan](#mcp-servers-in-a-policy). Memerlukan Claude Code v2.1.259 atau yang lebih baru di server gateway dan di klien. Klien sebelumnya mengabaikan kunci ini. |
983 988
984Karena pengaturan ini tiba melalui jaringan, CLI menunjukkan kepada setiap pengembang dialog persetujuan keamanan sebelum menerapkan pengaturan yang tercantum di bawah:989Karena pengaturan ini datang melalui jaringan, CLI menampilkan dialog persetujuan keamanan kepada setiap developer sebelum menerapkan pengaturan yang tercantum di bawah ini:
985 990
986* `hooks`991* `hooks`
987* Variabel `env` yang memerlukan persetujuan pengembang, seperti proxy dan variabel URL dasar992* variabel `env` yang memerlukan persetujuan developer, seperti variabel proxy dan base-URL
988* pengaturan eksekusi shell seperti `apiKeyHelper` dan `statusLine`993* pengaturan eksekusi shell seperti `apiKeyHelper` dan `statusLine`
989* pengaturan biner sandbox `sandbox.bwrapPath`, `sandbox.socatPath`, dan `sandbox.ripgrep`994* pengaturan biner sandbox `sandbox.bwrapPath`, `sandbox.socatPath`, dan `sandbox.ripgrep`
990* Pengaturan sandbox yang mencegat lalu lintas, menyuntikkan kredensial, atau melemahkan isolasi, seperti `sandbox.network.tlsTerminate` dan pengaturan port proxy. [Dialog persetujuan keamanan](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs) mencantumkan semuanya.995* Pengaturan sandbox yang mencegat lalu lintas, menyuntikkan kredensial, atau melemahkan isolasi, seperti `sandbox.network.tlsTerminate` dan pengaturan port proxy. [Dialog persetujuan keamanan](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs) mencantumkan semuanya.
991 996
992[Memori persetujuan](https://code.claude.com/docs/id/server-managed-settings.md#approval-memory) mencakup berapa lama persetujuan berlangsung dan kapan dialog muncul lagi.997[Memori persetujuan](https://code.claude.com/docs/id/server-managed-settings.md#approval-memory) membahas berapa lama persetujuan bertahan dan kapan dialog muncul lagi.
993 998
994Claude Code menerapkan beberapa variabel `env` yang dikirimkan tanpa menunjukkan dialog persetujuan kepada pengembang, seperti pengaturan pemilihan model dan batas numerik. Variabel yang dikirimkan lainnya dapat memerlukan persetujuan pengembang sebelum berlaku; nilai proxy, URL dasar, atau `OTEL_EXPORTER_OTLP_ENDPOINT` yang tidak kosong selalu demikian. Ketika variabel yang dikirimkan memerlukan persetujuan, dialog menamakannya.999Claude Code menerapkan beberapa variabel `env` yang dikirim tanpa menampilkan dialog persetujuan kepada developer, seperti pengaturan pemilihan model dan batas numerik. Variabel lain yang dikirim dapat memerlukan persetujuan developer sebelum berlaku; nilai proxy, base-URL, atau `OTEL_EXPORTER_OTLP_ENDPOINT` yang tidak kosong selalu memerlukannya. Jika variabel yang dikirim memerlukan persetujuan, dialog akan menyebutkannya.
995 1000
996[Environment variable dan dialog persetujuan](https://code.claude.com/docs/id/server-managed-settings.md#environment-variables-and-the-approval-dialog) memiliki detail, termasuk empat toggle privasi yang nilai yang dikirimkan memutuskan apakah mereka memerlukan persetujuan. Sebelum v2.1.218, Claude Code menerapkan lebih sedikit variabel tanpa bertanya kepada pengembang, jadi lebih banyak variabel yang dikirimkan memicu dialog.1001[Environment variable dan dialog persetujuan](https://code.claude.com/docs/id/server-managed-settings.md#environment-variables-and-the-approval-dialog) memuat detailnya, termasuk empat toggle privasi yang nilai kirimannya menentukan apakah toggle tersebut memerlukan persetujuan. Sebelum v2.1.218, Claude Code menerapkan lebih sedikit variabel tanpa bertanya kepada developer, sehingga lebih banyak variabel yang dikirim memicu dialog.
997 1002
998Konfigurasi [telemetri](#telemetry) gateway mendorong `OTEL_EXPORTER_OTLP_ENDPOINT`, jadi menetapkan `telemetry.forward_to` memicu dialog pada setiap klien interaktif. Dialog melindungi mesin pengembang dari gateway yang dikompromikan atau bermusuhan, bukan organisasi dari pengembang.1003Konfigurasi [telemetri](#telemetry) gateway mengirim `OTEL_EXPORTER_OTLP_ENDPOINT`, sehingga menyetel `telemetry.forward_to` memicu dialog pada setiap klien interaktif. Dialog ini melindungi mesin developer dari gateway yang disusupi atau berniat jahat, bukan melindungi organisasi dari developer.
999 1004
1000[Eksekusi non-interaktif](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs), seperti `claude -p`, sesi Agent SDK, atau sesi di tab Code Claude Desktop, tidak dapat menampilkan dialog. Eksekusi tersebut menerapkan pengaturan yang dikirim hanya untuk eksekusi itu dan tidak mencatatnya sebagai disetujui, sehingga sesi interaktif developer berikutnya tetap menampilkan dialog.1005[Eksekusi non-interaktif](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs), seperti `claude -p`, sesi Agent SDK, atau sesi di tab Code Claude Desktop, tidak dapat menampilkan dialog. Eksekusi tersebut menerapkan pengaturan yang dikirim hanya untuk eksekusi itu dan tidak mencatatnya sebagai disetujui, sehingga sesi interaktif developer berikutnya tetap menampilkan dialog.
1001 1006
1002Jika pengembang menolak, Claude Code keluar dari sesi itu daripada menerapkan kebijakan. Ketika Anda mendorong hook baru, atau variabel env apa pun yang memicu dialog, ke kebijakan yang luas, setiap pengembang yang cocok oleh karena itu melihat dialog dalam sesi interaktif mereka. Sesi interaktif yang berjalan menunjukkannya pada polling per jam berikutnya, dan sebaliknya muncul pada startup interaktif pengembang berikutnya.1007Jika developer menolak, Claude Code keluar dari sesi tersebut alih-alih menerapkan kebijakan. Karena itu, saat Anda mengirim hook baru, atau env var apa pun yang memicu dialog, ke kebijakan yang luas, setiap developer yang cocok akan melihat dialog dalam sesi interaktif mereka. Sesi interaktif yang sedang berjalan menampilkannya pada polling per jam berikutnya, dan jika tidak, dialog muncul pada startup interaktif developer berikutnya.
1008
1009Kunci `cli` bernama `settings` pada rilis sebelumnya, dan gateway masih menerima ejaan tersebut sebagai alias. Untuk deployment baru, gunakan [`code`](#choose-cli-or-code).
1003 1010
1004Kunci `cli` bernama `settings` di rilis sebelumnya, dan gateway masih menerima ejaan tersebut sebagai alias. Untuk deployment baru, gunakan [`code`](#choose-cli-or-code).1011#### Menguji kebijakan sebelum deployment
1012
1013Untuk menguji perubahan kebijakan, mulai gateway dengan database Postgres sekali pakai. Gateway terhubung ke Postgres dan menerapkan migrasi skemanya sebelum memeriksa isi blok `cli`, `code`, dan `desktop`. Ketika tidak dapat menjangkau database, proses mulai berhenti di `could not connect to Postgres` dan tidak melaporkan apa pun tentang isinya.
1005 1014
1006#### Context window dalam sesi terminal1015#### Context window dalam sesi terminal
1007 1016
1008Sesi terminal yang masuk melalui `/login` menggunakan context window 1M untuk Opus 4.7 dan yang lebih baru, Sonnet 5 dan yang lebih baru, serta model Fable. ID model tidak memerlukan sufiks `[1m]`, dan sesi melakukan compact pada sekitar 967K token. Sebelum Claude Code v2.1.287 di mesin pengembang, Claude Code memperlakukan model Opus dan Fable sebagai memiliki window 200K kecuali ID model diakhiri dengan `[1m]`.1017Sesi terminal yang masuk melalui `/login` menggunakan context window 1M untuk Opus 4.7 dan yang lebih baru, Sonnet 5 dan yang lebih baru, serta model Fable. ID model tidak memerlukan akhiran `[1m]`, dan sesi melakukan compact pada sekitar 967K token. Sebelum Claude Code v2.1.287 di mesin developer, Claude Code memperlakukan model Opus dan Fable sebagai memiliki window 200K kecuali ID model diakhiri dengan `[1m]`.
1009 1018
1010Agar sesi terminal melakukan compact pada batas 200K sebagai gantinya, atur [window auto-compact](https://code.claude.com/docs/id/model-config.md#set-the-auto-compact-window) dalam `env` kebijakan:1019Agar sesi terminal melakukan compact pada batas 200K, setel [window auto-compact](https://code.claude.com/docs/id/model-config.md#set-the-auto-compact-window) di `env` kebijakan:
1011 1020
1012```yaml theme={null}1021```yaml theme={null}
1013managed:1022managed:
1018 CLAUDE_CODE_AUTO_COMPACT_WINDOW: "200000"1027 CLAUDE_CODE_AUTO_COMPACT_WINDOW: "200000"
1019```1028```
1020 1029
1021Claude Code menerapkan variabel ini tanpa menunjukkan dialog persetujuan kepada pengembang. Variabel ini berlaku untuk setiap model, termasuk ID model yang diakhiri `[1m]`.1030Claude Code menerapkan variabel ini tanpa menampilkan dialog persetujuan kepada developer. Variabel ini berlaku untuk setiap model, termasuk ID model yang diakhiri dengan `[1m]`.
1022 1031
1023Untuk menonaktifkan konteks 1M sebagai gantinya, atur [`CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"`](https://code.claude.com/docs/id/model-config#extended-context) dalam blok `env` yang sama. Claude Code kemudian memperlakukan setiap model sebagai memiliki window 200K. Dalam sesi interaktif, setiap pengembang menyetujui variabel ini dalam [dialog persetujuan](#what-goes-in-cli) sebelum berlaku.1032Untuk mematikan konteks 1M, setel [`CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"`](https://code.claude.com/docs/id/model-config#extended-context) di blok `env` yang sama. Claude Code kemudian memperlakukan setiap model sebagai memiliki window 200K. Dalam sesi interaktif, setiap developer menyetujui variabel ini di [dialog persetujuan](#what-goes-in-cli) sebelum variabel tersebut berlaku.
1024 1033
1025#### Prompt cache satu jam1034#### Prompt cache satu jam
1026 1035
1027Untuk meminta [TTL prompt cache](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) satu jam alih-alih lima menit default, tambahkan kunci-kunci ini ke [blok `code`, `cli`, atau `settings`](#choose-cli-or-code) yang sudah ada pada kebijakan dan restart gateway. Kunci-kunci ini memerlukan Claude Code v2.1.242 atau yang lebih baru di server gateway dan di klien.1036Untuk meminta [TTL prompt cache](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) satu jam alih-alih lima menit default, tambahkan kunci ini ke [blok `code`, `cli`, atau `settings`](#choose-cli-or-code) yang sudah ada di kebijakan, lalu mulai ulang gateway. Kunci ini memerlukan Claude Code v2.1.242 atau yang lebih baru di server gateway dan di klien.
1028 1037
1029`promptCacheTtl` mencakup percakapan utama. `subagentPromptCacheTtl` bersifat opsional dan mencakup subagent, alur kerja, dan permintaan latar belakang. Contoh ini menambahkan keduanya ke kebijakan `match: {}` dengan kunci `cli`:1038`promptCacheTtl` mencakup percakapan utama. `subagentPromptCacheTtl` bersifat opsional dan mencakup subagent, workflow, dan permintaan latar belakang. Contoh ini menambahkan keduanya ke kebijakan `match: {}` dengan kunci `cli`:
1030 1039
1031```yaml theme={null}1040```yaml theme={null}
1032managed:1041managed:
1039 1048
1040> [!WARNING]1049> [!WARNING]
1041>1050>
1042> Atur kunci ini hanya jika upstream Anda menawarkan TTL satu jam untuk setiap model yang dilayani gateway. Jika upstream menolak TTL tersebut, permintaan gagal, dan baik gateway maupun Claude Code tidak mencoba ulang dengan TTL lima menit. Untuk Amazon Bedrock, periksa [model, region, dan batas yang didukung](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models).1051> Setel kunci ini hanya jika upstream Anda menawarkan TTL satu jam untuk setiap model yang dilayani gateway. Jika upstream menolak TTL tersebut, permintaan gagal, dan baik gateway maupun Claude Code tidak mencoba ulang permintaan dengan TTL lima menit. Untuk Amazon Bedrock, periksa [model, region, dan batas yang didukung](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html#prompt-caching-models).
1043 1052
1044Untuk mengonfirmasi `promptCacheTtl`, masuk ke gateway sebagai pengguna yang cocok dengan kebijakan dan [periksa TTL mana yang digunakan penulisan cache Anda](https://code.claude.com/docs/id/prompt-caching.md#choose-the-ttl-yourself). Berikan `--model` untuk mengulangi pemeriksaan bagi setiap model yang dilayani gateway.1053Untuk mengonfirmasi `promptCacheTtl`, masuk ke gateway sebagai pengguna yang cocok dengan kebijakan dan [periksa TTL mana yang digunakan oleh penulisan cache Anda](https://code.claude.com/docs/id/prompt-caching.md#choose-the-ttl-yourself). Berikan `--model` untuk mengulangi pemeriksaan bagi setiap model yang dilayani gateway.
1045 1054
1046Penulisan cache satu jam [lebih mahal](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) daripada penulisan lima menit. Agar [batas pengeluaran](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md#how-requests-are-priced) menghitung tarif yang lebih tinggi tersebut, Anda memerlukan v2.1.286 atau yang lebih baru di server gateway.1055Penulisan cache satu jam [lebih mahal](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) daripada penulisan lima menit. Agar [batas pengeluaran](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md#how-requests-are-priced) menghitung tarif yang lebih tinggi tersebut, Anda memerlukan v2.1.286 atau yang lebih baru di server gateway.
1047 1056
1048#### Server MCP dalam kebijakan1057#### Server MCP dalam kebijakan
1049 1058
1050Untuk menyediakan server MCP ke klien Claude Code yang cocok dengan kebijakan, atur [`managedMcpServers`](https://code.claude.com/docs/id/managed-mcp#provide-servers-through-managed-settings) dalam blok `cli` kebijakan itu. Anda memerlukan Claude Code v2.1.259 atau lebih baru di server gateway dan pada klien.1059Untuk menyediakan server MCP ke klien Claude Code yang cocok dengan suatu kebijakan, setel [`managedMcpServers`](https://code.claude.com/docs/id/managed-mcp#provide-servers-through-managed-settings) di blok `cli` kebijakan tersebut. Anda memerlukan Claude Code v2.1.259 atau yang lebih baru di server gateway dan di klien.
1051 1060
1052Gateway memeriksa setiap entri saat boot dengan [aturan yang sama yang diterapkan Claude Code pada klien](https://code.claude.com/docs/id/managed-mcp.md#what-an-entry-can-contain), dan jika entri gagal pemeriksaan, gateway menolak untuk memulai dan menamai entri.1061Gateway memeriksa setiap entri saat boot dengan [aturan yang sama yang diterapkan Claude Code di klien](https://code.claude.com/docs/id/managed-mcp.md#what-an-entry-can-contain), dan jika suatu entri gagal dalam pemeriksaan, gateway menolak untuk mulai dan menyebutkan entri tersebut.
1053 1062
1054Jika Anda menulis referensi `${VAR}` dalam `gateway.yaml`, gateway menyelesaikannya dari lingkungannya saat boot melalui [ekspansi rahasia](#secret-expansion) sebelum menjalankan pemeriksaan entri, sehingga setiap klien yang cocok menerima nilai literal dan dapat membacanya. [Panduan header untuk server yang disediakan](https://code.claude.com/docs/id/managed-mcp.md#provide-servers-through-managed-settings) berlaku untuk nilai yang diperluas.1063Jika Anda menulis referensi `${VAR}` di `gateway.yaml`, gateway menyelesaikannya dari environment-nya saat boot melalui [ekspansi secret](#secret-expansion) sebelum menjalankan pemeriksaan entri, sehingga setiap klien yang cocok menerima nilai literal dan dapat membacanya. [Panduan header untuk server yang disediakan](https://code.claude.com/docs/id/managed-mcp.md#provide-servers-through-managed-settings) berlaku untuk nilai yang sudah diekspansi.
1055 1064
1056Gateway menolak ejaan `.mcp.json` `mcpServers` dalam blok `cli`, dan kesalahan bootnya menamai `managedMcpServers` sebagai kunci yang digunakan. Sebelum v2.1.259, gateway menolak definisi server MCP apa pun dalam blok `cli`.1065Gateway menolak ejaan `.mcp.json` `mcpServers` di blok `cli`, dan error boot-nya menyebut `managedMcpServers` sebagai kunci yang harus digunakan. Sebelum v2.1.259, gateway menolak definisi server MCP apa pun di blok `cli`.
1057 1066
1058#### Overlay Claude Desktop1067#### Overlay Claude Desktop
1059 1068
1060Jika organisasi Anda juga men-deploy [Claude Desktop](https://code.claude.com/docs/id/desktop.md), gateway yang sama melayani kedua klien. Arahkan `bootstrapUrl`, dalam [konfigurasi terkelola](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop, ke `<listen.public_url>/user/bootstrap`. Claude Desktop menurunkan penerbit OAuth dari URL itu, menjalankan sign-in kode perangkat yang sama terhadap gateway ini, dan mengambil konfigurasinya dari respons.1069Jika organisasi Anda juga men-deploy [Claude Desktop](https://code.claude.com/docs/id/desktop.md), gateway yang sama melayani kedua klien. Arahkan `bootstrapUrl`, di [konfigurasi terkelola](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop, ke `<listen.public_url>/user/bootstrap`. Claude Desktop menurunkan penerbit OAuth dari URL tersebut, menjalankan proses masuk device-code yang sama terhadap gateway ini, dan mengambil konfigurasinya dari respons.
1061 1070
1062> [!NOTE]1071> [!NOTE]
1063>1072>
1064> Memerlukan Claude Code v2.1.203 atau lebih baru di server gateway, dan opt-in eksplisit: `/user/bootstrap` mengembalikan 404 kecuali kebijakan yang cocok dengan pengguna membawa kunci `desktop`. `desktop: {}` kosong memilih kebijakan, dan kunci `desktop` pada lapisan dasar `match: {}` memilih setiap kebijakan yang mewarisnya. Log audit merekam setiap permintaan sebagai `desktop_bootstrap.serve` atau `desktop_bootstrap.denied`.1073> Memerlukan Claude Code v2.1.203 atau yang lebih baru di server gateway, dan opt-in eksplisit: `/user/bootstrap` mengembalikan 404 kecuali kebijakan yang cocok dengan pengguna memiliki kunci `desktop`. `desktop: {}` kosong mengikutsertakan suatu kebijakan, dan kunci `desktop` pada lapisan dasar `match: {}` mengikutsertakan setiap kebijakan yang mewarisinya. Log audit mencatat setiap permintaan sebagai `desktop_bootstrap.serve` atau `desktop_bootstrap.denied`.
1065 1074
1066Jika Anda tidak men-deploy Claude Desktop, tinggalkan `desktop` sepenuhnya dari kebijakan Anda; gateway kemudian mengembalikan 404 dari `/user/bootstrap` untuk setiap pengguna.1075Jika Anda tidak men-deploy Claude Desktop, jangan sertakan `desktop` sama sekali dalam kebijakan Anda; gateway kemudian mengembalikan 404 dari `/user/bootstrap` untuk setiap pengguna.
1067 1076
1068##### Pengaturan yang diturunkan gateway untuk Claude Desktop1077##### Pengaturan yang diturunkan gateway untuk Claude Desktop
1069 1078
1070Gateway menurunkan sebagian besar respons bootstrap dari blok `cli` atau `code` kebijakan yang cocok dan dari konfigurasi gateway tingkat atas:1079Gateway menurunkan sebagian besar respons bootstrap dari blok `cli` atau `code` kebijakan yang cocok dan dari konfigurasi gateway tingkat atas:
1071 1080
1072* Daftar model, dari `availableModels`. Daftar ini tidak menyertakan model yang diblokir kebijakan dengan [`deniedModels` atau `availableModelsMatch: exact`](#what-goes-in-cli). Filter ini memerlukan Claude Code v2.1.299 atau lebih baru di server gateway. [Konteks diperluas di Claude Desktop](#extended-context-in-claude-desktop) membahas opsi konteks 1M setiap model1081* Daftar model, dari `availableModels`. Daftar ini tidak menyertakan model yang diblokir kebijakan dengan [`deniedModels` atau `availableModelsMatch: exact`](#what-goes-in-cli). Filter ini memerlukan Claude Code v2.1.299 atau yang lebih baru di server gateway. [Konteks diperluas di Claude Desktop](#extended-context-in-claude-desktop) membahas opsi konteks 1M setiap model
1073* Tool yang dinonaktifkan, dari entri `permissions.deny` nama tool telanjang. Jika Anda menetapkan `disabledBuiltinTools` dalam blok `desktop` kebijakan, gateway melayani gabungan nilai Anda dan daftar yang diturunkan, sehingga Anda dapat menonaktifkan lebih banyak tool dengan cara ini tetapi tidak dapat mengaktifkan kembali yang Anda nonaktifkan melalui `permissions.deny`1082* Tool yang dinonaktifkan, dari entri `permissions.deny` berupa nama tool polos. Jika Anda menyetel `disabledBuiltinTools` di blok `desktop` kebijakan, gateway melayani gabungan nilai Anda dan daftar turunan, sehingga Anda dapat menonaktifkan lebih banyak tool dengan cara ini tetapi tidak dapat mengaktifkan kembali tool yang Anda nonaktifkan melalui `permissions.deny`
1074* Allowlist egress, dari `sandbox.network.allowedDomains`. Jika Anda mengatur `coworkEgressAllowedHosts` di blok `desktop` kebijakan, gateway menggunakan nilai tersebut sebagai pengganti daftar turunan. Jika allowlist yang dilayani gateway mencakup `*` dan gateway tidak juga melayani [`allowedWorkspaceFolders`](https://claude.com/docs/third-party/claude-desktop/code#applied-as-managed-policy) Claude Desktop, Claude Desktop tidak mengaktifkan [sandbox Bash](https://code.claude.com/docs/id/sandboxing.md) di tab Code1083* Allowlist egress, dari `sandbox.network.allowedDomains`. Jika Anda menyetel `coworkEgressAllowedHosts` di blok `desktop` kebijakan, gateway menggunakan nilai tersebut alih-alih daftar turunan. Jika allowlist yang dilayani gateway menyertakan `*` dan gateway tidak juga melayani [`allowedWorkspaceFolders`](https://claude.com/docs/third-party/claude-desktop/code#applied-as-managed-policy) Claude Desktop, Claude Desktop tidak mengaktifkan [sandbox Bash](https://code.claude.com/docs/id/sandboxing.md) di tab Code
1075* Endpoint OTLP yang menunjuk ke gateway itu sendiri, dan atribut identitas pengguna yang masuk. Gateway meneruskan ekspor yang diterimanya di endpoint itu ke tujuan `forward_to` Anda. Ini menyertakan endpoint dan atribut ketika Anda menetapkan [`telemetry.forward_to`](#telemetry) dan `listen.public_url`.1084* Endpoint OTLP yang mengarah ke gateway itu sendiri, dan atribut identitas pengguna yang masuk. Gateway meneruskan ekspor yang diterimanya di endpoint tersebut ke tujuan `forward_to` Anda. Gateway menyertakan endpoint dan atribut tersebut saat Anda menyetel [`telemetry.forward_to`](#telemetry) dan `listen.public_url`.
1076 1085
1077 Claude Desktop mengekspor setiap sinyal dengan satu pengkodean: `http/protobuf`, atau `http/json` ketika Anda menetapkan `OTEL_EXPORTER_OTLP_PROTOCOL` atau salah satu varian per-sinyal ke `http/json` dalam `env` kebijakan. Sebelum Claude Code v2.1.261 di server gateway, respons menetapkan `http/json` terlepas, jadi kolektor yang hanya menerima protobuf menolak ekspor Claude Desktop1086 Claude Desktop mengekspor setiap sinyal dengan satu encoding: `http/protobuf`, atau `http/json` saat Anda menyetel `OTEL_EXPORTER_OTLP_PROTOCOL` atau salah satu varian per sinyalnya ke `http/json` di `env` kebijakan. Sebelum Claude Code v2.1.261 di server gateway, respons selalu menyetel `http/json`, sehingga collector yang hanya menerima protobuf menolak ekspor Claude Desktop
1078 1087
1079Untuk menetapkan `disabledBuiltinTools`, `coworkEgressAllowedHosts`, atau pengaturan `managedMcpServers` Claude Desktop sendiri dalam blok `desktop` kebijakan, Anda memerlukan Claude Code v2.1.232 atau lebih baru di server gateway. `managedMcpServers` Claude Desktop mengambil nilai array daripada objek.1088Untuk menyetel `disabledBuiltinTools`, `coworkEgressAllowedHosts`, atau pengaturan `managedMcpServers` milik Claude Desktop di blok `desktop` kebijakan, Anda memerlukan Claude Code v2.1.232 atau yang lebih baru di server gateway. `managedMcpServers` milik Claude Desktop menerima nilai array, bukan objek.
1080 1089
1081Gateway menghilangkan kunci tanpa padanan Claude Desktop, seperti `hooks` dan aturan izin yang dibatasi seperti `Bash(npm *)`, dari respons bootstrap.1090Gateway menghilangkan kunci yang tidak memiliki padanan di Claude Desktop, seperti `hooks` dan aturan izin berlingkup seperti `Bash(npm *)`, dari respons bootstrap.
1082 1091
1083##### Menerapkan pengaturan `code` di tab Code1092##### Menerapkan pengaturan `code` di tab Code
1084 1093
1085Pengaturan Claude Code yang dimiliki kebijakan di bawah kunci [`code`](#choose-cli-or-code) berlaku di tab Code Claude Desktop ketika semua hal berikut terpenuhi:1094Pengaturan Claude Code yang dimiliki kebijakan di bawah kunci [`code`](#choose-cli-or-code) berlaku di tab Code Claude Desktop jika semua kondisi berikut terpenuhi:
1086 1095
1087* Kebijakan juga memiliki kunci `desktop`, dan `desktop: {}` yang kosong juga dihitung1096* Kebijakan juga memiliki kunci `desktop`, dan `desktop: {}` kosong juga dihitung
1088* Claude Desktop versi 2.9939.2 atau yang lebih baru1097* Claude Desktop versi 2.9939.2 atau yang lebih baru
1089* Pengaturan terkelola Claude Code di mesin tersebut [menyebut gateway ini](#client-side-managed-settings)1098* Pengaturan terkelola Claude Code di mesin [menyebut gateway ini](#client-side-managed-settings)
1090* Mesin tersebut menjangkau gateway melalui HTTPS di jaringan privat1099* Mesin tersebut menjangkau gateway melalui HTTPS di jaringan pribadi
1091 1100
1092Dua kondisi terakhir berlaku untuk mesin mana pun yang menjalankan Claude Code untuk sesi tersebut. Untuk sesi lokal, itu adalah komputer pengguna sendiri. Untuk sesi tab Code melalui SSH, itu adalah host jarak jauh.1101Dua kondisi terakhir berlaku untuk mesin mana pun yang menjalankan Claude Code untuk sesi tersebut. Untuk sesi lokal, itu adalah komputer pengguna sendiri. Untuk sesi tab Code melalui SSH, itu adalah host jarak jauh.
1093 1102
1094Deploy [pengaturan terkelola sisi klien](#client-side-managed-settings) ke mesin-mesin tersebut sebelum Anda mengganti nama `cli` menjadi `code`. Ketika dua kondisi pertama terpenuhi dan salah satu dari dua kondisi terakhir gagal, pengguna yang cocok dengan kebijakan mendapatkan salah satu hasil berikut:1103Deploy [pengaturan terkelola sisi klien](#client-side-managed-settings) ke mesin-mesin tersebut sebelum Anda mengganti nama `cli` menjadi `code`. Jika dua kondisi pertama terpenuhi dan salah satu dari dua kondisi terakhir tidak terpenuhi, pengguna yang cocok dengan kebijakan mendapatkan salah satu hasil berikut:
1095 1104
1096* **Melalui HTTPS, ketika Claude Desktop membundel Claude Code v2.1.296 atau yang lebih baru**: tab Code tidak dimulai, dan balasan atas prompt pengguna menjelaskan alasannya1105* **Melalui HTTPS, jika Claude Desktop membundel Claude Code v2.1.296 atau yang lebih baru**: tab Code tidak dimulai, dan balasan untuk prompt pengguna menjelaskan alasannya
1097* **Melalui HTTPS, ketika Claude Desktop membundel versi yang lebih lama**: tab Code dimulai tanpa pengaturan `code` Anda, dan tidak ada apa pun dalam sesi yang memberitahukannya1106* **Melalui HTTPS, jika Claude Desktop membundel versi yang lebih lama**: tab Code dimulai tanpa pengaturan `code` Anda, dan tidak ada apa pun dalam sesi yang memberitahukannya
1098* **Melalui HTTP biasa**: tab Code dimulai tanpa pengaturan `code` Anda, versi mana pun yang dibundel Claude Desktop1107* **Melalui HTTP biasa**: tab Code dimulai tanpa pengaturan `code` Anda, versi apa pun yang dibundel Claude Desktop
1099 1108
1100Ketika proxy di depan gateway menjawab `/managed/settings` dengan 404 miliknya sendiri, tab Code juga dimulai tanpa pengaturan `code` Anda, termasuk di mesin yang memenuhi keempat kondisi.1109Jika proxy di depan gateway menjawab `/managed/settings` dengan 404 miliknya sendiri, tab Code juga dimulai tanpa pengaturan `code` Anda, termasuk di mesin yang memenuhi keempat kondisi.
1101 1110
1102Dalam kebijakan yang memiliki kunci `desktop`, blok `code` yang berisi pengaturan mematikan tool WebSearch di Cowork, Chat, dan tab Code. Untuk server MCP, lihat [Di mana `managedMcpServers` berlaku](https://code.claude.com/docs/id/managed-mcp#where-managedmcpservers-applies).1111Dalam kebijakan yang memiliki kunci `desktop`, blok `code` yang berisi pengaturan mematikan tool WebSearch di Cowork, Chat, dan tab Code. Untuk server MCP, lihat [Tempat `managedMcpServers` berlaku](https://code.claude.com/docs/id/managed-mcp#where-managedmcpservers-applies).
1103 1112
1104##### Tetapkan pengaturan Claude Desktop secara langsung1113##### Menyetel pengaturan Claude Desktop secara langsung
1105 1114
1106Tambahkan blok `desktop` opsional bersama `cli` untuk menetapkan pengaturan Claude Desktop secara langsung. Tulis pengaturan dari [referensi konfigurasi terkelola](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop sebagai nama kunci datar. Tinggalkan kunci yang Claude Desktop baca hanya dari MDM atau file lokal, seperti `bootstrapUrl`; gateway menolaknya saat boot.1115Tambahkan blok `desktop` opsional di samping `cli` untuk menyetel pengaturan Claude Desktop secara langsung. Tulis pengaturan dari [referensi konfigurasi terkelola](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop sebagai nama kunci datar. Jangan sertakan kunci yang hanya dibaca Claude Desktop dari MDM atau file lokal, seperti `bootstrapUrl`; gateway menolaknya saat boot.
1107 1116
1108Contoh ini menetapkan tiga kunci Claude Desktop untuk grup `eng-contractors` bersama pengaturan `cli`-nya:1117Contoh ini menyetel tiga kunci Claude Desktop untuk grup `eng-contractors` di samping pengaturan `cli`-nya:
1109 1118
1110```yaml theme={null}1119```yaml theme={null}
1111managed:1120managed:
1120 banner: { text: "Contractor build: internal use only" }1129 banner: { text: "Contractor build: internal use only" }
1121```1130```
1122 1131
1123Setiap kunci opsional; Claude Desktop menerapkan default sendiri untuk kunci apa pun yang Anda abaikan.1132Setiap kunci bersifat opsional; Claude Desktop menerapkan default-nya sendiri untuk kunci apa pun yang Anda hilangkan.
1124 1133
1125##### Apa yang ditolak gateway saat boot1134##### Apa yang ditolak gateway saat boot
1126 1135
1127Gateway memvalidasi setiap blok `desktop` saat boot terhadap skema konfigurasi yang Claude Desktop itu sendiri gunakan, jadi kesalahan muncul di startup gateway sebagai kesalahan yang menamai kunci daripada mencapai setiap desktop yang terhubung. Gateway gagal saat boot ketika blok berisi:1136Gateway memvalidasi setiap blok `desktop` saat boot terhadap skema konfigurasi yang digunakan Claude Desktop sendiri, sehingga kesalahan muncul saat gateway dimulai sebagai error yang menyebutkan kunci tersebut, alih-alih menjangkau setiap desktop yang terhubung. Gateway gagal saat boot jika suatu blok berisi:
1128 1137
1129* Kunci yang tidak dikenal1138* Kunci yang tidak dikenal
1130* Kunci yang dikenali yang nilainya Claude Desktop akan menolak atau diam-diam jatuhkan, seperti nilai kosong atau sub-kunci yang salah eja di dalam entri bersarang. Sebelum v2.1.260, gateway diam-diam menjatuhkan bidang yang salah eja di dalam objek bersarang dari entri `managedMcpServers` atau `orgPluginSettings` alih-alih gagal saat boot.1139* Kunci yang dikenali yang nilainya akan ditolak atau diam-diam dibuang oleh Claude Desktop, seperti nilai kosong atau sub-kunci yang salah eja di dalam entri bersarang. Sebelum v2.1.260, gateway diam-diam membuang bidang yang salah eja di dalam objek bersarang dari entri `managedMcpServers` atau `orgPluginSettings` alih-alih gagal saat boot.
1131* Kunci yang gateway hitung sendiri: koneksi inferensi, daftar model, dan relay OTLP. Konfigurasikan melalui [`upstreams`](#upstreams), [`models`](#models), dan `forward_to` pada bagian [`telemetry`](#telemetry).1140* Kunci yang dihitung gateway sendiri: koneksi inferensi, daftar model, dan relay OTLP. Konfigurasikan semua itu melalui [`upstreams`](#upstreams), [`models`](#models), dan `forward_to` di bagian [`telemetry`](#telemetry).
1132* Alias warisan dari kunci saat ini. Dalam kesalahan boot, gateway menamai kunci kanonis untuk ditulis.1141* Alias lama dari kunci saat ini. Dalam error boot, gateway menyebutkan kunci kanonis yang harus ditulis.
1133 1142
1134Jika Anda menggunakan nilai atau bentuk entri yang sudah deprecated, seperti entri `managedMcpServers` tanpa `transport`, gateway dimulai dan mencatat peringatan yang menamai pengganti.1143Jika Anda menggunakan nilai atau bentuk entri yang sudah deprecated, seperti entri `managedMcpServers` tanpa `transport`, gateway tetap mulai dan mencatat peringatan yang menyebutkan penggantinya.
1135 1144
1136Sebelum v2.1.232, gateway menerima daftar tetap 11 kunci gerbang fitur, seperti `chatTabEnabled` dan `disableAutoUpdates`, dan menolak setiap kunci lain saat boot. Sebelum v2.1.227, gateway juga menolak `chatTabEnabled` dan `chatAdvancedFileAnalysisEnabled` saat boot.1145Sebelum v2.1.232, gateway menerima daftar tetap berisi 11 kunci feature-gate, seperti `chatTabEnabled` dan `disableAutoUpdates`, dan menolak setiap kunci lain saat boot. Sebelum v2.1.227, gateway juga menolak `chatTabEnabled` dan `chatAdvancedFileAnalysisEnabled` saat boot.
1137 1146
1138##### Kunci yang memerlukan versi gateway atau Claude Desktop yang lebih baru1147##### Kunci yang memerlukan versi gateway atau Claude Desktop yang lebih baru
1139 1148
1140Gateway memvalidasi blok `desktop` terhadap skema yang disertakan dengan versi yang diinstal, seperti yang dilakukannya pada blok `cli`. Untuk mengirimkan pengaturan yang diperkenalkan oleh rilis Claude Desktop yang lebih baru, upgrade gateway terlebih dahulu. Misalnya, `userPluginMarketplacesEnabled` dan `userPluginUploadsEnabled` memerlukan Claude Code v2.1.260 atau lebih baru di server gateway dan Claude Desktop 1.37937.0 atau lebih baru di mesin anggota.1149Gateway memvalidasi blok `desktop` terhadap skema yang dibundel dengan versi terpasangnya, seperti halnya blok `cli`. Untuk mengirim pengaturan yang diperkenalkan oleh rilis Claude Desktop yang lebih baru, tingkatkan gateway terlebih dahulu. Misalnya, `userPluginMarketplacesEnabled` dan `userPluginUploadsEnabled` memerlukan Claude Code v2.1.260 atau yang lebih baru di server gateway dan Claude Desktop 1.37937.0 atau yang lebih baru di mesin anggota.
1141 1150
1142`blockReadsOutsideWorkingDirectories`, `disableBypassPermissionsMode`, `configRecheckIntervalMinutes`, dan `sshClientPath` memerlukan Claude Code v2.1.281 atau lebih baru di server gateway. Begitu juga nilai `required` dari `microsoftAuthBroker` dan bidang `continuousAccessEvaluation` dari entri `managedMcpServers` Microsoft 365. Rilis Claude Desktop yang mendahului nilai `required` membacanya sebagai `disabled`, jadi atur `required` hanya setelah setiap anggota Claude Desktop mendukungnya. [Referensi konfigurasi terkelola](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop mencantumkan rilis yang pertama kali membaca setiap kunci.1151`blockReadsOutsideWorkingDirectories`, `disableBypassPermissionsMode`, `configRecheckIntervalMinutes`, dan `sshClientPath` memerlukan Claude Code v2.1.281 atau yang lebih baru di server gateway. Begitu pula nilai `required` dari `microsoftAuthBroker` dan bidang `continuousAccessEvaluation` dari entri `managedMcpServers` Microsoft 365. Rilis Claude Desktop yang lebih lama dari nilai `required` membacanya sebagai `disabled`, jadi setel `required` hanya setelah Claude Desktop setiap anggota mendukungnya. [Referensi konfigurasi terkelola](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop mencantumkan rilis yang pertama kali membaca setiap kunci.
1143 1152
1144Jika Anda menetapkan `orgPluginSettings` dalam blok `desktop` kebijakan, gateway melayaninya dalam bentuk array yang Claude Desktop 1.15200.0 dan lebih baru baca. Desktop yang lebih lama mengabaikan array dan tidak menerapkan kebijakan tool plugin, jadi perbarui anggota ke 1.15200.0 atau lebih baru sebelum Anda mengandalkannya.1153Jika Anda menyetel `orgPluginSettings` di blok `desktop` kebijakan, gateway melayaninya dalam bentuk array yang dibaca Claude Desktop 1.15200.0 dan yang lebih baru. Desktop yang lebih lama mengabaikan array tersebut dan tidak menegakkan kebijakan tool plugin, jadi perbarui anggota ke 1.15200.0 atau yang lebih baru sebelum Anda mengandalkannya.
1145 1154
1146##### Bagaimana kebijakan peran mewarisi blok `desktop` dasar1155##### Cara kebijakan peran mewarisi blok `desktop` dasar
1147 1156
1148Gateway mengisi kunci yang blok `desktop` kebijakan tidak ditetapkan dari blok `desktop` catch-all `match: {}`, dengan cara yang sama mengisi blok `cli` kebijakan dari dasar. Jika Anda menetapkan `disabledBuiltinTools` atau `builtinToolPolicy` dalam dasar dan kebijakan peran, gateway menyimpan pembatasan dasar:1157Gateway mengisi kunci yang tidak disetel oleh blok `desktop` suatu kebijakan dari blok `desktop` catch-all `match: {}`, dengan cara yang sama seperti mengisi blok `cli` kebijakan dari dasar. Jika Anda menyetel `disabledBuiltinTools` atau `builtinToolPolicy` di dasar dan di kebijakan peran, gateway mempertahankan pembatasan dasar:
1149 1158
1150* `disabledBuiltinTools`: gateway menggunakan gabungan daftar dasar dan daftar kebijakan1159* `disabledBuiltinTools`: gateway menggunakan gabungan daftar dasar dan daftar kebijakan
1151* `builtinToolPolicy`: jika Anda menetapkan tool ke nilai selain `allow` dalam dasar, gateway menyimpan nilai itu bahkan jika Anda menetapkan `allow` untuk tool yang sama dalam kebijakan peran1160* `builtinToolPolicy`: jika Anda menyetel suatu tool ke nilai selain `allow` di dasar, gateway mempertahankan nilai tersebut meskipun Anda menyetel `allow` untuk tool yang sama di kebijakan peran
1152 1161
1153Untuk setiap kunci lain, jika Anda menetapkannya dalam kebijakan peran, gateway menggunakan nilai kebijakan peran. Gateway mengganti array atau objek bersarang seperti `banner` secara keseluruhan, jadi jika Anda menetapkan `banner.text` dalam kebijakan peran, gateway menjatuhkan `banner.backgroundColor` dasar.1162Untuk setiap kunci lain, jika Anda menyetelnya di kebijakan peran, gateway menggunakan nilai kebijakan peran. Gateway menggantikan array atau objek bersarang seperti `banner` secara utuh, sehingga jika Anda menyetel `banner.text` di kebijakan peran, gateway membuang `banner.backgroundColor` dari dasar.
1154 1163
1155##### Kapan perubahan kebijakan mencapai Claude Desktop1164##### Kapan perubahan kebijakan mencapai Claude Desktop
1156 1165
1157Setelah Anda men-deploy ulang gateway dengan kebijakan yang diubah, Claude Desktop menerapkan sebagian besar pengaturan hanya saat dimulai berikutnya:1166Setelah Anda men-deploy ulang gateway dengan kebijakan yang diubah, Claude Desktop menerapkan sebagian besar pengaturan hanya saat dimulai berikutnya:
1158 1167
1159* **Tertutup**: Claude Desktop mengambil respons bootstrap saat dimulai, sehingga perubahan berlaku sejak start berikutnya1168* **Tertutup**: Claude Desktop mengambil respons bootstrap saat dimulai, sehingga perubahan berlaku sejak dimulai berikutnya
1160* **Terbuka**: Claude Desktop memeriksa respons yang berubah setiap 10 menit secara default dan menerapkan beberapa pengaturan tanpa restart. Untuk sisanya, seperti [`skillCreationEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#skillcreationenabled), pengguna melihat kartu **Relaunch Claude Desktop** di sidebar dan mempertahankan konfigurasi sebelumnya hingga mereka me-restart aplikasi. Setelah 24 jam secara default, Claude Desktop menampilkan dialog restart dan me-restart dengan sendirinya setelah 2 menit tidak aktif1169* **Terbuka**: Claude Desktop memeriksa respons yang berubah setiap 10 menit secara default dan menerapkan beberapa pengaturan tanpa restart. Untuk sisanya, seperti [`skillCreationEnabled`](https://claude.com/docs/third-party/claude-desktop/configuration#skillcreationenabled), pengguna melihat kartu **Relaunch Claude Desktop** di sidebar dan mempertahankan konfigurasi sebelumnya hingga mereka memulai ulang aplikasi. Setelah 24 jam secara default, Claude Desktop menampilkan dialog restart dan memulai ulang dengan sendirinya setelah 2 menit tidak ada aktivitas
1161 1170
1162Untuk mempersingkat 24 jam tersebut, atur [`relaunchEnforcementHours`](https://claude.com/docs/third-party/claude-desktop/configuration#relaunchenforcementhours) dalam blok `desktop` kebijakan. Anda memerlukan Claude Code v2.1.260 atau lebih baru di server gateway dan Claude Desktop 1.40609.0 atau lebih baru di mesin anggota. Dengan `0`, dialog muncul segera setelah Claude Desktop menemukan perubahan.1171Untuk mempersingkat 24 jam tersebut, setel [`relaunchEnforcementHours`](https://claude.com/docs/third-party/claude-desktop/configuration#relaunchenforcementhours) di blok `desktop` kebijakan. Anda memerlukan Claude Code v2.1.260 atau yang lebih baru di server gateway dan Claude Desktop 1.40609.0 atau yang lebih baru di mesin anggota. Dengan `0`, dialog muncul segera setelah Claude Desktop menemukan perubahan.
1163 1172
1164#### Konteks diperluas di Claude Desktop1173#### Konteks diperluas di Claude Desktop
1165 1174
1166Jika Anda menyajikan [Claude Desktop](#claude-desktop-overlay) dari gateway, pemilih modelnya menawarkan opsi konteks 1M untuk setiap model terdaftar yang dapat berjalan dengan context window 1M. Ini mencakup Claude Opus 4.6 dan yang lebih baru, Claude Sonnet 4.6 dan yang lebih baru, serta model Fable. Opsi tersebut adalah varian `[1m]` dari model, yang dijelaskan di [Konteks diperluas](https://code.claude.com/docs/id/model-config.md#extended-context). Anda memerlukan Claude Code v2.1.284 atau lebih baru di server gateway.1175Jika Anda melayani [Claude Desktop](#claude-desktop-overlay) dari gateway, pemilih modelnya menawarkan opsi konteks 1M untuk setiap model tercantum yang dapat berjalan dengan context window 1M. Ini termasuk Claude Opus 4.6 dan yang lebih baru, Claude Sonnet 4.6 dan yang lebih baru, serta model Fable. Opsi tersebut adalah varian `[1m]` model, yang dijelaskan di [Konteks diperluas](https://code.claude.com/docs/id/model-config.md#extended-context). Anda memerlukan Claude Code v2.1.284 atau yang lebih baru di server gateway.
1167 1176
1168Entri [`models`](#models) tidak mendapatkan opsi 1M ketika:1177Entri [`models`](#models) tidak mendapatkan opsi 1M jika:
1169 1178
1170* Upstream yang dapat melayani entri memetakannya ke model tanpa dukungan 1M, termasuk upstream yang hanya dijangkau gateway saat failover1179* Upstream yang dapat melayani entri memetakannya ke model tanpa dukungan 1M, termasuk upstream yang dijangkau gateway hanya saat failover
1171* Baik `id` maupun nilai `upstream_model` apa pun dari entri tidak menamai model Claude, seperti alias kustom yang dirutekan ke ARN profil inferensi aplikasi1180* Baik `id`-nya maupun nilai `upstream_model`-nya tidak ada yang menyebut model Claude, seperti alias kustom yang dirutekan ke ARN application inference profile
1172 1181
1173Untuk mengubah apa yang ditawarkan pemilih, gunakan salah satu dari ini:1182Untuk mengubah apa yang ditawarkan pemilih, gunakan salah satu dari cara berikut:
1174 1183
1175* **Mulai pengguna pada opsi 1M**: atur `modelPrefer1mContext: true` dalam blok `desktop` kebijakan. Pengguna yang belum memilih model memulai pada opsi 1M ketika model terdaftar pertama memilikinya. Pengguna yang sudah memilih model mempertahankan pilihan mereka.1184* **Memulai pengguna pada opsi 1M**: setel `modelPrefer1mContext: true` di blok `desktop` kebijakan. Pengguna yang belum memilih model mulai pada opsi 1M jika model pertama yang tercantum memilikinya. Pengguna yang sudah memilih model mempertahankan pilihannya.
1176* **Tawarkan opsi secara manual**: lakukan ini jika server gateway Anda menjalankan versi lebih lama dari v2.1.284, atau entri tidak menamai model Claude. Cantumkan model dua kali dalam `models`, sekali dengan ID polosnya dan sekali dengan `[1m]` ditambahkan, keduanya dengan peta `upstream_model` yang sama. Claude Desktop menampilkan pasangan tersebut sebagai satu model dengan opsi 1M. Gateway menyajikan entri `[1m]` tanpa memeriksanya, jadi tambahkan hanya untuk model yang dilayani upstream Anda pada 1M.1185* **Menawarkan opsi secara manual**: lakukan ini jika server gateway Anda menjalankan versi yang lebih lama dari v2.1.284, atau suatu entri tidak menyebut model Claude. Cantumkan model dua kali di `models`, sekali dengan ID polosnya dan sekali dengan `[1m]` ditambahkan, keduanya dengan peta `upstream_model` yang sama. Claude Desktop menampilkan pasangan tersebut sebagai satu model dengan opsi 1M. Gateway melayani entri `[1m]` tanpa memeriksanya, jadi tambahkan entri tersebut hanya untuk model yang dilayani upstream Anda pada 1M.
1177 1186
1178Contoh ini menawarkan opsi secara manual untuk alias kustom yang dirutekan ke profil inferensi aplikasi, dan memulai pengguna baru pada opsi tersebut:1187Contoh ini menawarkan opsi secara manual untuk alias kustom yang dirutekan ke application inference profile, dan memulai pengguna baru pada opsi tersebut:
1179 1188
1180```yaml theme={null}1189```yaml theme={null}
1181models:1190models:
1193 modelPrefer1mContext: true1202 modelPrefer1mContext: true
1194```1203```
1195 1204
1196##### Hapus opsi 1M1205##### Menghapus opsi 1M
1197 1206
1198Untuk menghapus opsi dari pemilih, atur `CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"` dalam blok `env` di bawah kunci `cli` kebijakan. Jika Anda juga mencantumkan entri yang `id`-nya diakhiri `[1m]`, gateway masih menyajikannya, jadi hapus juga entri tersebut.1207Untuk menghapus opsi dari pemilih, setel `CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"` di blok `env` di bawah kunci `cli` kebijakan. Jika Anda juga mencantumkan entri yang `id`-nya diakhiri `[1m]`, gateway tetap melayaninya, jadi hapus juga entri tersebut.
1199 1208
1200Variabel tersebut juga mencapai sesi terminal pengembang yang cocok dengan kebijakan. Untuk apa yang diubahnya di sana, lihat [Konteks diperluas](https://code.claude.com/docs/id/model-config.md#extended-context).1209Variabel ini juga menjangkau sesi terminal developer yang cocok dengan kebijakan. Untuk apa yang diubahnya di sana, lihat [Konteks diperluas](https://code.claude.com/docs/id/model-config.md#extended-context).
1201 1210
1202#### Prioritas dengan sumber terkelola lainnya1211#### Prioritas dengan sumber terkelola lainnya
1203 1212
1204Jika perangkat juga memiliki kebijakan yang dikirimkan MDM atau `managed-settings.json` lokal, pengaturan yang dikirimkan gateway mendapat peringkat pertama. [Prioritas dalam tingkat terkelola](https://code.claude.com/docs/id/managed-settings.md#precedence-within-the-managed-tier) di halaman pengaturan terkelola mengatakan kapan sumber lokal berlaku, dan memiliki [kunci yang Claude Code baca dari setiap sumber admin](https://code.claude.com/docs/id/managed-settings.md#keys-read-from-every-admin-source) terlepas dari sumber mana yang dipilihnya, seperti kunci penguncian sandbox, `forceRemoteSettingsRefresh`, dan penggabungan `env` per-variabel. [`policyHelper`](https://code.claude.com/docs/id/settings-reference#policyhelper) yang dikonfigurasi dalam profil MDM atau file pengaturan terkelola hanya berjalan ketika gateway tidak mengirimkan pengaturan; entri mengatakan apa yang digantikan oleh outputnya.1213Jika perangkat juga memiliki kebijakan yang dikirim MDM atau `managed-settings.json` lokal, pengaturan yang dikirim gateway berada di peringkat pertama. [Prioritas dalam tingkat terkelola](https://code.claude.com/docs/id/managed-settings.md#precedence-within-the-managed-tier) di halaman pengaturan terkelola menjelaskan kapan sumber lokal berlaku, dan memuat [kunci yang dibaca Claude Code dari setiap sumber admin](https://code.claude.com/docs/id/managed-settings.md#keys-read-from-every-admin-source) terlepas dari sumber mana yang dipilihnya, seperti kunci penguncian sandbox, `forceRemoteSettingsRefresh`, dan penggabungan `env` per variabel. [`policyHelper`](https://code.claude.com/docs/id/settings-reference#policyhelper) yang dikonfigurasi di profil MDM atau file pengaturan terkelola hanya berjalan jika gateway tidak mengirim pengaturan; entri tersebut menjelaskan apa yang digantikan oleh output-nya.
1205 1214
1206Host penyematan seperti [Claude Desktop](https://code.claude.com/docs/id/desktop.md) dapat memasok kebijakan melalui opsi SDK `managedSettings`. [Pengaturan induk dari host penyematan](https://code.claude.com/docs/id/managed-settings.md#parent-settings-from-embedding-hosts) mengatakan kapan Claude Code menerapkannya, dan [Batasi pengaturan induk](https://code.claude.com/docs/id/claude-apps-gateway#restrict-parent-settings) mencantumkan pengaturan arah allow mana yang masih berlaku tanpa kunci `allowManaged*Only`.1215Host penyemat seperti [Claude Desktop](https://code.claude.com/docs/id/desktop.md) dapat menyediakan kebijakan melalui opsi SDK `managedSettings`. [Pengaturan induk dari host penyemat](https://code.claude.com/docs/id/managed-settings.md#parent-settings-from-embedding-hosts) menjelaskan kapan Claude Code menerapkannya, dan [Membatasi pengaturan induk](https://code.claude.com/docs/id/claude-apps-gateway#restrict-parent-settings) mencantumkan pengaturan berarah izin (allow) mana yang tetap berlaku tanpa kunci `allowManaged*Only`.
1207 1216
1208Kebijakan gateway berlaku untuk setiap invokasi Claude Code pada mesin, termasuk jalankan `claude -p` non-interaktif dan sesi yang dihasilkan oleh Agent SDK. Jika gateway tidak dapat dijangkau saat startup, sesi yang masuk keluar dengan kesalahan daripada berjalan tanpa kebijakan mereka.1217Kebijakan gateway berlaku untuk setiap pemanggilan Claude Code di mesin, termasuk eksekusi `claude -p` non-interaktif dan sesi yang dibuat oleh Agent SDK. Jika gateway tidak dapat dijangkau saat startup, sesi yang sudah masuk keluar dengan error alih-alih berjalan tanpa kebijakannya.
1209 1218
1210### `telemetry`1219### `telemetry`
1211 1220
1212CLI mengirim metrik, log, dan, ketika diaktifkan, jejak ke gateway, yang meneruskannya verbatim ke setiap tujuan yang dikonfigurasi. Ekspor menggunakan OpenTelemetry Protocol (OTLP) melalui HTTP. Untuk melewati relay dan memiliki sesi ekspor langsung ke kolektor Anda, [namai kolektor dalam kebijakan](#export-directly-to-your-collector). Lihat [Monitoring usage](https://code.claude.com/docs/id/monitoring-usage.md) untuk metrik dan acara yang CLI pancarkan.1221CLI mengirim metrik, log, dan, jika diaktifkan, trace ke gateway, yang meneruskannya apa adanya ke setiap tujuan yang dikonfigurasi. Ekspor menggunakan OpenTelemetry Protocol (OTLP) melalui HTTP. Untuk melewati relay dan membuat sesi mengekspor langsung ke collector Anda, [sebutkan collector dalam kebijakan](#export-directly-to-your-collector). Lihat [Memantau penggunaan](https://code.claude.com/docs/id/monitoring-usage.md) untuk metrik dan event yang dipancarkan CLI.
1213 1222
1214Dalam sesi yang masuk melalui `/login`, CLI membubuhkan identitas pengguna terautentikasi pada setiap ekspor, yang dibaca dari JWT yang diterbitkan gateway: atribut `user.id`, `user.email`, dan `user.groups`. Dengan demikian, atribusi biaya dan penggunaan per developer berfungsi tanpa konfigurasi di sisi developer. Event yang dicatat Claude Code sebelum developer masuk [tidak membawa identitas ini](https://code.claude.com/docs/id/monitoring-usage.md#standard-attributes). Untuk melihat atribut mana yang mengikuti perubahan grup developer, lihat [Perubahan grup selama sesi terbuka](#group-changes-during-an-open-session).1223Dalam sesi yang masuk melalui `/login`, CLI membubuhkan identitas pengguna terautentikasi pada setiap ekspor, yang dibaca dari JWT yang diterbitkan gateway: atribut `user.id`, `user.email`, dan `user.groups`. Karena itu atribusi biaya dan penggunaan per developer berfungsi tanpa konfigurasi di sisi developer. Event yang dicatat Claude Code sebelum developer masuk [tidak membawa identitas ini](https://code.claude.com/docs/id/monitoring-usage.md#standard-attributes). Untuk melihat atribut mana yang mengikuti perubahan grup developer, lihat [Perubahan grup selama sesi terbuka](#group-changes-during-an-open-session).
1215 1224
1216Sesi [Claude Desktop](#claude-desktop-overlay) dan Cowork yang masuk melalui gateway memberi stempel telemetri mereka dengan `user.email` dan `user.groups` bersama `enduser.id`, sehingga Anda dapat mencakup penggunaan terminal, Desktop, dan Cowork dengan satu kueri di `user.email` atau `user.groups`. `user.groups` adalah daftar grup IdP yang dipisahkan koma.1225Sesi [Claude Desktop](#claude-desktop-overlay) dan Cowork yang masuk melalui gateway membubuhkan `user.email` dan `user.groups` pada telemetrinya bersama `enduser.id`, sehingga Anda dapat mencakup penggunaan terminal, Desktop, dan Cowork dengan satu kueri pada `user.email` atau `user.groups`. `user.groups` adalah daftar grup IdP yang dipisahkan koma.
1217 1226
1218Telemetri Desktop dan Cowork juga membawa `enduser.sub`, klaim `sub` yang penyedia identitas Anda keluarkan untuk pengguna, yang tetap sama ketika email pengguna berubah. Sesi terminal memberi stempel nilai yang sama di bawah `user.id`, jadi kueri yang cocok `enduser.sub` terhadap terminal `user.id` mencakup penggunaan terminal, Desktop, dan Cowork satu pengguna bersama-sama. Pada ekspor Desktop dan Cowork, `user.id` adalah pengidentifikasi anonim, bukan subjek.1227Telemetri Desktop dan Cowork juga membawa `enduser.sub`, klaim `sub` yang diterbitkan penyedia identitas Anda untuk pengguna, yang tetap sama ketika email pengguna berubah. Sesi terminal membubuhkan nilai yang sama di bawah `user.id`, sehingga kueri yang mencocokkan `enduser.sub` dengan `user.id` terminal mencakup penggunaan terminal, Desktop, dan Cowork satu pengguna sekaligus. Pada ekspor Desktop dan Cowork, `user.id` adalah pengidentifikasi anonim, bukan subjek.
1219 1228
1220Seperti semua data OpenTelemetry dari Claude Code, atribut ini hanya pergi ke tujuan yang dikonfigurasi organisasi Anda, tidak pernah ke Anthropic.1229Seperti semua data OpenTelemetry dari Claude Code, atribut ini hanya dikirim ke tujuan yang dikonfigurasi organisasi Anda, tidak pernah ke Anthropic.
1221 1230
1222Jika daftar grup pengguna lebih panjang dari 255 karakter setelah dikodekan persen, atau nama grup berisi koma atau tanda sama dengan, gateway meninggalkan `user.groups` dari telemetri Desktop dan Cowork pengguna itu daripada memotongnya. Sesi terminal pengguna itu masih membawa daftar lengkap.1231Jika daftar grup pengguna lebih panjang dari 255 karakter setelah percent-encoding, atau nama grup berisi koma atau tanda sama dengan, gateway tidak menyertakan `user.groups` pada telemetri Desktop dan Cowork pengguna tersebut alih-alih memotongnya. Sesi terminal pengguna tersebut tetap membawa daftar lengkap.
1223 1232
1224Gateway meninggalkan `enduser.sub` ketika subjek lebih panjang dari 255 karakter setelah dikodekan persen, atau berisi spasi, karakter di luar ASCII yang dapat dicetak, atau salah satu dari `,` `;` `=` `\` `"` `%`. Telemetri Desktop dan Cowork pengguna itu menyimpan atribut lainnya.1233Gateway tidak menyertakan `enduser.sub` jika subjek lebih panjang dari 255 karakter setelah percent-encoding, atau berisi spasi, karakter di luar ASCII yang dapat dicetak, atau salah satu dari `,` `;` `=` `\` `"` `%`. Telemetri Desktop dan Cowork pengguna tersebut mempertahankan atribut lainnya.
1225 1234
1226Anda memerlukan Claude Code v2.1.265 atau lebih baru di server gateway untuk `user.email` dan `user.groups` pada telemetri Desktop dan Cowork, dan Claude Desktop 1.24012 atau lebih baru di mesin setiap pengembang untuk `user.groups`.1235Anda memerlukan Claude Code v2.1.265 atau yang lebih baru di server gateway untuk `user.email` dan `user.groups` pada telemetri Desktop dan Cowork, dan Claude Desktop 1.24012 atau yang lebih baru di mesin setiap developer untuk `user.groups`.
1227 1236
1228Anda memerlukan Claude Code v2.1.274 atau lebih baru di server gateway untuk `enduser.sub`.1237Anda memerlukan Claude Code v2.1.274 atau yang lebih baru di server gateway untuk `enduser.sub`.
1229 1238
1230```yaml theme={null}1239```yaml theme={null}
1231telemetry:1240telemetry:
1244 1253
1245> [!WARNING]1254> [!WARNING]
1246>1255>
1247> Setiap tujuan memilih `metrics`, `logs`, dan `traces` secara independen, dan default adalah metrik saja. Sinyal berbeda dalam sensitivitas:1256> Setiap tujuan memilih `metrics`, `logs`, dan `traces` secara independen, dan default-nya hanya metrik. Sinyal-sinyal ini berbeda dalam tingkat sensitivitasnya:
1248>1257>
1249> * **Metrik**: penghitung agregat seperti jumlah token, jumlah permintaan, dan latensi1258> * **Metrik**: penghitung agregat seperti jumlah token, jumlah permintaan, dan latensi
1250> * **Log dan jejak**: dapat membawa perintah Bash lengkap, input tool, dan jalur file, mencakup apa pun yang Claude Code lakukan di mesin pengembang1259> * **Log dan trace**: dapat membawa perintah Bash lengkap, input tool, dan path file, mencakup apa pun yang dilakukan Claude Code di mesin developer
1251>1260>
1252> Aktifkan log dan jejak hanya pada tujuan dengan kontrol akses dan kebijakan retensi yang sesuai untuk data itu.1261> Aktifkan log dan trace hanya pada tujuan dengan kontrol akses dan kebijakan retensi yang sesuai untuk data tersebut.
1253 1262
1254Setiap URL `forward_to` harus menggunakan `https://`, dengan satu pengecualian untuk kolektor di antarmuka loopback gateway itu sendiri:1263Setiap URL `forward_to` harus menggunakan `https://`, dengan satu pengecualian untuk collector di antarmuka loopback gateway itu sendiri:
1255 1264
1256* `http://localhost:<port>` melewati validasi konfigurasi, tetapi [penjaga SSRF](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#threat-model-summary) memblokir setiap ekspor dengan `ECONNREFUSED_SSRF` kecuali Anda menetapkan `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` dalam lingkungan gateway1265* `http://localhost:<port>` lolos validasi konfigurasi, tetapi [penjaga SSRF](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#threat-model-summary) memblokir setiap ekspor dengan `ECONNREFUSED_SSRF` kecuali Anda menyetel `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` di environment gateway
1257* `http://127.0.0.1:<port>` atau `http://[::1]:<port>` gagal boot kecuali variabel itu ditetapkan1266* `http://127.0.0.1:<port>` atau `http://[::1]:<port>` menggagalkan boot kecuali variabel tersebut disetel
1258 1267
1259Untuk kolektor dalam kluster, paparkan melalui HTTPS di alamat internalnya sendiri, atau jalankan sebagai sidecar dengan variabel yang ditetapkan.1268Untuk collector di dalam cluster, ekspos collector melalui HTTPS di alamat internalnya sendiri, atau jalankan sebagai sidecar dengan variabel tersebut disetel.
1260 1269
1261Ketika `HTTPS_PROXY` ditetapkan, gateway mengirim ekspor melalui proxy itu.1270Jika `HTTPS_PROXY` disetel, gateway mengirim ekspor melalui proxy tersebut.
1262 1271
1263Untuk mencapai kolektor internal secara langsung, tambahkan ke `NO_PROXY` berdasarkan nama host atau domain dengan titik terkemuka seperti `.internal.example.com`, yang memerlukan Claude Code v2.1.277 atau lebih baru di server gateway. Pastikan gateway dapat mencapai kolektor tanpa proxy. Entri tanpa titik terkemuka cocok hanya dengan nama yang tepat itu, bukan nama di bawahnya. Rentang CIDR tidak cocok.1272Untuk menjangkau collector internal secara langsung, tambahkan collector ke `NO_PROXY` berdasarkan hostname atau berdasarkan domain dengan titik di awal seperti `.internal.example.com`, yang memerlukan Claude Code v2.1.277 atau yang lebih baru di server gateway. Pastikan gateway dapat menjangkau collector tanpa proxy. Entri tanpa titik di awal hanya cocok dengan nama persis tersebut, bukan nama di bawahnya. Rentang CIDR tidak dicocokkan.
1264 1273
1265Dengan [proxy-only egress](#proxy-only-egress) diaktifkan, izinkan kolektor dalam proxy sebagai gantinya, karena entri `NO_PROXY` apa pun menjaga proxy-only egress tetap mati.1274Dengan [egress khusus proxy](#proxy-only-egress) diaktifkan, izinkan collector di proxy sebagai gantinya, karena entri `NO_PROXY` apa pun membuat egress khusus proxy tetap nonaktif.
1266 1275
1267Telemetri dimatikan dalam CLI secara default. Ketika Anda menetapkan `telemetry.forward_to` dan `listen.public_url`, gateway mengaktifkannya untuk klien yang terhubung dengan mendorong enam environment variable melalui `/managed/settings`:1276Telemetri dimatikan di CLI secara default. Saat Anda menyetel `telemetry.forward_to` dan `listen.public_url`, gateway mengaktifkannya untuk klien yang terhubung dengan mengirim enam environment variable melalui `/managed/settings`:
1268 1277
1269* `CLAUDE_CODE_ENABLE_TELEMETRY=1`1278* `CLAUDE_CODE_ENABLE_TELEMETRY=1`
1270* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, dan `OTEL_TRACES_EXPORTER`, masing-masing ditetapkan ke `otlp` jika setidaknya satu tujuan `forward_to` mengaktifkan sinyal itu dan ke `none` sebaliknya1279* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, dan `OTEL_TRACES_EXPORTER`, masing-masing disetel ke `otlp` jika setidaknya satu tujuan `forward_to` mengaktifkan sinyal tersebut dan ke `none` jika tidak
1271* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`1280* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`
1272* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`1281* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`
1273 1282
1274Ketika Anda [menambahkan label Anda sendiri](#add-your-own-labels), gateway juga mendorong `OTEL_RESOURCE_ATTRIBUTES`.1283Saat Anda [menambahkan label sendiri](#add-your-own-labels), gateway juga mengirim `OTEL_RESOURCE_ATTRIBUTES`.
1275 1284
1276Sebelum Claude Code v2.1.265 di server gateway, gateway mendorong ketiga pemilih eksportir sebagai `otlp`, termasuk untuk sinyal yang tidak ada tujuan yang memilih.1285Sebelum Claude Code v2.1.265 di server gateway, gateway mengirim ketiga pemilih exporter sebagai `otlp`, termasuk untuk sinyal yang tidak dipilih oleh tujuan mana pun.
1277 1286
1278Endpoint yang didorong dibangun dari URL publik, jadi metrik dan log tidak memerlukan konfigurasi OTEL dari pengembang atau kebijakan.1287Endpoint yang dikirim dibangun dari URL publik, sehingga metrik dan log tidak memerlukan konfigurasi OTEL dari developer atau kebijakan.
1279 1288
1280Pengembang yang masuk melalui `/login` tidak dapat mengalihkan ekspor dengan konfigurasi OTEL mereka sendiri:1289Developer yang masuk melalui `/login` tidak dapat mengalihkan ekspor dengan konfigurasi OTEL mereka sendiri:
1281 1290
1282* **Variabel yang ditetapkan secara lokal**: Claude Code menerapkan variabel yang didorong di tingkat terkelola, jadi masing-masing menimpa nilai yang ditetapkan pengembang untuk itu secara lokal.1291* **Variabel yang disetel secara lokal**: Claude Code menerapkan variabel yang dikirim pada tingkat terkelola, sehingga masing-masing menimpa nilai yang disetel developer secara lokal.
1283* **Endpoint yang dikonfigurasi secara lokal**: dengan ekspor OTLP/HTTP diaktifkan, CLI mengabaikan endpoint yang dikonfigurasi secara lokal apa pun, terlepas dari apakah gateway mendorong variabel telemetri. Ekspornya pergi ke gateway kecuali kebijakan [menamai kolektor Anda sebagai endpoint](#export-directly-to-your-collector).1292* **Endpoint yang dikonfigurasi secara lokal**: dengan ekspor OTLP/HTTP diaktifkan, CLI mengabaikan endpoint apa pun yang dikonfigurasi secara lokal, baik gateway mengirim variabel telemetri maupun tidak. Ekspornya dikirim ke gateway kecuali kebijakan [menyebut collector Anda sebagai endpoint](#export-directly-to-your-collector).
1284 1293
1285Tanpa tujuan `forward_to` untuk sinyal, gateway menerima dan membuangnya. Jika pengembang sudah mengekspor telemetri Claude Code ke salah satu kolektor Anda, tambahkan sebagai tujuan `forward_to`, dengan log atau jejak diaktifkan jika mereka mengekspor itu, sehingga terus menerima data mereka setelah mereka masuk. Untuk melewati relay sebagai gantinya, [namai kolektor dalam kebijakan](#export-directly-to-your-collector).1294Tanpa tujuan `forward_to` untuk suatu sinyal, gateway menerima lalu membuangnya. Jika developer sudah mengekspor telemetri Claude Code ke salah satu collector Anda, tambahkan collector itu sebagai tujuan `forward_to`, dengan log atau trace diaktifkan jika mereka mengekspornya, agar collector tetap menerima data mereka setelah mereka masuk. Untuk melewati relay, [sebutkan collector dalam kebijakan](#export-directly-to-your-collector).
1286 1295
1287[Jejak](https://code.claude.com/docs/id/monitoring-usage.md#traces-beta) juga memerlukan `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` pada setiap klien. Atur dalam blok `env` kebijakan terkelola, karena gateway tidak mendorongnya. Pengembang menyetujuinya dalam [dialog persetujuan keamanan](#managed) yang sama yang sudah dipicu oleh endpoint yang didorong.1296[Trace](https://code.claude.com/docs/id/monitoring-usage.md#traces-beta) juga memerlukan `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` di setiap klien. Setel variabel ini di blok `env` kebijakan terkelola, karena gateway tidak mengirimnya. Developer menyetujuinya dalam [dialog persetujuan keamanan](#managed) yang sama yang sudah dipicu oleh endpoint yang dikirim.
1288 1297
1289Atur ke `1` hanya dalam kebijakan yang grupnya ingin Anda lacak. Kebijakan yang tidak menetapkannya mewarisi nilai dari kebijakan catch-all `match: {}` Anda jika kebijakan itu menetapkan satu, per [aturan penggabungan](#managed). Untuk menjaga klien grup dari mengirim jejak bahkan ketika pengembang menetapkan variabel secara lokal, atur ke `0` dalam kebijakan grup itu.1298Setel ke `1` hanya di kebijakan yang grupnya ingin Anda lacak. Kebijakan yang tidak menyetelnya mewarisi nilai dari kebijakan catch-all `match: {}` Anda jika kebijakan tersebut menyetelnya, sesuai [aturan penggabungan](#managed). Agar klien suatu grup tidak mengirim trace bahkan saat developer menyetel variabel secara lokal, setel ke `0` di kebijakan grup tersebut.
1290 1299
1291Kedua pengkodean OTLP protobuf dan JSON diteruskan, dan backend yang kompatibel OpenTelemetry apa pun bekerja sebagai tujuan.1300Encoding OTLP protobuf dan JSON sama-sama diteruskan, dan backend apa pun yang kompatibel dengan OpenTelemetry dapat berfungsi sebagai tujuan.
1292 1301
1293#### Mengirim metrik kumulatif1302#### Mengirim metrik kumulatif
1294 1303
1295Jika collector Anda hanya menerima metrik kumulatif, atur [`OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE`](https://code.claude.com/docs/id/monitoring-usage#common-configuration-variables) ke `cumulative`. Claude Code mengirim metrik delta secara default, dan gateway meneruskannya tanpa mengonversinya. Atur variabel di tempat setiap jenis sesi membacanya:1304Jika collector Anda hanya menerima metrik kumulatif, setel [`OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE`](https://code.claude.com/docs/id/monitoring-usage#common-configuration-variables) ke `cumulative`. Claude Code mengirim metrik delta secara default, dan gateway meneruskannya tanpa mengonversinya. Setel variabel di tempat setiap jenis sesi membacanya:
1296 1305
1297* **Sesi terminal**: di blok `env` di bawah [kunci `cli` atau `code`](#choose-cli-or-code) kebijakan1306* **Sesi terminal**: di blok `env` di bawah [kunci `cli` atau `code`](#choose-cli-or-code) kebijakan
1298* **Sesi Cowork yang [berjalan di mesin pengguna](https://code.claude.com/docs/id/managed-settings.md#where-and-when-a-policy-applies)**: di blok `env` dari [pengaturan terkelola sisi klien](#client-side-managed-settings) di mesin tersebut1307* **Sesi Cowork yang [berjalan di mesin pengguna](https://code.claude.com/docs/id/managed-settings.md#where-and-when-a-policy-applies)**: di blok `env` dari [pengaturan terkelola sisi klien](#client-side-managed-settings) di mesin tersebut
1299* **Sesi tab Code di bawah kebijakan `code`**: di blok `env` kebijakan, setelah Anda memenuhi [kondisi agar pengaturan `code` berlaku](#apply-code-settings-in-the-code-tab)1308* **Sesi tab Code di bawah kebijakan `code`**: di blok `env` kebijakan, setelah Anda memenuhi [kondisi agar pengaturan `code` berlaku](#apply-code-settings-in-the-code-tab)
1300* **Sesi tab Code di bawah kebijakan `cli`**: di blok `env` dari pengaturan terkelola sisi klien di mesin yang menjalankan sesi. Melalui SSH, itu adalah host jarak jauh.1309* **Sesi tab Code di bawah kebijakan `cli`**: di blok `env` dari pengaturan terkelola sisi klien di mesin yang menjalankan sesi. Melalui SSH, itu adalah host jarak jauh.
1301 1310
1302Jika Anda menambahkan variabel ke pengaturan terkelola suatu mesin, atur juga [`parentSettingsBehavior: "merge"`](https://code.claude.com/docs/id/claude-apps-gateway#set-the-opt-in) di sumber dengan prioritas tertinggi di mesin tersebut. Tanpanya, sesi Cowork dan sesi tab Code di bawah kebijakan `cli` berjalan tanpa allowlist egress dan kebijakan lain yang diteruskan Claude Desktop kepadanya sebagai pengaturan induk.1311Jika Anda menambahkan variabel ke pengaturan terkelola suatu mesin, setel juga [`parentSettingsBehavior: "merge"`](https://code.claude.com/docs/id/claude-apps-gateway#set-the-opt-in) di sumber dengan prioritas tertinggi di mesin tersebut. Tanpanya, sesi Cowork dan sesi tab Code di bawah kebijakan `cli` berjalan tanpa allowlist egress dan kebijakan lain yang diteruskan Claude Desktop kepada sesi tersebut sebagai pengaturan induk.
1303 1312
1304#### Tambahkan label Anda sendiri1313#### Menambahkan label sendiri
1305 1314
1306Untuk menempatkan label tetap seperti `service.namespace` atau `deployment.environment.name` pada telemetri sesi yang masuk melalui gateway, atur `telemetry.resource_attributes`. Setiap label adalah atribut sumber OpenTelemetry, dan setiap tujuan menerima label yang sama.1315Untuk memasang label tetap seperti `service.namespace` atau `deployment.environment.name` pada telemetri sesi yang masuk melalui gateway, setel `telemetry.resource_attributes`. Setiap label adalah atribut resource OpenTelemetry, dan setiap tujuan menerima label yang sama.
1307 1316
1308Sesi mendapatkan label hanya ketika Anda juga menetapkan `telemetry.forward_to` dan `listen.public_url`. Contoh ini menambahkan dua label:1317Sesi hanya mendapatkan label jika Anda juga menyetel `telemetry.forward_to` dan `listen.public_url`. Contoh ini menambahkan dua label:
1309 1318
1310```yaml theme={null}1319```yaml theme={null}
1311telemetry:1320telemetry:
1316 deployment.environment.name: prod1325 deployment.environment.name: prod
1317```1326```
1318 1327
1319Gateway menolak untuk memulai ketika label melanggar salah satu aturan ini, dan kesalahan startup menamai label:1328Gateway menolak untuk mulai jika suatu label melanggar salah satu aturan berikut, dan error startup menyebutkan label tersebut:
1320 1329
1321* Nama menggunakan hanya huruf, digit, `.`, `_`, dan `-`1330* Nama hanya menggunakan huruf, angka, `.`, `_`, dan `-`
1322* Nama tidak dicadangkan. Dibandingkan dalam huruf apa pun, nama yang dicadangkan adalah semua yang dimulai dengan `user.`, `enduser.`, atau `identity.`, ditambah `service.name`, `service.version`, `claude.deployment_mode`, `host.arch`, `os.type`, `os.version`, dan `wsl.version`1331* Nama tidak dicadangkan. Dibandingkan tanpa memedulikan huruf besar-kecil, nama yang dicadangkan adalah semua yang diawali `user.`, `enduser.`, atau `identity.`, ditambah `service.name`, `service.version`, `claude.deployment_mode`, `host.arch`, `os.type`, `os.version`, dan `wsl.version`
1323* Nilai adalah ASCII yang dapat dicetak non-kosong tanpa spasi dan tidak ada `, ; = \ " %`1332* Nilai berupa ASCII yang dapat dicetak dan tidak kosong, tanpa spasi dan tanpa `, ; = \ " %`
1324* Nilai paling banyak 255 karakter saat gateway menghitungnya setelah pengkodean persen, jadi `/`, `:`, dan `@` masing-masing menghitung sebagai tiga1333* Nilai paling banyak 255 karakter sebagaimana dihitung gateway setelah percent-encoding, sehingga `/`, `:`, dan `@` masing-masing dihitung sebagai tiga
1325* Nilai adalah teks, jadi kutip angka, `true`, atau `false`1334* Nilai berupa teks, jadi beri tanda kutip pada angka, `true`, atau `false`
1326 1335
1327Anda memerlukan Claude Code v2.1.281 atau lebih baru di server gateway untuk menetapkan `telemetry.resource_attributes`. Gateway sebelumnya menolak untuk memulai ketika menemukan kunci. Upgrade setiap replika sebelum Anda menambahkan kunci, dan hapus kunci sebelum Anda kembali ke versi sebelumnya.1336Anda memerlukan Claude Code v2.1.281 atau yang lebih baru di server gateway untuk menyetel `telemetry.resource_attributes`. Gateway yang lebih lama menolak untuk mulai saat menemukan kunci tersebut. Tingkatkan setiap replika sebelum Anda menambahkan kunci, dan hapus kunci sebelum Anda melakukan rollback ke versi sebelumnya.
1328 1337
1329Sesi terminal yang masuk melalui `/login` menerima label sebagai `OTEL_RESOURCE_ATTRIBUTES`, didorong dengan [variabel telemetri](#telemetry) lainnya. Jika Anda menetapkan `OTEL_RESOURCE_ATTRIBUTES` dalam blok `env` kebijakan, sesi terminal yang cocok dengan kebijakan itu mendapatkan nilai itu alih-alih label. Claude Desktop menerima label dari gateway bersama `user.email` dan atribut identitas lainnya.1338Sesi terminal yang masuk melalui `/login` menerima label sebagai `OTEL_RESOURCE_ATTRIBUTES`, yang dikirim bersama [variabel telemetri](#telemetry) lainnya. Jika Anda menyetel `OTEL_RESOURCE_ATTRIBUTES` di blok `env` kebijakan, sesi terminal yang cocok dengan kebijakan tersebut mendapatkan nilai itu alih-alih label. Claude Desktop menerima label dari gateway bersama `user.email` dan atribut identitas lainnya.
1330 1339
1331Claude Code juga menyalin setiap label ke setiap titik data metrik, sehingga Anda dapat memfilter metrik berdasarkannya di backend yang tidak mengindeks atribut sumber. Untuk mematikan salinan itu, lihat [Kontrol kardinalitas metrik](https://code.claude.com/docs/id/monitoring-usage.md#metrics-cardinality-control).1340Claude Code juga menyalin setiap label ke setiap titik data metrik, sehingga Anda dapat memfilter metrik berdasarkan label tersebut di backend yang tidak mengindeks atribut resource. Untuk mematikan salinan tersebut, lihat [Kontrol kardinalitas metrik](https://code.claude.com/docs/id/monitoring-usage.md#metrics-cardinality-control).
1332 1341
1333#### Perubahan grup selama sesi terbuka1342#### Perubahan grup selama sesi terbuka
1334 1343
1335Sesi terminal menempatkan `user.groups` pada resource OTLP dan sekali lagi pada setiap titik data metrik dan event. Jika grup developer berubah saat sesi terbuka, titik data dan event untuk penggunaan setelah [refresh senyap](#session) berikutnya membawa grup yang baru. Resource mempertahankan grup lama hingga developer me-restart Claude Code, jadi kelompokkan berdasarkan atribut pada titik data atau event.1344Sesi terminal menempatkan `user.groups` pada resource OTLP dan juga pada setiap titik data metrik dan event. Jika grup developer berubah saat sesi terbuka, titik data dan event untuk penggunaan setelah [refresh senyap](#session) berikutnya membawa grup baru. Resource mempertahankan grup lama hingga developer memulai ulang Claude Code, jadi kelompokkan berdasarkan atribut pada titik data atau event.
1336 1345
1337Jika Anda mengaktifkan `resource_to_telemetry_conversion` di exporter Prometheus remote write milik OpenTelemetry Collector, exporter tersebut mengganti `user.groups` setiap titik data dengan milik resource, sehingga setiap titik data menampilkan grup lama. Untuk mempertahankan nilai titik data, hapus `user.groups` dari resource sebelum exporter tersebut.1346Jika Anda mengaktifkan `resource_to_telemetry_conversion` di exporter Prometheus remote write pada OpenTelemetry Collector, exporter menggantikan `user.groups` setiap titik data dengan milik resource, sehingga setiap titik data menampilkan grup lama. Untuk mempertahankan nilai titik data, hapus `user.groups` dari resource sebelum exporter tersebut.
1338 1347
1339Processor `resource` OpenTelemetry Collector ini menghapus atribut tersebut di pipeline yang mencantumkannya:1348Processor `resource` OpenTelemetry Collector ini menghapus atribut tersebut di pipeline yang mencantumkannya:
1340 1349
1346 action: delete1355 action: delete
1347```1356```
1348 1357
1349Setelah Anda menambahkan `resource/drop-user-groups` ke `processors` pipeline metrik, setiap series membawa label `user_groups` dari titik datanya sendiri.1358Setelah Anda menambahkan `resource/drop-user-groups` ke `processors` pipeline metrik, setiap seri membawa label `user_groups` dari titik data miliknya sendiri.
1350 1359
1351#### Ekspor langsung ke kolektor Anda1360#### Ekspor langsung ke collector Anda
1352 1361
1353Untuk memiliki sesi yang masuk melalui `/login` mengirim telemetri langsung ke kolektor Anda alih-alih melalui relay, atur `OTEL_EXPORTER_OTLP_ENDPOINT` ke URL dasar `https://` kolektor dalam blok `env` dari [kebijakan terkelola](#managed). Claude Code menambahkan `/v1/metrics`, `/v1/logs`, atau `/v1/traces` ke URL yang Anda atur, seperti `https://otel-collector.example.com:4318`, dan mengekspor setiap sinyal di sana melalui OTLP/HTTP. Memerlukan Claude Code v2.1.265 atau lebih baru di setiap mesin pengembang. Klien sebelumnya mengekspor melalui relay.1362Agar sesi yang masuk melalui `/login` mengirim telemetri langsung ke collector Anda alih-alih melalui relay, atur `OTEL_EXPORTER_OTLP_ENDPOINT` ke URL dasar `https://` milik collector di blok `env` dari [kebijakan terkelola](#managed). Claude Code menambahkan `/v1/metrics`, `/v1/logs`, atau `/v1/traces` ke URL yang Anda atur, seperti `https://otel-collector.example.com:4318`, dan mengekspor setiap sinyal ke sana melalui OTLP/HTTP. Memerlukan Claude Code v2.1.265 atau yang lebih baru di mesin setiap pengembang. Klien yang lebih lama mengekspor melalui relay.
1354 1363
1355Untuk mengautentikasi ke kolektor, atur `OTEL_EXPORTER_OTLP_HEADERS` dalam blok `env` yang sama. Sesi tidak pernah mengirim token sesi gateway pengembang ke kolektor yang dinamai dengan cara ini.1364Untuk mengautentikasi ke collector, atur `OTEL_EXPORTER_OTLP_HEADERS` di blok `env` yang sama. Sesi tidak pernah mengirim token sesi gateway milik pengembang ke collector yang ditentukan dengan cara ini.
1356 1365
1357Ketika Anda menambah atau mengubah endpoint ini dalam kebijakan, Claude Code meminta setiap pengembang untuk menyetujuinya dalam [dialog persetujuan keamanan](#managed) sebelum menerapkannya dalam sesi interaktif.1366Saat Anda menambahkan atau mengubah endpoint ini dalam kebijakan, Claude Code meminta setiap pengembang untuk menyetujuinya di [dialog persetujuan keamanan](#managed) sebelum menerapkannya dalam sesi interaktif.
1358 1367
1359Claude Code memeriksa endpoint sebelum mengekspor sinyal secara langsung, dan menyimpan sinyal itu di relay ketika pemeriksaan gagal. Pemeriksaan termasuk:1368Claude Code memeriksa endpoint sebelum mengekspor sinyal secara langsung, dan mempertahankan sinyal tersebut di relay ketika pemeriksaan gagal. Pemeriksaan tersebut meliputi:
1360 1369
1361* Endpoint berasal dari gateway itu sendiri. Jika Anda menetapkan variabel yang sama dalam profil MDM atau `managed-settings.json` lokal, ekspor tetap di relay.1370* Endpoint berasal dari gateway itu sendiri. Jika Anda mengatur variabel yang sama di profil MDM atau `managed-settings.json` lokal, ekspor tetap melalui relay.
1362* URL menggunakan `https://`, atau `http://` ke alamat loopback1371* URL menggunakan `https://`, atau `http://` ke alamat loopback
1363* URL diselesaikan ke jalur yang berakhir di `/v1/<signal>`, tanpa kueri atau fragmen. Claude Code membangun jalur itu sendiri dari variabel generik. Ini menggunakan variabel per-sinyal seperti `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` seperti yang ditulis, jadi sertakan jalur lengkap di sana.1372* URL mengarah ke path yang berakhiran `/v1/<signal>`, tanpa query atau fragment. Claude Code membangun path tersebut sendiri dari variabel generik. Variabel per sinyal seperti `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` digunakan apa adanya, jadi sertakan path lengkap di sana.
1364* URL bukan host gateway itu sendiri. Endpoint yang ditujukan ke gateway menyimpan jalur relay dan token sesinya.1373* URL bukan host milik gateway itu sendiri. Endpoint yang ditujukan ke gateway tetap menggunakan jalur relay beserta token sesinya.
1365* Baik Anda maupun pengembang tidak mengonfigurasi [`otelHeadersHelper`](https://code.claude.com/docs/id/settings-reference#otelheadershelper) dalam sumber pengaturan apa pun. Dengan helper yang dikonfigurasi, setiap sinyal tetap di relay.1374* Baik Anda maupun pengembang tidak mengonfigurasi [`otelHeadersHelper`](https://code.claude.com/docs/id/settings-reference#otelheadershelper) di sumber pengaturan mana pun. Jika helper dikonfigurasi, setiap sinyal tetap melalui relay.
1366 1375
1367Endpoint yang Anda namai mengubah hanya di mana ekspor pergi. Anda masih memilih sinyal mana yang mengekspor sama sekali dengan pemilih `OTEL_*_EXPORTER`.1376Endpoint yang Anda tentukan hanya mengubah ke mana ekspor dikirim. Anda tetap memilih sinyal mana yang diekspor sama sekali dengan selektor `OTEL_*_EXPORTER`.
1368 1377
1369Endpoint saja tidak mengaktifkan ekspor, jadi juga atur variabel yang melakukannya, kecuali gateway sudah mendorongnya:1378Endpoint saja tidak mengaktifkan ekspor, jadi atur juga variabel yang mengaktifkannya, kecuali gateway sudah mendorongnya:
1370 1379
1371* Jika gateway sudah [mendorong variabel telemetri](#telemetry), mereka mencakup enablement, pemilih, dan protokol, dan endpoint eksplisit Anda menimpa nilai `<public_url>` yang didorong. Atur pemilih `OTEL_*_EXPORTER` ke `otlp` sendiri hanya untuk sinyal yang tidak ada tujuan `forward_to` yang mengaktifkan.1380* Jika gateway sudah [mendorong variabel telemetri](#telemetry), variabel tersebut mencakup pengaktifan, selektor, dan protokol, dan endpoint eksplisit Anda menimpa nilai `<public_url>` yang didorong. Atur sendiri selektor `OTEL_*_EXPORTER` ke `otlp` hanya untuk sinyal yang tidak diaktifkan oleh tujuan `forward_to` mana pun.
1372* Jika tidak, juga atur `CLAUDE_CODE_ENABLE_TELEMETRY=1`, pemilih `OTEL_*_EXPORTER`, dan `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.1381* Jika tidak, atur juga `CLAUDE_CODE_ENABLE_TELEMETRY=1`, selektor `OTEL_*_EXPORTER`, dan `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.
1373 1382
1374Ketika pengembang keluar, atau masuk ke gateway yang berbeda, ekspor ke kolektor berhenti dan Claude Code menjatuhkan setiap batch yang tersisa daripada mengirimkannya.1383Saat pengembang keluar, atau masuk ke gateway yang berbeda, ekspor ke collector berhenti dan Claude Code membuang setiap batch yang tersisa alih-alih mengirimkannya.
1375 1384
1376#### Ketika tujuan gagal1385#### Saat tujuan gagal
1377 1386
1378Gateway tidak membuffer, mencoba ulang, atau menyimpan telemetri, jadi itu menjatuhkan ekspor yang tidak mencapai tujuan daripada mengirimkannya terlambat. Setiap tujuan berhasil atau gagal sendiri, dan klien yang mengekspor menerima respons sukses bagaimanapun, jadi pengiriman yang gagal muncul hanya dalam log gateway.1387Gateway tidak melakukan buffer, retry, atau menyimpan telemetri, sehingga gateway membuang ekspor yang tidak mencapai tujuan alih-alih mengirimkannya terlambat. Setiap tujuan berhasil atau gagal secara terpisah, dan klien yang mengekspor menerima respons sukses dalam kedua kasus, sehingga pengiriman yang gagal hanya muncul di log gateway.
1379 1388
1380Setelah lima pengiriman berturut-turut yang gagal ke tujuan, gateway menjeda penerusan ke dalamnya dalam rentang 30 detik, mencatat setiap jeda, sampai pengiriman berhasil. Respons kesalahan apa pun, timeout, atau kesalahan koneksi menghitung sebagai pengiriman yang gagal, kecuali `400`, `413`, `415`, `422`, dan `431`, yang berarti kolektor menolak payload ekspor itu sebagai salah format atau terlalu besar.1389Setelah lima kali pengiriman gagal berturut-turut ke suatu tujuan, gateway menjeda penerusan ke tujuan tersebut dalam rentang 30 detik, mencatat setiap jeda ke log, hingga pengiriman berhasil. Setiap respons error, timeout, atau error koneksi dihitung sebagai pengiriman yang gagal, kecuali `400`, `413`, `415`, `422`, dan `431`, yang berarti collector menolak payload ekspor tersebut karena formatnya salah atau terlalu besar.
1381 1390
1382Payload yang ditolak tidak memajukan atau mengatur ulang penghitung kegagalan: gateway terus meneruskan ke tujuan dan mencatat peringatan yang menamakannya dan status, pada penolakan pertama tujuan dan setiap seratus setelahnya.1391Payload yang ditolak tidak menambah maupun mereset hitungan kegagalan: gateway tetap meneruskan ke tujuan tersebut dan mencatat peringatan ke log yang menyebutkan tujuan dan statusnya, pada penolakan pertama dari tujuan tersebut dan setiap penolakan keseratus sesudahnya.
1383 1392
1384### Penyetelan HTTP1393### Penyetelan HTTP
1385 1394
1386Empat blok tingkat atas opsional, `access_control`, `limits`, `timeouts`, dan `rate_limits`, menyetel surface HTTP. Default cocok untuk sebagian besar deployment.1395Empat blok tingkat atas opsional, `access_control`, `limits`, `timeouts`, dan `rate_limits`, menyesuaikan surface HTTP. Nilai default cocok untuk sebagian besar deployment.
1387 1396
1388| Blok | Kunci | Default | Deskripsi |1397| Blok | Kunci | Default | Deskripsi |
1389| - | - | - | - |1398| - | - | - | - |
1390| `access_control` | `allow_cidrs` / `deny_cidrs` | kosong | Inbound IP allow/deny berdasarkan alamat klien, setelah resolusi `trusted_proxies`. `deny_cidrs` diperiksa terlebih dahulu; klien yang cocok ditolak bahkan jika `allow_cidrs` juga cocok. Jika `allow_cidrs` tidak kosong gateway adalah default-deny. `/healthz` dan `/readyz` dikecualikan dari `allow_cidrs`. Ketika proxy tepercaya mengirim entri `X-Forwarded-For` yang bukan alamat IP, klien nyata tidak diketahui dan gateway mencatat peringatan sekali yang menamai apa yang harus diperiksa. Di mana daftar apa pun berlaku untuk permintaan, itu menolaknya dengan `403` dan alasan audit `xff_unparseable`. Di mana tidak ada yang berlaku, itu melayani permintaan dan menggunakan alamat proxy sendiri sebagai IP klien untuk rate limit per-IP dan audit. |1399| `access_control` | `allow_cidrs` / `deny_cidrs` | kosong | Izinkan/tolak IP masuk berdasarkan alamat klien, setelah resolusi `trusted_proxies`. `deny_cidrs` diperiksa terlebih dahulu; klien yang cocok dengannya ditolak meskipun `allow_cidrs` juga cocok. Jika `allow_cidrs` tidak kosong, gateway menolak secara default. `/healthz` dan `/readyz` dikecualikan dari `allow_cidrs`. Ketika proxy tepercaya mengirim entri `X-Forwarded-For` yang bukan alamat IP, klien sebenarnya tidak diketahui dan gateway mencatat peringatan satu kali ke log yang menyebutkan apa yang perlu diperiksa. Jika salah satu daftar berlaku untuk permintaan tersebut, gateway menolaknya dengan `403` dan alasan audit `xff_unparseable`. Jika tidak ada yang berlaku, gateway melayani permintaan tersebut dan menggunakan alamat proxy itu sendiri sebagai IP klien untuk rate limit per IP dan audit. |
1391| `limits` | `max_request_bytes` | 32 MiB | Badan permintaan inbound maksimal; permintaan yang terlalu besar mendapatkan `413` sebelum badan dibuffer. Naikkan untuk permintaan file atau gambar besar. |1400| `limits` | `max_request_bytes` | 32 MiB | Ukuran maksimum body permintaan masuk; permintaan yang terlalu besar mendapat `413` sebelum body di-buffer. Naikkan untuk permintaan file atau gambar berukuran besar. |
1392| `limits` | `max_request_header_bytes` | tidak diatur | Menurunkan batas 256 KiB gateway pada total header permintaan. Permintaan yang melebihi batas mengembalikan `431`, dan nilai di atas 256 KiB tidak berpengaruh. Jika pengembang mendapatkan `431` setelah masuk, lihat [Header permintaan terlalu besar setelah masuk](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#request-headers-too-large-after-sign-in). |1401| `limits` | `max_request_header_bytes` | tidak diatur | Menurunkan batas 256 KiB milik gateway untuk total header permintaan. Permintaan yang melebihi batas mengembalikan `431`, dan nilai di atas 256 KiB tidak berpengaruh. Jika pengembang mendapat `431` setelah masuk, lihat [Header permintaan terlalu besar setelah masuk](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#request-headers-too-large-after-sign-in). |
1393| `limits` | `max_url_length` | tidak diatur | Ketika diatur, URL yang terlalu panjang mengembalikan `414` |1402| `limits` | `max_url_length` | tidak diatur | Jika diatur, URL yang terlalu panjang mengembalikan `414` |
1394| `timeouts` | `upstream_ttfb_ms` | 120000 | Tunggu maksimal untuk header respons upstream (waktu ke byte pertama). Badan respons kemudian streaming tanpa batas jam dinding. Berlaku untuk jalur upstream Anthropic langsung; di setiap penyedia lain gateway menunggu hingga satu jam untuk respons dimulai. |1403| `timeouts` | `upstream_ttfb_ms` | 120000 | Waktu tunggu maksimum untuk header respons upstream (time to first byte). Body respons kemudian di-stream tanpa batas waktu total. Berlaku untuk jalur upstream Anthropic langsung; pada setiap penyedia lain, gateway menunggu hingga satu jam agar respons dimulai. |
1395| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Rate limit per-IP pada endpoint otorisasi perangkat yang tidak diautentikasi. Naikkan untuk org besar di belakang IP egress bersama atau NAT. [Peluncuran besar](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#large-rollouts) menunjukkan cara mengukurnya. Batas ini hanya berlaku untuk alur sign-in hibah perangkat, bukan untuk inferensi `/v1/messages`. Lihat [Resistensi brute-force kode pengguna](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#user-code-brute-force-resistance). |1404| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Rate limit per IP pada endpoint otorisasi perangkat yang tidak diautentikasi. Naikkan untuk organisasi besar di balik IP egress bersama atau NAT. [Peluncuran skala besar](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#large-rollouts) menunjukkan cara menentukan ukurannya. Batas ini hanya berlaku untuk alur masuk device-grant, bukan untuk inferensi `/v1/messages`. Lihat [Ketahanan terhadap brute-force kode pengguna](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#user-code-brute-force-resistance). |
1396| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Rate limit per-IP pada pengajuan `user_code` di `/device`. Ini adalah apa yang menghentikan seseorang dari menebak kode pengembang lain. [Peluncuran besar](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#large-rollouts) menunjukkan seberapa jauh untuk menaikkannya. |1405| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Rate limit per IP pada pengiriman `user_code` di `/device`. Inilah yang mencegah seseorang menebak kode pengembang lain. [Peluncuran skala besar](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#large-rollouts) menunjukkan seberapa tinggi menaikkannya. |
1397 1406
1398Jika Anda meninggalkan kedua daftar `access_control` kosong, yang merupakan default, gateway melayani alamat klien apa pun, jadi hanya jaringan Anda yang membatasi siapa yang dapat mencapainya. Itu penting karena gateway dapat mendorong [pengaturan terkelola](#managed) yang menjalankan perintah di mesin pengembang.1407Jika Anda membiarkan kedua daftar `access_control` kosong, yang merupakan default, gateway melayani alamat klien mana pun, sehingga hanya jaringan Anda yang membatasi siapa yang dapat menjangkaunya. Hal itu penting karena gateway dapat mendorong [pengaturan terkelola](#managed) yang menjalankan perintah di mesin pengembang.
1399 1408
1400Sementara `allow_cidrs` kosong, gateway memperingatkan di dua tempat, tanpa mengubah cara itu menjawab permintaan apa pun:1409Selama `allow_cidrs` kosong, gateway memberi peringatan di dua tempat, tanpa mengubah cara gateway menjawab permintaan apa pun:
1401 1410
1402* **Saat boot**: peringatan dalam log operasional merekomendasikan hanya mengizinkan rentang pribadi `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128`, dan `fc00::/7`, ditambah rentang internal lainnya yang pengembang Anda terhubung dari. Jika Anda mengikat gateway ke alamat loopback dan tidak menetapkan `trusted_proxies` atau `public_url`, seperti dalam pengembangan lokal, peringatan tidak muncul.1411* **Saat boot**: peringatan di log operasional merekomendasikan untuk hanya mengizinkan rentang privat `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128`, dan `fc00::/7`, ditambah rentang internal lain tempat pengembang Anda terhubung. Jika Anda mengikat gateway ke alamat loopback dan tidak mengatur `trusted_proxies` maupun `public_url`, seperti dalam pengembangan lokal, peringatan tersebut tidak muncul.
1403* **Saat runtime**: pertama kali permintaan tiba dari alamat di luar rentang pribadi itu, gateway mencatat peringatan dan memancarkan [acara audit `access.public_client`](https://code.claude.com/docs/id/claude-apps-gateway-deploy#logs) yang membawa IP klien. Keduanya menyala sekali per proses. Alamat link-lokal, `169.254.0.0/16` dan `fe80::/10`, tidak dihitung sebagai publik. Gateway menjawab `/healthz` dan `/readyz` sebelum pemeriksaan ini berjalan, jadi probe kesehatan dari rentang publik tidak memicunya.1412* **Saat runtime**: pertama kali permintaan tiba dari alamat di luar rentang privat tersebut, gateway mencatat peringatan ke log dan memancarkan [audit event `access.public_client`](https://code.claude.com/docs/id/claude-apps-gateway-deploy#logs) yang membawa IP klien. Keduanya hanya terpicu sekali per proses. Alamat link-local, `169.254.0.0/16` dan `fe80::/10`, tidak dihitung sebagai publik. Gateway menjawab `/healthz` dan `/readyz` sebelum pemeriksaan ini berjalan, sehingga probe kesehatan dari rentang publik tidak memicunya.
1404 1413
1405Kedua sinyal menggunakan alamat klien saat gateway menyelesaikannya. Jika load balancer, port-forward, atau tunnel meneruskan lalu lintas dan tidak terdaftar dalam `listen.trusted_proxies`, gateway melihat alamat relay, yang biasanya pribadi, sehingga baik peringatan runtime maupun daftar allow pribadi tidak menangkap lalu lintas yang diteruskan melaluinya.1414Kedua sinyal menggunakan alamat klien sebagaimana di-resolve oleh gateway. Jika load balancer, port-forward, atau tunnel meneruskan lalu lintas dan tidak tercantum di `listen.trusted_proxies`, gateway melihat alamat relay tersebut, yang biasanya privat, sehingga baik peringatan runtime maupun daftar izin privat tidak menangkap lalu lintas yang diteruskan melaluinya.
1406 1415
1407Di belakang front end seperti itu, atur [`listen.trusted_proxies`](#listen) terlebih dahulu sehingga gateway melihat alamat klien nyata, dan jaga gateway dan semua yang di depannya tidak dapat dijangkau dari internet publik apa pun keadaannya.1416Di balik front end semacam itu, atur [`listen.trusted_proxies`](#listen) terlebih dahulu agar gateway melihat alamat klien yang sebenarnya, dan bagaimanapun juga pastikan gateway dan semua yang ada di depannya tidak dapat dijangkau dari internet publik.
1408 1417
1409### `load_test_mode`1418### `load_test_mode`
1410 1419
1411Blok `load_test_mode` memungkinkan Anda untuk load test gateway tanpa memanggil penyedia model. Sementara itu aktif, gateway membangun dan menandatangani setiap permintaan penyedia seperti biasa, membuangnya alih-alih mengirimkannya, dan streaming respons kalengan kembali melalui jalur respons normalnya. Respons adalah teks pengisi yang dimulai dengan kalimat yang mengatakan itu kalengan.1420Blok `load_test_mode` memungkinkan Anda melakukan uji beban pada gateway tanpa memanggil penyedia model. Selama mode ini aktif, gateway membangun dan menandatangani setiap permintaan penyedia seperti biasa, membuangnya alih-alih mengirimkannya, dan men-stream balasan siap pakai kembali melalui jalur respons normalnya. Balasan tersebut berupa teks pengisi yang diawali dengan kalimat yang menyatakan bahwa balasan itu adalah balasan siap pakai.
1412 1421
1413Memerlukan Claude Code v2.1.282 atau lebih baru di server gateway. Gateway sebelumnya menolak untuk memulai ketika menemukan kunci. Upgrade setiap replika sebelum Anda menambahkan blok, dan hapus blok sebelum Anda kembali.1422Memerlukan Claude Code v2.1.282 atau yang lebih baru di server gateway. Gateway yang lebih lama menolak untuk dijalankan saat menemukan kunci tersebut. Tingkatkan setiap replika sebelum Anda menambahkan blok ini, dan hapus blok ini sebelum Anda melakukan rollback.
1414 1423
1415Contoh di bawah mengaktifkan mode dengan default, respons sekitar 750 token teks yang streaming selama sekitar 10 detik:1424Contoh di bawah ini mengaktifkan mode dengan nilai default, yaitu balasan berisi kira-kira 750 token teks yang di-stream selama sekitar 10 detik:
1416 1425
1417```yaml theme={null}1426```yaml theme={null}
1418load_test_mode:1427load_test_mode:
1421 reply_seconds: 9.5 # how long a streamed reply takes1430 reply_seconds: 9.5 # how long a streamed reply takes
1422```1431```
1423 1432
1424| Field | Diperlukan | Deskripsi |1433| Field | Wajib | Deskripsi |
1425| - | - | - |1434| - | - | - |
1426| `enabled` | Ya | `true` mengaktifkan mode. `false` menyimpan angka Anda dalam file dengan mode mati. Gateway menolak untuk memulai jika blok ada tanpa itu. |1435| `enabled` | Ya | `true` mengaktifkan mode. `false` mempertahankan angka Anda di file dengan mode nonaktif. Gateway menolak untuk dijalankan jika blok ada tanpa field ini. |
1427| `reply_tokens` | Tidak | Default `750`. Kira-kira berapa banyak token teks yang dibawa setiap respons kalengan, angka bulat dari 1 hingga 100000. |1436| `reply_tokens` | Tidak | Default `750`. Kira-kira berapa banyak token teks yang dibawa setiap balasan siap pakai, berupa bilangan bulat dari 1 hingga 100000. |
1428| `reply_seconds` | Tidak | Default `9.5`. Berapa lama respons yang streaming, dari 0 hingga 600. `0` mengirim seluruh respons sekaligus. Respons terhadap permintaan non-streaming selalu datang sekaligus. |1437| `reply_seconds` | Tidak | Default `9.5`. Berapa lama balasan yang di-stream berlangsung, dari 0 hingga 600. `0` mengirim seluruh balasan sekaligus. Balasan untuk permintaan non-streaming selalu dikembalikan sekaligus. |
1429 1438
1430Tes beban dalam mode ini mencakup gateway, Postgres Anda, dan semua yang di depan gateway. Itu tidak mencakup batas, kecepatan, atau jalur jaringan penyedia.1439Uji beban dalam mode ini mencakup gateway, Postgres Anda, dan semua yang ada di depan gateway. Uji ini tidak mencakup batas, kecepatan, atau jalur jaringan milik penyedia.
1431 1440
1432Tidak ada permintaan model yang dikirim ke penyedia, jadi CPU replika per permintaan adalah perkiraan dan terbaca lebih rendah dari produksi, yang juga mengenkripsi lalu lintasnya ke penyedia. Konfirmasi jumlah replika dengan pilot kecil terhadap penyedia nyata. Sebelum v2.1.283, perkiraan terbaca jauh lebih rendah.1441Tidak ada permintaan model yang dikirim ke penyedia, sehingga CPU per permintaan pada replika hanyalah perkiraan dan terbaca lebih rendah daripada di produksi, yang juga mengenkripsi lalu lintasnya ke penyedia. Konfirmasikan jumlah replika dengan pilot kecil terhadap penyedia sebenarnya. Sebelum v2.1.283, perkiraan tersebut terbaca jauh lebih rendah.
1433 1442
1434Sementara mode aktif, permintaan dapat membawa header `x-load-test-user` yang menyimpan angka bulat hingga tujuh digit. Gateway menghitung setiap angka sebagai pengembang terpisah, dengan email dan grup pengembang yang tokennya datang dengan permintaan.1443Selama mode aktif, permintaan dapat membawa header `x-load-test-user` yang berisi bilangan bulat hingga tujuh digit. Gateway menghitung setiap angka sebagai pengembang terpisah, dengan email dan grup milik pengembang yang tokennya disertakan bersama permintaan.
1435 1444
1436Berikan deployment load-test database kosongnya sendiri, karena gateway menolak untuk memulai dengan mode aktif terhadap database di mana pengembang apa pun sudah menghabiskan apa pun.1445Berikan deployment uji beban database kosongnya sendiri, karena gateway menolak untuk dijalankan dengan mode aktif terhadap database yang di dalamnya ada pengembang yang sudah menghabiskan biaya apa pun.
1437 1446
1438> [!WARNING]1447> [!WARNING]
1439>1448>
1440> Jangan pernah mengaktifkan ini untuk gateway yang digunakan pengembang. Setiap permintaan mendapatkan respons kalengan dan tidak ada model yang dipanggil. Gateway mencatat peringatan `load_test_mode is on` saat boot dan menandai setiap [acara audit](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#logs) `inference` dengan `load_test: true` sementara mode aktif.1449> Jangan pernah mengaktifkan ini untuk gateway yang digunakan oleh pengembang. Setiap permintaan mendapat balasan siap pakai dan tidak ada model yang dipanggil. Gateway mencatat peringatan `load_test_mode is on` ke log saat boot dan menandai setiap [audit event](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#logs) `inference` dengan `load_test: true` selama mode aktif.
1441 1450
1442## Contoh lengkap1451## Contoh lengkap
1443 1452
1589 # The contractors policy inherits this key.1598 # The contractors policy inherits this key.
1590 enforceAvailableModels: true1599 enforceAvailableModels: true
1591 permissions:1600 permissions:
1592 allow: [Read, Grep, Bash, Edit]1601 allow: [Read, Grep, Edit]
1593 deny: ["WebFetch"]1602 deny: ["WebFetch"]
1594 env: { HTTP_PROXY: http://proxy.example.com:8080 }1603 env: { HTTP_PROXY: http://proxy.example.com:8080 }
1595 1604