Skip to main content
Variabel lingkungan dapat mengontrol perilaku Claude Code seperti pemilihan model, autentikasi, perutean permintaan, dan pengalihan fitur. Banyak perilaku yang sama juga dapat dikonfigurasi melalui bidang file pengaturan, bendera CLI, atau perintah dalam sesi seperti /model. Halaman ini mencakup cara untuk:

Atur environment variable

Variabel yang Anda atur di shell Anda berlaku untuk sesi terminal tersebut, sementara variabel dalam file pengaturan berlaku setiap kali claude dijalankan.

Atur variabel di shell Anda

Atur variabel sebelum meluncurkan claude:
Untuk mengaturnya untuk setiap sesi, tambahkan baris export ke ~/.bashrc, ~/.zshrc, atau file profil shell Anda.
Baris penugasan tidak mencetak apa pun saat berhasil. Untuk mengonfirmasi bahwa variabel telah diatur, cetak variabel tersebut di shell yang sama:

Atur variabel di file pengaturan

Tambahkan variabel di bawah kunci env dalam file settings.json, buat file jika belum ada. Claude Code membacanya langsung dari file, jadi variabel tersebut berlaku tidak peduli bagaimana claude diluncurkan. Sesi yang sedang berjalan menerapkan nilai baru dan yang diubah ke lingkungannya saat Anda menyimpan file, tetapi fitur yang membaca variabelnya sekali saat startup, seperti pemantauan OpenTelemetry, mempertahankan nilai startupnya sampai Anda meluncurkan kembali. Menghapus variabel dari file tidak membatalkan pengaturannya dalam sesi yang sedang berjalan; penghapusan berlaku saat berikutnya Anda meluncurkan claude.
~/.claude/settings.json
Claude Code menyalin nilai-nilai ini ke lingkungannya persis seperti yang ditulis. Tidak ada shell yang memprosesnya, sehingga singkatan seperti ~ atau $HOME tetap seperti yang diketik. Untuk variabel yang menerima path, seperti CLAUDE_CONFIG_DIR, tulis path absolut: "CLAUDE_CONFIG_DIR": "/home/you/.claude-work". File yang Anda pilih mengontrol siapa variabel berlaku untuk: Lihat File pengaturan untuk mengetahui di mana setiap file berada dan Prioritas pengaturan untuk mengetahui bagaimana mereka bergabung saat lebih dari satu mengatur variabel yang sama.

Urutan Prioritas

Beberapa perilaku memiliki baik variabel lingkungan maupun kunci pengaturan khusus, dan mana yang dibaca Claude Code terlebih dahulu berbeda per kunci. Untuk ANTHROPIC_MODEL dan CLAUDE_CODE_AUTO_CONNECT_IDE, Claude Code membaca variabel terlebih dahulu dan hanya menggunakan pengaturan model atau autoConnectIde ketika variabel tidak diatur. Untuk pasangan yang Anda atur, periksa baris variabel di bawah ini dan entri kunci pada referensi pengaturan. Ketika variabel yang sama diatur di shell Anda dan blok env file pengaturan, nilai file pengaturan berlaku di sebagian besar sesi. Claude Code menulis setiap entri env ke dalam lingkungan proses, menggantikan nilai yang diwarisi dari shell. Bagaimana nilai env berinteraksi dengan shell Anda mencakup sesi yang mempertahankan nilai yang diwarisi sebagai gantinya, dan pengaturan env mengatakan kapan pengaturan tersebut diterapkan. Beberapa variabel adalah kasus khusus; pengaturan env mencantumkan pengecualiannya. Dalam file pengaturan Anda dapat mengatur variabel tetapi Anda tidak dapat menghapusnya. Untuk mengganti variabel yang tidak dapat Anda batalkan, seperti CLAUDE_CODE_USE_VERTEX yang sudah usang yang diekspor oleh profil shell yang tidak Anda kontrol, atur ke string kosong dalam blok env: "CLAUDE_CODE_USE_VERTEX": "". Claude Code memperlakukan nilai kosong sebagai tidak diatur untuk pemilihan penyedia. Subproses masih mewarisi nilai kosong. Antara file pengaturan, nilai env mengikuti urutan prioritas pengaturan, jadi entri pengaturan yang dikelola mengganti variabel yang sama dalam pengaturan pengguna atau proyek. Pengaturan proyek dan lokal tidak dapat mengatur beberapa variabel, seperti CLAUDE_CONFIG_DIR dan variabel pengekspor OpenTelemetry. Variabel yang Claude Code abaikan dalam env mencantumnya, bersama dengan nilai off OpenTelemetry yang masih berlaku. Bagaimana variabel lingkungan berinteraksi dengan bendera CLI dan perintah dalam sesi bervariasi per fitur: --model dan /model mengganti ANTHROPIC_MODEL, sementara CLAUDE_CODE_EFFORT_LEVEL mengganti --effort dan /effort. Ketika variabel berinteraksi dengan sumber konfigurasi lain, barisnya dalam daftar Variabel menyatakan urutan prioritas atau menautkan ke halaman yang mendokumentasikannya. Claude Code membaca environment variable shell saat startup, jadi perubahan pada variabel tersebut berlaku saat Anda meluncurkan claude berikutnya. Variabel yang diatur di bawah kunci env dalam file pengaturan diterapkan kembali ke sesi yang sedang berjalan ketika file berubah, dengan pengecualian startup-only yang dijelaskan dalam Mengatur variabel dalam file pengaturan.

