Repository navigation
Rename SHOPIFY_ORGANIZATION_AUTOMATION_TOKEN to SHOPIFY_SERVICE_ACCOUNT_TOKEN - #8898
Merged
Merged
Conversation
…NT_TOKEN The organization token variable is now SHOPIFY_SERVICE_ACCOUNT_TOKEN, the name agreed for Organization Tokens. The old name was never released (stable/4.9 doesn't contain it), so it's renamed outright with no alias. ensureNoOrganizationAutomationToken becomes ensureNoServiceAccountToken, and the constants key, comments and tests follow. Selection order, conflict rules and refusals are unchanged. Adds the changeset announcing the variable. Co-authored-by: Eddie Gao <eddie.gao@shopify.com>
Contributor
Differences in type declarationsWe detected differences in the type declarations generated by Typescript for this branch compared to the baseline ('main' branch). Please, review them to ensure they are backward-compatible. Here are some important things to keep in mind:
New type declarationsWe found no new type declarations in this PR Existing type declarationspackages/cli-kit/dist/private/node/constants.d.ts@@ -8,7 +8,7 @@ export declare const environmentVariables: {
env: string;
noAnalytics: string;
optOutInstrumentation: string;
- organizationAutomationToken: string;
+ serviceAccountToken: string;
appAutomationToken: string;
partnersToken: string;
runAsUser: string;
packages/cli-kit/dist/public/node/environment.d.ts@@ -11,9 +11,9 @@
export declare function getEnvironmentVariables(): NodeJS.ProcessEnv;
/**
* Returns the automation token the CLI authenticates with, from the first of these variables that is set:
- * SHOPIFY_ORGANIZATION_AUTOMATION_TOKEN, SHOPIFY_APP_AUTOMATION_TOKEN, or the deprecated SHOPIFY_CLI_PARTNERS_TOKEN.
+ * SHOPIFY_SERVICE_ACCOUNT_TOKEN, SHOPIFY_APP_AUTOMATION_TOKEN, or the deprecated SHOPIFY_CLI_PARTNERS_TOKEN.
*
- * Returns undefined when the variables can't be used (an empty value, or the organization variable set alongside
+ * Returns undefined when the variables can't be used (an empty value, or the service account variable set alongside
* another one). Callers then fall back to the login flow, which reports the problem instead of logging in.
*
* @returns The automation token, or undefined if there is no usable one.
packages/cli-kit/dist/public/node/session.d.ts@@ -148,15 +148,15 @@ export interface EnsureAuthenticatedBusinessPlatformOptions extends EnsureAuthen
*/
export declare function ensureAuthenticatedBusinessPlatform(scopes?: BusinessPlatformScope[], options?: EnsureAuthenticatedBusinessPlatformOptions): Promise<string>;
/**
- * Fails when SHOPIFY_ORGANIZATION_AUTOMATION_TOKEN is set, for commands that can't run with that token.
+ * Fails when SHOPIFY_SERVICE_ACCOUNT_TOKEN is set, for commands that can't run with that token.
*
- * Organization automation tokens can't log in as a user or call a store's Admin API, so commands that need either
+ * Service account tokens can't log in as a user or call a store's Admin API, so commands that need either
* refuse to run instead of quietly using the person's own login. `ensureAuthenticated` runs this check before any
* login. Commands that run on a login saved by `shopify store auth` call it before loading that login.
*
- * @throws AbortError when SHOPIFY_ORGANIZATION_AUTOMATION_TOKEN is set.
+ * @throws AbortError when SHOPIFY_SERVICE_ACCOUNT_TOKEN is set.
*/
-export declare function ensureNoOrganizationAutomationToken(): void;
+export declare function ensureNoServiceAccountToken(): void;
/**
* Logout from Shopify.
*
packages/cli-kit/dist/private/node/session/automation-token.d.ts@@ -4,7 +4,7 @@ interface AutomationTokenVariablesProblem {
}
/**
* Returns the name of the automation token variable the CLI authenticates with: the first one that is set, in
- * the order SHOPIFY_ORGANIZATION_AUTOMATION_TOKEN, SHOPIFY_APP_AUTOMATION_TOKEN, SHOPIFY_CLI_PARTNERS_TOKEN.
+ * the order SHOPIFY_SERVICE_ACCOUNT_TOKEN, SHOPIFY_APP_AUTOMATION_TOKEN, SHOPIFY_CLI_PARTNERS_TOKEN.
*
* A variable set to an empty string still counts as set, so `automationTokenVariablesProblem` can report it.
*
@@ -16,7 +16,7 @@ export declare function automationTokenVariable(env?: NodeJS.ProcessEnv): string
* Explains why the automation token variables can't be used, so a misconfigured environment fails instead of
* falling back to the logged-in user.
*
- * - SHOPIFY_ORGANIZATION_AUTOMATION_TOKEN can't be set together with SHOPIFY_APP_AUTOMATION_TOKEN or
+ * - SHOPIFY_SERVICE_ACCOUNT_TOKEN can't be set together with SHOPIFY_APP_AUTOMATION_TOKEN or
* SHOPIFY_CLI_PARTNERS_TOKEN.
* - The selected variable can't be empty.
*
|
3 of 4 tasks
This was referenced Oct 14, 2026
amcaplan
approved these changes
Oct 14, 2026
alexanderMontague
approved these changes
Oct 14, 2026
isaacroldan
approved these changes
Oct 15, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes shop/issues-develop#24215 · Part of shop/issues-develop#24007
TL;DR: The organization token variable is now
SHOPIFY_SERVICE_ACCOUNT_TOKEN, the name agreed at the Organization Tokens sync. The old name never shipped, so this is a straight rename with no alias. Behavior is unchanged. Adds the changeset that announces the variable.SHOPIFY_SERVICE_ACCOUNT_TOKEN← this onestore info/store opennever use a saved login while the token is setservice_account_tokenas the auth methodSHOPIFY_APP_AUTOMATION_TOKENandSHOPIFY_CLI_PARTNERS_TOKENWHY are these changes introduced?
#8731 added
SHOPIFY_ORGANIZATION_AUTOMATION_TOKENand noted that the name was waiting on a final call. Product and engineering have since settled onSHOPIFY_SERVICE_ACCOUNT_TOKEN.stable/4.9contains neither the old variable norensureNoOrganizationAutomationToken, and no changeset mentions them, so nobody outsidemaincan depend on the old name. An alias would only add a second variable to document and later remove.WHAT is this pull request doing?
private/node/constants.ts, the keyorganizationAutomationTokenbecomesserviceAccountToken, with valueSHOPIFY_SERVICE_ACCOUNT_TOKEN.automation-token.tsreads it through that key, so the selection order (service account → app → Partner), the conflict rule and the empty-value rule are unchanged.ensureNoOrganizationAutomationTokenbecomesensureNoServiceAccountToken. Its error is built from the variable name, so it now reads "This command can't use SHOPIFY_SERVICE_ACCOUNT_TOKEN." Callers updated:ensureAuthenticated,store executeandstore bulk(bulk-admin-context.ts,auth/admin-session.ts), andstore graphiql.@shopify/cli-kit: minor). It announces the variable fororganization list,store list,store create dev,store info,store deleteand app commands. It also says the variable can't be combined with the app or Partner variables, and that commands needing your account or Admin API access refuse while it's set. Add SHOPIFY_ORGANIZATION_AUTOMATION_TOKEN #8731 held this changeset back until launch. The backend denies the token until Organization Tokens is enabled, so exposing the variable now is safe.Nothing else in the repo (docs, README,
oclif.manifest.json) mentions the old name.How to manually test your changes?
Checklist
patchfor bug fixes ·minorfor new features ·majorfor breaking changes) and added a changeset withpnpm changeset add