GPT-5.6 Sol: GA Status, Benchmarks, and Practical Model Routing
Research timestamp: July 10, 2026 (UTC). Bottom line: GPT-5.6 is no longer only a limited preview. OpenAI announced general availability on July 9 across ChatGPT, Codex, and the API, with a gradual account rollout. If an eligible account does not show it yet, that is a rollout/access state, not evidence that the model is still preview-only.
What changed since the July 7 note
The earlier release-date uncertainty is resolved.
- June 26: OpenAI began a limited GPT-5.6 preview.
- July 9: OpenAI announced general availability for the GPT-5.6 family: Sol, Terra, and Luna.
- Current rollout state: OpenAI says rollout is global but gradual; an eligible account can still temporarily lack the picker option.
- ChatGPT: GPT-5.5 Instant remains the default fast model. GPT-5.6 Sol powers Medium, High, and Extra High reasoning for eligible paid plans; Sol Pro is available on Pro where enabled.
- Codex and API: Sol, Terra, and Luna are available. Codex also exposes Terra to Free and Go users.
GPT-5.6 family at a glance
| Model | Positioning | API price / 1M input | API price / 1M output | Best use |
|---|---|---|---|---|
| GPT-5.6 Sol | Frontier capability | $5.00 | $30.00 | Difficult coding, research, computer use, high-stakes review |
| GPT-5.6 Terra | Balanced tier | $2.50 | $15.00 | Strong everyday agent and knowledge work |
| GPT-5.6 Luna | Lowest-cost / fastest tier | $1.00 | $6.00 | High-volume routing, drafts, lightweight tool work |
| GPT-5.5 | Current stable predecessor | $5.00 | $30.00 | Existing workflows and fast ChatGPT default behavior |
OpenAI describes ultra as a multi-agent setting for the hardest work. Treat it as an orchestration mode with potentially higher cost and latency, not as a simple model-name upgrade.
Interactive benchmark explorer
The numbers below are vendor-published results, primarily from OpenAI's July 9 comparison table. They are useful directional signals, but they do not make every model comparison apples-to-apples: harnesses, effort levels, tool access, prompts, and evaluation dates can differ.
<div style="max-width:980px;margin:0 auto">
<div style="display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px">
<button data-metric="terminal">Terminal-Bench 2.1</button>
<button data-metric="swe">SWE-Bench Pro</button>
<button data-metric="agents">Agents' Last Exam</button>
</div>
<div style="position:relative;height:360px"><canvas id="benchmarkChart"></canvas></div>
<p id="benchmarkNote" style="margin:10px 0 0;color:var(--color-text-secondary);font-size:13px"></p>
</div>
<script>
const Chart = Solaris.libs.Chart;
const metrics = {
terminal: {
label: 'Terminal-Bench 2.1 (%)',
note: 'OpenAI-published coding-agent comparison. Sol Ultra: 91.9%; chart shows Sol standard effort at 88.8%.',
values: [
['GPT-5.6 Sol',88.8,'#c48628'], ['GPT-5.6 Terra',87.4,'#4f8d75'],
['GPT-5.6 Luna',84.7,'#7997b8'], ['GPT-5.5',85.6,'#8d7cbe'],
['Claude Fable 5',83.1,'#ca6b50'], ['Claude Opus 4.8',78.9,'#b06d96'],
['Gemini 3.1 Pro',70.7,'#6e8da3']
]
},
swe: {
label: 'SWE-Bench Pro (%)',
note: 'OpenAI-published table. Claude Fable 5 leads this specific reported comparison; benchmark leadership is workload-specific.',
values: [
['GPT-5.6 Sol',64.6,'#c48628'], ['GPT-5.6 Terra',63.4,'#4f8d75'],
['GPT-5.6 Luna',62.7,'#7997b8'], ['GPT-5.5',59.4,'#8d7cbe'],
['Claude Fable 5',80.0,'#ca6b50'], ['Claude Opus 4.8',69.2,'#b06d96'],
['Gemini 3.1 Pro',54.2,'#6e8da3']
]
},
agents: {
label: "Agents' Last Exam (%)",
note: 'General agent benchmark from the OpenAI comparison table. This is not a substitute for an evaluation on your own repository and tool stack.',
values: [
['GPT-5.6 Sol',52.7,'#c48628'], ['GPT-5.6 Terra',50.4,'#4f8d75'],
['GPT-5.6 Luna',50.3,'#7997b8'], ['GPT-5.5',46.9,'#8d7cbe'],
['Claude Fable 5',40.5,'#ca6b50'], ['Claude Opus 4.8',45.2,'#b06d96'],
['Gemini 3.1 Pro',32.1,'#6e8da3']
]
}
};
let chart;
function render(metric) {
const m = metrics[metric];
if (chart) chart.destroy();
chart = new Chart(document.getElementById('benchmarkChart'), {
type:'bar',
data:{
labels:m.values.map(x=>x[0]),
datasets:[{label:m.label,data:m.values.map(x=>x[1]),backgroundColor:m.values.map(x=>x[2]),borderRadius:3}]
},
options:{
indexAxis:'y', responsive:true, maintainAspectRatio:false,
plugins:{legend:{display:false},tooltip:{callbacks:{label:c=>' '+c.raw+'%'}}},
scales:{x:{beginAtZero:true,max:100,grid:{color:'rgba(128,128,128,.18)'},ticks:{callback:v=>v+'%'}},y:{grid:{display:false}}}
}
});
document.getElementById('benchmarkNote').textContent=m.note;
}
document.querySelectorAll('[data-metric]').forEach(b=>b.onclick=()=>render(b.dataset.metric));
render('terminal');
</script>
Cost and coding-agent trade-offs
This view intentionally uses only figures with current official prices in the cited sources. GLM-5.2 is shown as a deployment option elsewhere in this note, but not plotted here because its official platform pricing is denominated separately and provider pricing varies.
<div style="max-width:980px;margin:0 auto">
<div id="costPlot" style="width:100%;height:380px"></div>
<p style="margin:8px 0 0;color:var(--color-text-secondary);font-size:13px">X = published blended list price for 1M input + 1M output tokens. Y = vendor-published Terminal-Bench 2.1 score. Hover points for details.</p>
</div>
<script>
const d3 = Solaris.libs.d3;
const host = document.getElementById('costPlot');
const data = [
{name:'GPT-5.6 Luna', cost:7, score:84.7, color:'#7997b8'},
{name:'GPT-5.6 Terra', cost:17.5, score:87.4, color:'#4f8d75'},
{name:'GPT-5.6 Sol', cost:35, score:88.8, color:'#c48628'},
{name:'Claude Fable 5', cost:60, score:83.1, color:'#ca6b50'}
];
function draw() {
host.innerHTML='';
const w=host.clientWidth||760,h=360,m={top:30,right:30,bottom:58,left:54};
const svg=d3.select(host).append('svg').attr('width',w).attr('height',h).style('overflow','visible');
const x=d3.scaleLinear().domain([0,65]).range([m.left,w-m.right]);
const y=d3.scaleLinear().domain([80,90]).nice().range([h-m.bottom,m.top]);
svg.append('g').attr('transform','translate(0,'+(h-m.bottom)+')').call(d3.axisBottom(x).ticks(6).tickFormat(d=>'$'+d));
svg.append('g').attr('transform','translate('+m.left+',0)').call(d3.axisLeft(y).ticks(5).tickFormat(d=>d+'%'));
svg.append('g').attr('stroke','currentColor').attr('opacity',.13).selectAll('line')
.data(y.ticks(5)).join('line').attr('x1',m.left).attr('x2',w-m.right).attr('y1',d=>y(d)).attr('y2',d=>y(d));
const tip=d3.select(host).append('div').style('position','absolute').style('display','none').style('padding','7px 9px').style('border','1px solid var(--color-border)').style('background','var(--color-bg)').style('font-size','12px').style('pointer-events','none');
d3.select(host).style('position','relative');
svg.selectAll('circle').data(data).join('circle').attr('cx',d=>x(d.cost)).attr('cy',d=>y(d.score)).attr('r',10).attr('fill',d=>d.color)
.on('mouseenter',(e,d)=>tip.style('display','block').html('<b>'+d.name+'</b><br>$'+d.cost+' blended / 1M in + 1M out<br>'+d.score+'% Terminal-Bench 2.1'))
.on('mousemove',e=>tip.style('left',(e.offsetX+14)+'px').style('top',(e.offsetY-8)+'px'))
.on('mouseleave',()=>tip.style('display','none'));
svg.selectAll('text.label').data(data).join('text').attr('class','label').attr('x',d=>x(d.cost)).attr('y',d=>y(d.score)-16).attr('text-anchor','middle').attr('font-size',12).text(d=>d.name.replace('GPT-5.6 ',''));
svg.append('text').attr('x',(m.left+w-m.right)/2).attr('y',h-14).attr('text-anchor','middle').attr('font-size',12).text('Published blended list price per 1M input + 1M output tokens');
}
new ResizeObserver(draw).observe(host); draw();
</script>
Model availability and routing reality
| Model / family | Current access | Important caveat |
|---|---|---|
| GPT-5.6 Sol / Terra / Luna | GA in ChatGPT, Codex, and API; individual account exposure can lag | Sol is not the default fast ChatGPT model; GPT-5.5 Instant remains the default |
| Claude Fable 5 | General product/API availability | Cybersecurity, biology, chemistry, and distillation requests can route to Opus 4.8 |
| Claude Mythos 5 | Restricted trusted-access program | It is not the standard public model; 30-day retention applies for safety monitoring |
| Claude Opus 4.8 | General availability | Also serves as the safety fallback for some Fable 5 requests |
| GLM-5.2 | Z.ai coding products, API routes, and downloadable weights | MIT-licensed weights and a claimed stable 1M context do not eliminate infrastructure and reliability trade-offs |
The important Anthropic distinction
Fable 5 and Mythos 5 are not the same product behavior, even though Anthropic says they use the same underlying model. Fable is the broadly usable safeguarded product. For certain cyber, biology, chemistry, and distillation requests, Anthropic automatically routes to Opus 4.8 and informs the user. Anthropic reports that more than 95% of Fable sessions have no fallback, but an agent evaluation should log the actual model used per run.
A three-dimensional routing map
This is a conceptual map, not a benchmark. It makes the operating trade-off visible: closed frontier capability, broad safeguarded access, and open-weight control occupy different places.
<div style="max-width:980px;margin:0 auto">
<div id="routing3d" style="position:relative;height:355px;overflow:hidden;border:1px solid var(--color-border);background:var(--color-bg);touch-action:none">
<div id="routingLabels" style="position:absolute;inset:0;pointer-events:none;z-index:2"></div>
<div style="position:absolute;left:10px;top:10px;z-index:3;display:flex;gap:6px;pointer-events:none;font-size:11px">
<span style="padding:3px 6px;background:var(--color-bg-alt);border:1px solid var(--color-border);color:#c48628">Capability</span>
<span style="padding:3px 6px;background:var(--color-bg-alt);border:1px solid var(--color-border);color:#4f8d75">Access</span>
<span style="padding:3px 6px;background:var(--color-bg-alt);border:1px solid var(--color-border);color:#7997b8">Deployment control</span>
</div>
</div>
<div style="display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 0 8px">
<span style="font-size:13px;color:var(--color-text-secondary)">Drag to rotate. Scroll or use controls to zoom. Click a marker for routing context.</span>
<span style="display:flex;gap:5px"><button id="routingZoomOut" type="button" aria-label="Zoom out">β</button><button id="routingReset" type="button">Reset</button><button id="routingZoomIn" type="button" aria-label="Zoom in">+</button></span>
</div>
<div id="routingLegend" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:7px"></div>
<div id="routingDetail" style="margin-top:10px;padding:9px 11px;border-left:3px solid var(--color-accent);background:var(--color-bg-alt);font-size:13px;color:var(--color-text-secondary)">Select a marker to see why it occupies this part of the routing map.</div>
</div>
<script>
const THREE = Solaris.libs.THREE;
const host = document.getElementById('routing3d');
const labelLayer = document.getElementById('routingLabels');
const legend = document.getElementById('routingLegend');
const detail = document.getElementById('routingDetail');
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(42, 1, 0.1, 100);
const target = new THREE.Vector3(0, 0, 0);
camera.position.set(6.8, 4.8, 8.2); camera.lookAt(target);
const renderer = new THREE.WebGLRenderer({antialias:true, alpha:true});
renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));
renderer.setClearColor(0x000000, 0);
renderer.domElement.style.cssText = 'display:block;width:100%;height:100%;cursor:grab';
host.insertBefore(renderer.domElement, labelLayer);
scene.add(new THREE.HemisphereLight(0xffffff, 0x3b3b3b, 1.55));
const key = new THREE.DirectionalLight(0xffffff, 1.4); key.position.set(4, 6, 5); scene.add(key);
const world = new THREE.Group(); scene.add(world);
const grid = new THREE.GridHelper(5.8, 12, 0x9a9a9a, 0xd9d9d9);
grid.position.y=-1.45; grid.material.opacity=.25; grid.material.transparent=true; world.add(grid);
function line(a,b,color){return new THREE.Line(new THREE.BufferGeometry().setFromPoints([new THREE.Vector3(...a),new THREE.Vector3(...b)]),new THREE.LineBasicMaterial({color,transparent:true,opacity:.72}));}
world.add(line([-2.15,-1.35,0],[2.15,-1.35,0],0xc48628)); world.add(line([0,-1.35,0],[0,2.25,0],0x4f8d75)); world.add(line([0,-1.35,-2.15],[0,-1.35,2.15],0x7997b8));
const entries=[
{name:'GPT-5.6 Sol',p:[.95,1.15,-.35],c:'#c48628',why:'High-capability closed frontier tier. Best first evaluation for difficult coding, research, and multi-tool work.'},
{name:'GPT-5.6 Terra',p:[-.45,.72,-.18],c:'#4f8d75',why:'Balanced OpenAI tier: a practical cost/capability candidate for everyday agent work.'},
{name:'GPT-5.6 Luna',p:[-1.35,.15,.58],c:'#7997b8',why:'Lowest-cost GPT-5.6 tier: suited to high-volume routing and routine tool tasks.'},
{name:'Claude Fable 5',p:[1.38,.66,.72],c:'#ca6b50',why:'Strong general frontier option, but sensitive cyber/bio/chemistry requests may route to Opus 4.8.'},
{name:'Claude Mythos 5',p:[1.58,-.88,-.18],c:'#b06d96',why:'Highest-risk capability access is restricted to trusted programs; it is not the ordinary public product path.'},
{name:'GLM-5.2',p:[-.72,-.42,1.42],c:'#6e8da3',why:'Open-weight, 1M-context option. It offers more deployment control, with more responsibility for serving and evaluation.'}
];
const markers=[], labels=[];
function setDetail(e){detail.style.borderLeftColor=e.c;detail.innerHTML='<strong style="color:var(--color-text)">'+e.name+'</strong><br>'+e.why;legend.querySelectorAll('[data-name]').forEach(el=>el.style.outline=el.dataset.name===e.name?'2px solid '+e.c:'none');labels.forEach(x=>x.el.style.opacity=x.entry.name===e.name?'1':'.78');}
entries.forEach(e=>{
const color=new THREE.Color(e.c), group=new THREE.Group(); group.position.set(...e.p); group.userData=e;
const orb=new THREE.Mesh(new THREE.IcosahedronGeometry(.24,2),new THREE.MeshStandardMaterial({color,emissive:color,emissiveIntensity:.14,roughness:.28,metalness:.2}));
const halo=new THREE.Mesh(new THREE.TorusGeometry(.36,.018,10,44),new THREE.MeshBasicMaterial({color,transparent:true,opacity:.68})); halo.rotation.x=Math.PI/2; group.add(orb,halo);world.add(group);markers.push(group);
const label=document.createElement('div');label.textContent=e.name;label.style.cssText='position:absolute;transform:translate(-50%,-50%);padding:3px 6px;border:1px solid '+e.c+';background:var(--color-bg);color:var(--color-text);font-size:11px;line-height:1.1;white-space:nowrap;border-radius:3px;box-shadow:0 1px 4px rgba(0,0,0,.14)';labelLayer.appendChild(label);labels.push({entry:e,group,el:label});
const button=document.createElement('button');button.type='button';button.dataset.name=e.name;button.style.cssText='display:flex;align-items:center;gap:7px;text-align:left;padding:7px 8px;background:transparent;color:var(--color-text);border:1px solid var(--color-border);border-radius:4px';button.innerHTML='<span style="width:9px;height:9px;border-radius:50%;background:'+e.c+';display:inline-block;flex:0 0 auto"></span><span>'+e.name+'</span>';button.onclick=()=>{setDetail(e);render();};legend.appendChild(button);
});
const raycaster=new THREE.Raycaster(), pointer=new THREE.Vector2();let drag=false,moved=false,last={x:0,y:0},rotation={x:-.18,y:.48},fov=42;
function placeLabels(){const w=host.clientWidth,h=host.clientHeight;labels.forEach(x=>{const v=x.group.getWorldPosition(new THREE.Vector3());v.project(camera);const visible=v.z>-1&&v.z<1;const px=Math.max(54,Math.min(w-54,(v.x*.5+.5)*w));const py=Math.max(20,Math.min(h-20,(-v.y*.5+.5)*h));x.el.style.display=visible?'block':'none';x.el.style.left=px+'px';x.el.style.top=py+'px';});}
function render(){world.rotation.set(rotation.x,rotation.y,0);world.updateMatrixWorld(true);camera.lookAt(target);renderer.render(scene,camera);placeLabels();}
function resize(){const w=Math.max(1,host.clientWidth),h=Math.max(1,host.clientHeight);camera.aspect=w/h;camera.updateProjectionMatrix();renderer.setSize(w,h,false);render();}
function zoom(delta){fov=Math.max(27,Math.min(62,fov+delta));camera.fov=fov;camera.updateProjectionMatrix();render();}
function pick(e){const r=renderer.domElement.getBoundingClientRect();pointer.x=((e.clientX-r.left)/r.width)*2-1;pointer.y=-((e.clientY-r.top)/r.height)*2+1;raycaster.setFromCamera(pointer,camera);const hit=raycaster.intersectObjects(markers,true)[0];if(hit){let o=hit.object;while(o&&!o.userData.name)o=o.parent;if(o)setDetail(o.userData);}}
renderer.domElement.addEventListener('pointerdown',e=>{drag=true;moved=false;last={x:e.clientX,y:e.clientY};renderer.domElement.setPointerCapture(e.pointerId);renderer.domElement.style.cursor='grabbing';});
renderer.domElement.addEventListener('pointermove',e=>{if(!drag)return;const dx=e.clientX-last.x,dy=e.clientY-last.y;moved||=Math.abs(dx)+Math.abs(dy)>2;rotation.y+=dx*.008;rotation.x=Math.max(-.62,Math.min(.36,rotation.x+dy*.008));last={x:e.clientX,y:e.clientY};render();});
renderer.domElement.addEventListener('pointerup',e=>{drag=false;renderer.domElement.releasePointerCapture(e.pointerId);renderer.domElement.style.cursor='grab';if(!moved)pick(e);});
renderer.domElement.addEventListener('wheel',e=>{e.preventDefault();zoom(e.deltaY>0?3:-3);},{passive:false});
document.getElementById('routingZoomIn').onclick=()=>zoom(-3);document.getElementById('routingZoomOut').onclick=()=>zoom(3);document.getElementById('routingReset').onclick=()=>{rotation={x:-.18,y:.48};fov=42;camera.fov=fov;camera.updateProjectionMatrix();setDetail(entries[0]);render();};
new ResizeObserver(resize).observe(host);setDetail(entries[0]);resize();
</script>
GLM-5.2: where it fits
GLM-5.2 is a legitimate strategic alternative, but the correct framing is open-weight long-context control, not βit beats every closed frontier model.β
Z.ai's June 16 release states:
- a stable 1M-token context target for long-horizon work;
- configurable High and Max reasoning effort;
- an MIT license for the released weights;
- support in Z.ai coding products and model-serving ecosystems.
Use GLM-5.2 when you need local or controlled deployment, very long repository context, or lower-cost experimentation and you can own the serving/evaluation stack. Do not use a vendor table alone to assume it will outperform Sol or Fable on your specific agent harness.
Practical routing recommendation
| Job | First model to evaluate | Why |
|---|---|---|
| Difficult implementation, debugging, multi-tool work | GPT-5.6 Sol | Current GA frontier option with strong vendor-reported terminal and agent results |
| Everyday coding agent with cost sensitivity | GPT-5.6 Terra | Better cost/capability balance than Sol on OpenAI's stated positioning |
| High-volume drafting, classification, routine tool calls | GPT-5.6 Luna | Lowest OpenAI list price in this family |
| Long-running complex coding where Anthropic product behavior is acceptable | Claude Fable 5 | Strong published SWE-Bench Pro result; evaluate fallback behavior |
| Sensitive cyber/bio research under approved controls | Claude Mythos 5 only with trusted access, otherwise controlled Sol evaluation | Mythos is restricted; Fable can silently become Opus 4.8 for scoped topics |
| 1M-context or self-hosted research/coding | GLM-5.2 | Open weights and long-context focus; validate with your own test set |
| Existing stable ChatGPT conversational workflow | GPT-5.5 Instant | Still the default fast model in ChatGPT |
Evaluation protocol before changing production routing
- Use 20-50 representative tasks from the actual repository/workflow.
- Record model ID, effort, tool harness, prompt, retries, wall time, token use, and final verification result.
- For Fable, record whether a request was routed to Opus 4.8.
- Score completed tasks with deterministic checks: tests, lint, build, screenshots, and reviewer acceptance.
- Set a hard spend cap and maximum tool-call count per run.
- Promote a model only after it improves the success/cost/latency trade-off on this exact workload.
Sources
Primary sources are preferred. Benchmark numbers should be read as their publishers' reported results, not independent universal rankings.
- OpenAI: GPT-5.6 GA announcement and benchmark tables
- OpenAI Help: GPT-5.6 availability in ChatGPT, Codex, and API
- Anthropic: Claude Fable 5 availability, pricing, and safeguards
- Anthropic: Fable 5 and Mythos 5 launch details
- Anthropic: Mythos access and safety constraints
- Z.ai: GLM-5.2 release, 1M context, effort modes, and license claims
- Z.ai / Hugging Face: GLM-5.2 MIT license