Salesforce released an official plugin for Claude Code at Dreamforce ‘26. With it, Claude Code can write Apex, deploy it to your org and run your tests. The install guide makes it look like one command, but a few things can go wrong along the way. We set it up on a Developer Edition org on Winter ‘27, used it for real work, and wrote down every error we saw and how to fix it.
What the plugin does
The plugin adds Salesforce knowledge to Claude Code. You ask in plain English, for example “write a test class for this Apex class and run it”, and it does the work using the Salesforce CLI. Every command it runs is shown on screen, so you can see exactly what it did.
It also uses three helper servers, called MCP servers. One runs on your own computer and checks Apex and SOQL as you write. The other two run inside your Salesforce org, and they need switching on before they work.
How to set it up
Step 1: Install the tools it needs. Salesforce’s install page lists Claude Code, Node.js (a long-term support version), Salesforce CLI and Python. Check what you have:
claude --version
node -v
sf --version
python3 --version
Step 2: Install the plugin.
claude plugin install salesforce-development@claude-plugins-official
Step 3: Create a project and log in to your org.
sf project generate --name my-project
cd my-project
sf org login web --alias my-org --set-default
Step 4: Start Claude Code and check everything works. Type claude inside the project folder. Then run /plugin to see the plugin is installed, and /salesforce-development:status to see the health of your setup. Before building anything, ask: “Validate that I can deploy to this org.”
The install page says the plugin needs a Salesforce Foundations or Agentforce license. On our Developer Edition org, everything we tried worked.
Errors you may see, and how to fix them
Validation fails with a “jq: parse error”
If you see Error: Exit code 5 together with jq: parse error: Invalid numeric literal when you ask the plugin to validate your org:
- Try this first: update the Salesforce CLI with
sf update, restart Claude Code and ask again. An old CLI prints an “update available” message that confuses the plugin’s checks. This fixed it for us. - If it still fails: run
sf org displayyourself to make sure your org is still connected, and log in again withsf org login webif it isn’t.
”Server not activated in this org”
If you see this message, or the status screen shows api-context · metadata-experts — ✗ unavailable, two MCP servers the plugin uses are switched off in your org.
- Fix: in Setup, type API Catalog in Quick Find. Open MCP Servers, then the Salesforce Servers tab. Set salesforce-api-context and metadata-experts to Active.
- Then: run
/salesforce-development:statusagain. It should now say✓ connected.
Deploys still work while these are off, but some features don’t. Also note the yellow banner on that Setup page: Salesforce MCP server usage may be billed through Flex Credits. In a paid org, check with whoever manages your Salesforce budget before switching on more servers than you need.
”Could not locate a Python v3.10.0+ install”
If you see this as a “Critical” result when the plugin checks your code, the problem is your setup, and your code is fine. The plugin runs Salesforce Code Analyzer, and its Flow check needs Python 3.10 or newer. Many Macs come with an older Python.
- Fix: install Python 3.10 or newer, then ask the plugin to check your code again.
- If you don’t use Flows: you can turn the Flow check off instead, by setting
engines.flow.disable_enginetotruein your Code Analyzer settings.
Work stops and it suggests installing other plugins
If the plugin pauses mid-task and lists other Salesforce plugins you could install, that’s expected. It never installs anything without asking.
- To carry on: tell it to skip.
- To install one: name the exact plugin you want. A general “yes” isn’t accepted, because it needs to know which one.
It calls your org “trial”
If you see a message that your org was “classified as trial — non-production, allowing deploy”, nothing is wrong. The plugin checks what kind of org it is about to deploy to, and it treats Developer Edition orgs as non-production.
The status screen says nothing has been deployed
If status still says “Local source never deployed to this org” after you have deployed, your deploys are fine. The progress tracker didn’t count them in our test. Check the org itself, or run sf project deploy report, if you want to be sure.
What it did with a real task
We asked for two small Apex classes, where one calls a method on the other, plus a test class, all deployed and tested. Here’s what it did:
- Wrote all three classes and a test class.
- Added a couple of things we didn’t ask for, such as a check for empty input and an extra test for it.
- Checked the code with Code Analyzer and fixed small style issues.
- Did a practice deploy first, then the real deploy, running only the relevant test.
- Finished with every test passing and 100% code coverage.
The extras were sensible, but it’s a good reason to read what it changed before you approve.
What happens when you break something
In our article on dependent class errors, we showed that Salesforce lets you save a change that breaks other classes. We tried the same thing with the plugin: we renamed a method that another class still called, and asked it to deploy just that one class.
It deployed the change, just as Salesforce itself would have. Then it checked the org straight away, told us which two classes were now broken and why, and offered three ways to fix it. When we picked one, it found every place that used the old method name, updated them, deployed, and ran the tests again. Everything passed.
Should you use it?
Yes, once you have done the fixes above. It’s good at the everyday jobs: writing Apex, deploying safely and running tests. It shows every command it runs, so you always know what changed. Its best moment for us was fixing the broken classes in a single step.
For other ways to connect Claude to Salesforce, see our guides to hosted MCP servers for Claude and the Claude Code OAuth callback error.
Quick checklist before you start
| Do this | How |
|---|---|
| Update the Salesforce CLI | Run sf update |
| Install Python 3.10 or newer | Needed for Code Analyzer’s Flow check |
| Switch on the two MCP servers | Setup → API Catalog → MCP Servers → Salesforce Servers |
| Check billing in paid orgs | Read the banner on the MCP Servers page |
| Test your setup first | Ask “Validate that I can deploy to this org” |