{
  "question": "Fly.io added a Link Agent Payments connector to Sprites on November 9, 2026, so a coding agent in a Sprite can ask our Link wallet for a one-time card. Can the agent approve its own spend request, who else can use the connection, and what happens to the card number once it's approved?",
  "slug": "can-an-ai-agent-in-a-fly-io-sprite-approve-its-own-link-payment-and-who-can-read-the-card",
  "url": "https://www.rightshold.com/answers/can-an-ai-agent-in-a-fly-io-sprite-approve-its-own-link-payment-and-who-can-read-the-card",
  "short_answer": "No, not through the connector. Fly.io says the Sprites gateway forwards only the Link routes an agent needs to request and collect a payment and blocks the ones that would let it approve its own request; each spend request goes to the Link account owner, who approves or denies it in the Link app within 30 minutes. The gateway also keeps the Link credential out of the Sprite: the Sprite only knows a connector ID and gateway URL, and the gateway identifies it by Fly.io's request signature. Two things still need care. First, a connection is one person's wallet, and every Sprite the access policy allows can create spend requests for that person to approve, so a broad policy means more agents asking the same approver. Second, once a request is approved, the virtual card's number, CVC and expiry are returned to the Sprite, and Fly.io says anyone who controls an allowed Sprite can read them. The card works once and expires after 12 hours, and the connector card lists limits of 500 USD per request, 500 USD per day and 20,000 USD per 30 days.",
  "checklist": [
    "Turn off Allow all sprites on the connector and grant access by name prefix and labels; when you set both, a Sprite must match both. A connector with no access policy refuses every Sprite, so start from nothing and add only the Sprites that should buy.",
    "Limit each connection to the Link account owner's own Sprites. Fly.io describes a connection as one person's wallet; other allowed Sprites can still create spend requests that land on that person's phone.",
    "Read the merchant, amount and context on every approval prompt as a claim the agent wrote, not a fact. The context line in a spend request is free text from the agent.",
    "Approve only the amount you expect to be charged, and deny requests you didn't ask for rather than letting them lapse, so a pattern of unexpected requests is visible.",
    "Treat an approved card as readable by anything running in the Sprite: other processes, tools the agent runs and any prompt injection that reaches it. Neither Fly.io page says the card only works at the merchant named in the request, so treat the number as spendable up to its cap until it's used or expires.",
    "Check the limits that apply to you. The Sprites connector card lists 500 USD per request, 500 USD per day and 20,000 USD per 30 days, while Link's own CLI reference lists 5,000 USD a day; plan for the lower figure until you've confirmed which applies to your account.",
    "If you set endpoint allow- or block-lists through the Connectors API, remember block rules are checked first and win. They're API-only for now.",
    "Delete the connector to cut every Sprite off at once. Fly.io says deletion immediately revokes Sprite access and destroys the stored credential, so you'd reconnect Link from the dashboard to use it again."
  ],
  "sections": [
    {
      "heading": "How the Sprites gateway keeps approval with the owner",
      "points": [
        "Sprites connectors store a credential once, encrypted in your Fly.io organization, and route calls through a gateway at api.sprites.dev/v1/gateway/<provider>/<connection_id>/<path>. The Sprite sends no Authorization header; the gateway identifies the calling Sprite from Fly.io's request signature, checks the connector's access policy and forwards the call with the credential attached. Calls from outside a running Sprite get a 401, and the API never returns the stored token.",
        "For Link, Fly.io's November 9, 2026 changelog says the gateway forwards only the routes needed to request and collect a payment and blocks those that would let the agent approve its own. The connector card says the connection belongs to the Link account that approved it, every spend request goes to that person, and Sprites cannot approve their own requests. In the changelog's example the agent runs link-cli spend-request create with a merchant name, merchant URL, a plain-English context line and an amount of 3500 (35.00 USD); the request comes back pending_approval with an approval URL, the owner's phone gets a Link notification, and only after approval does link-cli spend-request retrieve with --include card return the card."
      ]
    },
    {
      "heading": "Who can ask, and who can read the card",
      "points": [
        "Approval is per request, but asking is per Sprite. Any Sprite the access policy admits can create spend requests against the same person's wallet. A new connection allows no Sprites, and the setup steps tell you to turn off Allow all sprites before restricting by name prefix or labels. Fly.io also pre-installs a sprite-api-gateway skill for Claude Code, Cursor, Codex and Gemini in every Sprite, so a coding agent there can discover connected providers by itself through the gateway's list endpoint.",
        "After approval, the card details are inside the Sprite. Fly.io's connector card says an approved spend request returns the virtual card's number, CVC and expiry so the agent can check out, and that anyone who controls an allowed Sprite can read them. Your real card number stays in Link, and the virtual card works once and expires after 12 hours. Within those bounds, whatever can read the Sprite's output can use the card first."
      ]
    },
    {
      "heading": "What the approval doesn't cover",
      "points": [
        "The approval prompt shows what the agent put in the request. If the agent was misled about the merchant or the price, the request will look reasonable and the approval will be for the wrong thing. The single-use card limits the damage to one charge up to the approved amount; it doesn't check that the order matches what you wanted.",
        "Link's limits are per Link account, not per Sprite or per project. If several Sprites or tasks share one connection, or you want a smaller budget for one agent than the account allows, keep that budget in your own system and check it before the agent creates a spend request. Fly.io notes availability varies by organization during rollout, and Link agent payments are available in the US and Canada."
      ]
    }
  ],
  "checks": [],
  "ask_rightshold": {
    "start": "https://www.rightshold.com/start?ref=seo",
    "mcp_endpoint": "https://www.rightshold.com/mcp",
    "ask": "Before the agent in my Sprite creates a Link spend request for 35 USD at press.example, check it against this Sprite's own spending policy and give me a signed allow or deny with the task id as the reference.",
    "mcp_call": {
      "tool": "authorize_spend",
      "arguments": {
        "credential_id": "<this Sprite agent's credential id>",
        "amount_minor": 3500,
        "currency": "USD",
        "merchant_domain": "press.example",
        "category": "books",
        "reference": "<task id>"
      }
    },
    "also": [
      "Set the policy first with set_spend_policy (owner account key, toolset=trust): per_tx_max_minor, daily_max_minor, allowed_domains and allowed_categories per agent credential, so each Sprite gets its own budget below the shared Link limits. The daily total resets at 00:00 UTC.",
      "authorize_spend returns a signed allow or deny receipt with reasons such as over_per_transaction_cap, over_daily_cap or merchant_not_allowed and records it on Rightshold's ledger; anyone can check it with verify_spend_authorization. Put the receipt id in the spend request's context so the approver can see the request passed the agent's policy.",
      "It doesn't create, approve or read Link spend requests or cards, see the Sprites gateway or its access policy, or stop a request the agent sends straight to the gateway. It only covers purchases the agent checks with it first, so keep Link's approval as the owner's control."
    ],
    "scope": "Rightshold records spending decisions your agent asks it for. It never holds or moves money, isn't a wallet, card issuer or payment processor and isn't affiliated with Fly.io, Stripe or Link. Sprites and Link Agent Payments behavior is as described in Fly.io's November 9, 2026 changelog entry, its Sprites ecosystem connector card for Link Agent Payments and its Sprites Connectors documentation, plus Link's CLI reference, all read on November 11, 2026; Fly.io says availability varies by organization during rollout and limits may change, so check the linked pages and your Link account before relying on them. Not financial advice."
  },
  "sources": [
    {
      "title": "Fly.io changelog: Pocket money for agents (Link Agent Payments for Sprites, November 9, 2026)",
      "url": "https://fly.io/changelog/link-agent-wallet/"
    },
    {
      "title": "Fly.io: Sprites ecosystem, Link Agent Payments connector card (setup, approvals, limits)",
      "url": "https://fly.io/sprites/ecosystem/#connectors/link"
    },
    {
      "title": "Fly.io docs: Sprites Connectors (gateway, deny-by-default access policies, endpoint lists, deletion)",
      "url": "https://docs.fly.io/sprites/concepts/connectors"
    },
    {
      "title": "Link docs: CLI reference (spend request limits)",
      "url": "https://docs.link.com/cli/reference"
    }
  ],
  "related": [
    {
      "title": "How do Stripe Link Agent Wallet spend requests limit what an AI agent can buy?",
      "url": "https://www.rightshold.com/answers/how-do-stripe-link-agent-wallet-spend-requests-limit-what-an-ai-agent-can-buy"
    },
    {
      "title": "Can an AI agent raise its own spending limit, and how do you stop it?",
      "url": "https://www.rightshold.com/answers/can-an-ai-agent-raise-its-own-spending-limit-and-how-do-you-stop-it"
    },
    {
      "title": "How to stop a prompt injection from making your AI agent buy something",
      "url": "https://www.rightshold.com/answers/how-to-stop-a-prompt-injection-from-making-your-ai-agent-buy-something"
    },
    {
      "title": "How to reserve against a shared team spend pool so concurrent AI agents can't overspend it",
      "url": "https://www.rightshold.com/answers/how-to-reserve-against-a-shared-team-spend-pool-so-concurrent-ai-agents-cannot-overspend-it"
    },
    {
      "title": "Can a browser AI agent pay at checkout without seeing your card with KERNEL vaults?",
      "url": "https://www.rightshold.com/answers/can-a-browser-ai-agent-pay-at-checkout-without-seeing-your-card-with-kernel-vaults"
    },
    {
      "title": "How to require human approval before an AI agent spends money",
      "url": "https://www.rightshold.com/answers/how-to-require-human-approval-before-an-ai-agent-spends-money"
    }
  ],
  "computed_from": "Curated guidance; license verdicts computed from Rightshold's license profiles at render time. Not legal advice.",
  "updated": "2026-11-11"
}