Commit Graph

73 Commits

Author SHA1 Message Date
github-actions[bot] f2e143a6dd Version Packages (#284)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-31 17:04:38 -04:00
kreese-stripe 033cee0f07 fix: Sanitize shell quotes during mpp flow (#281)
* Sanitize shell quotes

* comments

* Changeset
2026-08-31 17:03:40 -04:00
github-actions[bot] 771f8a077b Version Packages (#280)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-28 16:19:04 -04:00
kreese-stripe a1c68720f6 Fix: allow shipping address nickname to be optional in resource (#279) 2026-08-28 19:50:45 +00:00
github-actions[bot] 72991457e7 Version Packages (#278)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-28 09:37:48 -04:00
sylwang-stripe 91f5e8ecd1 Support Link Pay Token for delegated approval spend requests (#273)
* Support delegated approval for Link Pay Token spend requests

--approve now works with --execution-method link_pay_token as long as
--no-request-approval is also passed, so OAuth clients authorized for
spend_requests:approve can create already-approved LPT requests via
create_delegated without going through consumer approval.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Committed-By-Agent: claude

* Trim PR to just the delegated-approval guard change per review

Drop the README/CLAUDE.md docs and CLI help-text additions for
--approve/--request-approval — delegated LPT users already have their
own skill file, so the CLI's public docs and help text don't need to
cover this path.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Committed-By-Agent: claude

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-28 09:31:59 -04:00
github-actions[bot] 8e1fd801a8 Version Packages (#277)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-28 09:24:49 -04:00
Jason f77d7451d4 Split the Cursor plugin into plugins/cursor-link with MCP-first skills (#276)
* Split the Cursor plugin into plugins/cursor-link with MCP-first skills

Cursor reaches Link through the hosted MCP server at
api.cursor.com/rest-mcp/stripe-link/mcp, but the plugin's skills were the
CLI-oriented ones shared with Claude and Codex via a symlink to the repo
root. They told Cursor users to npm install @stripe/link-cli and to register
a second, local stdio MCP server, which conflicts with the hosted one.

Give Cursor its own self-contained plugin directory with no shared files, and
write its skills against the tools the hosted server actually exposes:
get_userinfo, list_spend_requests, get_spend_request, list_payment_methods,
list_shipping_addresses, sign_web_bot_auth, and report_agent_observation.

That server exposes no spend-request writes, so the purchase skill covers
finding and spending against a request the user already approved and stops
when none exists. Transactions, balances, and sources are not reachable yet,
so no financial-insights skill ships here; plugins/link still covers that for
CLI-based clients.

With a real .mcp.json in the new directory there is no longer a symlinked
.mcp.json to dodge, so the .link-cursor-mcp.json override is gone.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Route spend approvals through request_virtual_card

The skills described approval as something the agent could not do, which is
true of the Link MCP server but not of Cursor, where request_virtual_card
raises an approval card for exactly this. Rewrite the purchase flow around
that tool: its argument contract (cents including tax and shipping, a 7-word
title, a 100 to 140 character context, line items summing exactly to the
total), the turn ending on the call, the already-pending and denied outcomes,
and the 5/15/30/60 second poll of get_spend_request before retrieving the
card.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Call the product Link, not Stripe Link

Review feedback from @danhill-stripe on the marketplace description.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 09:12:57 -04:00
github-actions[bot] d80f4609ab Version Packages (#275)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-27 19:33:23 -04:00
Dan Hill 7e18e3c812 fix: improve cursor plugin (#274) 2026-08-27 19:31:45 -04:00
github-actions[bot] 1fb33a35c2 Version Packages (#266)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-25 14:30:05 -04:00
Steve Kaliski 8ee4dea771 Prepare Link SDK for publication (#265)
Committed-By-Agent: codex

Committed-By-Agent: codex

Co-authored-by: codex <noreply@openai.com>
2026-08-25 14:19:10 -04:00
github-actions[bot] d8ba5927d1 Version Packages (#252)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-17 16:32:45 -04:00
Dan Hill b1640b208d Updates the published limits to $500 (#251)
* fix: correct limits

* fix: correct limits

* add changeset
2026-08-17 13:34:41 -04:00
github-actions[bot] d540389e03 Version Packages (#247)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-13 14:36:54 -04:00
Selina Feng 70453ff2d0 Add changelog entry for financial insights command and skill file changes (#249) 2026-08-13 14:26:11 -04:00
kreese-stripe 1675a70648 feat: Handle duplicate spend request rate limit response (#246)
* Handle duplicate spend request rate limit response

* Some formatting improvements

* CI

* Changest
2026-08-13 12:47:35 -04:00
github-actions[bot] 69c2089b00 Version Packages (#241)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-12 09:59:30 -04:00
kreese-stripe e9a8f69b74 security: Sanitize output of decodeStripeChallenge call (#244)
* security improvements for mpp commands

* rm comment

* Add changeset
2026-08-12 08:39:23 -04:00
nvp-stripe 9103637d63 Bind Link Pay Tokens to the checkout merchant (#243)
* lpt merchant binding

* readme updates

* approve link_pay_token
2026-08-11 15:22:10 -04:00
Steve Kaliski f05d954e0f add patch changeset (#239) 2026-08-11 09:42:55 -04:00
github-actions[bot] e0bf195daf Version Packages (#220)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 16:48:12 -04:00
kreese-stripe 1c2fd6e603 feat: Support metadata in spend-request create command (#219)
* Support metadata in spend-request create command

* Changeset
2026-07-27 16:44:41 -04:00
github-actions[bot] df13387255 Version Packages (#216)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-23 10:02:43 -04:00
kreese-stripe b097a579e0 fix: Improve security posture of mpp pay command + skillfile (#215)
* Improve security posture of mpp pay command + skillfile

* rn addition

* commit changeset
2026-07-23 09:58:49 -04:00
github-actions[bot] c2b63db596 Version Packages (#206)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-21 09:02:47 -04:00
kreese-stripe 4b5f5be4b0 Harden the security of the serve command (#205)
* Harden the security of the serve command

* fmt

* fix version
2026-07-20 16:00:05 -04:00
github-actions[bot] 1ac34e94a9 Version Packages (#179)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-26 14:17:06 -04:00
sylwang-stripe 1a0bf3099d update readme (#178) 2026-06-26 12:02:56 -04:00
github-actions[bot] acf04687f0 Version Packages (#173)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-24 08:42:45 -07:00
drapeau-stripe dd0e30329b chore: add changeset for report command docs (#170)
#150 added the report-outcomes docs to the README (which ships in the npm
package) and the create-payment-credential skill, but merged without a
changeset. Add a patch changeset so the next release publishes the updated
README.


Committed-By-Agent: claude

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 08:34:41 -07:00
github-actions[bot] d65a4ce616 Version Packages (#168)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-23 15:11:26 -04:00
sylwang7 5827e02f6c v0.8.0 changeset (#167) 2026-06-23 13:11:21 -04:00
github-actions[bot] f70d1fc375 Version Packages (#160)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 12:37:31 -04:00
jlau-stripe c2fc0659ee v0.7.4 changeset (#159) 2026-06-15 12:00:14 -04:00
github-actions[bot] 67da9a4522 Version Packages (#152)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 14:51:20 -04:00
kreese-stripe f83d5cc332 v0.7.3 changeset (#151) 2026-06-10 14:42:14 -04:00
github-actions[bot] a34aaf9f1c Version Packages (#145)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-08 14:06:09 -04:00
kreese-stripe a30d70bef0 feat: changeset for v0.7.2 (#144)
* pnpm changeset for v0.7.2

* update changeset

* rm old changeset
2026-06-08 14:02:57 -04:00
github-actions[bot] 328b9d6568 Version Packages (#141)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-05 14:27:27 -04:00
kreese-stripe 13fda7edd1 feat: v0.7.1 changeset (#140) 2026-06-05 14:24:09 -04:00
kreese-stripe 61303becbe publishable update (#138) 2026-06-05 10:48:53 -04:00
kreese-stripe 079c41da00 pnpm changeset (#137) 2026-06-05 10:39:18 -04:00
Dan Hill baa5aabf1d Bump to 0.5.0 publish (#99) 2026-05-11 16:05:25 -04:00
Dan Hill 4121c7b5cd Bump to 0.5.0 (#97) 2026-05-11 15:37:51 -04:00
github-actions[bot] 5f0e2061e8 Version Packages (#69)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-05 07:38:18 -04:00
Gus 59a0fe1956 fix(sdk): restrict the auth config file to the owning user (mode 0o600) (#51)
The Storage class in `packages/sdk/src/utils/storage.ts` constructed a
`Conf` instance without passing `configFileMode`, so the on-disk file
inherited conf's default (0o666 masked by umask, typically 0o644 on
macOS and Linux).

The file holds the OAuth `access_token` and `refresh_token` from
`auth login`, plus — during a pending device-auth window — the
`device_code` and verification phrase written by the agent-mode
`auth login` flow at packages/cli/src/commands/auth/index.tsx:50.

With 0o644 perms, any other local user (shared dev workstations,
multi-user CI runners, lab machines) can:

- Read the access + refresh tokens and call the Link API as the
  victim — including `GET /spend_requests/{id}?include=card` to
  retrieve unmasked card details from approved spend requests.
- During an active login window, read the `device_code` and race the
  legitimate `auth status --interval` poll loop to
  `/device/token`. OAuth 2.0 device-flow polls return tokens to the
  first caller after user approval; the device_code is the polling
  client's secret, and it should never reach disk in a world-readable
  form.

This change passes `configFileMode: 0o600` to the Conf constructor.
Owner-only matches the convention used by gh, aws, mercury-cli, and
similar credential-bearing CLIs. conf writes via atomic rename, so
existing 0o644 files are remediated automatically on the next config
write (next setAuth, clearAuth, or setPendingDeviceAuth).

For testability, the `Storage` class is now exported and accepts an
optional `cwd` so unit tests can run against a temp directory instead
of the real platform user-config path.

Tests:
- `writes the config file with mode 0o600 (owner-only)` — fresh write.
- `rewrites with mode 0o600 when an existing file is 0o644` — covers
  the upgrade path from a pre-fix install.
- `also restricts pendingDeviceAuth, which is written to the same
  file` — covers the device_code race-window vector.

Skipped on Windows (NTFS uses ACLs; POSIX mode bits don't reflect
actual access).
2026-05-04 17:48:52 -04:00
github-actions[bot] 5c49714bce Version Packages (#66)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-02 13:07:29 -04:00
Dan Hill 90fc1838a1 Improve plugins (#64)
* feat: add claude marketplace.json and improve plugins

* changeset

* fix: formatting
2026-05-02 13:02:17 -04:00
github-actions[bot] afd09b4e70 Version Packages (#53)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-29 20:45:31 -04:00