Variabel

Variabel numerik seperti timeout, anggaran token, dan jumlah retry menerima notasi ilmiah dan penulisan dengan pemisah digit selain digit biasa, kecuali jika baris suatu variabel menyatakan bahwa variabel tersebut hanya menerima digit biasa. Misalnya, Claude Code membaca 2e3 sebagai 2000 dan 64_000 sebagai 64000. Sebelum v2.1.211, penulisan ini dapat secara diam-diam menetapkan nilai yang jauh lebih kecil, seperti 1e6 yang menetapkan timeout menjadi 1.
Untuk variabel yang mengaktifkan atau menonaktifkan suatu perilaku, tetapkan 1, true, yes, atau on untuk mengaktifkannya dan 0, false, no, atau off untuk menonaktifkannya, dengan huruf besar atau kecil apa pun.Beberapa variabel hanya membaca apakah Anda menetapkannya atau tidak, sehingga nilai apa pun yang tidak kosong termasuk 0 akan mengaktifkan perilaku tersebut, dan Anda menonaktifkan perilaku tersebut dengan menghapus variabel atau menetapkannya ke nilai kosong. Variabel-variabel berikut bekerja dengan cara tersebut:
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
  • DISABLE_TELEMETRY
  • DISABLE_ERROR_REPORTING
  • CLAUDE_CODE_TMUX_TRUECOLOR
  • FALLBACK_FOR_ALL_PRIMARY_MODELS
  • IS_DEMO
Satu variabel lain memiliki aturannya sendiri: FORCE_HYPERLINK membaca angka, sehingga hanya 0 yang menonaktifkannya. Baris setiap variabel juga menyatakan aturannya sendiri.
Variabel exporter OpenTelemetry standar (OTEL_METRICS_EXPORTER, OTEL_LOGS_EXPORTER, OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_PROTOCOL, OTEL_EXPORTER_OTLP_HEADERS, OTEL_METRIC_EXPORT_INTERVAL, OTEL_RESOURCE_ATTRIBUTES, dan varian khusus sinyal) juga didukung. Lihat Monitoring untuk detail konfigurasi. Atur CLAUDE_CODE_ENABLE_TELEMETRY dan variabel OpenTelemetry yang mengaktifkan ekspor, memilih tujuannya, atau menangkap konten di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Claude Code mengabaikannya dalam pengaturan proyek dan lokal, kecuali nilai off yang dijelaskan di bagian tersebut. OTEL_RESOURCE_ATTRIBUTES serta variabel interval ekspor, timeout, dan kompresi, seperti OTEL_METRIC_EXPORT_INTERVAL, tetap berlaku dari pengaturan proyek dan lokal.

Apa yang dihapus oleh pembersihan lingkungan subprocess

