Savepoints and branches
Two commands help you manage Bubble-side state from the CLI without leaving your workspace: savepoint for editor savepoints on the current branch, and branch for listing or creating Bubble app versions.
Savepoints
A savepoint is a Bubble editor restore point. Create one before a risky change so you have a point to roll back to. All savepoint subcommands act on the current branch workspace.
Create
buildprint savepoint create "before checkout refactor"Description is required — write something that will make sense weeks later.
List
buildprint savepoint listPrints <timestamp> <description> [email] lines for every savepoint on the current branch. Use --json for structured output.
Restore
buildprint savepoint restore <timestamp>Restores the Bubble editor to the given savepoint. Afterwards, run buildprint sync so the workspace matches the restored Bubble state. The CLI reminds you about the sync in its output.
Savepoints are the safest rollback path when a Buildprint agent makes changes you don't want. Restore, then sync, then start a new session with a tighter prompt.
Branches
The branch command reads and creates Bubble app versions (what Bubble calls "branches" at the editor level — test, live, and custom versions).
List
buildprint branch list <appId>Prints the branch tree for the app. Use --json for a machine-readable form.
Create
buildprint branch create my-app "feature-checkout" --from staging--from <version>— base branch to fork from. Defaulttest.--description <text>— optional description.--json— print the raw API response and skip local workspace materialize.--no-workspace-sync— don't materialize a local workspace for the new branch even when you're inside an app root.
If you run buildprint branch create from inside an app root, you can skip the appId positional argument and just pass the new branch name:
buildprint branch create "feature-checkout" --from stagingBranch names are normalized on the server: trimmed, lowercased, spaces converted to hyphens.
Creating a branch from a base your token can't read will fail with a permission error. Fix that by creating from a base the token has access to (often test), or update the collaborator permissions on your Bubble app.