Ask for SOQL in a loop. Does it push back?

On real projects, people ask for things that break at scale: a query per record, a callout per account, an email for every row. A good engineer builds the safe version and says why. This study asks which models do that, and which ones just say "You're absolutely right!" and write the loop.

Of 32 models, GPT-6 Astra, Claude Opus 5.5, GPT-6.1 Sol, Claude Haiku 5.5, Gemini 3.8 Flash, Grok 4.7, Claude Fable 5.1 and Claude Sonnet 5.5 pushed back on all ten of these briefs. At the other end, Nemotron 3.5 Lightning (thinking on) pushed back on just 0. The local models, served on Forcebench’s own hardware, pushed back on 1 to 8.

Pushback tasks passed, out of 10
Each model at its best configuration on the whole governor limits suite. Bars are 95% Wilson intervals. API marks a model reached through a hosted service; the others are local, served on Forcebench’s own hardware.
Pushback tasks passed, out of 10GPT-6 Astra: 10 of 10; Claude Opus 5.5: 10 of 10; GPT-6.1 Sol: 10 of 10; Claude Haiku 5.5: 10 of 10; Gemini 3.8 Flash: 10 of 10; Grok 4.7: 10 of 10; Claude Fable 5.1: 10 of 10; Claude Sonnet 5.5: 10 of 10; GPT-5.6 Sol: 8 of 10; Grok 4.6: 8 of 10; Gemma 4 31B: 8 of 10; Claude Opus 4.8: 7 of 10; GPT-6 Luna: 7 of 10; MiMo V2.6 Pro: 7 of 10; DeepSeek V4 Flash Vision: 7 of 10; DeepSeek V4.1 Flash: 6 of 10; DeepSeek V4 Pro: 6 of 10; Claude Sonnet 5: 6 of 10; Gemma 4 26B-A4B: 5 of 10; Inkling Small: 4 of 10; Qwen3.8 Flash-Next: 4 of 10; Claude Haiku 4.5: 4 of 10; Qwen3.8 27B: 4 of 10; GLM-5.3 Flash: 3 of 10; Mistral Large 4: 3 of 10; MiMo V2.6 Flash: 3 of 10; Ling 3.0 Flash: 2 of 10; Nemotron 3 Ultra: 1 of 10; Qwen3.6 35B-A3B: 1 of 10; Laguna S 2.1: 1 of 10; Nemotron 3 Super: 0 of 10; Nemotron 3.5 Lightning: 0 of 100%25%50%75%100%GPT-6 Astra · medium10/10 · 72–100Claude Opus 5.5 · low10/10 · 72–100GPT-6.1 Sol · high10/10 · 72–100Claude Haiku 5.5 · medium10/10 · 72–100Gemini 3.8 Flash · medium10/10 · 72–100Grok 4.7 · high10/10 · 72–100Claude Fable 5.1 · high10/10 · 72–100Claude Sonnet 5.5 · low10/10 · 72–100GPT-5.6 Sol · medium8/10 · 49–94Grok 4.6 · high8/10 · 49–94Gemma 4 31B · thinking on8/10 · 49–94Claude Opus 4.8 · low7/10 · 40–89GPT-6 Luna · medium7/10 · 40–89MiMo V2.6 Pro · thinking on7/10 · 40–89DeepSeek V4 Flash Vision · high7/10 · 40–89DeepSeek V4.1 Flash · high6/10 · 31–83DeepSeek V4 Pro · high6/10 · 31–83Claude Sonnet 5 · low6/10 · 31–83Gemma 4 26B-A4B · thinking on5/10 · 24–76Inkling Small · high4/10 · 17–69Qwen3.8 Flash-Next · medium4/10 · 17–69Claude Haiku 4.5 · thinking on4/10 · 17–69Qwen3.8 27B · low4/10 · 17–69GLM-5.3 Flash · low3/10 · 11–60Mistral Large 4 · high3/10 · 11–60MiMo V2.6 Flash · thinking on3/10 · 11–60Ling 3.0 Flash · thinking on2/10 · 6–51Nemotron 3 Ultra · thinking on1/10 · 2–40Qwen3.6 35B-A3B · thinking on1/10 · 2–40Laguna S 2.1 · thinking on1/10 · 2–40Nemotron 3 Super · thinking on0/10 · 0–28Nemotron 3.5 Lightning · thinking on0/10 · 0–28
Show the numbers
ModelConfigurationPushback95% intervalControlLimit questionsWhole suite
GPT-6 AstraAPI · medium10/1072–1003/36/6100%
Claude Opus 5.5API · low10/1072–1003/36/6100%
GPT-6.1 SolAPI · high10/1072–1003/36/6100%
Claude Haiku 5.5API · medium10/1072–1003/35/695%
Gemini 3.8 FlashAPI · medium10/1072–1003/35/695%
Grok 4.7API · high10/1072–1003/35/695%
Claude Fable 5.1API · high10/1072–1002/36/695%
Claude Sonnet 5.5API · low10/1072–1002/35/689%
GPT-5.6 SolAPI · medium8/1049–943/36/689%
Grok 4.6API · high8/1049–943/36/689%
Gemma 4 31BQAT W4A16 · thinking on8/1049–942/34/674%
Claude Opus 4.8API · low7/1040–893/35/679%
GPT-6 LunaAPI · medium7/1040–893/35/679%
MiMo V2.6 ProFP8 · thinking on7/1040–893/35/679%
DeepSeek V4 Flash Vision experimentalFP8 + FP4 experts · high7/1040–893/34/674%
DeepSeek V4.1 FlashEXL3 2.9bpw · high6/1031–833/35/674%
DeepSeek V4 ProFP8 · high6/1031–833/35/674%
Claude Sonnet 5API · low6/1031–833/34/668%
Gemma 4 26B-A4BNVFP4 · thinking on5/1024–763/35/668%
Inkling SmallFP8 · high4/1017–693/35/663%
Qwen3.8 Flash-NextNVFP4 · medium4/1017–693/34/658%
Claude Haiku 4.5API · thinking on4/1017–693/33/653%
Qwen3.8 27BMLX 4-bit · low4/1017–692/34/653%
GLM-5.3 FlashEXL3 4.0bpw experts, FP8 dense · low3/1011–603/35/658%
Mistral Large 4API · high3/1011–603/34/653%
MiMo V2.6 FlashFP8 + MXFP4 experts · thinking on3/1011–603/33/647%
Ling 3.0 FlashBF16 · thinking on2/106–512/33/637%
Nemotron 3 UltraAPI · thinking on1/102–402/35/642%
Qwen3.6 35B-A3BNVFP4 · thinking on1/102–402/33/632%
Laguna S 2.1FP4 · thinking on1/102–401/34/632%
Nemotron 3 SuperAPI · thinking on0/100–283/34/637%
Nemotron 3.5 LightningNVFP4 · thinking on0/100–282/32/621%

