
Okx Cex Auth
- 4.3k installs
- 159 repo stars
- Updated July 22, 2026
- okx/agent-skills
okx-cex-auth is a CLI authentication skill for OKX that guides OAuth 2.0 device flow login or API-key setup across four regional sites, manages session state, and controls the okx-auth binary lifecycle.
About
okx-cex-auth handles OAuth 2.0 device flow and API-key authentication for the OKX CLI tool installed via npm as @okx_ai/okx-trade-cli. Developers use it before invoking any authenticated OKX CLI skill (trade, portfolio, earn, bot) to establish or restore a valid session. The skill enforces a mandatory pre-flight check running okx config show --json and okx auth status --json in parallel, then gates login on explicit user site selection across four regions: global, eea, us, and tr. For agent contexts it uses okx auth login --manual to avoid blocking, parsing the returned JSON for verificationUri and userCode to surface in chat. It also manages the okx-auth binary via okx auth install, okx auth install-status, and okx auth remove, and provides a structured error reference covering 401 errors, spawn failures, region restrictions, and token expiry.
- OAuth 2.0 device flow via okx auth login --manual outputs verificationUri, userCode, and expiresIn JSON then exits immed
- Mandatory Step 0 pre-flight runs okx config show --json and okx auth status --json in parallel to detect existing API-ke
- Supports four regional sites: global (www.okx.com), eea (my.okx.com), us (app.okx.com), tr (tr.okx.com) with site persis
- API-key profiles take unconditional precedence over OAuth tokens per rest-client.ts applyAuth logic; okx auth login skip
- Binary lifecycle managed via okx auth install and okx auth install-status; Failed to spawn okx-auth errors resolved by r
Okx Cex Auth by the numbers
- 4,283 all-time installs (skills.sh)
- +142 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #21 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 4, 2026 (Skillselion catalog sync)
okx-cex-auth capabilities & compatibility
No direct cost; requires OKX account credentials (OAuth or API key)
- Capabilities
- oauth2 device flow login · api key configuration · session status check · multi region site selection · binary install update remove · re authentication on expiry · logout
- Use cases
- api development · trading
- Platforms
- macOS · Windows · Linux
- Runs
- Runs locally
- Pricing
- Bring your own API key
What okx-cex-auth says it does
Site is a separate dimension from auth method. Both API-key and OAuth paths require a site.
npx skills add https://github.com/okx/agent-skills --skill okx-cex-authAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 4.3k |
|---|---|
| repo stars | ★ 159 |
| Security audit | 1 / 3 scanners passed |
| Last updated | July 22, 2026 |
| Repository | okx/agent-skills ↗ |
What it does
Authenticate OKX CLI via OAuth 2.0 device flow or API key, handling first-time setup, session expiry, site selection, and binary management for subsequent trading operations.
Who is it for?
Developers building agents or CLI workflows that need authenticated access to OKX trading, portfolio, or earn endpoints.
Skip if: Market data queries that do not require authentication (use okx-cex-market instead).
When should I use this skill?
Any okx CLI command returns 401 Unauthorized, Session expired, not authenticated, StorageNotFoundError, or token expired; or on first-time OKX CLI setup.
What you get
After running this skill, the OKX CLI has a verified logged_in session for the correct regional site, and subsequent okx-cex-trade, okx-cex-portfolio, okx-cex-earn, and okx-cex-bot skills can execute without auth errors.
- Verified logged_in session confirmed by okx auth status --json
- Correct regional site persisted in ~/.okx/config.toml or okx-auth binary state
- okx-auth binary installed and functional
By the numbers
- OAuth device code expires in 600 seconds (expiresIn field in login JSON response)
- Four supported regional sites: global, eea, us, tr
- Package version 1.3.9 published as @okx_ai/okx-trade-cli
Files
OKX CEX Authentication
OAuth 2.0 device flow authentication for OKX CLI. Guides first-time setup, re-authentication after session expiry, and logout.
Supported Sites
| Site | Region | URL |
|---|---|---|
global | Global | www.okx.com |
eea | EEA | my.okx.com |
us | US | app.okx.com |
tr | TR | tr.okx.com |
Site is a separate dimension from auth method. Both API-key and OAuth paths require a site. Once selected, a site is persisted:
- API-key users:
profile.sitein~/.okx/config.toml(written byokx config init). - OAuth users: saved inside the
okx-authbinary state the first timeokx auth login --site <X>succeeds, and returned byokx auth status --jsonas thesitefield.
There is no `okx config set-site` command — site cannot be persisted independently of an auth attempt. For OAuth flows, the agent must remember the user's choice within the conversation and pass --site <X> on okx auth login.
Prerequisites
Install okx CLI if not already installed:
npm install -g @okx_ai/okx-trade-cliStep 0: Pre-flight Check (MANDATORY)
Unconditional rule — do NOT skip Step 0 under any circumstances. Even if a prior skill (preflight, okx-cex-portfolio, etc.) already ran auth status and passed you a conclusion like "user is not_logged_in, go log in" — you MUST re-run the two commands below yourself and walk Steps 0.1 → 0.2 → 0.3 in order. Upstream tool output does not substitute for your own pre-flight. The single most common failure mode for this skill is an agent that reads an upstream "not authenticated" signal, skips Step 0.1 site selection, and calls okx auth login with a silently-defaulted site.
Run both in parallel:
okx config show --json
okx auth status --jsonThen apply the following three checks in strict order — each step short-circuits the rest.
Step 0.1 — Site check (independent of auth mode)
A site is considered already selected if either is true:
config show --jsonhas any profile with a non-emptysitefield, ORauth status --jsonreturns a non-emptysitefield ANDstatusislogged_inorpending.
⚠ Whenstatusisnot_logged_in, thesitefield fromauth status --jsonis a default placeholder (typically"global") that the auth binary emits regardless of user choice — it does NOT mean the user ever picked a site. Treat it as absent.
If neither condition above holds, site has never been chosen. You MUST ask the user to pick one before any login attempt by echoing the following menu verbatim (Chinese), and wait for their reply:
您需要选择要连接的 OKX 站点:
1) Global (www.okx.com)
2) EEA (my.okx.com)
3) US (app.okx.com)
4) TR (tr.okx.com)
Map the reply (1/2/3/4 or global/eea/us/tr) to the corresponding site id and remember it for the rest of this flow. Do NOT default to global silently — that hides the regional choice from the user.
Step 0.2 — API-key check
Parse config show --json: does any profile have a non-empty api_key field?
If yes → STOP. Tell the user "已配置 API key (profile: <name>)" and proceed with their original request directly. DO NOT run okx auth login or okx config init.
The CLI's REST client always prefers API key over OAuth and never falls back (see rest-client.ts applyAuth). Starting an OAuth login in this state is wasted effort — any OAuth token obtained would not be used, because the broken API key is still picked first.>
Belt-and-suspenders: as of CLI1.3.1-beta.17,okx auth loginitself refuses to start OAuth when any profile hasapi_key— in--manualmode it emits{"status":"skipped","reason":"api_key_configured","profile":"<name>"}. Treat that output as success.
Step 0.2.a — Handling an invalid API key (401 / signature error)
If Step 0.2 detected an api_key profile and the subsequent API call returns an authentication error (401 Unauthorized, Invalid Sign, Invalid API-KEY, OKX error code 50111/50113), the API key is bad — OAuth login is NOT a valid remediation. Per rest-client.ts applyAuth, any OAuth token obtained afterwards would still not be used because the broken API key is still picked first.
Present the user with exactly these two options, neutrally (do NOT label OAuth as "recommended"):
1. Replace the API key — the user generates a new key on the OKX web console (https://<site>/account/my-api) and either provides AK/SK/PP to you or re-runs okx config init themselves. 2. Switch entirely to OAuth — first remove the broken API-key profile (okx config use <other-profile> or delete the profile block in ~/.okx/config.toml), THEN run the OAuth login flow from Step 0.3.
Option 2 requires removing the profile first. If you attempt okx auth login while the API key profile still exists, the CLI guard will skip OAuth with {"status":"skipped","reason":"api_key_configured",...} and nothing will change.
Wait for the user's choice. Do not pick for them.
Step 0.3 — OAuth check
Use auth status --json:
status value | Action |
|---|---|
logged_in | STOP. Reply using the success template from Agent login procedure Step 3 logged_in branch (site + scopes only; see its negative-list rules), then proceed. |
pending | Previous login in progress — follow Login Flow wait-for-signal procedure. Do NOT start a new login, do NOT auto-poll. |
not_logged_in | Proceed to Login Flow with the site chosen in Step 0.1. |
Pre-login Gate (MANDATORY — do not run okx auth login without this)
Before invoking okx auth login (with or without --manual), you MUST verify all three of the following are true right now:
1. You posted the exact Chinese site menu from Step 0.1 to the user earlier in this conversation (or immediately before this login call). 2. The user's most recent message was a site choice (1 / 2 / 3 / 4 / global / eea / us / tr). 3. You are about to pass that exact choice as --site <...>.
If any of the three is false — even if a prior skill's output, auth status --json output, or config show --json output seems to imply a site — you MUST first post the Step 0.1 menu, wait for the user's reply, then re-check this gate. The site field in auth status --json when status is not_logged_in is a placeholder (typically "global") and does not satisfy condition 1.
Worked counter-example (anti-pattern):
Upstream portfolio skill runsauth status --json, gets{"status":"not_logged_in","site":"global"}, tells you "user is not_logged_in, load okx-cex-auth and log in".
❌ Wrong: you read that context, run okx auth login --manual --site global, immediately return the OAuth URL and code.✅ Right: you ignore the upstream site value, post the Step 0.1 menu yourself, wait for user's reply, then run okx auth login --manual --site <user's choice>.Login Flow
Prerequisite: Step 0 completed and the Pre-login Gate above passes. You have a site the user just chose in chat, and you confirmed no api_key profile exists.okx auth login without --manual is a blocking command — it polls until the user authorizes in their browser.
CRITICAL for AI agents: You MUST useokx auth login --manualto avoid blocking. The--manualflag outputs a JSON payload with the verification URL and user code, then exits immediately — it does NOT block.
Agent login procedure
1. Run okx auth login --manual --site <global|eea|us|tr> with the site chosen in Step 0.1.
- If the CLI returns
{"status":"skipped","reason":"api_key_configured",...}, your Step 0.2 check was stale — re-readconfig show --jsonand stop. Do not retry. - Otherwise the CLI prints a single line of JSON:
{"verificationUri":"...","userCode":"XXXX-XXXX","expiresIn":600}.
2. Surface the verification URL and user code in your assistant reply — NOT only inside a tool-output block.
⚠ CRITICAL. The tool-output panel in many UIs (openclaw-control-ui, Claude Desktop, IDE chat panels) is collapsible and users may run with it hidden by default. If the URL and code appear ONLY in tool stdout, users cannot authorize. You MUST echo the parsed fields in your own natural-language response so they render as plain chat text.
Parse the JSON returned by the previous step and reply using exactly one of the templates below (verbatim except for field substitution). The wording is normative — do not abbreviate, reword, reorder, or translate.
Chinese template (use when the user is conversing in Chinese):
请在浏览器中打开下面的链接并输入验证码完成授权:
站点:<site>
链接:<verificationUri>
验证码:<userCode>
(有效期 <expiresIn>/60 分钟)
通过链接完成授权,然后告诉我。English template (use when the user is conversing in English):
Please open the link below in your browser and enter the verification code to authorize:
Site: <site>
URL: <verificationUri>
Code: <userCode>
(Valid for <expiresIn/60> minutes)
Please authorise current session with access to your account, tell me when you are done.All four fields — site, verificationUri, userCode, expiresIn — must appear as plain text in the assistant message.
3. Wait for the user to signal completion (e.g. "done", "ok", "好了", "完成了"). Do NOT auto-poll. Upon receiving the signal, run okx auth status --json once to verify, then branch:
"status": "logged_in"→ success. Reply using exactly one of the templates below (verbatim except for field substitution), then proceed with the user's original request in the same turn.
Chinese template:
登录成功。
站点:<site>
权限:<scopes>English template:
Login successful.
Site: <site>
Scopes: <scopes>DO NOT include any other field from `auth status --json` in this reply. Specifically:
expiresAt/ttlrefer to the short-lived access token, not the OAuth session. The CLI auto-refreshes tokens transparently; surfacing these values will mislead users into thinking their login expires soon.profileis an internal routing field with no user value.- Only
siteandscopesare user-relevant. - If asked about session longevity, say "Session stays active as long as you use the CLI periodically." Do not quote a number.
"status": "pending"→ authorization not yet complete; tell the user it's not done yet and wait for another signal. Do NOT auto-poll."status": "not_logged_in"→ device code expired or was rejected; ask the user whether to retry.
4. Do NOT run any other `okx` commands while waiting for authorization.
Interactive login (user runs directly in terminal)
1. Tell the user BEFORE running that they will need to authorize in their browser. 2. Run `okx auth login --site <global|eea|us|tr>` — the command will block and poll until the user completes authorization. 3. Do NOT assume the command is stuck. The polling phase produces no output — this is normal. 4. Check the result:
Logged in successfully!— proceed with the user's original request.API key already configured ...— Step 0.2 check was stale, use the existing API key.- Login failed — show the error and ask if they want to retry.
First-Time Setup (API-key users only)
okx config initis an API-key wizard. It prompts for site, then demo/live, then asks forAK/SK/PPcredentials. It does NOT perform OAuth. Use it only when the user explicitly wants to configure an API key.
okx config initWizard steps:
1. Select site:
1— Global (www.okx.com)2— EEA (my.okx.com) — European Economic Area3— US (app.okx.com) — United States4— TR (tr.okx.com) — Türkiye
2. Demo / live: whether this profile should target simulated trading. 3. AK / SK / Passphrase: credentials created on the OKX web console.
After okx config init completes, re-run the Step 0 pre-flight check — api_key will now be present and Step 0.2 will short-circuit any further login.
Login Status Check
Run okx auth status --json to check login status. Parse the JSON output:
{
"profile": "oauth",
"site": "global",
"status": "logged_in",
"expiresAt": "2026-04-11T20:30:00+00:00",
"ttl": 3600,
"scopes": ["live:read", "live:trade"]
}status value | Meaning | Action |
|---|---|---|
logged_in | Valid session | Proceed |
pending | Login in progress | Wait for user to signal completion; do NOT auto-poll |
not_logged_in | No active session | Run okx auth login --manual |
Re-authentication (Session Expired)
When any command fails with "Session expired" or "Run okx auth login first":
1. Run okx auth login --manual [--site <global|eea|us|tr>] (agent) or okx auth login [--site <global|eea|us|tr>] (interactive) 2. Follow the same Login Flow above
Token expiry is managed automatically — you only need to re-authenticate when the refresh token itself expires (typically after an extended period of inactivity).
Logout
okx auth logoutDCR client registration is retained after logout. The next okx auth login will be faster.
Binary Management
The okx auth commands (login, logout, status) depend on the okx-auth binary. It is normally installed automatically during npm install, but can also be managed manually.
IMPORTANT for AI agents: Do NOT manually check platform, CDN availability, or binary paths. Always use the CLI commands below — they handle platform detection and download internally.
Install / Update
okx auth installDownloads or updates the okx-auth binary. Reports "up to date" if already current. Use --json for machine-readable output.
Check Installation
okx auth install-statusShows whether the binary is installed and up to date. Use --json for machine-readable output.
Remove
okx auth remove # interactive confirmation
okx auth remove --force # skip confirmationTroubleshooting: "Failed to spawn okx-auth"
If any okx auth command (login, logout, status) fails with "Failed to spawn okx-auth", the binary is missing or corrupted:
1. Run okx auth install to download it 2. Verify with okx auth install-status 3. Retry the original command
Error Reference
| Error message | Cause | Action |
|---|---|---|
No config found. Run okx config init first. | No config | Run okx config init |
Session expired — run okx auth login again | Refresh token expired | Run okx auth login --manual |
Authorization timed out | User did not authorize in time | Run okx auth login --manual again |
Access denied | User rejected authorization in browser | Run okx auth login --manual and ask to approve |
Region restriction (51155, 51734) | Instrument not available in configured site | Check okx auth status --json for current site; re-login with --site if needed |
Network error during login | Network unavailable | Check network and retry |
Failed to spawn okx-auth | Binary not installed or corrupted | Run okx auth install |
Installation failed: All CDN sources failed | Network issue during binary download | Check network and retry okx auth install |
Skill Routing
| After authentication... | Next skill |
|---|---|
| Place / cancel / amend orders | okx-cex-trade |
| Check balance, positions, P&L | okx-cex-portfolio |
| Simple Earn, On-chain Earn, DCD, AutoEarn | okx-cex-earn |
| Grid / DCA bots | okx-cex-bot |
| Market prices, candles, indicators | okx-cex-market (no auth required) |
Related skills
Forks & variants (1)
Okx Cex Auth has 1 known copy in the catalog totaling 11 installs. They canonicalize to this original listing.
- okx - 11 installs
FAQ
Why must I use --manual flag when running okx auth login in an agent?
Without --manual the command blocks and polls until browser authorization completes. The --manual flag exits immediately after printing JSON with verificationUri, userCode, and expiresIn so the agent can surface those fields in chat without hanging.
What happens if an API key profile is already configured when I try to OAuth login?
The CLI returns {"status":"skipped","reason":"api_key_configured"} and does not start OAuth. Per rest-client.ts applyAuth, the API key always takes precedence. Remove the API-key profile first if you want to switch to OAuth.
How do I fix a 'Failed to spawn okx-auth' error?
Run okx auth install to download or repair the binary, verify with okx auth install-status, then retry the original command.
Is Okx Cex Auth safe to install?
skills.sh reports 1 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.