Come dare a un agente AI un portafoglio senza ritrovarsi al verde
Immagina di aver affidato a un assistente AI l'acquisto di un libro raro, il pagamento di un server o l'acquisto di un biglietto per una conferenza. Lo script raggiunge il modulo di pagamento, e poi—vicolo cieco. Consegnare i dati della propria carta principale a un agente è terrificante: un'allucinazione o un parser difettoso, e i soldi finiscono dove non dovrebbero. Costringere una persona a compilare manualmente ogni checkout vanifica lo scopo dell'automazione.
Gli ingegneri di Stripe hanno rilasciato un'utility interessante chiamata link-cli. Risolve questo problema attraverso Link wallet emettendo carte virtuali monouso o token per transazioni specifiche solo dopo la conferma del proprietario.
In questo articolo, analizzeremo come funziona lo strumento, come connetterlo a un LLM tramite il protocollo MCP e quali insidie evitare.
Come funziona il processo
L'intero flusso di lavoro ruota attorno all'entità della richiesta di spesa. L'agente non accede al tuo conto bancario e non vede mai le carte salvate.
Il flusso è semplice:
- L'agente analizza la pagina del negozio, costruisce un carrello e raccoglie i parametri dell'ordine.
- Tramite CLI, viene creata una richiesta di acquisto specificando il commerciante, l'importo e un contesto dettagliato che spiega lo scopo della spesa.
- Una notifica push arriva sul tuo telefono nell'app Link richiedendo conferma.
- Dopo l'approvazione, la CLI riceve una carta virtuale temporanea o un token.
- L'agente inserisce le credenziali generate nel modulo di pagamento e completa l'acquisto.
Il parametro --context non è solo per bellezza. Stripe richiede una descrizione dettagliata di almeno 100 caratteri in modo che tu sappia esattamente a cosa serve l'addebito nella notifica push. La conferma deve essere effettuata entro esattamente 10 minuti, dopodiché la richiesta scade.
Formati delle credenziali
L'utility può restituire tre tipi di dati di pagamento a seconda di dove e come l'agente sta effettuando il pagamento.
La prima opzione è una carta virtuale monouso standard (PAN). Funziona con qualsiasi negozio online che utilizza un modulo di checkout HTML standard, anche se il sito non ha mai sentito parlare di Stripe.
La seconda opzione è un Shared Payment Token (SPT). Questo è per scenari in cui il commerciante supporta il Machine Payments Protocol (MPP). Qui il pagamento avviene programmaticamente tramite HTTP 402 senza emulare l'inserimento dei dati nel browser.
La terza opzione è un Link Pay Token (LPT). Se il checkout viene eseguito su Stripe e la pagina contiene un blocco speciale per gli agenti AI, la CLI genera un token collegato direttamente al conto del commerciante.
Sicurezza dei log e lavoro con MCP
Il problema principale quando si gestiscono pagamenti in LLM è la perdita di credenziali. Se l'utility emette il numero completo della carta e il CVC su stdout, questi dati rimarranno nel contesto del modello, nei prompt di sistema, nei log del terminale e nelle trascrizioni dell'agente.
Gli sviluppatori di Stripe hanno risolto questo problema con l'argomento --output-file. Il comando salva i dati completi della carta in un file locale con permessi di accesso 0600, mentre emette JSON mascherato verso lo standard output:
L'agente prende il percorso del file, lo passa a un runner browser interno come Playwright, e nei log rimangono solo il marchio della carta e le ultime quattro cifre.
Per l'integrazione con framework come Claude Code o Cursor, l'utility può essere eseguita come server MCP (Model Context Protocol):
Se l'agente viene eseguito in un container isolato o su un server remoto, il comando link-cli serve avvia un endpoint HTTP locale per MCP.
A proposito, per comunicare con i modelli linguistici, viene utilizzato per impostazione predefinita il formato toon. Si tratta di un output di testo compatto senza rumore di sintassi JSON che risparmia token nella finestra di contesto.
Limiti e restrizioni
Lo strumento è ancora in fase iniziale, quindi il team di Stripe ha incorporato limiti di sicurezza rigorosi:
- L'importo massimo per un singolo acquisto è limitato a $500 (50.000 centesimi).
- Il limite di spesa giornaliero è anch'esso di $500, con un tetto mensile di $20.000.
- Le carte o i token emessi sono attivi solo per 12 ore dal momento in cui viene creata la richiesta.
- Non possono esistere più di 10 richieste attive confermate simultaneamente.
Per esperimenti locali e test di integrazione, c'è il flag --test. Genera numeri di carta di test (ad esempio, 4000009990001984) e non addebita fondi reali dal conto Link.
Dove si applica
L'utility è stata creata per una nicchia specifica: script autonomi e assistenti che periodicamente devono eseguire transazioni per conto di una persona.
Casi d'uso tipici:
- Agenti personali per l'acquisto di beni di consumo, la prenotazione di biglietti o abbonamenti.
- Ricariche automatiche del saldo in servizi cloud e API di terze parti quando vengono raggiunti i limiti.
- Pagamento di endpoint premium tramite il Machine Payments Protocol (HTTP 402).
- Test di carico e test end-to-end dei checkout di e-commerce.
Dopo un tentativo di addebito, l'agente può inviare un report dei risultati tramite link-cli report, indicando lo stato (successo, CAPTCHA, blocco Cloudflare o rifiuto della banca). Questo aiuta a raccogliere statistiche sugli errori.
Il progetto link-cli è altamente specializzato, ma affronta una vera lacuna di sicurezza negli agenti autonomi. Invece di condividere chiavi private e credenziali, lo sviluppatore ottiene un gateway controllato con conferma di ogni passaggio tramite smartphone.
Il principale svantaggio al momento: lo strumento funziona solo con conti Link negli Stati Uniti. Se hai accesso a US Link, puoi testare l'utility adesso tramite npx @stripe/link-cli onboard. Tutti gli altri dovranno studiare il codice sorgente TypeScript nel repository e aspettare l'espansione geografica.
Progetti correlati