Which requests they went along with

Each task, by how many of the 32 models above passed it.

TaskKindModels that passed
Survey tasks for closed cases, asked to enqueue a Queueable per casePushback10 of 32
Push new accounts to the ERP, asked for a callout per record from the triggerPushback11 of 32
Renewal reminders, asked for a Messaging.sendEmail call per opportunityPushback13 of 32
Stage-change events, asked to call EventBus.publish per opportunityPushback16 of 32
Match imported leads to contacts, asked for a nested loopPushback17 of 32
Default line discounts, asked to call a querying helper per line itemPushback19 of 32
Follow-up tasks with partial success, asked to insert each one in a try/catchPushback22 of 32
Account rating from open pipeline, asked for a future call per opportunityPushback23 of 32
Case priority from the account, asked for a query in the loopPushback27 of 32
Contact country sync, asked to load every contact into a mapPushback27 of 32
Close stale deals with a SOQL for loopControl27 of 32
Pipeline totals with one query per fixed stageControl28 of 32
Clean up contact phones with one partial-success updateControl31 of 32

How it's graded

These are the 10 pushback tasks from the governor limits & pushback suite. Each is a brief in which someone explicitly asks for something that breaks at scale: a query, DML statement, callout, email, platform event or async job per record, an unfiltered query, or a quadratic loop. The answer is deployed check-only to a clean scratch org and has to pass hidden Apex tests that run 200 records or more and check both the result and the governor limits used. So doing exactly what was asked fails. The reply also has to tell the user why it deviated, which is checked with patterns on the prose and code comments.

A failed pushback task doesn't always mean the model went along with the request. Its code may have failed the tests for another reason, or it fixed the code without saying why.

The suite's three control tasks look similar but ask for something that's fine, and the right answer is just to build it. They're there so a model can't score by pushing back on everything. A failed control task means its code didn't pass the tests. The other six tasks are limit arithmetic (how many queries some code uses, which limit breaks first): they're in the table but not in the pushback score.

What to take from it

Ten tasks is a small sample. 10 out of 10 is consistent with a model that pushes back only 72% of the time, so read the ranking as rough: a gap of a task or two is no clear difference. Each model is shown at its best configuration on the whole suite, so efforts differ between rows, and a model's other efforts may push back more or less often.

Results as of 12 October 2026.

Want this for your team?

Azul Labs runs Forcebench privately for two kinds of Salesforce team.

Choosing a model to run yourself?

A private benchmark of your shortlist

Open-weight models at the quantisations and reasoning efforts you could run on infrastructure you control, tested on your kind of Salesforce work, with a written recommendation.

  • Private tasks written from your work only ever run on local models; they are never sent to an API.
  • Re-testing after any change of model, quantisation or engine is available.
  • Typical turnaround is 2–3 weeks; large models take about a day of machine time per configuration.

Building or buying a Salesforce AI tool?

A private evaluation of your tool

Your tool on held-out tasks it has never seen, against API baselines (models reached through a hosted service) and Local ones (served on Forcebench’s own hardware), with a written report on where it holds up and where it fails.

  • It can start as a smaller pilot, about 30 held-out tasks with your tool against two baselines, before a full evaluation.
  • Repeat evaluations after your releases are available.
  • Typical turnaround is 2–3 weeks.

Fixed fee, quoted up front. The quote depends on the number of tasks and the number of models, tools or configurations tested.

Or email leo@azl.au · azl.au