SpaceXAI just released Grok 4.6. The release is a post-training upgrade over Grok 4.5 rather than a larger base model. SpaceXAI held the foundation constant and spent the improvement on a longer supplemental training run, regenerated supervised fine-tuning trajectories, and reinforcement learning in agentic environments. Agents that stay on a task across many steps without drifting. Grok 4.6 scores 61 on the Artificial Analysis Intelligence Index, up five points from Grok 4.5 and tied with GPT-5.6 Sol Max. The model takes 500,000 context tokens, is live today in Cursor and Grok Build, and adds a new xhigh reasoning-effort level above the ladder Grok 4.5 shipped with.
Is it deployable?
Yes, in production, with a bounded set of workloads. The model is generally available through the xAI API as grok-4.6, is the default model in Grok Build, ships in Cursor on all plans, and is routable via OpenRouter, Vercel, and Cloudflare. There is no open-weights release and no self-hosting path, so air-gapped deployments are out.
- Company stage: Seed-stage teams and indie developers can adopt it immediately, since Cursor and Grok Build need no harness work. Mid-market engineering orgs are the strongest fit: API-only integration, mTLS authentication, batch and priority processing are documented. Regulated enterprises should stage a pilot first — the vendor’s brand history is a live procurement question in several buying committees.
- Industries: Software and developer tooling, semiconductor and kernel engineering, hardware and CAD-adjacent design, financial research, and legal analysis. The training mix explicitly targeted several of these.
- Applications: Repository-wide refactors, migration agents, research-and-synthesis pipelines over 500K-token corpora, first-pass application scaffolding from a product brief, GPU kernel optimization, and document-heavy knowledge work.
What actually changed
Grok 4.6 is not a larger base model. SpaceXAI describes a longer supplemental training run than Grok 4.5 received, using curated model-generated data for reasoning and advanced technical concepts, high-quality engineering data, and an improved optimizer and training recipe.
Grok 4.5 was then used to regenerate supervised fine-tuning trajectories across reasoning-effort levels, agent harnesses, and domains spanning STEM, software engineering, and knowledge work, with problematic traces filtered by model-based checks. Reinforcement learning followed in agentic environments covering knowledge work, general coding, web development, computer-aided design, and kernel optimization.
The behavioral insight is an important one: on longer trajectories, SpaceXAI reports more self-testing and verification, with the model checking its own work before moving on. That is a vendor observation from internal testing, not an independently measured result.
The model takes 500,000 context tokens, accepts text and image input with text-only output, has no stated text output limit, and carries a February 1, 2026 knowledge cutoff. reasoning_effort now supports low, medium, high (default), and a new xhigh level. SpaceXAI did not publish a parameter count for Grok 4.6.
Benchmarks: read the losses first
On xAI’s launch table, Grok 4.6 (High) scores 61 on the Artificial Analysis Intelligence Index, up from 56 for Grok 4.5 and tied with GPT-5.6 Sol Max. It leads the table on GDPval-AA v2 (1753 Elo, versus 1526 for Grok 4.5), AA-Briefcase (1577, versus 1313), and Harvey LAB.
It trails on the coding rows that matter most to engineering teams. DeepSWE v1.1 lands at 65.9%, up 11.9 points generationally but behind GPT-5.6 Sol Max at 73%. Terminal-Bench v3.0 reaches 26%, nearly double Grok 4.5’s 15.7% and still last of the four listed models. CursorBench v3.2 is 69.9%, FrontierCode v1.1 Extended is 61.3%, and APEX-Agents is 57.5%.
Two things to note while evaluating. First, the table’s bolded wins on GDPval-AA v2 and AA-Briefcase sit inside Artificial Analysis‘ published confidence intervals — they are statistical ties, not leads. Second, the comparison set excludes Anthropic’s Claude Opus 5, which currently tops that index. The disclosed losses are the more reliable signal.
Pricing and access
Per the release notes, Grok 4.6 bills $2 / $0.50 / $6 per 1M tokens (input / cached input / output) below 200K prompt tokens, and $4 / $1 / $12 above that threshold. The launch page also references a faster variant at double the price, with no separate model ID published. Grok Build and Cursor are offering 2× included usage for the first week.
Teams should set a prompt_cache_key (or the x-grok-conv-id header on Chat Completions). Without it, requests scatter across servers and cache hits become unreliable, so full input price applies.
Interactive explainer
function drawBench(){
[].slice.call(chips.children).forEach(function(c,i){
c.setAttribute(‘aria-pressed’, i === bi ? ‘true’ : ‘false’);
});
var b = B[bi];
rows.innerHTML = ”;
b.d.forEach(function(d){
var r = document.createElement(‘div’); r.className=”row”;
var isHero = d[2] === ‘hero’;
r.innerHTML =
‘
‘ + d[0] + ‘
‘ +
” +
‘
‘ + fmt(d[1], b.dec, b.unit) + ‘
‘;
rows.appendChild(r);
var f = r.querySelector(‘.fill’);
requestAnimationFrame(function(){
requestAnimationFrame(function(){ f.style.width = (d[1] / b.max * 100) + ‘%’; });
});
});
bnote.textContent = b.n;
resize();
}
drawBench();
/* —————- 02 agent run —————- */
var N46 = 40, N45 = 40;
var tape46 = document.getElementById(‘tape46’);
var tape45 = document.getElementById(‘tape45’);
var timer = null;
function buildTapes(){
tape46.innerHTML = ”; tape45.innerHTML = ”;
for (var i = 0; i < N46; i++){
var a = document.createElement(‘div’); a.className=”st”; tape46.appendChild(a);
var b = document.createElement(‘div’); b.className=”st”; tape45.appendChild(b);
}
document.getElementById(‘l46’).textContent=”idle”;
document.getElementById(‘l45’).textContent=”idle”;
setStat(‘s46’, 0, 0, 0); setStat(‘s45’, 0, 0, 0);
}
function setStat(id, s, v, r){
document.getElementById(id).innerHTML =
‘steps ‘ + s + ‘verifications ‘ + v + ‘recovered ‘ + r + ‘‘;
}
buildTapes();
function runIt(){
if (timer) clearInterval(timer);
buildTapes();
var i = 0, v46 = 0, v45 = 0, r46 = 0, r45 = 0, stop45 = 0;
var c46 = tape46.children, c45 = tape45.children;
timer = setInterval(function(){
if (i >= N46){
clearInterval(timer); timer = null;
document.getElementById(‘l46’).textContent=”task complete”;
if (!stop45) document.getElementById(‘l45’).textContent=”ran out of steps”;
return;
}
// 4.6 lane: verifies every 5th step, recovers from dead ends
var isVer = (i % 5 === 4);
var isDead = (i === 11 || i === 24);
c46[i].className=”st on hero” + (isVer ? ‘ ver’ : ”);
if (isVer) v46++;
if (isDead){ c46[i].className=”st dead”; r46++; }
// 4.5 lane: drifts, then stalls
if (!stop45){
var d45 = (i === 9 || i === 13 || i === 17 || i === 19);
c45[i].className=”st on” + (i % 11 === 10 ? ‘ ver’ : ”);
if (i % 11 === 10) v45++;
if (d45){ c45[i].className=”st dead”; r45++; }
if (i === 21){
stop45 = 1;
document.getElementById(‘l45’).textContent=”stalled at step 22″;
}
}
i++;
document.getElementById(‘l46’).textContent=”step ” + i + ‘ / ‘ + N46;
setStat(‘s46’, i, v46, r46);
setStat(‘s45’, stop45 ? 22 : i, v45, r45);
}, 95);
}
document.getElementById(‘runBtn’).addEventListener(‘click’, runIt);
document.getElementById(‘resetBtn’).addEventListener(‘click’, function(){
if (timer){ clearInterval(timer); timer = null; }
buildTapes();
});
/* —————- 03 cost —————- */
var pin = document.getElementById(‘pin’), pout = document.getElementById(‘pout’),
pcache = document.getElementById(‘pcache’), pcalls = document.getElementById(‘pcalls’);
function money(x){
if (x >= 1000) return ‘$’ + x.toLocaleString(‘en-US’, {maximumFractionDigits:0});
if (x >= 1) return ‘$’ + x.toFixed(2);
return ‘$’ + x.toFixed(4);
}
function calcCost(){
var inTok = +pin.value, outTok = +pout.value, cache = +pcache.value / 100, calls = +pcalls.value;
var over = inTok > 200000;
var rIn = over ? 4 : 2, rCache = over ? 1 : 0.5, rOut = over ? 12 : 6;
var cached = inTok * cache, fresh = inTok – cached;
var per = (fresh / 1e6) * rIn + (cached / 1e6) * rCache + (outTok / 1e6) * rOut;
document.getElementById(‘pinV’).textContent = inTok.toLocaleString(‘en-US’);
document.getElementById(‘poutV’).textContent = outTok.toLocaleString(‘en-US’);
document.getElementById(‘pcacheV’).textContent = (cache * 100).toFixed(0) + ‘%’;
document.getElementById(‘pcallsV’).textContent = calls.toLocaleString(‘en-US’);
var tb = document.getElementById(‘tierBox’);
tb.className=”tier” + (over ? ‘ hi’ : ”);
tb.textContent = over
? ‘LONG-CONTEXT TIER \u2014 prompt above 200K tokens. Billing $4 / $1 / $12 per 1M.’
: ‘STANDARD TIER \u2014 prompt at or below 200K tokens. Billing $2 / $0.50 / $6 per 1M.’;
document.getElementById(‘oCall’).textContent = money(per);
document.getElementById(‘oDay’).textContent = money(per * calls);
document.getElementById(‘oMonth’).textContent = money(per * calls * 30);
}
[pin, pout, pcache, pcalls].forEach(function(el){ el.addEventListener(‘input’, calcCost); });
calcCost();
/* —————- 04 effort —————- */
var E = [
[‘low’, 22, 12, ‘Shallowest pass. Suited to classification, extraction, routing, and short tool calls where the answer is close to the prompt.’],
[‘medium’, 48, 34, ‘Middle setting. A reasonable default for retrieval-grounded answers and routine code edits with a verification step downstream.’],
[‘high’, 74, 62, ‘The API default, and the level xAI reports its launch benchmarks at. Multi-step coding, research, and agent loops sit here.’],
[‘xhigh’, 96, 94, ‘New in Grok 4.6. Reserve it for the hardest steps in a trajectory \u2014 thorny debugging, plans that must hold over many turns \u2014 and route the rest lower.’]
];
var stepsEl = document.getElementById(‘steps’);
var ei = 2;
E.forEach(function(e, i){
var b = document.createElement(‘button’);
b.className=”sbtn”; b.type=”button”; b.textContent = e[0];
b.addEventListener(‘click’, function(){ ei = i; drawEffort(); });
stepsEl.appendChild(b);
});
function drawEffort(){
[].slice.call(stepsEl.children).forEach(function(b,i){
b.setAttribute(‘aria-pressed’, i === ei ? ‘true’ : ‘false’);
});
var e = E[ei];
document.getElementById(‘mDepth’).style.width = e[1] + ‘%’;
document.getElementById(‘mCost’).style.width = e[2] + ‘%’;
document.getElementById(‘dLab’).textContent = e[0] + (ei === 2 ? ‘ (default)’ : ”);
document.getElementById(‘cLab’).textContent = ei === 0 ? ‘lowest’ : ei === 3 ? ‘highest’ : ‘moderate’;
document.getElementById(‘effortText’).textContent = e[3];
resize();
}
drawEffort();
/* —————- auto-resize —————- */
function resize(){
try {
var h = document.body.offsetHeight + 40;
if (window.parent && window.parent !== window){
window.parent.postMessage({ mtpGrok46Height: h }, ‘*’);
}
} catch(e){}
}
window.addEventListener(‘load’, resize);
window.addEventListener(‘resize’, resize);
setTimeout(resize, 300);
setTimeout(resize, 1200);
})();
