跳至主要內容

在 Claude 代碼中管理 API 金鑰環境變數

本週已更新

了解 Claude Code 中的身份驗證優先級

使用 Claude Code 時,了解身份驗證方法的優先級順序很重要,以避免意外的 API 費用並確保您使用的是預期的帳戶。

身份驗證的工作原理

  • Claude Code 優先使用環境變數 API 金鑰,而不是已驗證的訂閱。

  • 這是有意設計的行為,旨在為您提供選擇身份驗證方法的靈活性。

  • 當 API 金鑰設定為環境變數時,您將通過與該金鑰相關聯的 API 帳戶按 API 隨用隨付費率計費。

  • 即使您已使用 claude.ai 訂閱或不同的 Console 帳戶登入 Claude Code,也會發生這種情況。

最佳實踐

若要使用 Claude Code 搭配您的 Claude 訂閱:保持 ANTHROPIC_API_KEY 環境變數未設定。

  • 這可防止意外的 API 費用,並確保您使用訂閱包含的使用量。

  • 如果您偶爾需要使用特定的 API 金鑰,請僅在需要時暫時設定。

  • 定期在 Claude Code 中執行 /status 以驗證您目前的身份驗證方法。

身份驗證衝突警告

當您已驗證的訂閱與環境變數 API 金鑰之間存在衝突時,Claude Code 會通知您:

  1. 在初始設定期間,如果在您的環境變數中偵測到 API 金鑰,Claude Code 將要求您確認要使用哪種身份驗證方法。

  2. 成功登入後,如果兩個認證都處於活動狀態,您將看到通知,提醒您可能會產生意外的 API 費用。

檢查您目前的設定

若要驗證 API 金鑰是否設定為環境變數,請在 Claude Code 中執行 /status。這將顯示目前哪種身份驗證方法處於活動狀態。

若要直接檢查您的環境變數,請在終端機中執行以下命令之一(在 Claude Code 外部):

macOS/Linux:

echo $ANTHROPIC_API_KEY

Windows CMD:

echo %ANTHROPIC_API_KEY%

Windows PowerShell:

echo $env:ANTHROPIC_API_KEY

暫時設定 API 金鑰

如果您只需要為目前的終端機工作階段使用 API 金鑰:

macOS/Linux:

export ANTHROPIC_API_KEY='your-api-key-here'

Windows CMD:

set ANTHROPIC_API_KEY=your-api-key-here

Windows PowerShell:

$env:ANTHROPIC_API_KEY="your-api-key-here"

永久設定 API 金鑰環境變數

macOS/Linux:

針對 zsh(macOS 上的預設值):
bash
# 新增至 shell 設定檔
echo 'export ANTHROPIC_API_KEY="your-api-key-here"' >> ~/.zshrc

# 套用變更
source ~/.zshrc
針對 bash:
bash
# 新增至 shell 設定檔
echo 'export ANTHROPIC_API_KEY="your-api-key-here"' >> ~/.bash_profile

# 套用變更
source ~/.bash_profile

Windows:

  1. 開啟系統內容 → 進階 → 環境變數

  2. 在「使用者變數」下,按一下「新增」

  3. 變數名稱:ANTHROPIC_API_KEY

  4. 變數值:your-api-key-here

  5. 按一下「確定」並重新啟動您的終端機

移除 API 金鑰環境變數

macOS/Linux(暫時):

unset ANTHROPIC_API_KEY

macOS(永久):

# 從設定檔中移除
sed -i '' '/ANTHROPIC_API_KEY/d' ~/.zshrc
source ~/.zshrc

Linux(永久)

sed -i '/ANTHROPIC_API_KEY/d' ~/.zshrc

Windows CMD:

set ANTHROPIC_API_KEY=

Windows PowerShell:

Remove-Item Env:ANTHROPIC_API_KEY

Windows(永久):從系統環境變數設定中刪除該變數。

要避免的常見問題

  • 在 shell 設定檔中設定環境變數並忘記它們。

  • 變更環境變數後未重新啟動終端機。

  • 假設您在環境中設定了 API 金鑰時使用的是訂閱。

如有任何疑問,請聯絡我們的支援團隊

是否回答了您的問題?