Fundamentals
OAuth
OpenClaw รองรับ "การยืนยันตัวตนแบบสมัครสมาชิก" ผ่าน OAuth สำหรับผู้ให้บริการที่มีบริการนี้ (โดยเฉพาะ OpenAI Codex (ChatGPT OAuth)) สำหรับ Anthropic การแบ่งในทางปฏิบัติ ตอนนี้คือ:
- คีย์ API ของ Anthropic: การคิดค่าบริการ Anthropic API ตามปกติ
- Anthropic Claude CLI / การยืนยันตัวตนแบบสมัครสมาชิกภายใน OpenClaw: เจ้าหน้าที่ Anthropic แจ้งเราว่าการใช้งานนี้ได้รับอนุญาตอีกครั้ง
OpenAI Codex OAuth รองรับอย่างชัดเจนสำหรับการใช้งานในเครื่องมือภายนอกอย่าง OpenClaw
OpenClaw เก็บทั้งการยืนยันตัวตนด้วยคีย์ API ของ OpenAI และ ChatGPT/Codex OAuth ไว้ใต้
รหัสผู้ให้บริการมาตรฐาน openai รหัสโปรไฟล์ openai-codex:* รุ่นเก่าและรายการ
auth.order.openai-codex เป็นสถานะดั้งเดิมที่ซ่อมแซมโดย
openclaw doctor --fix; ใช้รหัสโปรไฟล์ openai:* และ auth.order.openai สำหรับ
การกำหนดค่าใหม่
สำหรับ 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:defaultว่างได้ แต่เมื่อ OpenClaw มีโปรไฟล์ OAuth ในเครื่องแล้ว โทเค็นรีเฟรชในเครื่องจะเป็นมาตรฐาน หากโทเค็นรีเฟรชในเครื่องนั้นถูกปฏิเสธ OpenClaw สามารถใช้โทเค็น Codex CLI ของบัญชีเดียวกันที่ใช้งานได้เป็นทางสำรองเฉพาะรันไทม์; การผสานรวมอื่น ๆ สามารถยังคงให้ภายนอกจัดการและอ่านที่เก็บการยืนยันตัวตน 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 ยังเปิดเผย setup-token ของ Anthropic เป็นเส้นทางการยืนยันตัวตนด้วยโทเค็นที่รองรับ แต่ตอนนี้จะเลือกใช้การนำ Claude CLI มาใช้ซ้ำและ claude -p ก่อนเมื่อพร้อมใช้งาน
การย้าย Anthropic Claude CLI
OpenClaw รองรับการนำ Anthropic Claude CLI มาใช้ซ้ำอีกครั้ง หากคุณมีการเข้าสู่ระบบ Claude ในเครื่องบนโฮสต์อยู่แล้ว โฟลว์เริ่มต้นใช้งาน/กำหนดค่าสามารถนำมาใช้ซ้ำได้โดยตรง
การแลกเปลี่ยน OAuth (การเข้าสู่ระบบทำงานอย่างไร)
โฟลว์เข้าสู่ระบบแบบโต้ตอบของ OpenClaw ถูกใช้งานใน openclaw/plugin-sdk/llm และเชื่อมต่อเข้ากับตัวช่วยตั้งค่า/คำสั่ง
setup-token ของ Anthropic
รูปแบบโฟลว์:
- เริ่ม setup-token ของ Anthropic หรือ paste-token จาก OpenClaw
- OpenClaw เก็บข้อมูลรับรอง Anthropic ที่ได้ไว้ในโปรไฟล์การยืนยันตัวตน
- การเลือกโมเดลยังคงอยู่ที่
anthropic/... - โปรไฟล์การยืนยันตัวตน Anthropic ที่มีอยู่ยังคงพร้อมใช้สำหรับการย้อนกลับ/การควบคุมลำดับ
OpenAI Codex (ChatGPT OAuth)
OpenAI Codex OAuth รองรับอย่างชัดเจนสำหรับการใช้งานนอก Codex CLI รวมถึงเวิร์กโฟลว์ OpenClaw
คำสั่งเข้าสู่ระบบยังคงใช้รหัสผู้ให้บริการ OpenAI มาตรฐาน:
openclaw models auth login --provider openaiใช้ --profile-id openai:<name> สำหรับบัญชี ChatGPT/Codex OAuth หลายบัญชีใน
เอเจนต์เดียว อย่าใช้ openai-codex:<name> สำหรับโปรไฟล์ใหม่ Doctor จะย้าย
คำนำหน้าเก่านั้นไปยังรหัสโปรไฟล์ openai:* ที่ไม่ชนกัน; เรียกใช้
openclaw models auth list --provider openai หลังซ่อมแซม ก่อนคัดลอก
รหัสโปรไฟล์ลงใน auth.order หรือ /model ...@<profileId>
รูปแบบโฟลว์ (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
การรีเฟรช + การหมดอายุ
โปรไฟล์เก็บประทับเวลา expires
ที่รันไทม์:
- หาก
expiresอยู่ในอนาคต → ใช้โทเค็นเข้าถึงที่จัดเก็บไว้ - หากหมดอายุ → รีเฟรช (ภายใต้การล็อกไฟล์) และเขียนทับข้อมูลรับรองที่จัดเก็บไว้
- หากเอเจนต์รองอ่านโปรไฟล์ OAuth ของเอเจนต์หลักที่สืบทอดมา การรีเฟรช จะเขียนกลับไปยังที่เก็บเอเจนต์หลัก แทนที่จะคัดลอกโทเค็นรีเฟรชเข้าไปใน ที่เก็บเอเจนต์รอง
- ข้อยกเว้น: ข้อมูลรับรอง CLI ภายนอกบางรายการยังคงให้ภายนอกจัดการ; OpenClaw
อ่านที่เก็บการยืนยันตัวตน CLI เหล่านั้นซ้ำ แทนที่จะใช้โทเค็นรีเฟรชที่คัดลอกมา
การบูตสแตรป Codex CLI ตั้งใจให้แคบกว่า: จะเพาะโปรไฟล์
openai:defaultว่าง จากนั้นการรีเฟรชที่ OpenClaw เป็นเจ้าของจะคงให้โปรไฟล์ในเครื่อง เป็นมาตรฐาน หากการรีเฟรช Codex ในเครื่องล้มเหลวและ Codex CLI มี โทเค็นที่ใช้งานได้สำหรับบัญชีเดียวกัน OpenClaw อาจใช้โทเค็นนั้นสำหรับคำขอรันไทม์ ปัจจุบันโดยไม่เขียนกลับไปยังauth-profiles.json
โฟลว์รีเฟรชเป็นแบบอัตโนมัติ โดยทั่วไปคุณไม่จำเป็นต้องจัดการโทเค็นเอง
หลายบัญชี (โปรไฟล์) + การกำหนดเส้นทาง
สองรูปแบบ:
1) แนะนำ: แยกเอเจนต์
หากคุณต้องการให้ "ส่วนตัว" และ "งาน" ไม่โต้ตอบกันเลย ให้ใช้เอเจนต์ที่แยกกัน (เซสชัน + ข้อมูลรับรอง + เวิร์กสเปซแยกกัน):
openclaw agents add workopenclaw agents add personalจากนั้นกำหนดค่าการยืนยันตัวตนต่อเอเจนต์ (ตัวช่วยตั้งค่า) และกำหนดเส้นทางแชตไปยังเอเจนต์ที่ถูกต้อง
2) ขั้นสูง: หลายโปรไฟล์ในเอเจนต์เดียว
auth-profiles.json รองรับรหัสโปรไฟล์หลายรายการสำหรับผู้ให้บริการเดียวกัน
เลือกว่าจะใช้โปรไฟล์ใด:
- แบบทั่วทั้งระบบผ่านการจัดลำดับการกำหนดค่า (
auth.order) - รายเซสชันผ่าน
/model ...@<profileId>
ตัวอย่าง (การแทนที่ของเซสชัน):
/model Opus@anthropic:work
วิธีดูว่ามีรหัสโปรไฟล์ใดบ้าง:
openclaw channels list --json(แสดงauth[])
เอกสารที่เกี่ยวข้อง:
- การสลับโมเดลเมื่อขัดข้อง (กฎการหมุนเวียน + คูลดาวน์)
- คำสั่งสแลช (พื้นผิวคำสั่ง)
ที่เกี่ยวข้อง
- การยืนยันตัวตน - ภาพรวมการยืนยันตัวตนของผู้ให้บริการโมเดล
- ความลับ - การจัดเก็บข้อมูลรับรองและ SecretRef
- อ้างอิงการกำหนดค่า - คีย์การกำหนดค่าการยืนยันตัวตน