Suites / cli
Salesforce CLI
Day-to-day and CI/CD work with the Salesforce CLI (sf v2): deploy and retrieve by source, metadata and manifest, validation and quick deploy, destructive changes, Apex tests and anonymous Apex, scratch orgs and sandboxes, JWT auth, config and aliases, data exports and bulk loads, and unlocked packages. Answers are shell commands. Each command is parsed the way the CLI parses it and checked against the command manifest of a pinned @salesforce/cli release (unknown commands or flags, invalid option values, missing required flags and deprecated sfdx-style syntax fail), then compared with the expected commands and flag values.
How it's graded
Each command is parsed the way the CLI parses it and checked against the command manifest of a pinned Salesforce CLI release: unknown commands or flags, invalid values, missing required flags and deprecated sfdx-style syntax fail. It is then compared with the expected commands and flag values.
Difficulty mix
Leaderboard
Who's best at Salesforce CLI
Within three attempts (c@3) on this suite only, with 95% confidence intervals. With 20 tasks the intervals are wide: where two overlap, those configurations are not clearly different. 1 finished configuration isn’t shown yet: its retries haven’t finished. Open in the full leaderboard →
| # | Model and config | Score c@3 · 95% CI | Tasks |
|---|---|---|---|
| 1 | Claude Opus 4.8 effort high | 100%95% CI 84–100 | 20 |
| 1 | Claude Opus 4.8 effort medium | 100%95% CI 84–100 | 20 |
| 1 | Claude Opus 4.8 effort low | 100%95% CI 84–100 | 20 |
| 1 | Claude Opus 4.8 thinking off | 100%95% CI 84–100 | 20 |
| 1 | Claude Opus 5.5 effort high | 100%95% CI 84–100 | 20 |
| 1 | Claude Opus 5.5 effort medium | 100%95% CI 84–100 | 20 |
| 1 | Claude Opus 5.5 effort low | 100%95% CI 84–100 | 20 |
| 1 | Claude Sonnet 5.5 effort high | 100%95% CI 84–100 | 20 |
| 1 | Claude Sonnet 5.5 effort low | 100%95% CI 84–100 | 20 |
| 1 | Claude Sonnet 5.5 effort medium | 100%95% CI 84–100 | 20 |
| 1 | Gemini 3.8 Flash effort medium | 100%95% CI 84–100 | 20 |
| 1 | GPT-5.6 Sol effort medium | 100%95% CI 84–100 | 20 |
| 1 | GPT-6 Astra effort medium | 100%95% CI 84–100 | 20 |
| 1 | GPT-6 Astra effort high | 100%95% CI 84–100 | 20 |
| 1 | GPT-6 Luna effort medium | 100%95% CI 84–100 | 20 |
| 1 | GPT-6.1 Sol effort high | 100%95% CI 84–100 | 20 |
| 1 | Grok 4.6 effort high | 100%95% CI 84–100 | 20 |
| 1 | Grok 4.7 effort high | 100%95% CI 84–100 | 20 |
| 19 | Claude Haiku 5.5 effort high | 95%95% CI 76–99 | 20 |
| 19 | Claude Haiku 5.5 effort low | 95%95% CI 76–99 | 20 |
| 19 | DeepSeek V4.1 Flash FP8 · effort high | 95%95% CI 76–99 | 20 |
| 22 | Claude Sonnet 5 effort high | 90%95% CI 70–97 | 20 |
| 22 | Claude Sonnet 5 effort medium | 90%95% CI 70–97 | 20 |
| 22 | DeepSeek V4 Pro FP8 · effort high | 90%95% CI 70–97 | 20 |
| 22 | MiMo V2.6 Pro FP8 · thinking on | 90%95% CI 70–97 | 20 |
| 26 | Claude Fable 5.1 effort high | 85%95% CI 64–95 | 20 |
| 26 | Claude Haiku 5.5 effort medium | 85%95% CI 64–95 | 20 |
| 26 | Claude Sonnet 5 thinking off | 85%95% CI 64–95 | 20 |
| 26 | Claude Sonnet 5 effort low | 85%95% CI 64–95 | 20 |
| 26 | DeepSeek V4.1 Flash EXL3 2.9bpw · vLLM + ExLlamaV3 · effort high | 85%95% CI 64–95 | 20 |
| 26 | GLM-5.3 Flash EXL3 4.0bpw experts, FP8 dense · vLLM + ExLlamaV3 · effort high | 85%95% CI 64–95 | 20 |
| 32 | DeepSeek V4.1 Flash Native FP8, FP4 experts · SGLang · effort high | 80%95% CI 58–92 | 20 |
| 33 | DeepSeek V4 Flash Vision experimental FP8 + FP4 experts · vLLM · effort high | 75%95% CI 53–89 | 20 |
| 33 | GLM-5.3 Flash FP8 · effort high | 75%95% CI 53–89 | 20 |
| 35 | Mistral Large 4 effort high | 70%95% CI 48–85 | 20 |
| 36 | Inkling Small FP8 · effort high | 65%95% CI 43–82 | 20 |
| 37 | Claude Haiku 4.5 thinking on | 60%95% CI 39–78 | 20 |
| 37 | GLM-5.3 Flash EXL3 4.0bpw experts, FP8 dense · vLLM + ExLlamaV3 · effort low | 60%95% CI 39–78 | 20 |
| 37 | GLM-5.3 Flash EXL3 4.0bpw experts, FP8 dense · vLLM + ExLlamaV3 · thinking off | 60%95% CI 39–78 | 20 |
| 37 | Nemotron 3 Ultra thinking on | 60%95% CI 39–78 | 20 |
| 41 | MiMo V2.6 Flash FP8 · thinking on | 55%95% CI 34–74 | 20 |
| 41 | Qwen3.8 Flash-Next NVFP4 · vLLM · effort medium | 55%95% CI 34–74 | 20 |
| 43 | Claude Haiku 4.5 thinking off | 50%95% CI 30–70 | 20 |
| 43 | Qwen3.8 Flash-Next MLX 4-bit · MTPLX · effort medium | 50%95% CI 30–70 | 20 |
| 45 | GLM-5.3 Flash EXL3 4.0bpw experts, 4-bit dense · TensorFold · effort high | 45%95% CI 26–66 | 20 |
| 45 | MiMo V2.6 Flash FP8 + MXFP4 experts · SGLang · thinking on | 45%95% CI 26–66 | 20 |
| 45 | Qwen3.8 27B Splash 4-bit · Splash · effort low | 45%95% CI 26–66 | 20 |
| 45 | Qwen3.8 27B AWQ-INT4 · vLLM · effort xhigh | 45%95% CI 26–66 | 20 |
| 45 | Qwen3.8 Flash-Next MLX 4-bit · TensorFold · effort medium | 45%95% CI 26–66 | 20 |
| 50 | Qwen3.8 Flash-Next INT4-AutoRound, 5 of 10 experts · TensorFold (Zig) · effort medium | 40%95% CI 22–61 | 20 |
| 50 | Qwen3.8 Flash-Next thinking on | 40%95% CI 22–61 | 20 |
| 52 | Laguna S 2.1 FP4 · thinking on | 30%95% CI 15–52 | 20 |
| 52 | Qwen3.8 27B MLX 8-bit · MTPLX · effort low | 30%95% CI 15–52 | 20 |
| 52 | Qwen3.8 27B AWQ-INT4 · vLLM · effort low | 30%95% CI 15–52 | 20 |
| 55 | Gemma 4 26B-A4B NVFP4 · vLLM · thinking on | 15%95% CI 5–36 | 20 |
| 55 | Gemma 4 31B QAT W4A16 · vLLM · thinking on | 15%95% CI 5–36 | 20 |
| 55 | Ling 3.0 Flash BF16 · thinking on | 15%95% CI 5–36 | 20 |
| 55 | Qwen3.6 35B-A3B NVFP4 · vLLM · thinking on | 15%95% CI 5–36 | 20 |
| 55 | Qwen3.8 27B MLX 4-bit · MTPLX · effort low | 15%95% CI 5–36 | 20 |
| 55 | Qwen3.8 27B AWQ-INT4 · vLLM · effort medium | 15%95% CI 5–36 | 20 |
| 61 | Nemotron 3.5 Lightning NVFP4 · thinking on | 10%95% CI 3–30 | 20 |
Tasks
What's in the suite
Solve rate is the share of finished runs whose first answer to the task passed (pass@1), a rough guide to how hard models find it. Difficulty is the task author’s label; from results is what the solve rate says: easy when two thirds or more of the finished runs pass it, hard at a third or fewer, once five have graded it.
| Task | Difficulty | From results | Solve rate |
|---|---|---|---|
| Assign a permission set to another usercli-assign-permset-user | easy | medium | 52% |
| Delete a scratch org without a promptcli-delete-scratch-org | easy | easy | 76% |
| Deploy a single Apex class to a sandboxcli-deploy-apex-class | easy | easy | 88% |
| Execute anonymous Apex from a filecli-apex-run-script-file | easy | easy | 89% |
| Open an org at a Setup page in a given browsercli-org-open-setup-page | easy | easy | 82% |
| Stream debug logs with a specific debug levelcli-apex-tail-log | easy | medium | 56% |
| Bulk upsert a Windows CSV on an external IDcli-bulk-upsert-external-id | medium | medium | 34% |
| Create a scratch org from a definition filecli-scratch-org-create | medium | easy | 76% |
| Export millions of records to CSVcli-bulk-export-csv | medium | hard | 31% |
| Generate a package.xml manifest from an orgcli-manifest-from-org | medium | medium | 37% |
| Install a key-protected package version unattendedcli-package-install-ci | medium | medium | 61% |
| Retrieve specific components by metadata type and namecli-retrieve-field-and-flexipage | medium | easy | 67% |
| Run Apex tests with coverage and JUnit output for CIcli-apex-tests-junit-coverage | medium | medium | 52% |
| Start a Developer Pro sandbox creation from a scriptcli-sandbox-create-async | medium | medium | 35% |
| CI job - JWT login to a sandbox, then deploycli-jwt-login-and-deploy | hard | easy | 73% |
| Deploy and delete a still-referenced field in one deploymentcli-post-destructive-deploy | hard | medium | 56% |
| First release of an unlocked package, end to endcli-unlocked-package-release | hard | medium | 50% |
| Onboard a developer machine - login, aliases, local and global configcli-dev-machine-config | hard | medium | 50% |
| Seed a scratch org with related records via a data plancli-tree-export-import-seed | hard | medium | 48% |
| Validate a production release, then quick deploy itcli-validate-then-quick-deploy | hard | medium | 37% |
Private evaluations
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