Biến tài khoản Codex thành API Key trong 15 phút, kết nối vào bất kỳ AI tool nào - hướng dẫn CLIProxyAPI từ A-Z.
Ý tưởng chính là dùng CLIProxyAPI làm lớp proxy ở local: AI Agent → CLIProxyAPI → tài khoản subscription Claude/Codex/Grok/Kimi → model provider CLIProxyAPI biến một tài khoản subscription đã login thành một endpoint local, ví dụ 127.0.0.1:8317, cộng với một API Key do chính mình đặt. Sau đó những tool cho phép custom Base URL + API Key có thể gọi endpoint này. Tác giả liệt kê DeepSeek Harness, Claude Code, OpenClaw, WorkBuddy, Hermes, Pi... Đặc biệt, bài dẫn một ví dụ ChatGPT subscription → CLIProxyAPI → Claude Code → GPT-5.6 Sol.
Tóm tắt nhanh
Bài của HalfBit có tiêu đề đại ý:
“Biến tài khoản Codex thành API Key trong 15 phút, kết nối vào bất kỳ AI tool nào - hướng dẫn CLIProxyAPI từ A-Z.”
Ý tưởng chính là dùng CLIProxyAPI làm lớp proxy ở local:
AI Agent → CLIProxyAPI → tài khoản subscription Claude/Codex/Grok/Kimi → model provider
CLIProxyAPI biến một tài khoản subscription đã login thành một endpoint local, ví dụ 127.0.0.1:8317, cộng với một API Key do chính mình đặt. Sau đó những tool cho phép custom Base URL + API Key có thể gọi endpoint này. Tác giả liệt kê DeepSeek Harness, Claude Code, OpenClaw, WorkBuddy, Hermes, Pi...
Đặc biệt, bài dẫn một ví dụ ChatGPT subscription → CLIProxyAPI → Claude Code → GPT-5.6 Sol.
Với Claude subscription thì tác giả làm chiều ngược lại: Claude subscription → CLIProxyAPI → các Agent khác.
Quy trình bài hướng dẫn gồm 7 bước:
Cài CLIProxyAPI.
Chỉnh config: bind
127.0.0.1, tự đặtapi-key, chỉnh cooldown.Chạy CLIProxyAPI như background service.
Login tài khoản bằng OAuth; với Codex thì dùng
--codex-login, với Claude là--claude-login.Test proxy bằng
curl.Đưa
Base URL + API Keyvào DeepSeek Harness hoặc Agent khác.Chỉnh
settings.yamlđể cấu hình reasoning level, thinking mode, context window...
Tác giả nhấn mạnh nên bind vào 127.0.0.1 thay vì public network, và cho rằng OAuth này giống luồng Claude Code thông thường, usage vẫn tính vào subscription quota. Tuy nhiên, câu “không sợ khóa account” là nhận định/kinh nghiệm của tác giả, không nên coi là bảo đảm chính thức từ provider.
Bản dịch tiếng Việt
Biến tài khoản Codex thành API Key trong 15 phút, kết nối vào bất kỳ AI tool nào | Hướng dẫn CLIProxyAPI từ A–Z
Bởi HalfBit (@justhalfbit)
Bạn đang có subscription Claude, hoặc thường xuyên dùng Codex, nhưng khi muốn thử một AI tool mới thì phát hiện nó không hỗ trợ tài khoản của bạn, và lại bắt bạn trả thêm tiền?
Cách của tôi là cài CLIProxyAPI: biến trực tiếp tài khoản subscription thành một local API Key. Subscription của Grok và Kimi cũng có thể làm tương tự.
DeepSeek Harness, Claude Code, OpenClaw, WorkBuddy, Hermes, Pi... miễn là tool đó cho phép bạn tự nhập model endpoint và API Key thì đều có thể kết nối.
Đây là một tool cực kỳ hữu ích. Tibo cũng đang hướng dẫn mọi người sử dụng. Sợ bị khóa tài khoản? Tôi đã sử dụng rất nặng trong 2 tháng mà tài khoản vẫn bình thường.
Hôm nay tôi sẽ lấy DeepSeek Harness làm ví dụ. Toàn bộ quá trình mất khoảng 15 phút.
Tại sao phải làm việc này?
Nếu giống tôi và thích thử các AI tool mới, có lẽ bạn từng gặp tình huống:
Thấy một tool mới thú vị, mở ra thì nó yêu cầu API Key hoặc bắt mua subscription riêng.
Nếu thực sự tạo API account thì lại phải nạp tiền, quản lý limit và tính chi phí; cuối cùng thử vài ngày rồi không dùng nữa.
Rõ ràng đang có Claude subscription nhưng lại chỉ sử dụng được nó trong Claude Code.
CLIProxyAPI giải quyết vấn đề này bằng một ý tưởng rất đơn giản:
Đóng gói tài khoản subscription mà bạn đã login thành một local API endpoint.
Bạn sẽ có:
http://127.0.0.1:8317
cộng với một API Key do chính bạn đặt.
Sau đó chỉ cần đưa hai thông tin này vào AI tool — từ đây tôi gọi chung chúng là Agent — là xong.
Không chỉ Claude. Codex, Grok và Kimi cũng có thể login.
Bạn có tài khoản nào thì dùng tài khoản đó. Thậm chí có thể login nhiều account của cùng một provider và CLIProxyAPI sẽ luân phiên sử dụng chúng.
Bên dưới tôi sử dụng Claude để minh họa.
Nếu sử dụng Codex, ở bước 4 chỉ cần thay:
--claude-login
bằng:
--codex-login
Các bước còn lại giống nhau.
Tibo cũng đang hướng dẫn mọi người dùng
Có lẽ phản ứng đầu tiên của bạn là:
Dùng subscription account như thế này có bị khóa tài khoản không?
Tibo (@thsottiaux) từng công khai đăng trên X hướng dẫn sử dụng CLIProxyAPI để kết nối ChatGPT subscription vào Claude Code và chạy GPT-5.6 Sol.
Anh ấy sử dụng theo chiều:
ChatGPT subscription → Claude Code
Trong khi tôi sử dụng:
Claude subscription → Agent khác
Cả hai chiều đều sử dụng CLIProxyAPI.
Tibo thậm chí còn đùa ở cuối bài rằng: “Nếu bị ban thì tôi nợ bạn một lần reset.”
Còn tôi đã chạy Agent rất nặng mỗi ngày trong hai tháng qua với Claude subscription kết nối qua proxy và tài khoản vẫn bình thường.
Lý do là CLIProxyAPI sử dụng cùng kiểu OAuth authorization flow như Claude Code. Usage vẫn được tính vào subscription quota thông thường; theo cách hiểu của tôi, đây không phải crack hay bypass.
Sơ đồ hoạt động
Toàn bộ pipeline chỉ có ba lớp:
Agent → CLIProxyAPI (local port 8317) → Claude / Codex official service
Agent chỉ cần biết:
URL + API Key
CLIProxyAPI xử lý authentication, retry và những phần còn lại.
Ở phía Claude, nó vẫn nhìn thấy một subscription account đã login bình thường.
Môi trường trong bài này là:
macOS + Homebrew
Linux cũng có thể cài; chỉ cần điều chỉnh path tương ứng.
Bước 1: Cài CLIProxyAPI
brew install cliproxyapi
Chỉ cần một command.
Bước 2: Chỉnh config
Config nằm tại:
/opt/homebrew/etc/cliproxyapi.conf
Mở bằng:
vi /opt/homebrew/etc/cliproxyapi.conf
Có ba chỗ cần chỉnh.
1. host
Đặt thành:
127.0.0.1
Như vậy chỉ máy local mới truy cập được.
Default để trống sẽ listen trên tất cả network interfaces. Nếu máy của bạn có thể được truy cập từ Internet thì tuyệt đối không nên để như vậy.
2. api-keys
Nhập một chuỗi do chính bạn tự đặt.
Đây chính là API Key mà sau này bạn đưa vào Agent.
Nếu muốn mỗi tool sử dụng một Key khác nhau thì có thể thêm nhiều Key.
Nếu chỉ sử dụng một Key, nhớ comment những default Key còn lại.
3. transient-error-cooldown-seconds
Đặt thành:
2
Đây là thay đổi tôi thêm vào sau khi gặp lỗi thực tế.
Nếu giá trị mặc định là 0, khi upstream trả về một lỗi như:
408 / 500 / 502 / 503
account có thể bị đưa vào cooldown 60 giây.
Chỉ cần network chập chờn một lần là account bị cooldown. Trong 60 giây đó Agent không tìm được credential khả dụng.
DeepSeek Harness sẽ báo:
auth_unavailable: no auth available
Sau đó retry năm lần nhưng tất cả đều rơi vào cooldown period và toàn bộ task thất bại.
Đổi cooldown từ 0 xuống 2 giúp account chỉ nghỉ hai giây. Retry tiếp theo của Agent thường xảy ra đúng lúc cooldown đã kết thúc.
Sau khi thay đổi tôi không còn gặp trường hợp cả task bị fail vì vấn đề này nữa.
Bước 3: Khởi động và chạy tự động khi bật máy
brew services start cliproxyapi
brew services đăng ký nó thành một launchd service, vì vậy sau này máy khởi động thì service cũng tự chạy.
Kiểm tra port:
lsof -nP -i TCP -s TCP:LISTEN
Nếu thấy CLIProxyAPI đang listen tại:
127.0.0.1:8317
thì thành công.
Sau khi sửa config nhớ restart:
brew services restart cliproxyapi
Bước 4: Login Claude account
cliproxyapi --claude-login
Terminal sẽ tự mở browser và chuyển tới authorization page của Claude.
Login bằng subscription account của bạn bằng Google hoặc email.
Nếu có nhiều organization, chọn organization chứa subscription của bạn. Quota Pro/Max nằm ở đó.
Authorization page sẽ hiển thị các permission được yêu cầu.
Bạn sẽ thấy:
“Claude Code would like to connect”
Đúng vậy, đây chính là OAuth flow nói ở trên.
Nhấn Authorize.
Credential sau đó được lưu tại dạng:
~/.cli-proxy-api/claude-email-của-bạn.json
Nếu authorization trong browser hoàn thành nhưng Terminal không phản hồi, copy toàn bộ callback URL dạng:
localhost:54545/callback?...
rồi paste vào Terminal và Enter.
Nếu dùng Codex
Thay command trên bằng:
cliproxyapi --codex-login
Bước 5: Kiểm tra bằng curl
Trước khi kết nối Agent, hãy kiểm tra proxy.
curl -X POST http://127.0.0.1:8317/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_KEY" \
-d '{
"model": "claude-sonnet-4-5-20250929",
"messages": [
{ "role": "user", "content": "Say hello from CLIProxyAPI" }
]
}'
Nếu response có dạng:
"content":"Hello! ..."
thì proxy đã hoạt động.
Endpoint trên sử dụng OpenAI-compatible protocol:
/v1/chat/completions
CLIProxyAPI đồng thời cung cấp Anthropic-compatible endpoint:
/v1/messages
Vì vậy Agent có thể sử dụng cả OpenAI protocol lẫn Anthropic protocol. Đây là lý do CLIProxyAPI tương thích với nhiều Agent.
Bước 6: Kết nối DeepSeek Harness
DeepSeek Harness, viết tắt là dsh, là Agent dạng preview của DeepSeek.
Khởi động:
npx @deepseek-ai/dsh web
Nó mở Web UI tại:
http://127.0.0.1:3080
Trong Settings → Models → Add custom provider, nhập:
API Key: Key tự đặt ở bước 2.
API URL:
http://127.0.0.1:8317
API protocol:
anthropic-messages
Nếu kết nối Claude thì protocol này có compatibility tốt nhất.
Model catalog: tự nhập model ID, ví dụ:
claude-opus-5
claude-sonnet-5
Context window:
1M
Maximum output:
128K
Save lại và các Claude model sẽ xuất hiện trong model selector.
Bước 7: Chỉnh settings.yaml để cấu hình reasoning
UI của dsh chỉ cho cấu hình URL, Key, protocol, model ID và context size.
Nếu muốn kiểm soát reasoning level và thinking mode thì cần sửa:
~/.dsh/settings.yaml
Tôi chỉnh:
defaultInput: [text, image]
để cho phép gửi cả text và image.
reasoning: high
để đặt default reasoning level.
compat.forceAdaptiveThinking: true
để các Claude 5 model sử dụng adaptive thinking thông qua output_config.effort, thay vì cơ chế cũ budget_tokens.
Đồng thời:
contextWindow: 1000000
maxTokens: 128000
Và thêm đầy đủ các reasoningEfforts:
off
low
medium
high
xhigh
max
Sau đó restart dsh.
Nếu không đặt default reasoning, UI sẽ xuất hiện lựa chọn Default.
Khi chọn Default, dsh sẽ không gửi reasoning-level parameter. Khi đó bạn không kiểm soát được model sử dụng reasoning depth bao nhiêu.
Nếu muốn ổn định ở high, đặt default reasoning là cách đơn giản nhất.
Kết quả
Sau khi cấu hình, tôi hỏi:
“Hiện tại bạn đang chạy model nào?”
Nó trả lời rằng đang được vận hành bởi claude-fable-5, thông qua DeepSeek Harness.
Sau đó tôi giao một task thực tế: kiểm tra xem LLM gateway hiện tại có hỗ trợ một model cụ thể hay không.
Agent tự chạy:
6 vòng
25 bước
Bash
Search
Grep
đọc config
rồi tổng hợp danh sách model mà gateway đã đăng ký.
Status bar cho thấy input khoảng 381K tokens, cache hit 91%.
381K vượt quá context 200K của model thế hệ cũ, vì vậy context 1M ở bước trước phát huy tác dụng.
Có thể chuyển qua lại giữa các model như opus-5, sonnet-5, fable-5-1, opus-4-6... và thay đổi reasoning level bất cứ lúc nào.
API Key này cũng không chỉ dành cho dsh.
Claude Code, OpenClaw, WorkBuddy, Hermes, Pi hoặc Agent mới nào khác — miễn là hỗ trợ custom third-party model — thì chỉ cần nhập URL và Key này.
Không cần mở một subscription mới chỉ để thử một tool mới.
Nâng cao: để AI viết model probing script
CLIProxyAPI còn khá nhiều thứ để khám phá.
Ví dụ ở bước 6, model catalog phải nhập thủ công.
Nhưng làm sao biết phải nhập claude-opus-5?
Context window là 1M hay 200K?
Các proxy không nhất thiết tự cung cấp thông tin đó.
Cách của tôi là để Claude viết một probing script, gọi trực tiếp proxy endpoint và thu thập tất cả thông tin có thể lấy được.
Từ đó có thể phân biệt các thế hệ model, context window và maximum output.
Cùng phương pháp đó còn có thể probe:
Protocol compatibility
Reasoning levels
Model availability
Context limits
Parameter forwarding
Ví dụ nếu trong dsh chọn high, cần xác minh parameter nào được gửi tới proxy và cuối cùng proxy gửi gì tới Claude.
Nếu các layer không khớp nhau thì reasoning level mà bạn chọn thực tế có thể không có tác dụng.
Tổng kết
Toàn bộ quá trình gồm 7 bước:
Install → Config → Start service → OAuth login → curl test → Connect Agent → Configure YAML
Các điểm cần chú ý:
Luôn bind
hostvào127.0.0.1, không expose API ra Internet.Đặt
transient-error-cooldown-secondsthành2để tránh một upstream error khiến account cooldown quá lâu.Đặt default
reasoningtrong dsh để reasoning depth có thể kiểm soát được.
Một subscription account — Claude, Codex, Grok hay Kimi — có thể thông qua CLIProxyAPI trở thành một API endpoint mà nhiều AI tool có thể sử dụng.
Toàn bộ quá trình khoảng 15 phút.