314| Tempat lain | Lewatkan credentials via `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, dan `AWS_SESSION_TOKEN` env vars, atau atur secara eksplisit di `auth:` dengan `${VAR}` expansion |314| Tempat lain | Lewatkan credentials via `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, dan `AWS_SESSION_TOKEN` env vars, atau atur secara eksplisit di `auth:` dengan `${VAR}` expansion |
315| Region | `region:` adalah API endpoint region. Cross-region inference profiles route across geo (US, EU, APAC) terlepas dari mana Anda memilih. Untuk non-US regions atau provisioned-throughput ARNs, tambahkan [`models:`](#models) block dengan per-upstream IDs yang benar. |315| Region | `region:` adalah API endpoint region. Cross-region inference profiles route across geo (US, EU, APAC) terlepas dari mana Anda memilih. Untuk non-US regions atau provisioned-throughput ARNs, tambahkan [`models:`](#models) block dengan per-upstream IDs yang benar. |
316 316
317<h5 id="apply-an-amazon-bedrock-guardrail">
318 Apply an Amazon Bedrock guardrail
319</h5>
320
321Untuk menerapkan Amazon Bedrock guardrail ke setiap inference request yang gateway kirim melalui Bedrock upstream, tambahkan blok `guardrail` ke upstream itu. Memerlukan Claude Code v2.1.281 atau lebih baru di server gateway.
322
323```yaml theme={null}
324upstreams:
325 - provider: bedrock
326 region: us-east-1
327 auth: {}
328 guardrail:
329 id: gr-abc123 # guardrail ID or full ARN
330 version: "1" # a published version number, or DRAFT
331 # keep the quotes: a bare 1 fails at boot
332```
333
334<Warning>
335 Gateway tidak mendukung guardrail input tags. Ini tidak menambahkan guard content tags ke prompts, jadi guardrail filter yang Amazon Bedrock terapkan hanya ke tagged input tidak berjalan pada traffic melalui gateway. Untuk filter mana yang bergantung pada input tags, lihat [input tags](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-tagging.html) dalam dokumentasi Amazon Bedrock.
336</Warning>
337
338Juga berikan gateway's AWS principal `bedrock:ApplyGuardrail` pada guardrail.
339
340Atur `guardrail` pada setiap `bedrock` upstream atau pada tidak ada. Gateway menolak untuk memulai pada mix, karena [failover](#multiple-upstreams) dapat mengirim request ke Bedrock upstream yang tidak memiliki guardrail.
341
342Guardrail mencakup Bedrock upstreams saja. Jika Anda mendaftar provider lain di `upstreams`, gateway mengirim requests ke provider itu tanpa guardrail.
343
344Ketika `/v1/messages` request yang body-nya membawa field `amazon-bedrock-*`, seperti `amazon-bedrock-guardrailConfig`, mencapai Bedrock upstream yang memiliki `guardrail` diatur, gateway menjawab 400 daripada meneruskannya.
345
317<h4 id="claude-platform-on-aws">346<h4 id="claude-platform-on-aws">
318 Claude Platform on AWS347 Claude Platform on AWS
319</h4>348</h4>
530 `admin`559 `admin`
531</h3>560</h3>
532 561
533Opsional. Mengaktifkan `/v1/organizations/spend_limits`, yang mencerminkan Anthropic's public Admin API, dan per-developer spend enforcement pada `/v1/messages`. Lihat [Spend limits](/docs/id/claude-apps-gateway-spend-limits) untuk bagaimana caps ditetapkan dan ditegakkan; bagian ini mencakup `gateway.yaml` keys yang mengaktifkan fitur dan menyetelnya.562Opsional. Mengaktifkan `/v1/organizations/spend_limits`, yang mencerminkan Admin API publik Anthropic, dan penegakan pengeluaran per-pengembang di `/v1/messages`. Lihat [Batas pengeluaran](/docs/id/claude-apps-gateway-spend-limits) untuk cara batas ditetapkan dan diterapkan; bagian ini mencakup kunci `gateway.yaml` yang mengaktifkan fitur dan menyetelnya.
534 563
535```yaml theme={null}564```yaml theme={null}
536admin:565admin:
537 # Named static API keys for the admin endpoints, sent as x-api-key.566 # Named static API keys untuk admin endpoints, dikirim sebagai x-api-key.
538 # The id appears in the audit log as admin-key:<id> so each key is567 # id muncul dalam audit log sebagai admin-key:<id> sehingga setiap kunci dapat
539 # attributable. Array for rotation: add the new key, roll clients,568 # dilacak. Array untuk rotasi: tambahkan kunci baru, gulirkan klien,
540 # remove the old.569 # hapus yang lama.
541 write_keys:570 write_keys:
542 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }571 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }
543 - { id: ci, key: "${GATEWAY_ADMIN_WRITE_KEY_CI}" }572 - { id: ci, key: "${GATEWAY_ADMIN_WRITE_KEY_CI}" }
544 read_keys:573 read_keys:
545 - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }574 - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }
546 # IdP groups granted full admin via the normal gateway JWT (no API key).575 # IdP groups yang diberikan akses admin penuh melalui gateway JWT normal (tanpa API key).
547 admin_groups: [platform-finops]576 admin_groups: [platform-finops]
548 blocked_message: request an increase at https://go.example.com/claude-limits577 blocked_message: request an increase at https://go.example.com/claude-limits
549```578```
550 579
551| Field | Diperlukan | Deskripsi |580| Field | Diperlukan | Deskripsi |
552| - | - | - |581| - | - | - |
553| `write_keys` | Tidak | Array dari `{id, key}`. `x-api-key` yang cocok dengan salah satu ini dapat list, set, dan delete spend limits. Nilai key harus minimal 32 karakter; `id`s harus unik di seluruh `read_keys` dan `write_keys`. |582| `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`. |
554| `read_keys` | Tidak | Array dari `{id, key}`. Read-only: setiap endpoint `GET`, termasuk listing caps, mengambil satu berdasarkan ID, dan membaca [`/effective`](/docs/id/claude-apps-gateway-spend-limits#%2Feffective) dan [`/audit`](/docs/id/claude-apps-gateway-spend-limits#%2Faudit). |583| `read_keys` | Tidak | Array dari `{id, key}`. Hanya baca: setiap endpoint `GET`, termasuk mendaftar batas, mengambil satu berdasarkan ID, dan membaca [`/effective`](/docs/id/claude-apps-gateway-spend-limits#%2Feffective) dan [`/audit`](/docs/id/claude-apps-gateway-spend-limits#%2Faudit). |
555| `admin_groups` | Tidak | Nama grup IdP. JWT gateway yang klaim `groups`-nya mencakup salah satu ini memiliki akses admin penuh, read dan write, dan audit sebagai `oidc:<sub>`. Gunakan ini untuk admin manusia; gunakan API keys untuk mesin. Entri kosong dalam daftar ini menghentikan gateway saat boot. Lihat [Matcher values that stop the gateway at boot](#matcher-values-that-stop-the-gateway-at-boot). |584| `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 API keys 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). |
556| `blocked_message` | Tidak | Ditambahkan verbatim ke `429 billing_error` yang dilihat developer yang diblokir. Tulis seluruh instruksi, seperti URL atau saluran Slack. Jika tidak diatur, gateway mengirimkan hanya pesan default. Lihat [How enforcement works](/docs/id/claude-apps-gateway-spend-limits#how-enforcement-works). |585| `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](/docs/id/claude-apps-gateway-spend-limits#how-enforcement-works). |
557| `audit_retention_days` | Tidak | Default `365`. Baris `admin_audit` yang lebih lama disapu. |586| `audit_retention_days` | Tidak | Default `365`. Baris `admin_audit` yang lebih lama disapu. |
558| `spend_retention_months` | Tidak | Default `13`. Baris counter `spend` yang lebih tua dari ini disapu. Default menyimpan tahun penuh ditambah bulan parsial saat ini untuk pelaporan year-over-year. |587| `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. |
559| `identity_retention_days` | Tidak | Default `90`. Last-seen TTL untuk baris `principal_emails`, yang menyimpan email, nama tampilan, dan grup setiap developer (PII). Sengaja lebih pendek dari spend retention sehingga identitas yang dihapus provisioning-nya berusia keluar sementara counter spend anonimnya tetap ada. |588| `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. |
560| `group_limit_mode` | Tidak | `min` (default) atau `max`. Ketika developer ada di beberapa grup dengan caps, `min` memberlakukan yang paling ketat dan `max` yang paling longgar. Digunakan oleh enforcement dan `/effective`. |589| `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`. |
561 590
562<h3 id="enforcement">591<h3 id="enforcement">
563 `enforcement`592 `enforcement`
564</h3>593</h3>
565 594
566Blok `enforcement` mengontrol bagaimana pemeriksaan spend-limit berperilaku ketika store tidak tersedia.595Blok `enforcement` mengontrol bagaimana pemeriksaan batas pengeluaran berperilaku ketika penyimpanan tidak tersedia.
567 596
568| Field | Diperlukan | Deskripsi |597| Field | Diperlukan | Deskripsi |
569| - | - | - |598| - | - | - |
570| `fail_closed_on_error` | Tidak | Default `false`. Enforcement spend gagal terbuka pada pemadaman Postgres, jadi inference tetap aktif. Atur `true` untuk gagal tertutup: developer yang over-cap diblokir, tetapi begitu juga semua orang jika store tidak dapat dijangkau. Memerlukan blok [`admin:`](#admin): enforcement spend hanya berjalan ketika `admin` dikonfigurasi, dan gateway menolak untuk memulai jika Anda mengatur ini `true` tanpa satu. |599| `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. |
571 600
572<h3 id="pricing">601<h3 id="pricing">
573 `pricing`602 `pricing`
574</h3>603</h3>
575 604
576Blok `pricing` memberi tahu spend meter apa yang harus dikenakan alih-alih harga list USD, jadi caps dan [`/effective`](/docs/id/claude-apps-gateway-spend-limits#%2Feffective) mencerminkan tarif kontrak Anda. Jumlah tetap dalam USD dan tetap merupakan estimasi, bukan invoice. Dua prasyarat:605Blok `pricing` memberi tahu meter pengeluaran apa yang harus dikenakan alih-alih harga daftar USD, sehingga batas dan [`/effective`](/docs/id/claude-apps-gateway-spend-limits#%2Feffective) mencerminkan tarif kontrak Anda. Jumlah tetap dalam USD dan tetap merupakan perkiraan, bukan faktur. Dua prasyarat:
577 606
578* Claude Code v2.1.227 atau lebih baru di server gateway. Versi sebelumnya menolak kunci yang tidak dikenal saat boot.607* Claude Code v2.1.227 atau lebih baru di server gateway. Versi sebelumnya menolak kunci yang tidak dikenal saat boot.
579* Blok [`admin:`](#admin) atau, dalam 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.608* 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.
580 609
581```yaml theme={null}610```yaml theme={null}
582pricing:611pricing:
592 621
593| Field | Diperlukan | Deskripsi |622| Field | Diperlukan | Deskripsi |
594| - | - | - |623| - | - | - |
595| `multiplier` | Tidak | Default `1`. Meter mengalikan setiap jumlah yang diukur dengan ini, baik harga list atau override, 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). |624| `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). |
596| `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. |625| `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. |
597 626
598Bagaimana meter mencocokkan baris override:627Bagaimana meter mencocokkan baris override:
599 628
600* Baris menggantikan harga list untuk permintaan yang `upstream`, [`upstreams[].name`](#upstreams), layani untuk `model`. Itu termasuk tarif [fast mode](/docs/id/fast-mode#understand-the-cost-tradeoff) yang lebih tinggi, jadi permintaan fast dan standard meter pada tarif empat yang sama.629* Baris menggantikan harga daftar untuk permintaan yang `upstream`, [`upstreams[].name`](#upstreams), layani untuk `model`. Itu termasuk tarif [fast mode](/docs/id/fast-mode#understand-the-cost-tradeoff) yang lebih tinggi, jadi permintaan fast dan standard diukur dengan tarif yang sama empat.
601* ID bawaan seperti `claude-sonnet-4-6`, dicocokkan seperti [`models[].id`](#models), mencakup setiap bentuk bertanggal, 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 inference, cocok dengan ID yang klien kirim atau string yang dikirim upstream, case-insensitively.630* 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.
602* Di mana baris tumpang tindih, meter memilih baris yang paling spesifik daripada baris pertama: baris yang `model`-nya adalah string model yang tepat dikirim upstream, kemudian baris yang cocok dengan ID yang tepat yang klien kirim, kemudian baris yang menamai model bawaan.631* 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.
603* Nama upstream yang tidak dikenal gagal boot, dan 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.632* 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.
604* Permintaan web-search tetap pada harga list \$0.01; multiplier masih berlaku untuk mereka.633* Permintaan pencarian web tetap pada harga daftar \$0.01; pengali masih berlaku untuk mereka.
605 634
606Untuk tarif per-region, berikan setiap region upstream bernama sendiri dan satu baris per upstream.635Untuk tarif per-region, berikan setiap region upstream bernama sendiri dan satu baris per upstream.
607 636
609 Tandai harga naik638 Tandai harga naik
610</h4>639</h4>
611 640
612Dengan v2.1.271 atau lebih baru di server gateway, Anda dapat mengatur `multiplier` di atas 1, hingga 10, untuk meter lebih dari yang penyedia kenakan, misalnya tarif chargeback internal. Contoh ini meter setiap permintaan pada 120% dari harga:641Dengan 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:
613 642
614```yaml theme={null}643```yaml theme={null}
615pricing:644pricing:
616 multiplier: 1.2645 multiplier: 1.2
617```646```
618 647
619Dengan blok [`admin:`](#admin), markup juga berlaku untuk spend limits. Meter menghitung 120% dari harga, jadi developer mencapai caps mereka lebih cepat. Gateway mencatat peringatan saat boot yang mengatakan demikian.648Dengan 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.
620 649
621Multiplier tidak mengubah apa yang penyedia upstream kenakan untuk permintaan.650Pengali tidak mengubah apa yang dikenakan penyedia upstream untuk permintaan.
622 651
623Jika gateway juga [mengirimkan tarif ke klien yang masuk](#send-the-rates-to-signed-in-clients), developer memerlukan Claude Code v2.1.271 atau lebih baru untuk melihat markup. Klien sebelumnya mengabaikan `multiplier` di atas 1 dan menampilkan biaya tanpanya.652Jika 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.
624 653
625Server gateway sebelumnya dari v2.1.271 menolak untuk memulai jika Anda mengatur `multiplier` di atas 1.654Server gateway sebelumnya dari v2.1.271 menolak untuk memulai jika Anda menetapkan `multiplier` di atas 1.
626 655
627<h4 id="send-the-rates-to-signed-in-clients">656<h4 id="send-the-rates-to-signed-in-clients">
628 Kirim tarif ke klien yang masuk657 Kirim tarif ke klien yang masuk
629</h4>658</h4>
630 659
631Dengan 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`](/docs/id/settings-reference#modelpricing). Developer yang cocok dengan kebijakan kemudian melihat tarif `pricing` untuk upstream pertama yang melayani setiap ID model dalam `/usage`, baris status, dan OpenTelemetry. Developer yang tidak cocok dengan kebijakan apa pun menerima tidak ada pengaturan terkelola, jadi angka mereka tetap pada harga list. Klien menerapkan pengaturan dalam Claude Code v2.1.242 atau lebih baru.660Dengan v2.1.268 atau lebih baru di server gateway, gateway juga menempatkan tarif dari `pricing` ke dalam kebijakan [`managed`](#managed) yang disajikannya, sebagai pengaturan [`modelPricing`](/docs/id/settings-reference#modelpricing) yang dikelola. 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 yang dikelola, sehingga angka mereka tetap pada harga daftar. Klien menerapkan pengaturan di Claude Code v2.1.242 atau lebih baru.
632 661
633* Apa yang ditambahkan gateway: kecuali blok `cli` kebijakan sudah mengatur `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.662* 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.
634* Opt satu kebijakan keluar: atur `modelPricing` ke `{}` dalam blok `cli` kebijakan itu, dan developer-nya tetap pada harga list.663* Opt satu kebijakan keluar: atur `modelPricing` ke `{}` dalam blok `cli` kebijakan itu, dan pengembangnya tetap pada harga daftar.
635* Pertahankan tarif kebijakan sendiri: kebijakan yang blok `cli`-nya mengatur `modelPricing` dengan `multiplier` atau `overrides` sendiri menyimpan `modelPricing` itu utuh, dan gateway menambahkan tidak ada tarif sendiri ke dalamnya.664* 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.
636 665
637<h3 id="models">666<h3 id="models">
638 `models`667 `models`
639</h3>668</h3>
640 669
641Blok `models` adalah daftar model yang dikurasi admin opsional, disajikan di `/v1/models` dan digunakan untuk menerjemahkan ID model per upstream. Ini diperlukan untuk wilayah Amazon Bedrock non-US, ARN throughput provisioned Amazon Bedrock, dan nama deployment Microsoft Foundry.670Blok `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.
642 671
643```yaml theme={null}672```yaml theme={null}
644auto_include_builtin_models: true # false: expose only the list below673auto_include_builtin_models: true # false: expose only the list below
652 foundry: your-opus-deployment-name681 foundry: your-opus-deployment-name
653```682```
654 683
655Setiap 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 hilangkan baris untuk penyedia yang tidak Anda gunakan.684Setiap 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.
656 685
657<h3 id="managed">686<h3 id="managed">
658 `managed`687 `managed`
659</h3>688</h3>
660 689
661Blok `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-user di `GET /managed/settings` dengan caching ETag/304.690Blok `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.
662 691
663```yaml theme={null}692```yaml theme={null}
664managed:693managed:
674 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]703 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]
675```704```
676 705
677Catch-all `match: {}`, secara konvensional terdaftar terakhir, diperlakukan sebagai lapisan dasar. Setiap kebijakan lainnya mewarisi kunci apa pun yang tidak ditetapkan dari catch-all, jadi entri per-peran hanya perlu mencantumkan apa yang berbeda dari default org. Aturan penggabungan tergantung pada jenis kunci:706Catch-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:
678 707
679* **Allow-lists**: `availableModels` dan `permissions.allow`. Daftar kebijakan spesifik sepenuhnya menggantikan daftar dasar.708* **Allow-lists**: `availableModels` dan `permissions.allow`. Daftar kebijakan spesifik sepenuhnya menggantikan dasar.
680* **Deny-lists dan hook arrays**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces`, dan setiap array jenis event `hooks`. Ini mengambil union dari dasar dan kebijakan, jadi deny org-wide atau audit hook tidak dapat secara tidak sengaja dijatuhkan oleh override per-peran.709* **Deny-lists dan hook arrays**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces`, dan setiap array jenis acara `hooks`. Ini mengambil gabungan dasar dan kebijakan, sehingga hook deny atau audit di seluruh org tidak dapat secara tidak sengaja dijatuhkan oleh override per-peran.
681* **Record-typed keys**: `env`, `modelOverrides`, dan `skillOverrides`. Ini shallow-merge, jadi blok `env` per-peran menimpa kunci yang ditetapkan dan mewarisi sisanya dari dasar.710* **Record-typed keys**: `env`, `modelOverrides`, dan `skillOverrides`. Ini shallow-merge, jadi blok `env` per-peran menimpa kunci yang ditetapkannya dan mewarisi sisanya dari dasar.
682 711
683`availableModels` juga ditegakkan server-side di `/v1/messages`, jadi model yang ditolak mengembalikan `400` terlepas dari apa yang dikirim klien.712`availableModels` juga diterapkan server-side di `/v1/messages`, jadi model yang ditolak mengembalikan `400` terlepas dari apa yang dikirim klien.
684 713
685Gateway memvalidasi nilai `model` itu sendiri sebelum meneruskan permintaan, jadi nilai yang salah bentuk tidak pernah mencapai upstream. Ini menolak permintaan dengan `400` dalam dua kasus:714Gateway 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:
686 715
687* 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.716* 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.
688* 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.717* 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.
689 718
690| Matcher | Perilaku |719| Matcher | Perilaku |
691| - | - |720| - | - |
692| `match: {}` | Cocok dengan setiap pengguna yang terautentikasi. Mulai dengan satu ini dan tambahkan kebijakan yang dibatasi grup di atasnya nanti. |721| `match: {}` | Cocok dengan setiap pengguna yang diautentikasi. Mulai dengan salah satu dari ini dan tambahkan kebijakan yang dibatasi grup di atasnya nanti. |
693| `match: { groups: [a, b] }` | Cocok jika klaim `groups` JWT berisi salah satu grup yang terdaftar. Case-sensitive: grup harus cocok dengan casing yang tepat dari IdP. |722| `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. |
694| `match: { email_domain: example.com }` | Cocok dengan bagian setelah `@` terakhir dalam klaim `email` JWT, case-insensitive. Menerima satu domain per kebijakan. |723| `match: { email_domain: example.com }` | Cocok dengan bagian setelah `@` terakhir dalam klaim `email` JWT, tidak peka huruf besar-kecil. Menerima satu domain per kebijakan. |
695| `match: { groups: [a], email_domain: example.com }` | Kedua kondisi harus cocok |724| `match: { groups: [a], email_domain: example.com }` | Kedua kondisi harus cocok |
696 725
697Pengguna yang terautentikasi yang tidak cocok dengan kebijakan apa pun mendapat 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.726Pengguna yang diautentikasi yang tidak cocok dengan kebijakan apa pun mendapatkan default gateway, yang berarti setiap model dalam katalog dan tidak ada pengaturan yang dikelola. Tambahkan catch-all `match: {}` terakhir jika Anda menginginkan kebijakan default yang dijamin.
698 727
699<Note>728<Note>
700 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 dihitung dan tidak ada akun untuk dibuat sebelumnya, dan oleh karena itu tidak ada endpoint SCIM, karena tidak ada apa pun untuk SCIM sinkronkan ke.729 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.
701 730
702 Jalankan manajemen siklus hidup pengguna dan grup di sumber kebenaran, yang merupakan penyediaan SCIM asli IdP 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](/docs/id/admin-setup).731 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](/docs/id/admin-setup).
703 732
704 Dua jam propagasi berlaku:733 Dua jam propagasi berlaku:
705 734
706 * **Konten kebijakan**: mengedit kebijakan dan redeploy mencapai klien yang terhubung pada polling managed-settings berikutnya mereka, dalam satu jam, terlepas dari [perubahan yang berlaku hanya pada peluncuran berikutnya](/docs/id/server-managed-settings#fetch-and-caching-behavior)735 * **Konten kebijakan**: mengedit kebijakan dan menyebarkan ulang mencapai klien yang terhubung pada polling pengaturan yang dikelola berikutnya, dalam satu jam, terlepas dari [perubahan yang hanya berlaku pada peluncuran berikutnya](/docs/id/server-managed-settings#fetch-and-caching-behavior)
707 * **Keanggotaan grup**: mengubah keanggotaan grup pengguna mengubah kebijakan mana yang cocok dengan mereka. Ini berlaku pada re-mint sesi berikutnya, berarti refresh senyap berikutnya, dibatasi oleh `session.ttl_hours`.736 * **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`.
708</Note>737</Note>
709 738
710<h4 id="matcher-values-that-stop-the-gateway-at-boot">739<h4 id="matcher-values-that-stop-the-gateway-at-boot">
711 Matcher values that stop the gateway at boot740 Nilai matcher yang menghentikan gateway saat boot
712</h4>741</h4>
713 742
714Saat boot, gateway memeriksa blok `match` dari setiap kebijakan dan daftar [`admin_groups`](#admin). Salah satu dari nilai ini menghentikan gateway dengan error yang menamai field:743Saat 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:
715 744
716* Daftar `groups` kosong745* Daftar `groups` kosong
717* Entri kosong dalam `groups` atau dalam `admin_groups`746* Entri kosong dalam `groups` atau dalam `admin_groups`
718* `email_domain` kosong747* `email_domain` kosong
719* `email_domain` yang berisi `@`, whitespace, atau koma. Gateway memotong nilai dan menghilangkan satu `@` terkemuka sebelum pemeriksaan ini. Tulis satu domain telanjang, seperti `example.com`.748* `email_domain` yang berisi `@`, whitespace, atau koma. Gateway memangkas nilai dan menghapus satu `@` terkemuka sebelum pemeriksaan ini. Tulis satu domain telanjang, seperti `example.com`.
720 749
721Sebelum v2.1.232, gateway dimulai dengan nilai-nilai ini. Setiap nilai memiliki efek ini:750Sebelum v2.1.232, gateway dimulai dengan nilai-nilai ini. Setiap nilai memiliki efek ini:
722 751
723* `email_domain` kosong: gateway melewati pemeriksaan domain, jadi kebijakan dengan `email_domain` kosong dan tidak ada daftar `groups` cocok dengan setiap pengguna yang terautentikasi752* `email_domain` kosong: gateway melewati pemeriksaan domain, jadi kebijakan dengan `email_domain` kosong dan tidak ada daftar `groups` cocok dengan setiap pengguna yang diautentikasi
724* Daftar `groups` kosong: kebijakan tidak cocok dengan siapa pun753* Daftar `groups` kosong: kebijakan tidak cocok dengan siapa pun
725* `email_domain` berisi `@`, whitespace, atau koma: kebijakan tidak cocok dengan siapa pun754* `email_domain` berisi `@`, whitespace, atau koma: kebijakan tidak cocok dengan siapa pun
726* 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.755* 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.
727 756
728<h4 id="what-goes-in-cli">757<h4 id="what-goes-in-cli">
729 What goes in `cli`758 Apa yang masuk dalam `cli`
730</h4>759</h4>
731 760
732Setiap nilai `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`, diekspresikan di sini sebagai YAML. CLI menerapkan dokumen yang dikirimkan pada tingkat terkelola, di atas pengaturan pengguna dan proyek, sebagai pengganti pengaturan yang dikelola server. Oleh karena itu, ini mengabaikan pengaturan [terbatas pada sumber kebijakan tingkat OS](/docs/id/server-managed-settings#current-limitations), seperti `policyHelper` dan `wslInheritsWindowsSettings`.761Setiap nilai `cli` adalah dokumen `managed-settings.json` Claude Code lengkap, skema yang sama yang akan Anda sebarkan melalui MDM atau `/etc/claude-code/managed-settings.json`, diekspresikan di sini sebagai YAML. CLI menerapkan dokumen yang dikirimkan di tingkat yang dikelola, di atas pengaturan pengguna dan proyek, menggantikan pengaturan yang dikelola server. Oleh karena itu, ini mengabaikan pengaturan [dibatasi untuk sumber kebijakan tingkat OS](/docs/id/server-managed-settings#current-limitations), seperti `policyHelper` dan `wslInheritsWindowsSettings`.
733 762
734Gateway memvalidasi setiap dokumen terhadap skema pengaturan CLI saat boot, jadi kunci tingkat atas yang tidak dikenali gagal boot dengan error yang menamai setiap kunci yang bermasalah. Bagian skema yang sengaja terbuka masih menerima nilai arbitrer, karena klien yang lebih baru mungkin mengenali entri yang skema gateway tidak. Kunci terbuka ini adalah `env`, `pluginConfigs`, dan kunci yang bersarang di bawah `permissions`.763Gateway 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`.
735 764
736Karena validasi menggunakan skema yang disertakan dengan versi gateway yang terinstal, menempatkan kunci pengaturan tingkat atas yang diperkenalkan oleh rilis Claude Code yang lebih baru ke konfigurasi terkelola memerlukan upgrade gateway terlebih dahulu. Smoke-test kebijakan baru pada satu klien sebelum meluncurkannya.765Karena 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 yang dikelola memerlukan upgrade gateway terlebih dahulu. Smoke-test kebijakan baru pada satu klien sebelum menggulirnya.
737 766
738Referensi kunci lengkap ada di [Claude Code settings](/docs/id/settings-reference#all-settings). Kunci yang paling sering dicari operator:767Referensi kunci lengkap ada di [Pengaturan Claude Code](/docs/id/settings-reference#all-settings). Kunci yang paling sering digunakan operator:
739 768
740```yaml theme={null}769```yaml theme={null}
741managed:770managed:
769 - { type: command, command: /usr/local/bin/audit-edit.sh }798 - { type: command, command: /usr/local/bin/audit-edit.sh }
770```799```
771 800
772| Key | Ditegakkan oleh | Efek |801| Kunci | Diterapkan oleh | Efek |
773| - | - | - |802| - | - | - |
774| `availableModels` | Gateway + CLI | Allowlist model. Juga diperiksa di `/v1/messages`, jadi klien yang dipatch tidak dapat membypassnya. |803| `availableModels` | Gateway + CLI | Allowlist model. Juga diperiksa di `/v1/messages`, jadi klien yang dipatch tidak dapat membypassnya. |
775| `permissions.allow` / `.deny` | CLI | Aturan tool dan command. Lihat [Permissions](/docs/id/permissions). |804| `permissions.allow` / `.deny` | CLI | Aturan alat dan perintah. Lihat [Permissions](/docs/id/permissions). |
776| `permissions.disableBypassPermissionsMode` | CLI | Atur ke `disable` untuk memblokir [`bypassPermissions`](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode), mode yang melewati prompt permission, dan flag `--dangerously-skip-permissions` |805| `permissions.disableBypassPermissionsMode` | CLI | Atur ke `disable` untuk memblokir [`bypassPermissions`](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode), mode yang melewati prompt izin, dan flag `--dangerously-skip-permissions` |
777| `allowManagedPermissionRulesOnly` | CLI | Ketika `true`, pengaturan terkelola menjadi satu-satunya sumber pengaturan aturan permission. Entri [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) mencantumkan setiap sumber yang Claude Code kemudian abaikan. |806| `allowManagedPermissionRulesOnly` | CLI | Ketika `true`, pengaturan yang dikelola menjadi satu-satunya sumber pengaturan aturan izin. Entri [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) mencantumkan setiap sumber yang Claude Code kemudian abaikan. |
778| `env` | CLI | Variabel lingkungan yang digabungkan ke proses CLI. Gunakan untuk telemetry, auto-update, dan model-name overrides. |807| `env` | CLI | Variabel lingkungan digabungkan ke dalam proses CLI. Gunakan untuk telemetri, auto-update, dan override nama model. |
779| `hooks` | CLI | Org-wide [hooks](/docs/id/hooks) |808| `hooks` | CLI | Org-wide [hooks](/docs/id/hooks) |
780| `managedMcpServers` | CLI | Remote MCP servers [disediakan ke setiap developer yang cocok](/docs/id/managed-mcp#provide-servers-through-managed-settings) bersama server yang mereka tambahkan sendiri, `http` dan `sse` saja. Lihat [MCP servers in a policy](#mcp-servers-in-a-policy). Memerlukan Claude Code v2.1.259 atau lebih baru di server gateway dan pada klien. Klien sebelumnya mengabaikan kunci. |809| `managedMcpServers` | CLI | Remote MCP servers [disediakan untuk setiap pengembang yang cocok](/docs/id/managed-mcp#provide-servers-through-managed-settings) bersama server yang mereka tambahkan sendiri, `http` dan `sse` hanya. Lihat [MCP servers 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. |
781 810
782Karena pengaturan ini tiba melalui jaringan, CLI menunjukkan setiap developer dialog persetujuan keamanan sebelum menerapkan pengaturan yang tercantum di bawah:811Karena pengaturan ini tiba melalui jaringan, CLI menunjukkan kepada setiap pengembang dialog persetujuan keamanan sebelum menerapkan pengaturan yang tercantum di bawah:
783 812
784* `hooks`813* `hooks`
785* Variabel `env` yang memerlukan persetujuan developer, seperti proxy dan base-URL variables814* Variabel `env` yang memerlukan persetujuan pengembang, seperti proxy dan variabel URL dasar
786* pengaturan eksekusi shell seperti `apiKeyHelper` dan `statusLine`815* pengaturan eksekusi shell seperti `apiKeyHelper` dan `statusLine`
787* pengaturan binary sandbox `sandbox.bwrapPath`, `sandbox.socatPath`, dan `sandbox.ripgrep`816* pengaturan biner sandbox `sandbox.bwrapPath`, `sandbox.socatPath`, dan `sandbox.ripgrep`
788* Pengaturan Sandbox yang mengintersepsi traffic, menyuntikkan kredensial, atau melemahkan isolasi, seperti `sandbox.network.tlsTerminate` dan pengaturan port proxy. [Security approval dialogs](/docs/id/server-managed-settings#security-approval-dialogs) mencantumkan semuanya.817* Pengaturan Sandbox yang mencegat lalu lintas, menyuntikkan kredensial, atau melemahkan isolasi, seperti `sandbox.network.tlsTerminate` dan pengaturan port proxy. [Dialog persetujuan keamanan](/docs/id/server-managed-settings#security-approval-dialogs) mencantumkan semuanya.
789 818
790[Approval memory](/docs/id/server-managed-settings#approval-memory) mencakup berapa lama persetujuan berlangsung dan kapan dialog muncul lagi.819[Memori persetujuan](/docs/id/server-managed-settings#approval-memory) mencakup berapa lama persetujuan berlangsung dan kapan dialog muncul lagi.
791 820
792Claude Code menerapkan beberapa variabel `env` yang dikirimkan tanpa menunjukkan developer dialog persetujuan, seperti pengaturan pemilihan model dan batas numerik. Variabel yang dikirimkan lainnya dapat memerlukan persetujuan developer sebelum berlaku; nilai proxy, base-URL, atau `OTEL_EXPORTER_OTLP_ENDPOINT` yang tidak kosong selalu melakukannya. Ketika variabel yang dikirimkan memerlukan persetujuan, dialog menamakannya.821Claude 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.
793 822
794[Environment variables and the approval dialog](/docs/id/server-managed-settings#environment-variables-and-the-approval-dialog) memiliki detail, termasuk empat privacy toggles yang nilai yang dikirimkan menentukan apakah mereka memerlukan persetujuan. Sebelum v2.1.218, Claude Code menerapkan lebih sedikit variabel tanpa bertanya kepada developer, jadi lebih banyak variabel yang dikirimkan memicu dialog.823[Variabel lingkungan dan dialog persetujuan](/docs/id/server-managed-settings#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.
795 824
796Konfigurasi [telemetry](#telemetry) gateway mendorong `OTEL_EXPORTER_OTLP_ENDPOINT`, jadi pengaturan `telemetry.forward_to` memicu dialog pada setiap klien interaktif. Dialog melindungi mesin developer dari gateway yang dikompromikan atau bermusuhan, bukan organisasi dari developer.825Konfigurasi [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.
797 826
798Run non-interaktif dengan flag `-p` tidak dapat menampilkan dialog. Ini menerapkan pengaturan yang didorong untuk run itu saja dan tidak merekamnya sebagai disetujui, jadi sesi interaktif berikutnya developer masih menampilkan dialog. Sebelum v2.1.207, run non-interaktif menyimpan pengaturan sebagai disetujui dan tidak ada sesi interaktif yang lebih baru menampilkan dialog untuk mereka.827Jalankan [non-interaktif](/docs/id/server-managed-settings#security-approval-dialogs), seperti `claude -p` atau sesi Agent SDK, tidak dapat menunjukkan dialog. Ini menerapkan pengaturan yang didorong untuk jalankan itu saja dan tidak merekamnya sebagai disetujui, jadi sesi interaktif pengembang berikutnya masih menunjukkan dialog untuk mereka. Sebelum v2.1.207, jalankan non-interaktif menyimpan pengaturan sebagai disetujui dan tidak ada sesi interaktif nanti yang menunjukkan dialog untuk mereka.
799 828
800Jika developer 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, Claude Code oleh karena itu menampilkan dialog kepada setiap developer yang cocok. Ini menampilkan dialog dalam sesi yang berjalan pada polling per jam berikutnya, dan sebaliknya pada startup developer berikutnya.829Jika 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.
801 830
802Kunci `cli` dinamai `settings` dalam rilis sebelumnya. Ejaan itu masih diterima sebagai alias, tetapi deployment baru harus menggunakan `cli`.831Kunci `cli` dinamai `settings` dalam rilis sebelumnya. Ejaan itu masih diterima sebagai alias, tetapi deployment baru harus menggunakan `cli`.
803 832
804<h4 id="mcp-servers-in-a-policy">833<h4 id="mcp-servers-in-a-policy">
805 MCP servers in a policy834 MCP servers dalam kebijakan
806</h4>835</h4>
807 836
808Untuk menyediakan MCP servers ke klien Claude Code yang cocok dengan kebijakan, atur [`managedMcpServers`](/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.837Untuk menyediakan MCP servers ke klien Claude Code yang cocok dengan kebijakan, atur [`managedMcpServers`](/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.
809 838
810Gateway memeriksa setiap entri saat boot dengan [aturan yang sama yang Claude Code terapkan pada klien](/docs/id/managed-mcp#what-an-entry-can-contain), dan jika entri gagal pemeriksaan, gateway menolak untuk memulai dan menamai entri.839Gateway memeriksa setiap entri saat boot dengan [aturan yang sama yang diterapkan Claude Code pada klien](/docs/id/managed-mcp#what-an-entry-can-contain), dan jika entri gagal pemeriksaan, gateway menolak untuk memulai dan menamai entri.
811 840
812Jika Anda menulis referensi `${VAR}` dalam `gateway.yaml`, gateway menyelesaikannya dari lingkungannya saat boot melalui [secret expansion](#secret-expansion) sebelum menjalankan pemeriksaan entri, jadi setiap klien yang cocok menerima nilai literal dan dapat membacanya. [Header guidance untuk server yang disediakan](/docs/id/managed-mcp#provide-servers-through-managed-settings) berlaku untuk nilai yang diperluas.841Jika 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](/docs/id/managed-mcp#provide-servers-through-managed-settings) berlaku untuk nilai yang diperluas.
813 842
814Gateway menolak ejaan `.mcp.json` `mcpServers` dalam blok `cli`, dan error boot-nya menamai `managedMcpServers` sebagai kunci yang digunakan. Sebelum v2.1.259, gateway menolak definisi MCP server apa pun dalam blok `cli`.843Gateway menolak ejaan `.mcp.json` `mcpServers` dalam blok `cli`, dan kesalahan bootnya menamai `managedMcpServers` sebagai kunci yang digunakan. Sebelum v2.1.259, gateway menolak definisi MCP server apa pun dalam blok `cli`.
815 844
816<h4 id="claude-desktop-overlay">845<h4 id="claude-desktop-overlay">
817 Claude Desktop overlay846 Overlay Claude Desktop
818</h4>847</h4>
819 848
820Jika organisasi Anda juga menerapkan [Claude Desktop](/docs/id/desktop), gateway yang sama melayani kedua klien. Arahkan `bootstrapUrl`, dalam [managed configuration](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop, ke `<listen.public_url>/user/bootstrap`. Claude Desktop menurunkan issuer OAuth dari URL itu, menjalankan sign-in device-code yang sama terhadap gateway ini, dan mengambil konfigurasinya dari respons.849Jika organisasi Anda juga menyebarkan [Claude Desktop](/docs/id/desktop), gateway yang sama melayani kedua klien. Arahkan `bootstrapUrl`, dalam [konfigurasi yang dikelola](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.
821 850
822<Note>851<Note>
823 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 opt-in kebijakan, dan kunci `desktop` pada lapisan dasar `match: {}` opt-in setiap kebijakan yang mewarisnya. Log audit merekam setiap permintaan sebagai `desktop_bootstrap.serve` atau `desktop_bootstrap.denied`.852 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`.
824</Note>853</Note>
825 854
826Gateway menurunkan banyak respons dari blok `cli` kebijakan yang cocok dan dari konfigurasi gateway tingkat atas:855Gateway menurunkan banyak respons dari blok `cli` kebijakan yang cocok dan dari konfigurasi gateway tingkat atas:
827 856
828* Daftar model, dari `availableModels`857* Daftar model, dari `availableModels`
829* Tool yang dinonaktifkan, dari entri `permissions.deny` nama tool telanjang. Jika Anda mengatur `disabledBuiltinTools` dalam blok `desktop` kebijakan, gateway melayani union dari nilai Anda dan daftar yang diturunkan, jadi Anda dapat menonaktifkan lebih banyak tool dengan cara ini tetapi tidak dapat mengaktifkan kembali yang Anda nonaktifkan melalui `permissions.deny`858* Alat yang dinonaktifkan, dari entri `permissions.deny` nama alat telanjang. Jika Anda menetapkan `disabledBuiltinTools` dalam blok `desktop` kebijakan, gateway melayani gabungan nilai Anda dan daftar yang diturunkan, sehingga Anda dapat menonaktifkan lebih banyak alat dengan cara ini tetapi tidak dapat mengaktifkan kembali yang Anda nonaktifkan melalui `permissions.deny`
830* Allowlist egress, dari `sandbox.network.allowedDomains`. Jika Anda mengatur `coworkEgressAllowedHosts` dalam blok `desktop` kebijakan, gateway menggunakan nilai itu alih-alih daftar yang diturunkan859* Allowlist egress, dari `sandbox.network.allowedDomains`. Jika Anda menetapkan `coworkEgressAllowedHosts` dalam blok `desktop` kebijakan, gateway menggunakan nilai itu alih-alih daftar yang diturunkan
831* Endpoint OTLP yang menunjuk ke gateway itu sendiri, dan atribut identitas pengguna yang masuk. Gateway meneruskan export yang diterima di endpoint itu ke tujuan `forward_to` Anda. Ini menyertakan endpoint dan atribut ketika Anda mengatur [`telemetry.forward_to`](#telemetry) dan `listen.public_url`.860* 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`.
832 861
833 Claude Desktop mengekspor setiap signal dengan satu encoding: `http/protobuf`, atau `http/json` ketika Anda mengatur `OTEL_EXPORTER_OTLP_PROTOCOL` atau salah satu varian per-signal-nya ke `http/json` dalam `env` kebijakan. Sebelum Claude Code v2.1.261 di server gateway, respons mengatur `http/json` terlepas, jadi kolektor yang hanya menerima protobuf menolak export Claude Desktop862 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 Desktop
834 863
835Untuk mengatur `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.864Untuk 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.
836 865
837Gateway menghilangkan kunci tanpa padanan Claude Desktop, seperti `hooks` dan aturan permission yang dibatasi seperti `Bash(npm *)`, dari respons bootstrap.866Gateway menghilangkan kunci tanpa padanan Claude Desktop, seperti `hooks` dan aturan izin yang dibatasi seperti `Bash(npm *)`, dari respons bootstrap.
838 867
839Tambahkan blok `desktop` opsional bersama `cli` untuk mengatur pengaturan Claude Desktop secara langsung. Tulis pengaturan dari [managed configuration reference](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. Sebelum v2.1.232, gateway menerima daftar tetap dari 11 kunci feature-gate, seperti `chatTabEnabled` dan `disableAutoUpdates`, dan menolak setiap kunci lainnya saat boot. Sebelum v2.1.227, gateway juga menolak `chatTabEnabled` dan `chatAdvancedFileAnalysisEnabled` saat boot.868Tambahkan blok `desktop` opsional bersama `cli` untuk menetapkan pengaturan Claude Desktop secara langsung. Tulis pengaturan dari [referensi konfigurasi yang dikelola](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. Sebelum 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.
840 869
841```yaml theme={null}870```yaml theme={null}
842managed:871managed:
850 banner: { text: "Contractor build: internal use only" }879 banner: { text: "Contractor build: internal use only" }
851```880```
852 881
853Setiap kunci opsional; Claude Desktop menerapkan default-nya sendiri untuk kunci apa pun yang Anda hilangkan. Gateway memvalidasi setiap blok `desktop` saat boot terhadap skema konfigurasi yang Claude Desktop itu sendiri gunakan, jadi kesalahan muncul saat startup gateway sebagai error yang menamai kunci daripada mencapai setiap desktop yang terhubung. Gateway gagal saat boot ketika blok berisi:882Setiap kunci opsional; Claude Desktop menerapkan default sendiri untuk kunci apa pun yang Anda abaikan. Gateway 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:
854 883
855* Kunci yang tidak dikenal884* Kunci yang tidak dikenal
856* Kunci yang dikenali yang nilai-nya 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 field yang salah eja di dalam objek bersarang dari entri `managedMcpServers` atau `orgPluginSettings` alih-alih gagal saat boot.885* 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.
857* Kunci yang gateway hitung sendiri: koneksi inference, daftar model, dan relay OTLP. Konfigurasikan ini melalui [`upstreams`](#upstreams), [`models`](#models), dan bagian [`telemetry`](#telemetry) `forward_to`.886* Kunci yang gateway hitung sendiri: koneksi inferensi, daftar model, dan relay OTLP. Konfigurasikan melalui [`upstreams`](#upstreams), [`models`](#models), dan bagian [`telemetry`](#telemetry) `forward_to`.
858* Alias legacy dari kunci saat ini. Dalam error boot, gateway menamai kunci kanonis untuk ditulis.887* Alias warisan dari kunci saat ini. Dalam kesalahan boot, gateway menamai kunci kanonis untuk ditulis.
859 888
860Jika Anda menggunakan nilai atau bentuk entri yang sudah usang, seperti entri `managedMcpServers` tanpa `transport`, gateway dimulai dan mencatat peringatan yang menamai pengganti.889Jika Anda menggunakan nilai atau bentuk entri yang sudah usang, seperti entri `managedMcpServers` tanpa `transport`, gateway dimulai dan mencatat peringatan yang menamai pengganti.
861 890
862Gateway memvalidasi blok `desktop` terhadap skema yang disertakan dengan versi yang terinstal, 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 pada mesin anggota.891Gateway 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.
892
893`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 yang dikelola](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop mencantumkan rilis yang pertama kali membaca setiap kunci.
863 894
864Jika Anda mengatur `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 memberlakukan kebijakan tool plugin, jadi perbarui anggota ke 1.15200.0 atau lebih baru sebelum Anda mengandalkannya.895Jika 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 alat plugin, jadi perbarui anggota ke 1.15200.0 atau lebih baru sebelum Anda mengandalkannya.
865 896
866Gateway mengisi kunci yang blok `desktop` kebijakan tidak atur dari blok `desktop` catch-all `match: {}`, dengan cara yang sama mengisi blok `cli` kebijakan dari dasar. Jika Anda mengatur `disabledBuiltinTools` atau `builtinToolPolicy` dalam dasar dan kebijakan peran, gateway menyimpan pembatasan dasar:897Gateway 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:
867 898
868* `disabledBuiltinTools`: gateway menggunakan union dari daftar dasar dan daftar kebijakan899* `disabledBuiltinTools`: gateway menggunakan gabungan daftar dasar dan daftar kebijakan
869* `builtinToolPolicy`: jika Anda mengatur tool ke nilai selain `allow` dalam dasar, gateway menyimpan nilai itu bahkan jika Anda mengatur `allow` untuk tool yang sama dalam kebijakan peran900* `builtinToolPolicy`: jika Anda menetapkan alat ke nilai selain `allow` dalam dasar, gateway menyimpan nilai itu bahkan jika Anda menetapkan `allow` untuk alat yang sama dalam kebijakan peran
870 901
871Untuk setiap kunci lainnya, jika Anda mengaturnya dalam kebijakan peran, gateway menggunakan nilai kebijakan peran. Gateway mengganti array atau objek bersarang seperti `banner` secara keseluruhan, jadi jika Anda mengatur `banner.text` dalam kebijakan peran, gateway menjatuhkan `banner.backgroundColor` dasar.902Untuk 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.
872 903
873Jika Anda tidak menerapkan Claude Desktop, tinggalkan `desktop` sepenuhnya dari kebijakan Anda; gateway kemudian mengembalikan 404 dari `/user/bootstrap` untuk setiap pengguna.904Jika Anda tidak menyebarkan Claude Desktop, tinggalkan `desktop` sepenuhnya dari kebijakan Anda; gateway kemudian mengembalikan 404 dari `/user/bootstrap` untuk setiap pengguna.
874 905
875<h4 id="precedence-with-other-managed-sources">906<h4 id="precedence-with-other-managed-sources">
876 Precedence dengan sumber terkelola lainnya907 Preseden dengan sumber yang dikelola lainnya
877</h4>908</h4>
878 909
879Jika perangkat juga memiliki kebijakan yang dikirimkan MDM atau `managed-settings.json` lokal, pengaturan yang dikirimkan gateway mendapat peringkat pertama. [Precedence within the managed tier](/docs/id/managed-settings#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](/docs/id/managed-settings#keys-read-from-every-admin-source) terlepas dari sumber mana yang dipilihnya, seperti kunci sandbox lock, `forceRemoteSettingsRefresh`, dan per-variabel `env` merge. [`policyHelper`](/docs/id/settings-reference#policyhelper) yang dikonfigurasi dalam profil MDM atau file pengaturan terkelola berjalan hanya ketika gateway tidak mengirimkan pengaturan; entri mengatakan apa yang outputnya gantikan.910Jika perangkat juga memiliki kebijakan yang dikirimkan MDM atau `managed-settings.json` lokal, pengaturan yang dikirimkan gateway mendapat peringkat pertama. [Preseden dalam tingkat yang dikelola](/docs/id/managed-settings#precedence-within-the-managed-tier) di halaman pengaturan yang dikelola mengatakan kapan sumber lokal berlaku, dan memiliki [kunci yang Claude Code baca dari setiap sumber admin](/docs/id/managed-settings#keys-read-from-every-admin-source) terlepas dari sumber mana yang dipilihnya, seperti kunci kunci sandbox, `forceRemoteSettingsRefresh`, dan per-variabel `env` merge. [`policyHelper`](/docs/id/settings-reference#policyhelper) yang dikonfigurasi dalam profil MDM atau file pengaturan yang dikelola hanya berjalan ketika gateway tidak mengirimkan pengaturan; entri mengatakan apa yang digantikannya.
880 911
881Host embedding seperti [Claude Desktop](/docs/id/desktop) dapat menyediakan kebijakan melalui opsi SDK `managedSettings`. [Parent settings from embedding hosts](/docs/id/managed-settings#parent-settings-from-embedding-hosts) mengatakan kapan Claude Code menerapkannya, dan [Restrict parent settings](/docs/id/claude-apps-gateway#restrict-parent-settings) mencantumkan pengaturan arah allow mana yang masih berlaku tanpa kunci `allowManaged*Only`.912Host penyematan seperti [Claude Desktop](/docs/id/desktop) dapat memasok kebijakan melalui opsi SDK `managedSettings`. [Pengaturan induk dari host penyematan](/docs/id/managed-settings#parent-settings-from-embedding-hosts) mengatakan kapan Claude Code menerapkannya, dan [Batasi pengaturan induk](/docs/id/claude-apps-gateway#restrict-parent-settings) mencantumkan pengaturan arah allow mana yang masih berlaku tanpa kunci `allowManaged*Only`.
882 913
883Kebijakan gateway berlaku untuk setiap invokasi Claude Code pada mesin, termasuk run non-interaktif `claude -p` dan sesi yang dihasilkan oleh Agent SDK. Jika gateway tidak dapat dijangkau saat startup, sesi yang masuk keluar dengan error daripada menjalankan tanpa kebijakan mereka.914Kebijakan 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.
884 915
885<h3 id="telemetry">916<h3 id="telemetry">
886 `telemetry`917 `telemetry`
887</h3>918</h3>
888 919
889CLI mengirim metrik, log, dan, ketika diaktifkan, trace ke gateway, yang meneruskan mereka verbatim ke setiap tujuan yang dikonfigurasi. Export menggunakan OpenTelemetry Protocol (OTLP) melalui HTTP. Untuk melewati relay dan memiliki sesi mengekspor langsung ke kolektor Anda, [namai kolektor dalam kebijakan](#export-directly-to-your-collector). Lihat [Monitoring usage](/docs/id/monitoring-usage) untuk metrik dan event yang CLI emit.920CLI 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](/docs/id/monitoring-usage) untuk metrik dan acara yang CLI pancarkan.
890 921
891CLI memberi stempel setiap export dengan identitas pengguna yang terautentikasi, dibaca dari JWT yang diterbitkan gateway: atribut `user.id`, `user.email`, dan `user.groups`. Atribusi biaya dan penggunaan per-developer oleh karena itu bekerja tanpa konfigurasi sisi developer.922Dalam sesi yang masuk melalui `/login`, CLI memberi stempel setiap ekspor dengan identitas pengguna yang diautentikasi, dibaca dari JWT yang diterbitkan gateway: atribut `user.id`, `user.email`, dan `user.groups`. Atribusi biaya dan penggunaan per-pengembang oleh karena itu bekerja tanpa konfigurasi sisi pengembang.
892 923
893[Claude Desktop](#claude-desktop-overlay) dan sesi Cowork yang masuk melalui gateway memberi stempel telemetry mereka dengan `user.email` dan `user.groups` bersama `enduser.id`, jadi Anda dapat mencakup penggunaan terminal, Desktop, dan Cowork dengan satu query pada `user.email` atau `user.groups`. `user.groups` adalah daftar grup IdP yang dipisahkan koma.924Sesi [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.
894 925
895Desktop dan Cowork telemetry juga membawa `enduser.sub`, klaim `sub` yang penyedia identitas Anda terbitkan untuk pengguna, yang tetap sama ketika email pengguna berubah. Sesi terminal memberi stempel nilai yang sama di bawah `user.id`, jadi query yang cocok `enduser.sub` terhadap terminal `user.id` mencakup penggunaan terminal, Desktop, dan Cowork satu pengguna bersama-sama. Pada export Desktop dan Cowork, `user.id` adalah identifier anonim, bukan subject.926Telemetri 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.
896 927
897Seperti semua data OpenTelemetry dari Claude Code, atribut ini hanya pergi ke tujuan yang organisasi Anda konfigurasikan, tidak pernah ke Anthropic.928Seperti semua data OpenTelemetry dari Claude Code, atribut ini hanya pergi ke tujuan yang dikonfigurasi organisasi Anda, tidak pernah ke Anthropic.
898 929
899Jika daftar grup pengguna lebih panjang dari 255 karakter setelah percent-encoded, atau nama grup berisi koma atau tanda sama dengan, gateway meninggalkan `user.groups` dari telemetry Desktop dan Cowork pengguna itu daripada memotongnya. Sesi terminal pengguna itu masih membawa daftar lengkap.930Jika 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.
900 931
901Gateway meninggalkan `enduser.sub` ketika subject lebih panjang dari 255 karakter setelah percent-encoded, atau berisi spasi, karakter di luar printable ASCII, atau salah satu dari `,` `;` `=` `\` `"` `%`. Telemetry Desktop dan Cowork pengguna itu menyimpan atribut lainnya.932Gateway 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.
902 933
903Anda memerlukan Claude Code v2.1.265 atau lebih baru di server gateway untuk `user.email` dan `user.groups` pada telemetry Desktop dan Cowork, dan Claude Desktop 1.24012 atau lebih baru pada mesin setiap developer untuk `user.groups`.934Anda 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`.
904 935
905Anda memerlukan Claude Code v2.1.274 atau lebih baru di server gateway untuk `enduser.sub`.936Anda memerlukan Claude Code v2.1.274 atau lebih baru di server gateway untuk `enduser.sub`.
906 937
920```951```
921 952
922<Warning>953<Warning>
923 Setiap tujuan opt into `metrics`, `logs`, dan `traces` secara independen, dan default adalah metrics saja. Signal berbeda dalam sensitivitas:954 Setiap tujuan memilih `metrics`, `logs`, dan `traces` secara independen, dan default adalah metrik saja. Sinyal berbeda dalam sensitivitas:
924 955
925 * **Metrics**: counter agregat seperti token counts, request counts, dan latency956 * **Metrik**: penghitung agregat seperti jumlah token, jumlah permintaan, dan latensi
926 * **Logs dan traces**: dapat membawa perintah bash lengkap, tool inputs, dan jalur file, mencakup apa pun yang Claude Code lakukan pada mesin developer957 * **Log dan jejak**: dapat membawa perintah Bash lengkap, input alat, dan jalur file, mencakup apa pun yang Claude Code lakukan di mesin pengembang
927 958
928 Aktifkan logs dan traces hanya pada tujuan dengan kontrol akses dan kebijakan retensi yang data jamin.959 Aktifkan log dan jejak hanya pada tujuan dengan kontrol akses dan kebijakan retensi yang data itu jamin.
929</Warning>960</Warning>
930 961
931Setiap URL `forward_to` harus menggunakan `https://`, dengan satu pengecualian untuk kolektor di interface loopback gateway itu sendiri:962Setiap URL `forward_to` harus menggunakan `https://`, dengan satu pengecualian untuk kolektor di antarmuka loopback gateway itu sendiri:
932 963
933* `http://localhost:<port>` melewati validasi konfigurasi, tetapi [SSRF guard](/docs/id/claude-apps-gateway-deploy#threat-model-summary) memblokir setiap export dengan `ECONNREFUSED_SSRF` kecuali Anda mengatur `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` dalam lingkungan gateway964* `http://localhost:<port>` melewati validasi konfigurasi, tetapi [penjaga SSRF](/docs/id/claude-apps-gateway-deploy#threat-model-summary) memblokir setiap ekspor dengan `ECONNREFUSED_SSRF` kecuali Anda menetapkan `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` dalam lingkungan gateway
934* `http://127.0.0.1:<port>` atau `http://[::1]:<port>` gagal boot kecuali variabel itu diatur965* `http://127.0.0.1:<port>` atau `http://[::1]:<port>` gagal boot kecuali variabel itu ditetapkan
935 966
936Untuk kolektor in-cluster, paparkan melalui HTTPS di alamat internal-nya sendiri, atau jalankan sebagai sidecar dengan variabel diatur.967Untuk kolektor dalam kluster, paparkan melalui HTTPS di alamat internalnya sendiri, atau jalankan sebagai sidecar dengan variabel yang ditetapkan.
937 968
938Ketika `HTTPS_PROXY` diatur, gateway mengirimkan export melalui proxy itu.969Ketika `HTTPS_PROXY` ditetapkan, gateway mengirim ekspor melalui proxy itu.
939 970
940Untuk menjangkau kolektor internal secara langsung, tambahkan ke `NO_PROXY` berdasarkan hostname atau berdasarkan domain dengan titik terkemuka seperti `.internal.example.com`, yang memerlukan Claude Code v2.1.277 atau lebih baru di server gateway. Pastikan gateway dapat menjangkau kolektor tanpa proxy. Entri tanpa titik terkemuka cocok hanya dengan nama yang tepat itu, bukan nama di bawahnya. Rentang CIDR tidak cocok.971Untuk 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.
941 972
942Dengan [proxy-only egress](#proxy-only-egress) diaktifkan, izinkan kolektor dalam proxy alih-alih, karena entri `NO_PROXY` apa pun menjaga proxy-only egress tetap mati.973Dengan [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.
943 974
944Telemetry off dalam CLI secara default. Ketika Anda mengatur `telemetry.forward_to` dan `listen.public_url`, gateway mengaktifkannya untuk klien yang terhubung dengan mendorong enam variabel lingkungan melalui `/managed/settings`:975Telemetri dimatikan dalam CLI secara default. Ketika Anda menetapkan `telemetry.forward_to` dan `listen.public_url`, gateway mengaktifkannya untuk klien yang terhubung dengan mendorong enam variabel lingkungan melalui `/managed/settings`:
945 976
946* `CLAUDE_CODE_ENABLE_TELEMETRY=1`977* `CLAUDE_CODE_ENABLE_TELEMETRY=1`
947* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, dan `OTEL_TRACES_EXPORTER`, masing-masing diatur ke `otlp` jika setidaknya satu tujuan `forward_to` mengaktifkan signal itu dan ke `none` sebaliknya978* `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` sebaliknya
948* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`979* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`
949* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`980* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`
950 981
951Ketika Anda [menambahkan label Anda sendiri](#add-your-own-labels), gateway juga mendorong `OTEL_RESOURCE_ATTRIBUTES`.982Ketika Anda [menambahkan label Anda sendiri](#add-your-own-labels), gateway juga mendorong `OTEL_RESOURCE_ATTRIBUTES`.
952 983
953Sebelum Claude Code v2.1.265 di server gateway, gateway mendorong ketiga selector exporter sebagai `otlp`, termasuk untuk signal yang tidak ada tujuan yang opt into.984Sebelum Claude Code v2.1.265 di server gateway, gateway mendorong ketiga pemilih eksportir sebagai `otlp`, termasuk untuk sinyal yang tidak ada tujuan yang memilih.
954 985
955Endpoint yang didorong dibangun dari URL publik, jadi metrik dan log tidak memerlukan konfigurasi OTEL dari developer atau kebijakan.986Endpoint yang didorong dibangun dari URL publik, jadi metrik dan log tidak memerlukan konfigurasi OTEL dari pengembang atau kebijakan.
956 987
957Developer yang masuk melalui `/login` tidak dapat mengalihkan export dengan konfigurasi OTEL mereka sendiri:988Pengembang yang masuk melalui `/login` tidak dapat mengalihkan ekspor dengan konfigurasi OTEL mereka sendiri:
958 989
959* **Variabel yang diatur secara lokal**: Claude Code menerapkan variabel yang didorong pada tingkat terkelola, jadi masing-masing menimpa nilai yang developer atur untuk itu secara lokal.990* **Variabel yang ditetapkan secara lokal**: Claude Code menerapkan variabel yang didorong di tingkat yang dikelola, jadi masing-masing menimpa nilai yang ditetapkan pengembang untuk itu secara lokal.
960* **Endpoint yang dikonfigurasi secara lokal**: dengan export OTLP/HTTP diaktifkan, CLI mengabaikan endpoint yang dikonfigurasi secara lokal apa pun, terlepas dari apakah gateway mendorong variabel telemetry. Export-nya pergi ke gateway kecuali kebijakan [menamai kolektor Anda sebagai endpoint](#export-directly-to-your-collector).991* **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).
961 992
962Tanpa tujuan `forward_to` untuk signal, gateway menerima dan membuangnya. Jika developer sudah mengekspor telemetry Claude Code ke salah satu kolektor Anda, tambahkan sebagai tujuan `forward_to`, dengan logs atau traces diaktifkan jika mereka mengekspor itu, jadi terus menerima data mereka setelah mereka masuk. Untuk melewati relay alih-alih, [namai kolektor dalam kebijakan](#export-directly-to-your-collector).993Tanpa 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).
963 994
964[Traces](/docs/id/monitoring-usage#traces-beta) juga memerlukan `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` pada setiap klien. Atur dalam blok `env` kebijakan terkelola, karena gateway tidak mendorongnya. Developer menyetujuinya dalam dialog [security approval](#managed) yang sama yang endpoint yang didorong sudah trigger.995[Jejak](/docs/id/monitoring-usage#traces-beta) juga memerlukan `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` pada setiap klien. Atur dalam blok `env` kebijakan yang dikelola, karena gateway tidak mendorongnya. Pengembang menyetujuinya dalam [dialog persetujuan keamanan](#managed) yang sama yang endpoint yang didorong sudah memicu.
965 996
966Atur ke `1` hanya dalam kebijakan yang grup-nya Anda ingin trace. Kebijakan yang tidak mengaturnya mewarisi nilai dari kebijakan catch-all `match: {}` Anda jika kebijakan itu mengatur satu, per [merge rules](#managed). Untuk menjaga klien grup dari mengirim trace bahkan ketika developer mengatur variabel secara lokal, atur ke `0` dalam kebijakan grup itu.997Atur ke `1` hanya dalam kebijakan yang grup Anda ingin dilacak. 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.
967 998
968Kedua encoding OTLP protobuf dan JSON direlai, dan backend apa pun yang kompatibel dengan OpenTelemetry bekerja sebagai tujuan.999Kedua pengkodean OTLP protobuf dan JSON diteruskan, dan backend yang kompatibel OpenTelemetry apa pun bekerja sebagai tujuan.
969 1000
970<h4 id="add-your-own-labels">1001<h4 id="add-your-own-labels">
971 Add your own labels1002 Tambahkan label Anda sendiri
972</h4>1003</h4>
973 1004
974Untuk menempatkan label tetap seperti `service.namespace` atau `deployment.environment.name` pada telemetry sesi yang masuk melalui gateway, atur `telemetry.resource_attributes`. Setiap label adalah atribut resource OpenTelemetry, dan setiap tujuan menerima label yang sama.1005Untuk 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.
975 1006
976Sesi mendapat label hanya ketika Anda juga mengatur `telemetry.forward_to` dan `listen.public_url`. Contoh ini menambahkan dua label:1007Sesi mendapatkan label hanya ketika Anda juga menetapkan `telemetry.forward_to` dan `listen.public_url`. Contoh ini menambahkan dua label:
977 1008
978```yaml theme={null}1009```yaml theme={null}
979telemetry:1010telemetry:
984 deployment.environment.name: prod1015 deployment.environment.name: prod
985```1016```
986 1017
987Gateway menolak untuk memulai ketika label melanggar salah satu aturan ini, dan error startup menamai label:1018Gateway menolak untuk memulai ketika label melanggar salah satu aturan ini, dan kesalahan startup menamai label:
988 1019
989* Nama menggunakan hanya huruf, digit, `.`, `_`, dan `-`1020* Nama menggunakan hanya huruf, digit, `.`, `_`, dan `-`
990* 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`1021* 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`
991* Nilai adalah printable ASCII non-kosong tanpa spasi dan tidak ada `, ; = \ " %`1022* Nilai adalah ASCII yang dapat dicetak non-kosong tanpa spasi dan tidak ada `, ; = \ " %`
992* Nilai paling banyak 255 karakter seperti yang dihitung gateway setelah percent-encoding, jadi `/`, `:`, dan `@` masing-masing dihitung sebagai tiga1023* Nilai paling banyak 255 karakter saat gateway menghitungnya setelah pengkodean persen, jadi `/`, `:`, dan `@` masing-masing menghitung sebagai tiga
993* Nilai adalah teks, jadi kutip angka, `true`, atau `false`1024* Nilai adalah teks, jadi kutip angka, `true`, atau `false`
994 1025
995Anda memerlukan Claude Code v2.1.281 atau lebih baru di server gateway untuk mengatur `telemetry.resource_attributes`. Gateway sebelumnya menolak untuk memulai ketika menemukan kunci. Upgrade setiap replika sebelum Anda menambahkan kunci, dan hapus kunci sebelum Anda rollback ke versi sebelumnya.1026Anda 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.
996 1027
997Sesi terminal yang masuk melalui `/login` menerima label sebagai `OTEL_RESOURCE_ATTRIBUTES`, didorong dengan [variabel telemetry](#telemetry) lainnya. Jika Anda mengatur `OTEL_RESOURCE_ATTRIBUTES` dalam blok `env` kebijakan, sesi terminal yang cocok dengan kebijakan itu mendapat nilai itu alih-alih label. Claude Desktop menerima label dari gateway bersama `user.email` dan atribut identitas lainnya.1028Sesi 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.
998 1029
999Claude Code juga menyalin setiap label ke setiap data point metrik, jadi Anda dapat memfilter metrik berdasarkannya dalam backend yang tidak mengindeks atribut resource. Untuk mematikan salinan itu, lihat [Metrics cardinality control](/docs/id/monitoring-usage#metrics-cardinality-control).1030Claude 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](/docs/id/monitoring-usage#metrics-cardinality-control).
1000 1031
1001<h4 id="export-directly-to-your-collector">1032<h4 id="export-directly-to-your-collector">
1002 Export directly to your collector1033 Ekspor langsung ke kolektor Anda
1003</h4>1034</h4>
1004 1035
1005Untuk memiliki sesi yang masuk melalui `/login` mengirim telemetry langsung ke kolektor Anda alih-alih melalui relay, atur `OTEL_EXPORTER_OTLP_ENDPOINT` ke URL dasar `https://` kolektor dalam blok `env` [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 signal di sana melalui OTLP/HTTP. Memerlukan Claude Code v2.1.265 atau lebih baru pada mesin setiap developer. Klien sebelumnya mengekspor melalui relay.1036Untuk 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 yang dikelola](#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.
1006 1037
1007Untuk mengautentikasi ke kolektor, atur `OTEL_EXPORTER_OTLP_HEADERS` dalam blok `env` yang sama. Sesi tidak pernah mengirim token sesi gateway developer ke kolektor yang dinamai dengan cara ini.1038Untuk 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.
1008 1039
1009Ketika Anda menambah atau mengubah endpoint ini dalam kebijakan, Claude Code meminta setiap developer untuk menyetujuinya dalam [security approval dialog](#managed) sebelum menerapkannya dalam sesi interaktif.1040Ketika 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.
1010 1041
1011Claude Code memeriksa endpoint sebelum mengekspor signal langsung, dan menyimpan signal itu di relay ketika pemeriksaan gagal. Pemeriksaan termasuk:1042Claude Code memeriksa endpoint sebelum mengekspor sinyal secara langsung, dan menyimpan sinyal itu di relay ketika pemeriksaan gagal. Pemeriksaan termasuk:
1012 1043
1013* Endpoint berasal dari gateway itu sendiri. Jika Anda mengatur variabel yang sama dalam profil MDM atau `managed-settings.json` lokal, export tetap di relay.1044* Endpoint berasal dari gateway itu sendiri. Jika Anda menetapkan variabel yang sama dalam profil MDM atau `managed-settings.json` lokal, ekspor tetap di relay.
1014* URL menggunakan `https://`, atau `http://` ke alamat loopback1045* URL menggunakan `https://`, atau `http://` ke alamat loopback
1015* URL menyelesaikan ke path yang berakhir dalam `/v1/<signal>`, tanpa query atau fragment. Claude Code membangun path itu sendiri dari variabel generik. Ini menggunakan variabel per-signal seperti `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` seperti yang ditulis, jadi sertakan path lengkap di sana.1046* 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.
1016* URL bukan host gateway itu sendiri. Endpoint yang ditujukan ke gateway menyimpan path relay dan token sesi-nya.1047* URL bukan host gateway itu sendiri. Endpoint yang ditujukan ke gateway menyimpan jalur relay dan token sesinya.
1017* Baik Anda maupun developer tidak mengonfigurasi [`otelHeadersHelper`](/docs/id/settings-reference#otelheadershelper) dalam sumber pengaturan apa pun. Dengan helper yang dikonfigurasi, setiap signal tetap di relay.1048* Baik Anda maupun pengembang telah mengonfigurasi [`otelHeadersHelper`](/docs/id/settings-reference#otelheadershelper) dalam sumber pengaturan apa pun. Dengan helper yang dikonfigurasi, setiap sinyal tetap di relay.
1018 1049
1019Endpoint yang Anda namai mengubah hanya di mana export pergi. Anda masih memilih signal mana yang mengekspor sama sekali dengan selector `OTEL_*_EXPORTER`.1050Endpoint yang Anda namai mengubah hanya di mana ekspor pergi. Anda masih memilih sinyal mana yang mengekspor sama sekali dengan pemilih `OTEL_*_EXPORTER`.
1020 1051
1021Endpoint saja tidak mengaktifkan export, jadi juga atur variabel yang melakukannya, kecuali gateway sudah mendorongnya:1052Endpoint saja tidak mengaktifkan ekspor, jadi juga atur variabel yang melakukannya, kecuali gateway sudah mendorongnya:
1022 1053
1023* Jika gateway sudah [mendorong variabel telemetry](#telemetry), mereka mencakup enablement, selector, dan protokol, dan endpoint eksplisit Anda menimpa nilai `<public_url>` yang didorong. Atur selector `OTEL_*_EXPORTER` ke `otlp` sendiri hanya untuk signal yang tidak ada tujuan `forward_to` yang mengaktifkan.1054* 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.
1024* Jika tidak, juga atur `CLAUDE_CODE_ENABLE_TELEMETRY=1`, selector `OTEL_*_EXPORTER`, dan `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.1055* Jika tidak, juga atur `CLAUDE_CODE_ENABLE_TELEMETRY=1`, pemilih `OTEL_*_EXPORTER`, dan `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.
1025 1056
1026Ketika developer masuk keluar, atau masuk ke gateway yang berbeda, export ke kolektor berhenti dan Claude Code menjatuhkan setiap batch yang tersisa daripada mengirimkannya.1057Ketika pengembang keluar, atau masuk ke gateway yang berbeda, ekspor ke kolektor berhenti dan Claude Code menjatuhkan setiap batch yang tersisa daripada mengirimkannya.
1027 1058
1028<h4 id="when-a-destination-fails">1059<h4 id="when-a-destination-fails">
1029 When a destination fails1060 Ketika tujuan gagal
1030</h4>1061</h4>
1031 1062
1032Gateway tidak buffer, retry, atau menyimpan telemetry, jadi itu menjatuhkan export yang tidak mencapai tujuan daripada mengirimkannya terlambat. Setiap tujuan berhasil atau gagal sendiri, dan klien yang mengekspor menerima respons sukses baik cara, jadi pengiriman yang gagal muncul hanya dalam log gateway.1063Gateway 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.
1033 1064
1034Setelah lima pengiriman berturut-turut yang gagal ke tujuan, gateway menjeda penerusan ke dalamnya dalam peregangan 30 detik, mencatat setiap jeda, sampai pengiriman berhasil. Respons error apa pun, timeout, atau error koneksi dihitung sebagai pengiriman yang gagal, kecuali `400`, `413`, `415`, `422`, dan `431`, yang berarti kolektor menolak payload export itu sebagai salah bentuk atau terlalu besar.1065Setelah lima pengiriman berturut-turut yang gagal ke tujuan, gateway menjeda penerusan ke dalamnya dalam peregangan 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 muatan ekspor itu sebagai salah format atau terlalu besar.
1035 1066
1036Payload yang ditolak tidak memajukan atau mereset failure count: gateway terus meneruskan ke tujuan dan mencatat peringatan yang menamakannya dan status, pada penolakan pertama tujuan dan setiap seratus setelah.1067Muatan 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.
1037 1068
1038<h3 id="http-tuning">1069<h3 id="http-tuning">
1039 HTTP tuning1070 Penyetelan HTTP
1040</h3>1071</h3>
1041 1072
1042Empat blok tingkat atas opsional, `access_control`, `limits`, `timeouts`, dan `rate_limits`, menyetel permukaan HTTP. Default cocok untuk sebagian besar deployment.1073Empat blok tingkat atas opsional, `access_control`, `limits`, `timeouts`, dan `rate_limits`, menyetel permukaan HTTP. Default cocok untuk sebagian besar deployment.
1043 1074
1044| Block | Key | Default | Deskripsi |1075| Blok | Kunci | Default | Deskripsi |
1045| - | - | - | - |1076| - | - | - | - |
1046| `access_control` | `allow_cidrs` / `deny_cidrs` | empty | 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` non-empty gateway adalah default-deny. `/healthz` dan `/readyz` dikecualikan dari `allow_cidrs`. Ketika proxy terpercaya 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 limits per-IP dan audit. |1077| `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 batas laju per-IP dan audit. |
1047| `limits` | `max_request_bytes` | 32 MiB | Max inbound request body; permintaan yang terlalu besar mendapat `413` sebelum body dibuffer. Naikkan untuk permintaan file atau gambar besar. |1078| `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. |
1048| `limits` | `max_request_header_bytes` | unset | Ketika diatur, header yang terlalu besar mengembalikan `431` |1079| `limits` | `max_request_header_bytes` | tidak diatur | Ketika diatur, header yang terlalu besar mengembalikan `431` |
1049| `limits` | `max_url_length` | unset | Ketika diatur, URL yang terlalu panjang mengembalikan `414` |1080| `limits` | `max_url_length` | tidak diatur | Ketika diatur, URL yang terlalu panjang mengembalikan `414` |
1050| `timeouts` | `upstream_ttfb_ms` | 120000 | Max wait untuk header respons upstream (time to first byte). Response body kemudian stream tanpa wall-clock cap. Berlaku ke jalur upstream Anthropic langsung; pada setiap penyedia lainnya, gateway menunggu hingga satu jam untuk respons mulai. |1081| `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. |
1051| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Per-IP rate limit pada endpoint device-authorization yang tidak terautentikasi. Naikkan untuk org besar di belakang IP egress bersama atau NAT. [Large rollouts](/docs/id/claude-apps-gateway-deploy#large-rollouts) menunjukkan cara mengukurnya. Limit ini berlaku hanya ke alur sign-in device-grant, bukan ke inference `/v1/messages`. Lihat [User-code brute-force resistance](/docs/id/claude-apps-gateway-deploy#user-code-brute-force-resistance). |1082| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Batas laju per-IP pada endpoint otorisasi perangkat yang tidak diautentikasi. Naikkan untuk org besar di belakang IP egress bersama atau NAT. [Peluncuran besar](/docs/id/claude-apps-gateway-deploy#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](/docs/id/claude-apps-gateway-deploy#user-code-brute-force-resistance). |
1052| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Per-IP rate limit pada pengajuan `user_code` di `/device`. Ini adalah apa yang menghentikan seseorang dari menebak kode developer lain. [Large rollouts](/docs/id/claude-apps-gateway-deploy#large-rollouts) menunjukkan seberapa jauh untuk menaikkannya. |1083| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Batas laju per-IP pada pengajuan `user_code` di `/device`. Ini adalah apa yang menghentikan seseorang dari menebak kode pengembang lain. [Peluncuran besar](/docs/id/claude-apps-gateway-deploy#large-rollouts) menunjukkan seberapa jauh untuk menaikkannya. |
1053 1084
1054Jika 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 menjangkaunya. Itu penting karena gateway dapat mendorong [pengaturan terkelola](#managed) yang menjalankan perintah pada mesin developer.1085Jika 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 yang dikelola](#managed) yang menjalankan perintah di mesin pengembang.
1055 1086
1056Sementara `allow_cidrs` kosong, gateway memperingatkan di dua tempat, tanpa mengubah cara itu menjawab permintaan apa pun:1087Sementara `allow_cidrs` kosong, gateway memperingatkan di dua tempat, tanpa mengubah cara itu menjawab permintaan apa pun:
1057 1088
1058* **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 developer Anda terhubung dari. Jika Anda mengikat gateway ke alamat loopback dan tidak mengatur `trusted_proxies` atau `public_url`, seperti dalam pengembangan lokal, peringatan tidak muncul.1089* **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.
1059* **Saat runtime**: pertama kali permintaan tiba dari alamat di luar rentang pribadi itu, gateway mencatat peringatan dan memancarkan event audit [`access.public_client`](/docs/id/claude-apps-gateway-deploy#logs) yang membawa IP klien. Keduanya tembak 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, jadi probe kesehatan dari rentang publik tidak memicunya.1090* **Saat runtime**: pertama kali permintaan tiba dari alamat di luar rentang pribadi itu, gateway mencatat peringatan dan memancarkan acara audit [`access.public_client`](/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.
1060 1091
1061Kedua sinyal menggunakan alamat klien seperti gateway menyelesaikannya. Jika load balancer, port-forward, atau tunnel meneruskan traffic dan tidak terdaftar dalam `listen.trusted_proxies`, gateway melihat alamat relay, yang biasanya pribadi, jadi baik peringatan runtime maupun daftar allow pribadi menangkapnya.1092Kedua 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, jadi baik peringatan runtime maupun daftar allow pribadi menangkapnya.
1062 1093
1063Di belakang front end seperti itu, atur [`listen.trusted_proxies`](#listen) terlebih dahulu sehingga gateway melihat alamat klien nyata, dan jaga gateway dan segalanya di depannya tidak dapat dijangkau dari internet publik terlepas.1094Di 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 terlepas.
1064 1095
1065<h3 id="load_test_mode">1096<h3 id="load_test_mode">
1066 `load_test_mode`1097 `load_test_mode`
1067</h3>1098</h3>
1068 1099
1069Blok `load_test_mode` memungkinkan Anda load test gateway tanpa memanggil penyedia model. Saat diaktifkan, gateway membangun dan menandatangani setiap permintaan penyedia seperti biasa, membuangnya alih-alih mengirimkannya, dan streaming respons kaleng kembali melalui jalur respons normalnya. Respons adalah teks pengisi yang dimulai dengan kalimat mengatakan itu kaleng.1100Blok `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.
1070 1101
1071Memerlukan Claude Code v2.1.282 atau lebih baru di server gateway. Versi sebelumnya menolak untuk memulai ketika menemukan kunci. Upgrade setiap replika sebelum Anda menambahkan blok, dan hapus blok sebelum Anda rollback.1102Memerlukan 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.
1072 1103
1073Contoh di bawah mengaktifkan mode dengan default, respons kira-kira 750 token teks yang di-stream selama sekitar 10 detik:1104Contoh di bawah mengaktifkan mode dengan default, respons sekitar 750 token teks yang streaming selama sekitar 10 detik:
1074 1105
1075```yaml theme={null}1106```yaml theme={null}
1076load_test_mode:1107load_test_mode:
1081 1112
1082| Field | Diperlukan | Deskripsi |1113| Field | Diperlukan | Deskripsi |
1083| - | - | - |1114| - | - | - |
1084| `enabled` | Ya | `true` mengaktifkan mode. `false` menyimpan angka Anda dalam file dengan mode off. Gateway menolak untuk memulai jika blok ada tanpa itu. |1115| `enabled` | Ya | `true` mengaktifkan mode. `false` menyimpan angka Anda dalam file dengan mode mati. Gateway menolak untuk memulai jika blok ada tanpa itu. |
1085| `reply_tokens` | Tidak | Default `750`. Kira-kira berapa banyak token teks yang setiap respons kaleng bawa, angka bulat dari 1 hingga 100000. |1116| `reply_tokens` | Tidak | Default `750`. Kira-kira berapa banyak token teks yang dibawa setiap respons kalengan, angka bulat dari 1 hingga 100000. |
1086| `reply_seconds` | Tidak | Default `9.5`. Berapa lama respons yang di-stream memakan waktu, dari 0 hingga 600. `0` mengirimkan seluruh respons sekaligus. Respons terhadap permintaan non-streaming selalu kembali sekaligus. |1117| `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. |
1087 1118
1088Load test dalam mode ini mencakup gateway, Postgres Anda, dan segalanya di depan gateway. Ini tidak mencakup batas, kecepatan, atau jalur jaringan penyedia.1119Tes beban dalam mode ini mencakup gateway, Postgres Anda, dan semua yang di depan gateway. Itu tidak mencakup batas, kecepatan, atau jalur jaringan penyedia.
1089 1120
1090Tidak ada permintaan model yang dikirim ke penyedia, jadi CPU replika per permintaan adalah estimasi dan membaca lebih rendah dari produksi, yang juga mengenkripsi traffic-nya ke penyedia. Konfirmasi jumlah replika dengan pilot kecil terhadap penyedia nyata. Sebelum v2.1.283, estimasi membaca jauh lebih rendah.1121Tidak ada permintaan model yang dikirim ke penyedia, jadi CPU replika per permintaan adalah perkiraan dan membaca 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 membaca jauh lebih rendah.
1091 1122
1092Saat mode diaktifkan, permintaan dapat membawa header `x-load-test-user` yang menyimpan angka bulat hingga tujuh digit. Gateway menghitung setiap angka sebagai developer terpisah, dengan email dan grup developer yang token-nya datang dengan permintaan.1123Sementara 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.
1093 1124
1094Berikan deployment load-test database kosong sendiri, karena gateway menolak untuk memulai dengan mode diaktifkan terhadap database di mana developer apa pun sudah menghabiskan apa pun.1125Berikan 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.
1095 1126
1096<Warning>1127<Warning>
1097 Jangan pernah mengaktifkan ini untuk gateway yang developer gunakan. Setiap permintaan mendapat respons kaleng dan tidak ada model yang dipanggil. Gateway mencatat peringatan `load_test_mode is on` saat boot dan menandai setiap event audit [`inference`](/docs/id/claude-apps-gateway-deploy#logs) dengan `load_test: true` saat mode diaktifkan.1128 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 `inference` [](/docs/id/claude-apps-gateway-deploy#logs) dengan `load_test: true` sementara mode aktif.
1098</Warning>1129</Warning>
1099 1130
1100<h2 id="complete-example">1131<h2 id="complete-example">