SandForge fills a sandbox, a scratch org or a Developer Edition org with realistic data: generated from a template, with no AI key, or cloned from a real record of another org, with production guardrails.
Free and MIT-licensed · no account · VS Code 1.95+ and the Salesforce CLI
SandForge · ForgeLive demo, sample orgs
Copyand everything around it fromuatinto
.
Refused.Forge refuses a production org as a target, and any org whose kind SandForge does not know.
Discover
Review
Simulate
Run
Remove
0records
0objects
0Ids remapped
0values neutralized
Forge walks the relationship graph from one record, breadth first, then writes what it found into another org, parents before children, remapping every lookup on the way. No export.json to hand-write, no field mapping to keep in step with the schema.
Sample orgs and records. Everything here runs in your browser; no org is contacted.
Seed
An empty org, full in a minute.
A new Developer Edition, a Trailhead playground or a fresh scratch org is all you need. Seed fills it with realistic records linked to one another, from a built-in template. No second org, no AI key, no field rule to write.
Checked before the first record. A seed that would not fit in the org's data storage, or would make its automation send more emails than the org has left today, is refused before it writes.
Taken back whenever you want. What this run created, on the results, or Earlier seeds, under the gallery, removes what the seed wrote.
CRM StarterStart here
dev-ed · Developer Edition
0.00/ 5 MB of data storage
Sample org and values. Everything here runs in your browser.
In VS Code
The real panels.
The demos on this page are drawn for it. These are the extension's own panels.
Forge. A clone from start to finish: a record Id, its relationship graph, the automation the target runs, a simulation, the gaps decided, the run, its results, and the removal of what it created.Forge Review. The Gaps tab with two gaps decided and one still refusing rows, beside the Automation tab's count.Simulation. Nothing written: what a real run would insert, and the emails and phone numbers it would neutralize.Seed. The template gallery that fills an empty dev org, CRM Starter first.Monitor. Health score, governor limits and storage breakdown.Launcher. The current org, the modules a first run needs, the others folded under Advanced.
Built in the open.
111versions in the changelog since 1.0.0, on 17 March 2026
1,381commits on GitHub, MIT-licensed
1,174test files in the repository
6languages: EN, FR, DE, ES, PT-BR, JA
Versions shipped per week, the last 12 weeks102 versions from 3 August to 24 October 2026
Counted from the repository and its changelog on 24 October 2026.
Safety, on by default
Nothing reaches production by accident.
Nothing to switch on, nothing to remember. A Forge run can be simulated, rehearsed and read before it writes, and taken back after.
Every module
Production Guard
Forge and a Frozen Dataset load refuse a production org as a target. Checkpoints refuses one outright, even to read. Seed, Sync, Autopilot and DataOps ask before every write there, and DELETE is blocked outright.
SandboxScratch orgDeveloper EditionProduction
Forge · Review
Simulate
Takes every record through the write stage and writes nothing. Its results say how many records a real run would insert and how many gaps it found against the target.
Forge · Review
Rehearse
The target itself judges the rows, in calls it rolls back whole: every row when the run creates 200 or fewer, otherwise one row for each object, record type and set of filled fields.
Forge · Review
Automation, read first
Flows, processes, workflow rules, Apex triggers, assignment and duplicate rules: what the target runs on the records a run writes, with what sends an email or a text marked. A real run asks you to confirm what fires before it writes.
Forge · Seed · Sync · Frozen Dataset
Take it back
Remove the records this run created: children before their parents, into the target's recycle bin. Records the target already held are kept, and so is a record changed since the run unless you include it.
Reports
Audit trail
Each decision of the Production Guard is recorded with the run it concerns, in Reports → Audit Trail, beside the data lineage of the records each run carried.
On by default · Forge, Sync, Autopilot, Clone from Org
Emails and phone numbers, neutralized
Every email address is written under .invalid, the top-level domain that never resolves, as Salesforce does to the users of a refreshed sandbox. Every phone number becomes a fictional one, in its own layout. The target's automation reaches no one.
Drawn from the mobile range the French regulator keeps for fiction, +33 6 39 98.
CheckpointsNew in 1.66.0
Undo the whole morning.
Before a test session, a demo or a training, take a checkpoint of the org. Afterwards, Rewind returns its data to that moment, whoever changed it since: you, your testers, flows or integrations.
qa · Developer sandbox
Sample org and records. Everything here runs in your browser.
On this machineThe records' values stay here, unencrypted, readable by you alone, for 30 days unless you tick Keep until I delete it.
Previewed, then typedThe preview reads the org and writes nothing. The rewind is confirmed by typing the org's alias, and can be stopped and taken up again.
Undo for 15 daysOffered on the org's last rewind, Undo returns the org to how it was before the rewind and keeps what anyone changed since.
Never productionNo setting or flag lifts it. A rewind needs View All Data and Modify All Data, and covers data, not metadata, users or files.
In a pipelinesandforge-checkpoint rewinds a CI scratch org between two test suites, without a new scratch org.
Also in 1.66.0
Made again, with new Ids. Records the recycle bin no longer gives back are made again from the checkpoint once you accept it, every lookup the checkpoint holds pointed at the new Id.
Emails counted first. A rewind and its undo count the emails their writes would make the org send, and are refused past what the org has left today.
For the target's admin. Forge's Gaps tab lists what the target's metadata would need for the rows to go in as they are, each with its step in Setup. SandForge changes none of it.
Real-Time sessions, kept. A session that writes keeps what it creates, writes over and deletes, and can be taken back as a Sync run is.
Modules
Fifteen modules, one panel.
One WebView UI in VS Code, no Command Palette required. Nine of them also run from the command line. Pick a name.
Fill
/////
Protect
//
Observe
//
Automate
//
Seed
Which tool copies my data?
The org needs: useSeed.
From SFDMU or Data Loader
No export.json to write.
Paste a record Id: discovery walks the relationship graph for you, and lookups are remapped on write. Records move org to org over the API, with no mandatory CSV round-trip.
Your SFDMU config keeps working. The Migration module imports an export.json into a Sync config, and writes nothing to your orgs.
CSV is still there. CSV import stays one door in, not the only one.
export.jsonhand-written, kept in step with the schema
Forge reads the graph from the org itself.
Command line and CI
The same engine, in your pipeline.
Eleven scripts run from a checkout of the repository with Node.js 24 and pnpm 11, without VS Code or the extension. Each lists its flags with --help, prints its JSON alone on stdout with --json, and refuses to write to a production org.
One table of exit codes for every tool
0
Did what it was asked; a partial run too, unless --fail-on-partial
1
Could not start, was refused before it wrote, or produced only failures
2
A bad command line, or a question with no terminal to answer it
3
Partial: records left behind, refused or not checked
4
Unstable: no two readings of a verification agreed
129 130 143
Stopped by SIGHUP, Ctrl-C or SIGTERM
Pipelines included for GitHub Actions, GitLab CI, Azure Pipelines and Jenkins.
Questions.
Does my data leave my machine?
Only to the orgs you connect, until you turn the AI Assistant on (it is off by default) and store your own key, which stays in VS Code Secret Storage. From then on, its features send what they need to Anthropic, and a failed run's error message goes too, unless sandforge.ai.errorResolution is off. Telemetry is off by default and, turned on, only writes error reports to a local log.
Can I point it at production?
To read, yes, except with Checkpoints, which refuses a production org outright. Forge and a Frozen Dataset load never write to one. The writes of Seed, Sync, Autopilot and DataOps go through the Production Guard: a confirmation before each, and DELETE is blocked outright.
Is this an SFDMU replacement?
For moving data between orgs from your editor, yes, and without the config file. SFDMU keeps the edge for headless CI, where it is a binary you install: SandForge's command-line scripts run from a checkout of the repository.
Which orgs are supported?
Any org authenticated in the Salesforce CLI (sf), imported in one click.
Is it free?
Yes. MIT licensed, no account, no paid tier.
Can I undo a run?
Forge, Seed (its templates, its wizard, CSV Upload and Clone from Org), Sync and Frozen Dataset each take back what a run created. Autopilot cannot, but a checkpoint taken before any run, on a sandbox, a scratch org or a Developer Edition, rewinds the org to it, and the rewind itself can be undone.
Install
Fill your next sandbox.
Open VS Code, go to Extensions, search for SandForge and click Install. Or open Quick Open with Ctrl+P and paste this line.