Saat Anda mengatur CLAUDE_CODE_SUBPROCESS_ENV_SCRUB ke 1, Claude Code menghapus kredensial dari lingkungan subprocess yang dijalankannya, seperti perintah Bash, hook, dan server MCP stdio. Hal ini mengurangi apa yang dapat dibaca oleh serangan prompt injection. Proses Claude Code tetap menyimpan kredensial untuk panggilan API miliknya sendiri. Pembersihan ini mengenali kredensial berdasarkan nama variabelnya atau berdasarkan bentuk nilainya, jadi gunakan sebagai salah satu lapisan bersama aturan izin yang sempit, bukan sebagai satu-satunya kontrol. Tabel berikut menunjukkan apa yang dilakukan pembersihan terhadap contoh variabel: Karena pembersihan membiarkan GITHUB_TOKEN tetap ada, berikan job GitHub Actions permissions yang paling sempit yang dibutuhkannya. Untuk menghapus token GitHub dari perintah Bash yang dijalankan di dalam sandbox, tambahkan entri deny di bawah sandbox.credentials. Biarkan pembersihan tidak diatur jika sebuah subprocess membutuhkan salah satu variabel yang dihapus. Di Linux, pembersihan juga menjalankan subprocess Bash dalam PID namespace yang terisolasi sehingga subprocess tersebut tidak dapat membaca lingkungan proses host melalui /proc. Sebagai efek sampingnya, ps, pgrep, dan kill tidak dapat melihat atau mengirim sinyal ke proses host. Sebelum v2.1.251, pembersihan menghapus ANTHROPIC_API_KEY dan AWS_SECRET_ACCESS_KEY serta membiarkan contoh variabel lain dalam tabel tidak berubah.

Fitur yang memerlukan pengambilan feature flag

Claude Code mengaktifkan beberapa fitur melalui feature flag yang diambilnya dari Anthropic. Claude Code melewati pengambilan tersebut dalam sesi-sesi berikut:
  • Sesi tempat Anda mengatur DISABLE_GROWTHBOOK, DISABLE_TELEMETRY, DO_NOT_TRACK, atau CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC; baris setiap variabel di tabel variabel menyebutkan nilai mana yang mematikan pengambilan
  • Sesi pada penyedia pihak ketiga, seperti Amazon Bedrock, Claude Platform on AWS, Google Cloud’s Agent Platform, atau Microsoft Foundry, kecuali jika platform host yang menyematkan Claude Code mengatur CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST
  • Sesi Claude apps gateway
Dengan pengambilan dimatikan, Anda tidak dapat:

Sesi pertama setelah instalasi atau upgrade

Dalam sesi pertama Anda setelah menginstal Claude Code, atau setelah upgrade ke versi yang menambahkan suatu fitur, fitur yang dibatasi flag dapat tidak tersedia. Sesi tersebut juga dapat dimulai dalam mode izin yang berbeda dari sesi-sesi Anda berikutnya. Saat Claude Code mengambil flag selama sesi tersebut, Claude Code menyimpannya di mesin, sehingga sesi Anda berikutnya di mesin tersebut memiliki fitur itu dan mode izin awal yang biasa. Setelah instalasi baru, dalam sesi non-interaktif seperti claude -p, Agent SDK, atau ekstensi VS Code, Claude Code dapat memperoleh flag sebelum memilih mode izin awal, tetapi tidak selalu menunggunya. Dalam pengaturan seperti berikut, sesi setelah sesi pertama juga dimulai tanpa flag yang baru diambil:
  • Lingkungan bersih pada setiap run: jika setiap run dimulai di container CI, atau lingkungan lain mana pun tanpa flag yang disimpan oleh sesi sebelumnya, setiap run adalah sesi pertama
  • Token gateway tanpa kunci API: jika Anda melakukan autentikasi dengan ANTHROPIC_AUTH_TOKEN dan tanpa kunci API, dan ANTHROPIC_BASE_URL mengarah ke host selain milik Anthropic, seperti LLM gateway, Claude Code tidak memiliki kredensial untuk mengambil flag
Untuk memilih mode izin yang digunakan sesi dalam pengaturan ini saat dimulai, lihat Memulai dalam mode izin yang berbeda.

Lihat juga