Fundamentals
OAuth
OpenClaw 支援透過 OAuth 使用「訂閱驗證」,適用於提供此功能的提供者 (尤其是 OpenAI Codex(ChatGPT OAuth))。對 Anthropic 來說,實務上的區分 現在是:
- Anthropic API 金鑰:一般 Anthropic API 計費
- OpenClaw 內的 Anthropic Claude CLI / 訂閱驗證:Anthropic 員工 告訴我們,這種用法已再次允許
OpenAI Codex OAuth 明確支援用於 OpenClaw 這類外部工具。本頁說明:
對於生產環境中的 Anthropic,API 金鑰驗證是較安全的建議路徑。
- OAuth 權杖交換 的運作方式(PKCE)
- 權杖 儲存 在哪裡(以及原因)
- 如何處理 多個帳號(設定檔 + 每個工作階段的覆寫)
OpenClaw 也支援 提供者 Plugin,可隨附其自己的 OAuth 或 API 金鑰 流程。透過以下方式執行:
openclaw models auth login --provider <id>
權杖匯集處(存在原因)
OAuth 提供者通常會在登入/重新整理流程期間產生 新的重新整理權杖。某些提供者(或 OAuth 用戶端)可能會在同一使用者/應用程式簽發新權杖時,讓較舊的重新整理權杖失效。
實際症狀:
- 你同時透過 OpenClaw 以及 Claude Code / Codex CLI 登入 → 其中一個稍後會隨機「登出」
為了降低這種情況,OpenClaw 會將 auth-profiles.json 視為 權杖匯集處:
- 執行階段會從 單一位置 讀取憑證
- 我們可以保留多個設定檔,並以確定性的方式路由它們
- 外部 CLI 重用取決於提供者:Codex CLI 可以啟動一個空的
openai-codex:default設定檔,但一旦 OpenClaw 擁有本機 OAuth 設定檔, 本機重新整理權杖就是標準來源;其他整合可以維持 外部管理,並重新讀取其 CLI 驗證儲存區 - 已知已設定提供者集合的狀態與啟動路徑,會將 外部 CLI 探索範圍限制在該集合,因此單一提供者設定不會 探測無關的 CLI 登入儲存區
儲存(權杖所在位置)
密鑰儲存在代理程式驗證儲存區中:
- 驗證設定檔(OAuth + API 金鑰 + 選用的值層級參照):
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - 舊版相容性檔案:
~/.openclaw/agents/<agentId>/agent/auth.json(發現靜態api_key項目時會將其清除)
僅供舊版匯入的檔案(仍受支援,但不是主要儲存區):
~/.openclaw/credentials/oauth.json(首次使用時會匯入至auth-profiles.json)
以上全部也都遵循 $OPENCLAW_STATE_DIR(狀態目錄覆寫)。完整參考:/gateway/configuration
如需靜態密鑰參照與執行階段快照啟用行為,請參閱 密鑰管理。
當次要代理程式沒有本機驗證設定檔時,OpenClaw 會使用從預設/主要代理程式儲存區
讀取穿透的繼承。它不會在讀取時複製主要
代理程式的 auth-profiles.json。OAuth 重新整理權杖特別
敏感:一般複製流程預設會跳過它們,因為某些提供者會在使用後輪換
或使重新整理權杖失效。當代理程式需要獨立帳號時,請為該
代理程式設定個別的 OAuth 登入。
Anthropic 舊版權杖相容性
OpenClaw 也將 Anthropic setup-token 暴露為受支援的權杖驗證路徑,但現在會在可用時優先重用 Claude CLI 和 claude -p。
Anthropic Claude CLI 遷移
OpenClaw 再次支援重用 Anthropic Claude CLI。如果你已在主機上有本機 Claude 登入,onboarding/configure 可以直接重用它。
OAuth 交換(登入如何運作)
OpenClaw 的互動式登入流程實作於 @mariozechner/pi-ai,並接入精靈/命令中。
Anthropic setup-token
流程形狀:
- 從 OpenClaw 啟動 Anthropic setup-token 或 paste-token
- OpenClaw 會將產生的 Anthropic 憑證儲存在驗證設定檔中
- 模型選擇會維持在
anthropic/... - 現有 Anthropic 驗證設定檔仍可用於回復/順序控制
OpenAI Codex(ChatGPT OAuth)
OpenAI Codex OAuth 明確支援在 Codex CLI 之外使用,包括 OpenClaw 工作流程。
流程形狀(PKCE):
- 產生 PKCE 驗證器/挑戰 + 隨機
state - 開啟
https://auth.openai.com/oauth/authorize?... - 嘗試在
http://127.0.0.1:1455/auth/callback擷取回呼 - 如果回呼無法綁定(或你在遠端/無頭環境),貼上重新導向 URL/程式碼
- 在
https://auth.openai.com/oauth/token交換 - 從存取權杖擷取
accountId,並儲存{ access, refresh, expires, accountId }
精靈路徑是 openclaw onboard → 驗證選擇 openai-codex。
重新整理 + 到期
設定檔會儲存 expires 時間戳記。
在執行階段:
- 如果
expires在未來 → 使用已儲存的存取權杖 - 如果已到期 → 重新整理(在檔案鎖下)並覆寫已儲存的憑證
- 如果次要代理程式讀取繼承自主要代理程式的 OAuth 設定檔,重新整理 會寫回主要代理程式儲存區,而不是將重新整理權杖複製到 次要代理程式儲存區
- 例外:某些外部 CLI 憑證會維持外部管理;OpenClaw
會重新讀取那些 CLI 驗證儲存區,而不是消耗複製的重新整理權杖。
Codex CLI 啟動程序刻意更窄:它會建立一個空的
openai-codex:default設定檔,接著由 OpenClaw 擁有的重新整理會讓本機 設定檔保持為標準來源。
重新整理流程是自動的;你通常不需要手動管理權杖。
多個帳號(設定檔)+ 路由
兩種模式:
1) 建議:分開的代理程式
如果你希望「個人」和「工作」永不互動,請使用隔離的代理程式(分開的工作階段 + 憑證 + 工作區):
openclaw agents add work
openclaw agents add personal
然後為每個代理程式設定驗證(精靈),並將聊天路由到正確的代理程式。
2) 進階:單一代理程式中的多個設定檔
auth-profiles.json 支援同一提供者的多個設定檔 ID。
選擇要使用哪個設定檔:
- 透過設定排序(
auth.order)全域指定 - 透過
/model ...@<profileId>依工作階段指定
範例(工作階段覆寫):
/model Opus@anthropic:work
如何查看有哪些設定檔 ID:
openclaw channels list --json(顯示auth[])
相關文件: