Skip to main content
環境變數可以控制 Claude Code 的行為,例如模型選擇、身份驗證、請求路由和功能切換。許多相同的行為也可以透過設定檔欄位、CLI 旗標或工作階段內命令(如 /model)進行設定。 本頁涵蓋以下內容:

設定環境變數

您在 shell 中設定的變數只在該終端機工作階段期間有效,而設定檔中的變數則在每次執行 claude 時都會套用。

在 shell 中設定變數

在啟動 claude 之前設定變數:
若要在每個工作階段都設定它,請將 export 行新增到 ~/.bashrc、~/.zshrc 或您的 shell 設定檔。
指派行在成功時不會列印任何內容。若要確認變數已設定,請在同一個 shell 中將其列印出來:

在設定檔中設定變數

在 settings.json 檔案的 env 鍵下新增變數,如果檔案不存在則建立它。Claude Code 會直接從檔案讀取它們,因此無論如何啟動 claude,它們都會生效。執行中的工作階段會在您儲存檔案時將新的和已變更的值套用到其環境,但在啟動時讀取其變數一次的功能(例如 OpenTelemetry 監控)會保留其啟動值,直到您重新啟動為止。從檔案中移除變數不會在執行中的工作階段中取消設定它;移除會在您下次啟動 claude 時生效。
~/.claude/settings.json
Claude Code 會依原樣將這些值複製到其環境中。這些值不會經過任何 shell 處理,因此 ~ 或 $HOME 等簡寫會保持輸入時的樣子。對於接受路徑的變數(例如 CLAUDE_CONFIG_DIR),請寫入絕對路徑:"CLAUDE_CONFIG_DIR": "/home/you/.claude-work"。 您選擇的檔案控制變數套用的對象: 請參閱 設定檔 以了解每個檔案的位置,以及 設定優先順序 以了解當多個檔案設定相同變數時它們如何結合。

優先順序

某些行為同時具有環境變數和專用設定鍵,Claude Code 讀取哪一個的順序因鍵而異。對於 ANTHROPIC_MODEL 和 CLAUDE_CODE_AUTO_CONNECT_IDE,Claude Code 會先讀取變數,只有在變數未設定時才使用 model 或 autoConnectIde 設定。對於您要設定的配對,請檢查下方變數的列,以及 設定參考 上的鍵項目。 當相同的變數同時在您的 shell 和設定檔 env 區塊中設定時,設定檔值會在大多數工作階段中套用。Claude Code 會將每個 env 項目寫入程序環境,取代從 shell 繼承的值。env 值如何與您的 shell 互動 涵蓋保留繼承值的工作階段,以及 env 設定 說明何時套用它們。少數變數有特殊處理;env 設定 列出例外。 在設定檔中,您可以設定變數,但無法移除變數。若要覆寫無法取消設定的變數,例如由您無法控制的 shell 設定檔匯出的過時 CLAUDE_CODE_USE_VERTEX,請在 env 區塊中將其設定為空字串:"CLAUDE_CODE_USE_VERTEX": ""。Claude Code 將空值視為未設定以進行提供者選擇。子程序仍會繼承空值。 在設定檔之間,env 值遵循 設定優先順序,因此受管設定項目會覆寫使用者或專案設定中的相同變數。專案和本機設定無法設定某些變數,例如 CLAUDE_CONFIG_DIR 和 OpenTelemetry 匯出器變數。Claude Code 在 env 中忽略的變數 列出它們,以及仍然適用的 OpenTelemetry 關閉值。 環境變數如何與 CLI 旗標和工作階段內命令互動因功能而異:--model 和 /model 會覆寫 ANTHROPIC_MODEL,而 CLAUDE_CODE_EFFORT_LEVEL 會覆寫 --effort 和 /effort。當變數與另一個設定來源互動時,變數 列表中的其列會說明優先順序或連結到記錄該項目的頁面。 Claude Code 在啟動時讀取 shell 環境變數,因此對它們的變更會在您下次啟動 claude 時生效。在設定檔中 env 鍵下設定的變數會在檔案變更時重新套用到執行中的工作階段,但 在設定檔中設定變數 所述的僅啟動時例外除外。

變數

數值型變數(例如逾時、token 預算與重試次數)除了純數字外,也接受科學記號與數字分隔符號寫法,除非該變數的列中註明僅接受純數字。例如,Claude Code 會將 2e3 讀取為 2000,將 64_000 讀取為 64000。在 v2.1.211 之前,這些寫法可能會在無提示的情況下設定成小得多的值,例如 1e6 會將逾時設定為 1。
對於開啟或關閉某項行為的變數,設定 1、true、yes 或 on 即可開啟,設定 0、false、no 或 off 即可關閉,不區分大小寫。有些變數只判斷是否已設定,因此任何非空值(包括 0)都會開啟該行為,而要關閉該行為,需取消設定該變數或將其設為空值。以下變數採用此方式:
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
  • DISABLE_TELEMETRY
  • DISABLE_ERROR_REPORTING
  • CLAUDE_CODE_TMUX_TRUECOLOR
  • FALLBACK_FOR_ALL_PRIMARY_MODELS
  • IS_DEMO
