Skip to content

Publishing

Publishing submits a released build to a store. The platform holds the store credentials and runs the submission; you trigger it through any of three doors, and all three are the same submission underneath.

Three ways in

Console. The project's Stores tab submits a released build and follows each store's status. Store configuration lives in project settings.

Agent. With the MCP server configured, extension_submit sends a released build into a store's review queue, dry run by default, and extension_release_promote promotes a build to a channel first.

API. POST /api/cli/stores/submit and POST /api/cli/release/promote, authenticated with a project token. See the HTTP API.

Supported stores

StoreBrowserPage
Chrome Web StoreChromeChrome
Firefox Add-onsFirefoxFirefox
Microsoft Edge Add-onsEdgeEdge
App StoreSafariSafari

A build can also ship outside every store as a standalone launcher. See Executables.

Credentials

Credentials are project store settings, entered once and reused by every submission. The platform holds them as secrets, never in a database, and never returns them. The secret names are exact:

StoreSecrets
ChromeSTORE_CHROME_CLIENT_ID, STORE_CHROME_CLIENT_SECRET, STORE_CHROME_REFRESH_TOKEN, or STORE_CHROME_SERVICE_ACCOUNT_JSON alone
EdgeSTORE_EDGE_CLIENT_ID, STORE_EDGE_CLIENT_SECRET
FirefoxSTORE_FIREFOX_API_KEY, STORE_FIREFOX_API_SECRET
SafariNine secrets covering the App Store Connect key and signing assets, listed on the Safari page

Add them from Stores, New in the console.

Credential health

Credential health is probed per store at stores/test/{store} and checked again at submit preflight. A submission does not start against a store whose credentials fail the probe.

Dry runs

dryRun: true on POST /api/cli/stores/submit runs the preflight, and an agent's extension_submit defaults to it. The response returns a verdict per store and dispatches nothing:

FieldMeaning
configuredThe store has credentials
healthyThe credentials pass the health probe
okThe store would accept this submission
reasonWhy a blocked store is blocked
consoleUrlThe exact console page that fixes that store

Safe and broad

Every submission mode is classified safe or broad. Safe modes upload a draft and submit nothing for review. Broad modes reach store review or the public. Draft-only safe mode is a per-store setting, and agents default to safe.

Submission notes

A STORE.md in the project root is parsed automatically. Firefox reviewer notes and release notes, and Edge certification notes, ride along with the submission.

Watching

The Stores tab follows a submission to a terminal state, and GET /api/projects/{id}/stores/status returns the same. The states are in_review, processing, published, rejected, failed.

When it fails

  • Run the preflight first. The reason says why a store is blocked and the consoleUrl names the console page that fixes it.
  • A store failing the stores/test/{store} probe means its credentials, not your build. Rotate the secret named in the verdict from the project's store settings.
  • The API and agent doors need a project token. Without one, submit from the console.
  • Submissions read from a release channel. A build that was never promoted has nothing to submit. See Channels.

Next