← Back to Issue

The new GPT-5.6 family: Luna, Terra, Sol

From Leadership in Tech · subscribed via aiste.ulozaite@gmail.com · original ↗ · unsubscribe


The new GPT-5.6 family: Luna, Terra, Sol (function() { // Apply theme immediately to prevent flash const theme = localStorage.getItem(‘theme’); if (theme === ‘light’   theme === ‘dark’) { document.documentElement.setAttribute(‘data-theme’, theme); } })();

Simon Willison’s Weblog

Subscribe

Sponsored by: Dynatrace — When agents enter the SDLC, observability becomes the enabler to move from code generation to scalable engineering. Read the blog for a framework to get started

The new GPT-5.6 family: Luna, Terra, Sol

9th July 2026

OpenAI’s latest flagship model hit general availability this morning, and comes in three sizes: Luna, Terra, and Sol (from smallest to largest).

The new models are priced per 1M input/output tokens as Luna $1/$6, Terra $2.50/$15, Sol $5/$30. For comparison, the Claude Opus series are $5/$25 and the Claude Fable 5 is $10/$50, but price-per-million tokens doesn’t tell us much now that the number of reasoning tokens can differ so much between models for the same task.

All three models have a February 16th 2026 knowledge cutoff, a million token context window, and 128,000 maximum output tokens.

OpenAI’s biggest benchmark claim concerns long-running agentic performance, with one benchmark showing all three models outperforming Claude Fable 5:

We trained GPT-5.6 to get more useful work from every token. On Agents’ Last Exam, an evaluation of long-running professional workflows across 55 fields, GPT-5.6 Sol sets a new high of 53.6, eclipsing Claude Fable 5 (adaptive reasoning) by 13.1 points. Even at medium reasoning, it beats Fable 5 by 11.4 points at roughly one-quarter the estimated cost. That efficiency extends to smaller models, which are essential to making intelligence more abundant and affordable: GPT-5.6 Terra and GPT-5.6 Luna outperform Fable 5 at around one-sixteenth the cost.

Amusingly, one self-reported benchmark that Fable 5 crushed the GPT-5.6 family on was SWE-Bench Pro, where Fable 5 got 80% compared to GPT-5.6 Sol getting 64.6%. This may help explain why OpenAI chose to publish this article yesterday specifically calling out SWE-Bench Pro for problems they found while auditing that benchmark:

In light of these results, we estimate that ~30% of SWE-bench Pro tasks are broken, and advise that model developers carefully examine results

I’ve had some early access to GPT-5.6 Sol—it’s definitely very competent, though so far it hasn’t struck me as better than Fable at the kind of complex coding tasks I’ve been using with Anthropic’s model.

As usual, the model guidance for using GPT-5.6 has the most interesting details. There are a bunch of new API features that I need to explore (and probably add support for in LLM), including:

Here’s a full page with 18 different pelicans—for reasoning efforts none, low, medium, high, xhigh, and max across the three different models. It also lists their token and calculated costs—the least expensive was gpt-5.6-luna at effort none for 0.71 cents, the most expensive was gpt-5.6-sol at max reasoning level for 48.55 cents.

A grid of nine pelicans riding bicycles, of varying quality

In further pelican news, if you jump to 17:50 in their livestream from this morning you’ll see OpenAI’s own demo of 3D pelicans riding a tricycle, a bicycle, a pony, and another pelican!

Frame from a livestream showing a 3D model of a pelican riding another pelican

Posted 9th July 2026 at 7:46 pm · Follow me on Mastodon, Bluesky, Twitter or subscribe to my newsletter

More recent articles

This is The new GPT-5.6 family: Luna, Terra, Sol by Simon Willison, posted on 9th July 2026.

ai 2,177 openai 446 generative-ai 1,928 llms 1,895 llm-tool-use 75 llm-pricing 89 pelican-riding-a-bicycle 131 llm-release 221 gpt-5 31

Next: Kimi K3, and what we can still learn from the pelican benchmark

Previous: sqlite-utils 4.0, now with database schema migrations

Monthly briefing

Sponsor me for $10/month and get a curated email digest of the month’s most important LLM developments.

Pay me to send you less!

Sponsor & subscribe

image-gallery:not(:defined) img {max-height: 150px;} captioned-image-gallery:not(:defined) > figure {max-height: 240px; overflow: hidden;} document.addEventListener(‘DOMContentLoaded’, () => { document.querySelectorAll(‘h2[id],h3[id],h4[id],h5[id],h6[id]’).forEach(el => { const id = el.getAttribute(‘id’); const permalinkContext = el.closest(‘[data-permalink-context]’); if (permalinkContext) { const url = permalinkContext.getAttribute(‘data-permalink-context’); const hashLink = document.createElement(‘a’); hashLink.style.borderBottom = ‘none’; hashLink.style.color = ‘#666’; hashLink.style.fontSize = ‘1em’; hashLink.style.opacity = 0.8; hashLink.setAttribute(‘href’, url + ‘#’ + id); hashLink.innerText = ‘#’; el.appendChild(document.createTextNode(‘\u00A0’)); el.appendChild(hashLink); } }); }); const config = [ {“tag”: “lite-youtube”, “js”: “/static/lite-yt-embed.js”, “css”: “/static/lite-yt-embed.css”}, {“tag”: “image-gallery”, “js”: “/static/image-gallery.js”, “css”: null}, {“tag”: “captioned-image-gallery”, “js”: “/static/captioned-image-gallery.js”, “css”: null}, {“tag”: “click-to-play”, “js”: “/static/click-to-play.js”, “css”: “/static/click-to-play.css”}, {“tag”: “github-code”, “js”: “/static/github-code.js”, “css”: null} ]; for (const {tag, js, css} of config) { if (document.querySelector(tag)) { if (css) { document.head.appendChild( Object.assign(document.createElement(‘link’), { rel: ‘stylesheet’, href: css }) ); } if (js) { await import(js); } } } document.addEventListener(‘DOMContentLoaded’, () => { if (window.localStorage.getItem(‘ADMIN’)) { document.querySelectorAll(‘.edit-page-link’).forEach(el => { const url = el.getAttribute(‘data-admin-url’); if (url) { const a = document.createElement(‘a’); a.href = url; a.className = ‘edit-link’; a.innerHTML = ‘ Edit’; el.appendChild(a); el.style.display = ‘block’; } }); } }); // Random tag navigation - shows button if recently came from tag random (function() { const stored = localStorage.getItem(‘random_tag’); if (!stored) return; try { const data = JSON.parse(stored); const elapsed = Date.now() - data.timestamp; // Only show if within 5 seconds if (elapsed > 5000) return; const header = document.getElementById(‘smallhead-inner’); if (!header) return; const btn = document.createElement(‘a’); btn.href = ‘/random/’ + encodeURIComponent(data.tag) + ‘/’; btn.className = ‘random-tag-nav’; btn.innerHTML = ‘ Random ‘ + data.tag; btn.addEventListener(‘click’, function(e) { // Bump the timestamp before navigating localStorage.setItem(‘random_tag’, JSON.stringify({ tag: data.tag, timestamp: Date.now() })); }); // Insert before the Subscribe link const subscribeLink = document.getElementById(‘smallhead-about’); if (subscribeLink) { header.insertBefore(btn, subscribeLink); } else { header.appendChild(btn); } } catch (e) { // Invalid JSON, clear it localStorage.removeItem(‘random_tag’); } })(); // Theme toggle functionality (function() { const toggle = document.getElementById(‘theme-toggle’); const iconAuto = document.getElementById(‘icon-auto’); const iconLight = document.getElementById(‘icon-light’); const iconDark = document.getElementById(‘icon-dark’); // Theme states: ‘auto’ (default), ‘light’, ‘dark’ function getTheme() { return localStorage.getItem(‘theme’)   ‘auto’; } function setTheme(theme) { if (theme === ‘auto’) { localStorage.removeItem(‘theme’); document.documentElement.removeAttribute(‘data-theme’); } else { localStorage.setItem(‘theme’, theme); document.documentElement.setAttribute(‘data-theme’, theme); } updateIcon(theme); } function updateIcon(theme) { iconAuto.style.display = theme === ‘auto’ ? ‘block’ : ‘none’; iconLight.style.display = theme === ‘light’ ? ‘block’ : ‘none’; iconDark.style.display = theme === ‘dark’ ? ‘block’ : ‘none’; // Update aria-label for accessibility const labels = { ‘auto’: ‘Theme: Auto (system preference). Click to switch to light.’, ‘light’: ‘Theme: Light. Click to switch to dark.’, ‘dark’: ‘Theme: Dark. Click to switch to auto.’ }; toggle.setAttribute(‘aria-label’, labels[theme]); } // Cycle through themes: auto -> light -> dark -> auto function cycleTheme() { const current = getTheme(); const next = current === ‘auto’ ? ‘light’ : current === ‘light’ ? ‘dark’ : ‘auto’; setTheme(next); } // Initialize updateIcon(getTheme()); toggle.addEventListener(‘click’, cycleTheme); })();