xai-grok-onboarding
Connect an xAI account (X Premium / X Premium+ / SuperGrok / SuperGrok Heavy) via OAuth 2.0 device-code login. Use when the user wants to sign in with their xAI account (e.g. "use my SuperGrok", "log in with Grok", "connect my X Premium").
What this skill does
# ๐ข xAI OAuth Onboarding
Use any active **xAI account** โ X Premium, X Premium+, SuperGrok, or SuperGrok Heavy โ for `grok-4.3`, `grok-build-0.1`, `grok-4.20-*` and multi-agent models. No separate API key needed.
This is **standard OAuth 2.0** (RFC 8628 Device Authorization Grant), not a vendor-custom flow.
## Tier โ model access
The JWT issued by `auth.x.ai` carries a `tier` claim; higher tiers unlock more models from `/v1/models`. Observed mapping (xAI does not publish this officially):
| Tier | Subscription | Approx. model access |
|---|---|---|
| 1 | X Premium ($8/mo) | grok-4.3 baseline |
| 2 | X Premium+ ($16/mo) | + grok-4.20-0309 variants |
| 3 | SuperGrok ($30/mo) | + reasoning models |
| 4 | SuperGrok Heavy ($300/mo) | + grok-build-0.1 + multi-agent |
`status()` reports the user's tier so they know which models will be available.
This is a **script-mode skill** โ no tools registered. Read this file, then call the exports from a `bash` block.
## See also
- `byok-custom-model` skill โ for vendor-key BYOK setup (xAI API key from console.x.ai, different mechanism โ bills per-token, NOT subscription-backed)
- `chatgpt-codex-onboarding` skill โ same pattern, for ChatGPT/Codex subscription
- `config/context/references/model-onboarding.md` โ overall model-selection landscape
## Backend compatibility
This skill depends on the `core.xai_grok` Python package inside the platform image (shipped 2026-05-22). On older images the skill loads cleanly but every public function returns:
```json
{
"ok": false,
"error": "xai_oauth_backend_unavailable",
"detail": "ModuleNotFoundError: core.xai_grok not found in any of: [/app, /data/workspace/starchild-clawd]",
"hint": "Update the platform image OR fall back to byok-custom-model with an xAI API key."
}
```
If you see this response, do NOT retry โ the platform itself needs an update. Either wait for the image refresh or guide the user to `byok-custom-model` with an API key from console.x.ai.
---
## When to use this skill
โ
**Use** when the user EXPLICITLY says one of:
- "Sign in with my Grok / SuperGrok account"
- "Use my SuperGrok / X Premium subscription"
- "Connect SuperGrok Heavy"
- "Login with xAI / Grok"
- "Use my Grok Heavy subscription"
โ **Do NOT use** for:
- "Add Grok via API key" / "I have an xAI API key" โ use `byok-custom-model` (the xAI template)
- Other vendors (Anthropic, OpenAI, Gemini, Qwen, etc.) โ use `byok-custom-model`
- "Add the Grok model" without subscription mention โ ASK the user which path they want (subscription OAuth vs. API key BYOK)
The two paths are mutually exclusive billing-wise. Subscription OAuth uses the user's monthly quota; BYOK API key uses console.x.ai pay-per-token credits.
---
## Critical preflight โ account gate awareness
xAI has a known backend gate that **denies OAuth grants for some accounts even with an active SuperGrok subscription**. This is upstream xAI behavior, not a client bug. Symptoms:
- Verification page loads, but clicking "Approve" returns `access_denied` from the token endpoint
- Hermes Agent has documented the same in [issue #26847](https://github.com/NousResearch/hermes-agent/issues/26847)
If `poll()` returns `AccountAccessDenied`:
1. Verify the user's SuperGrok subscription is active (grok.com / settings)
2. Suggest they try the verification URL in their already-logged-in browser (not a fresh incognito)
3. If still denied โ fall back to BYOK API key path (`byok-custom-model` skill, xAI template, key from https://console.x.ai)
Do NOT silently retry โ the gate is deterministic per account, retrying wastes time.
---
## Flow
The flow has 4 user-visible steps. Drive it like this:
### 1. start() โ generate the verification URL
```bash
python3 - <<'EOF'
import json, sys
sys.path.insert(0, '/data/workspace/skills/xai-grok-onboarding')
from exports import start
print(json.dumps(start(), indent=2))
EOF
```
Returns `verification_url_with_code` โ tell the user to open it in their browser, log in (if needed), and click Approve.
โ ๏ธ **Wait for explicit user confirmation before calling poll().** Polling too eagerly burns tokens for a "still pending" state.
### 2. poll() โ confirm approval (after the user says "done")
```bash
python3 - <<'EOF'
import json, sys
sys.path.insert(0, '/data/workspace/skills/xai-grok-onboarding')
from exports import poll
print(json.dumps(poll(), indent=2))
EOF
```
Three terminal outcomes:
- `status="connected"` โ success; show the user `default_model_id` to switch to
- `status="pending"` โ user hasn't approved yet; ask them to confirm before re-polling
- `ok=false` with `access_denied` โ see "account gate" section above
- `ok=false` with `expired` โ device code timed out (15 min); call `start()` again
### 3. After successful connect โ tell the user
When `poll()` returns `status='connected'`, the **first thing you must do** is tell the user:
> "Connection successful. Please refresh your browser page โ once it reloads, the new `xai-grok/*` models will appear in the model picker."
The web frontend caches the model list client-side and does **not** auto-refresh after an OAuth connect completes. Without a manual page refresh the user will not see their newly available models and will think the connection failed. Always include this instruction in your reply โ do not assume the picker updates on its own.
After the refresh, the default model is `xai-grok/grok-4.3`. Other available models depend on the subscription tier (SuperGrok Heavy unlocks `grok-build-0.1`).
To switch: `/model xai-grok/grok-4.3` or use the picker.
---
## Function reference
| Function | Args | Returns |
|---|---|---|
| `status()` | โ | Current credential state + available models + expiry |
| `start()` | โ | Device code prompt: `{verification_url_with_code, user_code, expires_in_seconds}` |
| `poll(pending_id=None)` | optional `pending_id` | `{status: connected/pending}` + credential info |
| `logout()` | โ | Delete credential + flush agent cache |
| `refresh()` | โ | Force-refresh access token (debug; normally automatic) |
| `models(force=False)` | โ | List available models from the OAuth endpoint |
`force=True` on `models` bypasses the cache TTL.
All functions return a dict with `ok: True` on success or `ok: False, error: "..."` on failure.
---
## After connecting
Models surface with the `xai-grok/` prefix:
- `xai-grok/grok-4.3` โ primary chat model (default)
- `xai-grok/grok-build-0.1` โ Grok Build coding model (SuperGrok Heavy tier only)
- `xai-grok/grok-4.20-0309-reasoning` โ reasoning variant
- `xai-grok/grok-4.20-0309-non-reasoning` โ faster, no reasoning
- `xai-grok/grok-4.20-multi-agent-0309` โ multi-agent variant (uses /v1/responses internally)
User switches via `/model xai-grok/grok-4.3` or the model picker UI.
### Lane routing (transparent)
The provider auto-routes based on model id:
- Multi-agent models โ `https://api.x.ai/v1/responses` (Responses API)
- All other Grok models โ `https://api.x.ai/v1/chat/completions` (OpenAI-compatible)
Users do not need to know which dialect each model speaks โ passing the standard `messages=[...]` shape works for both. For multi-agent, an optional `thinking={"effort": "low"|"medium"|"high"}` controls how many agents collaborate.
Subsequent chat calls hit `https://api.x.ai/v1` directly using the OAuth bearer โ bypasses the platform proxy. **Subscription usage limits apply** (not the platform credit balance). Image / video models (`grok-imagine-*`) are filtered out of the chat picker but accessible via image generation tools.
---
## xAI's OAuth allowlist โ biggest cause of "frontend rejected my login"
**Critical context (verified from independent implementations, 2026-05):** xAI's backend maintains an internal allowlist on the OAuth API surface and frequently returns `HTTP 403` to OAuth tokens even when the user's subscription is active and the device-code flow itself succeeded. This is documented by Hermes Agent ([their xAI OAuth troubleshooting](https://hermes-agentRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.