另有一個變數有自己的規則:FORCE_HYPERLINK 讀取的是數字,因此只有 0 會將其關閉。每個變數的列中也會說明其自己的規則。
也支援標準 OpenTelemetry 匯出器變數(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 以及特定訊號的變體)。設定詳細資訊請參閱監控。 請在您的 shell、使用者設定或受管設定中設定 CLAUDE_CODE_ENABLE_TELEMETRY,以及用於開啟匯出、選擇匯出目的地或擷取內容的 OpenTelemetry 變數。Claude Code 會在專案與本機設定中忽略它們,但該節所述的關閉值除外。OTEL_RESOURCE_ATTRIBUTES 以及匯出間隔、逾時與壓縮變數(例如 OTEL_METRIC_EXPORT_INTERVAL)在專案與本機設定中仍會生效。

子程序環境清除會移除哪些內容

當您將 CLAUDE_CODE_SUBPROCESS_ENV_SCRUB 設為 1 時,Claude Code 會從其啟動的子程序環境中移除憑證,例如 Bash 命令、hook 以及 stdio MCP 伺服器。這可減少提示詞注入攻擊所能讀取的內容。Claude Code 程序本身會保留這些憑證,以供其自身的 API 呼叫使用。 清除機制會依據變數名稱或其值的形式來辨識憑證,因此請將其作為一道防護層,搭配範圍狹窄的權限規則一起使用,而非當作唯一的控制手段。 下表說明清除機制對範例變數的處理方式: 由於清除機制會保留 GITHUB_TOKEN,請僅授予 GitHub Actions 工作所需的最小 permissions。若要從沙箱中的 Bash 命令移除 GitHub token,請在 sandbox.credentials 下新增一筆 deny 項目。 如果子程序需要其中某個會被移除的變數,請勿設定清除機制。 在 Linux 上,清除機制也會在隔離的 PID 命名空間中執行 Bash 子程序,使其無法透過 /proc 讀取主機程序的環境。其副作用是 ps、pgrep 和 kill 無法看到主機程序,也無法向其傳送訊號。 在 v2.1.251 之前,清除機制會移除 ANTHROPIC_API_KEY 和 AWS_SECRET_ACCESS_KEY,並保留表中其他範例變數不變。

需要擷取功能旗標的功能

Claude Code 會透過從 Anthropic 擷取的功能旗標來啟用部分功能。在下列工作階段中,Claude Code 會略過該擷取:
  • 設定了 DISABLE_GROWTHBOOK、DISABLE_TELEMETRY、DO_NOT_TRACK 或 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 的工作階段;變數表中每個變數的列會說明哪些值會關閉擷取
  • 使用第三方供應商(例如 Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry)的工作階段,除非嵌入 Claude Code 的主機平台設定了 CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST
  • Claude apps 閘道工作階段
關閉擷取時,您無法:

安裝或升級後的第一個工作階段

在您安裝 Claude Code 後,或升級到新增某項功能的版本後的第一個工作階段中,受旗標控管的功能可能不存在。該工作階段的起始權限模式也可能與您之後的工作階段不同。當 Claude Code 在該工作階段中擷取旗標時,會將其儲存在機器上,因此您在該機器上的下一個工作階段就會具備該功能及一般的起始權限模式。 全新安裝後,在非互動式工作階段(例如 claude -p、Agent SDK 或 VS Code 擴充功能)中,Claude Code 可能會在選擇起始權限模式之前取得旗標,但不一定會等待旗標。 在如下的設定中,第一個之後的工作階段也會在沒有新擷取旗標的情況下啟動:
  • 每次執行都是乾淨的環境:如果每次執行都在 CI 容器中啟動,或在任何沒有先前工作階段所儲存旗標的環境中啟動,則每次執行都是第一個工作階段
  • 沒有 API 金鑰的閘道 token:如果您使用 ANTHROPIC_AUTH_TOKEN 進行身分驗證且沒有 API 金鑰,而 ANTHROPIC_BASE_URL 指向 Anthropic 以外的主機(例如 LLM 閘道),Claude Code 就沒有可用來擷取旗標的憑證
若要選擇這些設定中工作階段的起始權限模式,請參閱以不同的權限模式啟動。

另請參閱