Add auth list for store auth sessions#7714
Conversation
89f393a to
619636c
Compare
1e3e4bc to
770846a
Compare
619636c to
7c049c1
Compare
770846a to
95d8a71
Compare
7c049c1 to
52daf1c
Compare
95d8a71 to
04f35fd
Compare
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
|
/snapit |
|
🫰✨ Thanks @nickwesselman! Your snapshot has been published to npm. Test the snapshot by installing your package globally: pnpm i -g --@shopify:registry=https://registry.npmjs.org @shopify/cli@0.0.0-snapshot-20260605172558Caution After installing, validate the version by running |
04f35fd to
065f5fa
Compare
00dce2a to
22e4f4a
Compare
c8eed6e to
aa58407
Compare
22e4f4a to
31a07f1
Compare
451e239 to
bc75901
Compare
c128517 to
9343914
Compare
a57b2f7 to
996a184
Compare
9343914 to
81229e4
Compare
df6e5d1 to
fbc732b
Compare
0d54c55 to
ca16bf5
Compare
fbc732b to
7674c38
Compare
ca16bf5 to
ed03486
Compare
7674c38 to
1cb0d3f
Compare
ed03486 to
8d4afd4
Compare
1cb0d3f to
0c933e5
Compare
8d4afd4 to
a2cf41b
Compare
0c933e5 to
a92ad67
Compare
a2cf41b to
541a4a4
Compare
de36466 to
8118677
Compare
541a4a4 to
a053144
Compare
8118677 to
3e869a8
Compare
a053144 to
489275a
Compare
3e869a8 to
d174340
Compare
489275a to
9f582a7
Compare
d174340 to
d2cec28
Compare
9649fc5 to
a151039
Compare
d2cec28 to
68f4fe4
Compare
a151039 to
3755b76
Compare
68f4fe4 to
3fe6822
Compare
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/public/common/string.d.ts@@ -102,6 +102,16 @@ export declare function formatDate(date: Date): string;
* @returns The transformed string in local system time.
*/
export declare function formatLocalDate(dateString: string): string;
+/**
+ * Formats a date as a short calendar date like "May 22, 2026" () in UTC.
+ *
+ * UTC keeps the output deterministic regardless of the machine timezone. Returns an empty string
+ * when the value cannot be parsed into a valid date.
+ *
+ * @param value - A Date, epoch milliseconds, or a date string such as an ISO 8601 timestamp.
+ * @returns The formatted date, or an empty string when the value is invalid.
+ */
+export declare function formatShortDate(value: Date | number | string): string;
/**
* Given a list of items, it returns a string with the items joined by commas and the last item joined by "and".
* All items are wrapped in double quotes.
packages/cli-kit/dist/public/common/url.d.ts@@ -28,4 +28,13 @@ export declare function extractHost(value: string | null | undefined): string |
* @param value - A URL or host string, possibly null/undefined.
* @returns The myshopify subdomain handle, or undefined when the input isn't a URL.
*/
-export declare function extractMyshopifyHandle(value: string | null | undefined): string | undefined;
\ No newline at end of file
+export declare function extractMyshopifyHandle(value: string | null | undefined): string | undefined;
+/**
+ * Extracts the leading subdomain label from a URL or host, across environments — e.g.
+ * , , or local development hosts — rather than assuming a
+ * domain.
+ *
+ * @param value - A URL or host string, possibly null/undefined.
+ * @returns The first DNS label, or undefined when no host can be extracted.
+ */
+export declare function extractSubdomain(value: string | null | undefined): string | undefined;
\ No newline at end of file
|

Summary
Add
shopify auth listfor stores authenticated directly withshopify store auth.Closes https://github.com/shop/issues-develop/issues/22919
Scope
shopify auth listshopify store auth{sessions: [...]}withkind: "store"rows so agents can resume without reading cache internalsauth listpoints users toshopify store listfor organization storesstore listpoints users toshopify auth listfor direct store-auth sessionsshopify store listorganization-backed only; no--from, noauto, no fallback behaviorWhy this replaces the previous PR shape
The earlier top PR mixed two jobs into one
shopify store listcommand via--from auto|organization|store-authplus fallback behavior. Slack feedback on 2026-06-14/15 called out that the flag and fallback rules were hard to reason through because the jobs are different:store executeThis PR keeps those jobs separate.
Not changed / deferred
store list --from store-author--from auto. Those were the source of the confusing mixed-command contract this PR replaces.auth list. That stays inshopify store list.auth list --json. Agents get enough metadata to choose a stored session without reading cache internals; token return would require a separate product/security decision.auth listinto a full CLI auth inventory. Rows currently havekind: "store"so the JSON can grow later, but this PR only lists store-auth sessions owned by@shopify/store.shopify store auth list.shopify auth listmatches the Slack direction and leaves room for future auth inventory. If reviewers find the name too broad, the fallback naming is still available.Smoke checks
shopify auth list --jsonreturns local store-auth sessions and does not prompt for organization authshopify store list --helphas no--fromflag