November changelog: Runtimes & OIDC cloud credentials, plus imports with Claude Code & opencode
Read moreLLM Rankings for Infrastructure as Code
Ten language models each wrote nine reusable OpenTofu modules for AWS, GCP and Azure. We scored all 90 with checks against real tofu plan output and an LLM judge calibrated against human grades.
- Release
- 2026-10
- Models
- 10
- Modules scored
- 90
- Run date
- 2026-10-22
Leaderboard
The overall score is 70% mechanical checks against real plans and 30% LLM judge. The top four have overlapping rank intervals, so read them as a group. Select a column heading to sort.
| 1 | Claude Opus 5.5Anthropic | Closed | 88.987.5–91.5 | 1–3 | 85.0 | 86.4 | 94.7 | 87.9 | 88.6 | 90.2 | 0/9 | 0/9 | 243 s | $0.40 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | Claude Fable 5.1Anthropic | Closed | 86.983.7–90.2 | 1–5 | 79.0 | 85.0 | 91.2 | 85.6 | 85.6 | 89.5 | 0/9 | 0/9 | 302 s | $1.55 |
| 3 | GPT-6 AstraOpenAI | Closed | 86.786.0–89.8 | 1–5 | 72.0 | 83.2 | 94.7 | 72.8 | 91.3 | 95.9 | 0/9 | 0/9 | 189 s | $0.81 |
| 4 | Claude Sonnet 5.5Anthropic | Closed | 86.184.8–88.2 | 2–5 | 81.6 | 82.5 | 94.7 | 84.8 | 90.6 | 82.8 | 0/9 | 2/9 | 161 s | $0.17 |
| 5 | Kimi K3Moonshot AI | Open | 82.457.3–84.7 | 5–9 | 25.3 | 80.6 | 86.0 | 81.1 | 79.2 | 86.9 | 1/9 | 4/9 | 494 s | $0.44 |
| 6 | GPT-6 LunaOpenAI | Closed | 81.579.8–82.1 | 5–7 | 71.3 | 79.7 | 84.2 | 74.3 | 84.5 | 85.7 | 0/9 | 0/9 | 144 s | $0.005 |
| 7 | Gemini 3.1 ProGoogle | Closed | 73.069.2–76.2 | 6–9 | 59.9 | 71.9 | 71.9 | 74.2 | 79.3 | 65.4 | 0/9 | 5/9 | 168 s | $0.25 |
| 8 | DeepSeek V4 ProDeepSeek | Open | 69.264.4–79.3 | 6–9 | 60.9 | 69.5 | 67.5 | 82.5 | 62.1 | 63.2 | 0/9 | 5/9 | 322 s | $0.098 |
| 9 | Claude Haiku 5.5Anthropic | Closed | 68.066.1–90.6 | 1–9 | 25.3 | 59.2 | 91.2 | 87.8 | 26.8 | 89.4 | 2/9 | 1/9 | 107 s | $0.012 |
| 10 | Gemini 3.6 FlashGoogle | Closed | 54.340.0–61.5 | 10–10 | 15.0 | 50.9 | 62.3 | 62.8 | 49.2 | 51.0 | 1/9 | 8/9 | 279 s | $0.35 |
Worst attempt is the lowest score of a model's 9 attempts. Mechanical and Judge are each component scored on its own, on the same 0–100 scale. Cloud columns are the median of three attempts. Failed plans and security failures count attempts out of 9. Time is the median wall-clock time of an attempt. Cost is the average per attempt at list prices on 2026-10-23, excluding judging.
Which model should I use?
The top four are statistically close, so treat these as starting points, not verdicts. Each card links to the model report.
- Best overall: Claude Opus 5.5The highest score (88.9) and the best worst attempt in the field (85.0). No failed plans and no security failures in nine attempts. About $0.40 per attempt.
- Best value: GPT-6 LunaScores 81.5 for about half a cent per attempt, with no failed plans and no security failures. Sixth overall, and it costs the least of any model.
- Cheapest in the top group: Claude Sonnet 5.5Scores 86.1 for about $0.17 per attempt, and is the fastest of the top four. Two of its nine attempts failed a security item, both by leaving App Service basic-auth publishing on.
- Best open-weight: Kimi K3Scores 82.4 and places fifth, the best result outside the top four. Review its output: four of nine attempts failed a security item, and one did not plan.
Score vs. cost
Generation cost varies by a factor of about 280 across the field and is only loosely related to score. Marked models are on the Pareto frontier: no other model beats them on both cost and score.
| Model | Cost per attempt | Overall | Pareto frontier |
|---|---|---|---|
| GPT-6 Luna | $0.005 | 81.5 | On frontier |
| Claude Haiku 5.5 | $0.012 | 68.0 | |
| DeepSeek V4 Pro | $0.098 | 69.2 | |
| Claude Sonnet 5.5 | $0.17 | 86.1 | On frontier |
| Gemini 3.1 Pro | $0.25 | 73.0 | |
| Gemini 3.6 Flash | $0.35 | 54.3 | |
| Claude Opus 5.5 | $0.40 | 88.9 | On frontier |
| Kimi K3 | $0.44 | 82.4 | |
| GPT-6 Astra | $0.81 | 86.7 | |
| Claude Fable 5.1 | $1.55 | 86.9 |
Best model by cloud
Each cloud had one brief. Scores are the median of three attempts per model.
AWS: S3 bucket
- 1.Claude Opus 5.587.9
- 2.Claude Haiku 5.587.8
- 3.Claude Fable 5.185.6
- Field median
- 81.8
- Most missed check
- Access log delivery permission (H13): missed in 30 of 30 attempts
GCP: Cloud SQL for PostgreSQL
- 1.GPT-6 Astra91.3
- 2.Claude Sonnet 5.590.6
- 3.Claude Opus 5.588.6
- Field median
- 82.2
- Most missed check
- Databases dropped on removal (H11): missed in 24 of 28 attempts
Azure: App Service
- 1.GPT-6 Astra95.9
- 2.Claude Opus 5.590.2
- 3.Claude Fable 5.189.5
- Field median
- 86.2
- Most missed check
- Interface budget (A7): missed in 19 of 28 attempts
Where models struggle
Some weaknesses showed up across vendors, sizes and price points. Whichever model you use, these are the places to check its infrastructure code first.
- Input validation
- The weakest judged area. Only 32 of 90 attempts earned full credit for variables and validation, and every model fell short at least once. Some modules had no validation at all. More often, error-prone inputs such as SKUs, time windows and retention periods went unchecked, or two inputs could be set to contradict each other.
- Documentation that is wrong
- Nearly every module had documentation, but 26 of 90 attempts scored zero for it because something in it was false: a description promising behavior the code does not implement, a service limit stated wrong, or a comment the next line contradicts. Longer READMEs give the judge more claims to check.
- The provider's quiet defaults
- Models configure the obvious feature and miss the default or permission that makes it safe or working. No S3 attempt, out of 30, produced access logs S3 could deliver: 19 offered no logging, and the other 11 never gave S3 permission to write the logs. 24 of 28 Cloud SQL modules that planned delete a database's data when it is removed from the inputs. 10 of 28 App Service modules that planned left basic-auth publishing on, several of them right next to correct HTTPS and TLS settings.
- Security as a setting
- In 15 attempts the secure value was the default, but any consumer could change it through an input, for example a connection mode that also accepts unencrypted clients. The module is safe as written and unsafe as used.
- Version constraints
- Provider constraints that allow the next major version appeared in 19 of 30 AWS modules and 22 of 28 GCP modules, but only 2 of 28 Azure modules. The habit follows the provider, not the model.
- Sizing the interface to the audience
- Only about half of attempts earned full credit for interface design. The usual miss is handing settings that need service expertise, such as encryption algorithms or upload cleanup windows, to developers the brief describes as new to the service.
How the ranking works
Each model got the same three briefs of a few sentences, each naming a use case and an audience: an S3 bucket for application teams, a Cloud SQL for PostgreSQL instance for a DBA team, and an App Service web app for an SRE team. The briefs never list the security, durability or hygiene settings a senior reviewer expects, so the score measures what the model adds on its own.
Each model made three attempts per brief. A module that does not plan gets no mechanical credit and counts as a failed plan.
- Mechanical rubric (70%)
- Fixture-specific checks evaluated against real tofu plan output.
- Judge (30%)
- A calibrated LLM judge grading design and craft against a published quality doctrine.
- Disclosure
- Massdriver wrote the briefs, rubrics and doctrine. The judge is Claude Opus 5.5, from the same vendor as four of the ranked models. Ranked by the mechanical score alone, the ten models fall in the same order.
LLM rankings FAQ
In iac-bench 2026-10, Claude Opus 5.5 has the highest overall score (88.9). Claude Fable 5.1, GPT-6 Astra and Claude Sonnet 5.5 follow within three points, and their rank intervals overlap, so the four form a top group. The benchmark uses OpenTofu, the open-source fork of Terraform, which reads the same HCL. Terraform itself was not run.
Each cloud had one brief, so these are results for one service per cloud. On AWS (an S3 bucket), Claude Opus 5.5 (87.9) and Claude Haiku 5.5 (87.8) lead. On GCP (Cloud SQL for PostgreSQL), GPT-6 Astra (91.3) leads Claude Sonnet 5.5 (90.6). On Azure (App Service), GPT-6 Astra (95.9) leads Claude Opus 5.5 (90.2). GPT-6 Astra also has the lowest S3 score in the top group (72.8).
GPT-6 Luna scored 81.5 for about half a cent per attempt, with no security failures. Claude Sonnet 5.5 is the cheapest model in the top group, at about $0.17 per attempt. Claude Opus 5.5 has the highest score, at about $0.40 per attempt.
Kimi K3 places fifth (82.4), ahead of GPT-6 Luna and Gemini 3.1 Pro. DeepSeek V4 Pro places eighth (69.2). Both trail the four leaders.
Input validation and documentation are the weakest areas across every model: only 32 of 90 attempts fully validated their inputs, and 26 of 90 had documentation with a false statement in it. Models also miss provider defaults, such as the permission S3 needs to deliver access logs (missed by all 30 attempts). 25 of 90 attempts failed a mandatory security item. The section above, Where models struggle, has the details.
Not reliably. The briefs never mention security, and 25 of 90 attempts failed at least one mandatory security item: 6 of 30 S3 modules did not guarantee the public access block, 9 of 28 Cloud SQL modules that planned did not require encrypted connections, and 10 of 28 App Service modules that planned did not turn off basic-auth publishing. Claude Opus 5.5, Claude Fable 5.1, GPT-6 Astra and GPT-6 Luna had none in nine attempts each. Gemini 3.6 Flash failed in eight of nine.
A module must first plan with its own example inputs. Fixture-specific checks then read the plan and the source for security, data protection, fit for the audience and service expertise. They check what the module does, never what it names things. That mechanical score is 70%. The judge grades design and craft in 14 sections of a published doctrine, 0 to 2 each, for the other 30%. Each model's score per cloud is the median of its three attempts, and the overall score is the mean of the three.
For each fixture, the judge and a human graded the same 8 modules section by section, 112 grades each. The judge counts only if it matches the human on at least 6 of 8 modules in every section. Claude Opus 5.5 matched 93%, 97% and 98% of the grades on the three fixtures. A second judge, GPT-5.5, failed that bar on two fixtures and was not used.
The judge is Claude Opus 5.5, and it accounts for 30% of the score. Ranked by the mechanical checks alone, where no model grades another, the ten models fall in exactly the same order. Massdriver, which builds infrastructure tooling, wrote the briefs, rubrics and doctrine.
No. Every module was planned against real AWS, GCP and Azure accounts, and nothing was applied. Problems that only appear at apply time, such as a cloud API rejecting a value, are not scored.
Each provider's defaults, with no temperature, reasoning-effort or token-budget overrides. Every model got the same prompt, the same tools and the same limits: 150 messages and 30 minutes per attempt. Most providers serve these models under undated names, so the results are tied to the run date, 2026-10-22.
Three attempts per brief is enough to separate groups but not neighbors. Claude Opus 5.5 is the only model whose 95% rank interval (1–3) stays within the top three. Gemini 3.6 Flash ranks last in at least 95% of bootstrap draws.
Yes. The benchmark code, briefs, rubrics and judge doctrine are public on GitHub, tagged 2026-10, and the links at the bottom of this page go straight to them. The data release has every transcript, all 90 modules, every score and judge grade with its evidence, and the calibration. It is licensed CC BY 4.0, and the code at that tag reproduces every number on this page.
Read the full reports
- Results and findingsThe leaderboard, results per fixture and six findings, with figures.
- MethodologyBriefs, evaluation setup, scoring, judge calibration, statistics and limitations.
- Scoring criteriaEvery rubric item for each brief, with its weight and how many attempts passed it, and the judge sections.
- Data releaseEvery transcript, all 90 modules, scores, judge grades with evidence and the judge calibration. CC BY 4.0, on GitHub.
- Benchmark codeThe harness, briefs, rubrics and reference modules at the 2026-10 tag, which reproduces every score. Apache-2.0, on GitHub.
- Quality doctrineThe published definition of a good module that the judge grades against, section by section, on GitHub.