Notes from the brake pedal

Practical writing on giving AI agents real power on real APIs without losing real money. Drawn from what we're building into Keybrake.

Windmill Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Windmill's per-script retry re-fires completed Stripe charges when a downstream step raises an exception after the charge succeeds; flow step retry restarts billing steps without checkpoint protection; and For loop parallelism fires concurrent charges across all list items with no cross-iteration deduplication. Three Windmill-specific failure modes with TypeScript and Python SDK code, and the two-layer governance pattern — content-hash idempotency keys plus per-script vault keys via a spend-cap proxy — that closes each one.

Read the post →

Prefect Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Prefect's task retry parameter re-fires completed Stripe charges when a downstream task raises an exception after the charge succeeds; flow-level retries re-run all non-cached tasks including billing unless a cache_key_fn is configured; and concurrent scheduled flow runs — triggered when a cron interval is shorter than execution time or when a manual run overlaps with a scheduled one — create duplicate charges with no cross-run deduplication. Three Prefect-specific failure modes and the two-layer governance pattern — content-hash idempotency keys plus per-run vault keys via a spend-cap proxy — that closes each one.

Read the post →

Temporal Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Temporal's durable execution model introduces three Stripe billing risks unique to its architecture: the default activity RetryPolicy retries failed activities including ones where the Stripe charge already completed, firing a second charge with no idempotency key; Stripe API calls placed directly in workflow code (outside activity boundaries) re-execute on every Temporal replay during worker recovery; and child workflow fan-out re-bills already-charged customers when the parent workflow is retried under a new execution. Three Temporal-specific failure modes and the two-layer governance pattern — content-hash idempotency keys plus per-run vault keys via a spend-cap proxy — that closes each one.

Read the post →

LangGraph Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

LangGraph's conditional retry edge routes back to the billing node on any tool error, re-firing a Stripe charge that already succeeded; the MemorySaver thread checkpoint persists the full message history including prior billing results, causing the LLM to replay charges on ambiguous continuations of the same thread_id; and the Send API fan-out re-dispatches all customers — including already-billed ones — when the orchestrating node is retried. Three LangGraph-specific failure modes and the two-layer governance pattern — content-hash idempotency keys plus per-run vault keys via a spend-cap proxy — that closes each one.

Read the post →

Mastra Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Mastra's agent retry loop re-fires a completed Stripe charge when a tool returns an error after the charge succeeds; parallel Workflow steps fire concurrent Stripe calls with no cross-call deduplication, so two steps billing the same customer can create two charges before either result is registered; and Mastra's persistent agent memory stores prior tool call results in conversation context, causing the LLM to re-execute the billing tool on ambiguous follow-up prompts in resumed sessions. Three Mastra-specific failure modes and the two-layer governance pattern — content-hash idempotency keys plus per-run vault keys via a spend-cap proxy — that closes each one.

Read the post →

Relevance AI Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Relevance AI's Tool step retry re-executes completed HTTP steps on any downstream failure, re-firing a Stripe charge that already succeeded; bulk agent trigger runs execute concurrently with no cross-run deduplication, so triggering the same agent twice creates two parallel billing runs that both reach Stripe before either completes; and workspace Tool definitions store one Stripe key shared across every agent and every run in the project. Three Relevance AI-specific failure modes and the two-layer governance pattern — content-hash idempotency keys plus per-run vault keys via a spend-cap proxy — that closes each one.

Read the post →

Gumloop Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Gumloop, the AI-native visual workflow builder, introduces three Stripe billing risks unique to its execution model: flow retry re-executes every block from the first one, re-firing any Stripe HTTP Request node that already completed before the downstream error; the Loop block iterates over customer arrays without checkpointing completed items, so batch retry re-bills every customer from index 0 when the original run crashed mid-array; and the AI node can emit multiple billing tool calls in a single LLM turn when models with parallel function calling process an ambiguous billing instruction, sending two simultaneous Stripe requests with no idempotency key. Three Gumloop-specific failure modes and the two-layer governance pattern — content-hash idempotency keys plus per-flow vault keys via a spend-cap proxy — that closes each one.

Read the post →

Activepieces Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Activepieces, the open-source automation platform, introduces three Stripe billing risks unique to its execution model: retrying a failed flow run from the dashboard creates a new flow run from step 1 with the original trigger data — the Stripe action step re-fires even if the charge already completed; Activepieces processes each received webhook as an independent flow run with no cross-run deduplication, so an upstream service retrying a webhook delivery creates two concurrent runs that both execute the billing step simultaneously; and a Code piece that initializes the Stripe client at module scope shares that client across all concurrent flow executions in the same worker process. Three Activepieces-specific failure modes and the two-layer governance pattern — content-hash idempotency keys plus per-flow vault keys via a spend-cap proxy — that closes each one.

Read the post →

Zapier Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Zapier's automation platform introduces three Stripe billing risks unique to its execution model: replaying a failed task from Zap History re-runs all Zap steps including the Stripe action — no step is skipped even if the charge already completed; Zapier's built-in auto-retry for failed tasks re-executes the Stripe action on transient errors, creating a duplicate charge with no trace in the task log; and the AI by Zapier step uses tool-use to decide whether to call downstream Zap actions — ambiguous billing instructions or parallel tool calls can trigger the Stripe action multiple times in one AI step run. Three Zapier-specific failure modes and the two-layer governance pattern — content-hash idempotency keys plus per-run vault keys via a spend-cap proxy — that closes each one.

Read the post →

Make.com Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Make.com's visual automation builder introduces three Stripe billing risks unique to its execution model: when a scenario errors after the Stripe HTTP module has already created a charge, Make.com stores the execution as Incomplete — re-running it from the Operations panel restarts the entire scenario and re-fires the Stripe call on an already-billed customer; Make.com's error handler Retry directive re-executes the failed module, so a transient network error after a successful charge fires an identical request without an idempotency key; and Make.com's instant webhook trigger can receive the same payload twice — from the upstream system retrying and from Make.com's own delivery queue — creating two concurrent scenario runs that both reach the billing HTTP module with identical inputs. Three Make.com-specific failure modes and the two-layer governance pattern — content-hash idempotency keys via Make.com's built-in sha256() expression plus per-scenario vault keys via a spend-cap proxy — that closes each one.

Read the post →

Flowise Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Flowise's visual low-code builder introduces three Stripe billing risks unique to its execution model: Custom Tool functions run server-side in the Flowise Node.js process — process.env.STRIPE_KEY is a single shared environment variable with no per-session isolation, so all concurrent billing chatflow sessions draw from the same key with no per-customer or per-run scoping; the Flowise chatflow REST API has no input-hash deduplication, so a network-level caller retry re-runs the full agent conversation and re-fires the billing tool on an already-billed customer; and in Flowise Agentflow (the multi-agent canvas), a Worker agent that exhausts its max iterations limit without producing a valid Final Answer can be retried by the Orchestrator with the same task — re-calling the billing tool that already completed a charge on an earlier iteration. Three Flowise-specific failure modes and the two-layer governance pattern — content-hash idempotency keys plus per-session vault keys via a spend-cap proxy — that closes each one.

Read the post →

n8n AI Agent Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

n8n's visual workflow builder introduces three Stripe billing risks unique to its execution model: Retry Failed Execution re-runs the entire workflow from the beginning when any downstream node fails — if the billing Code node already completed a charge before the database write timed out, retrying bills the customer again; window buffer memory persists completed tool calls in the agent's conversation window, and when the same workflow fires again the LLM may replay the charge on ambiguous follow-up instructions; and in queue mode (horizontal scaling with Redis workers), duplicate webhook deliveries or concurrent trigger events cause two workers to each run the AI agent simultaneously, both calling the billing tool before either result is registered. Three n8n-specific failure modes and the two-layer governance pattern — content-hash idempotency keys plus per-run vault keys via a spend-cap proxy — that closes each one.

Read the post →

Cohere Command R Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Cohere Command R+ introduces three Stripe billing risks: parallel tool_calls in one co.chat() response fire two charge_stripe invocations simultaneously before any tool result is registered; the Cohere SDK's RequestOptions(max_retries=N) compounds a multi-step while-tool-calls loop — a retry with no memory of the charge that already completed causes the model to call charge_stripe again; and Cohere's stateless chat API means sessions reconstructed from a stored chat_history replay completed billing operations when ambiguous follow-up prompts reference prior context. Three Cohere-specific failure modes and the two-layer governance pattern — restricted keys plus per-run vault keys via a spend-cap proxy — that closes each one.

Read the post →

Mistral Agents API Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Mistral Agents API introduces three Stripe billing risks: Mistral large models emit parallel tool_calls in a single completion, firing two charges simultaneously before any tool result is registered; agent-level tool definitions bind the Stripe key at agents.create() time, sharing one key across all concurrent agents.complete() calls with no per-run isolation; and retry wrappers on agents.complete() retrigger billing after transient HTTP errors, firing a second charge on a customer already billed. Three Mistral Agents-specific failure modes and the two-layer governance pattern — restricted keys plus per-run vault keys via a spend-cap proxy — that closes each one.

Read the post →

OpenAI Swarm Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

OpenAI Swarm introduces three Stripe billing risks: context_variables propagates the bare Stripe API key to every agent in a handoff chain, giving read-only support agents the same full billing key as the billing specialist; tool exceptions trigger an LLM retry cycle that re-calls Stripe without idempotency keys on transient errors (a charge that completed before the network error fires again on retry); and max_turns permits multiple billing iterations per run with no spend-cap enforcement between calls. Three Swarm-specific failure modes and the two-layer governance pattern — restricted keys plus per-role vault keys via a spend-cap proxy — that closes each one.

Read the post →

Amazon Bedrock Agents Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Amazon Bedrock Agents introduces three Stripe billing risks: the agent runtime retries a failed Lambda invocation with identical action arguments (duplicating the Stripe charge if it completed before the timeout); session context accumulation causes the agent to replay billing operations on ambiguous follow-up turns in the same sessionId; and multi-agent supervisor–collaborator setups can produce double charges when the supervisor doesn't receive confirmation from the billing sub-agent. Three Bedrock Agents-specific failure modes and the two-layer governance pattern — restricted keys plus per-role vault keys via a spend-cap proxy — that closes each one.

Read the post →

Azure AI Agent Service Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Microsoft's Azure AI Agent Service introduces three Stripe billing risks: azure-core's built-in retry policy re-executes tool call handlers on transient errors (producing duplicate charges with no idempotency key); the Agent Service marks failed tool runs as retriable and re-submits identical tool call arguments to a new run (which fires the Stripe charge again); and persistent Thread history causes the agent to replay completed billing operations on ambiguous follow-up messages. Three Azure AI Agent Service-specific failure modes and the two-layer governance pattern — restricted keys plus per-role vault keys via a spend-cap proxy — that closes each one.

Read the post →

Vertex AI Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Google's Vertex AI / Gemini SDK introduces three Stripe billing risks: generate_content() retry logic re-executes FunctionCall responses, creating duplicate charges on API retries; Gemini's parallel function calling emits multiple charge_stripe calls in a single response, firing them simultaneously; and ChatSession history accumulates completed billing operations, which the model may replay on ambiguous follow-up prompts. Three Vertex AI-specific failure modes and the two-layer governance pattern — restricted keys plus per-role vault keys via a spend-cap proxy — that closes each one.

Read the post →

Smolagents Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

HuggingFace smolagents introduces three Stripe billing risks: CodeAgent generates arbitrary Python that can call stripe.Charge.create() directly in the sandboxed interpreter, completely bypassing your tool governance layer; ToolCallingAgent catches tool exceptions and lets the LLM retry, re-calling Stripe without idempotency keys on transient network errors; and ManagedAgent delegation passes billing context in the task string, which a sub-agent may act on independently and charge again. Three smolagents-specific failure modes and the two-layer governance pattern — restricted keys plus per-role vault keys via a spend-cap proxy — that closes each one.

Read the post →

Google ADK Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Google Agent Development Kit (ADK) introduces three Stripe billing risks: ParallelAgent executes sub-agents concurrently so two branches can each fire a charge without coordination; LoopAgent retries the sub-agent on every iteration, re-calling Stripe without idempotency keys when a transient error returns; and ADK's session service persists billing context across resumed runs, enabling re-execution of charge tools from prior conversation history. Three ADK-specific failure modes and the two-layer governance pattern — restricted keys plus per-run vault keys via a spend-cap proxy — that closes each one.

Read the post →

Agno Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Agno (formerly Phidata) retries failed tool calls by returning the error to the LLM, which re-invokes the tool — without idempotency keys, each retry fires a new Stripe charge. In a multi-agent Team, all member agents can reach Stripe tools, and a bare key gives every member full permissions. Session history replay via SqlAgentStorage puts prior tool call results back in LLM context, inviting re-execution on ambiguous prompts. Three Agno-specific failure modes and the governance pattern that closes each one: content-hash idempotency keys, per-role vault keys scoped by proxy endpoint policy, and a pre-charge existence check tool that guards against session replay.

Read the post →

Haystack Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

Haystack 2.x pipeline retries re-call every component from the beginning — including the Stripe component that already charged. Concurrent pipeline branches fire Stripe independently within a single pipeline.run() call. Component instances initialized at build time share one Stripe key across all runs. Three Haystack-specific failure modes and the governance pattern that closes each one: idempotency keys injected as pipeline inputs, atomic billing components that own all Stripe calls, and per-run vault keys via a proxy with daily spend caps and audit.

Read the post →

Pydantic AI Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

PydanticAI's ModelRetry re-invokes your Stripe tool without idempotency keys — if the charge already fired before the retry, you bill the customer twice. A shared stripe_client in RunContext.deps means all concurrent agent.run() calls share one API key. Structured result validation loops (Pydantic schema mismatch → LLM retry) re-execute the entire tool call sequence. Three PydanticAI-specific failure modes and the governance pattern that closes each one: run_id-keyed idempotency in deps, per-agent-type vault keys, and structured tool return values that reduce validation retries.

Read the post →

LlamaIndex Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

LlamaIndex's ReActAgent retries tool calls on observation errors — without idempotency keys, each retry is a new Stripe charge. SubQuestionQueryEngine parallelizes them. Multi-agent AgentRunner pipelines share a single Stripe key across all child agents by default. Three LlamaIndex-specific failure modes and the governance pattern that closes each one: idempotency keys bound at run time, SubQuestion isolation for billing tools, and per-role vault keys enforced at the proxy layer.

Read the post →

DSPy Stripe Integration: Restricted API Keys, Spend Caps, and Agent Governance

DSPy's teleprompter optimizers (MIPRO, BootstrapFewShot) run real Stripe tool calls during prompt tuning by default. Three failure modes unique to DSPy — optimizer trial explosion, assertion-triggered retry without idempotency keys, and process-global stripe.api_key contamination across loaded modules — and the governance pattern that closes all three: mock-based optimization, per-run idempotency key closures, and per-module vault keys via a spend-cap proxy.

Read the post →

Semantic Kernel Stripe Plugin: Restricted API Keys, Spend Caps, and Agent Governance

Semantic Kernel's plugin system makes it easy to register a Stripe function and let FunctionChoiceBehavior.Auto invoke it. Three failure modes unique to SK's architecture — all-or-nothing plugin scope, the uncapped planner auto-invoke loop, and ChatHistory persisting live Stripe data across turns — and the governance pattern that closes all three: restricted keys as a first layer, per-invocation vault keys as a second.

Read the post →

AutoGen Stripe Agent: Restricted API Keys, Spend Caps, and Multi-Agent Governance

AutoGen's conversation-driven architecture makes it easy to register a Stripe function tool and let AssistantAgent call it across multi-turn exchanges. Three failure modes unique to AutoGen — the conversation retry storm, the shared GroupChat function registry, and the code execution bypass — and the governance pattern that closes all three: restricted Stripe keys, per-conversation vault keys, and a proxy layer that enforces spend caps before calls reach Stripe.

Read the post →

LangSmith Stripe Tracing: Close the Observability Gap for AI Agent Payments

LangSmith traces your LLM calls perfectly — tokens, latency, tool arguments, reasoning chains. But when your agent charges Stripe, LangSmith goes blind: it sees the tool was called, not whether the charge succeeded, what the charge ID was, or how much money moved. This post covers the observability gap, a two-line proxy fix, per-agent vault keys with spend caps, LangSmith + Keybrake correlation by run ID, and a full comparison table of what each system traces.

Read the post →

LangChain Stripe Integration: Safe Agent Payments with Policy Enforcement

Giving a LangChain agent access to Stripe is three lines of code. Giving it access safely — with spend caps, endpoint allowlists, and an audit trail the agent cannot alter — requires a few more. This post covers scoped Stripe keys, in-process spend caps, proxy routing via api_base, and a full StripeChargeTool with Pydantic validation, idempotency keys, and pytest coverage. Comparison table: bare key vs restricted key vs vault key.

Read the post →

Stripe Idempotency Key for AI Agents: Stop the Silent Double-Charge

When a human clicks "Pay" twice, your UI blocks the second click. When an agent retries a failed POST /v1/charges, nothing blocks it — and Stripe will happily create two charges. This post covers the three agent failure modes (network timeout, mid-transaction restart, parallel instances), three patterns for agent-safe idempotency (per-run UUID, content hash, external sequence), and how proxy-layer idempotency adds a safety net for agents that forget to set the header.

Read the post →

CrewAI + Stripe: spend limits and a kill switch for your billing agent

CrewAI makes it easy to wire a Stripe tool into a multi-agent crew — but the framework hands the agent a raw Stripe key with no spend cap, no kill switch mid-run, and no per-call audit trail. This post walks through three real failure modes, then shows a governance pattern (restricted key + proxy layer + vault key per run) that closes each gap with two lines of config change.

Read the post →

AI agent API governance in Python: policies, enforcement, and audit logs

How to build a production-grade governance layer for your AI agent's API calls in Python — Pydantic policy models, a thread-safe pre-call spend enforcer, SQLite audit logging, pytest enforcement tests, and a clear-eyed look at where agent-side code falls short (multi-instance deployments, restarts, sub-second revoke) and why a proxy layer closes the gap.

Read the post →

Stripe restricted API key Python: complete guide for AI agents

How to set up, use, and test Stripe restricted API keys in Python-based AI agents — with stripe-python code examples for five agent archetypes (refund agent, analytics agent, subscription manager, payment capture agent, dispute handler), Python-specific gotchas (async safety, per-request key passing, 403 handling), and the two gaps that restricted keys can't close regardless of permission configuration.

Read the post →

Stripe restricted API key permissions: the complete reference for AI agents

A full breakdown of Stripe's ~60 permission toggles — what Read vs. Write unlocks for each resource category, minimum permission sets for five agent archetypes (refund agent, billing agent, subscription manager, analytics agent, dispute handler), the principle of least privilege in practice, and the three gaps permissions alone can't close (spend volume, customer scope, parameter allowlists).

Read the post →

Next.js AI agent API key management: the concurrency problem and how to fix it

When ten users each trigger an AI agent in your Next.js app at the same time, process.env.STRIPE_SECRET_KEY becomes a shared liability — no per-session spend cap, no per-agent revocation, no attribution in the audit log. Vault keys fix all three. Covers the Route Handler pattern, the Vercel AI SDK streamText streaming edge case, Server Actions, and why a proxy layer is required for spend cap enforcement.

Read the post →

Stripe Restricted API key examples: five real configurations for AI agent use cases

Five concrete Stripe Restricted Key examples with exact permission sets — refund agent, billing agent, subscription manager, payment capturer, and read-only analytics agent. For each: the exact resources to enable, a one-line CLI command, and the specific gap this configuration still leaves open (spend cap, customer scope, parameter allowlist, revoke latency).

Read the post →

The control plane problem: why your AI agent fleet needs a vendor API gateway

When one agent makes one API call, a .env file is fine. When fifty agents call Stripe, Twilio, and Resend, you need a control plane — and neither LLM gateways (LiteLLM, Portkey) nor traditional gateways (Kong, AWS API Gateway) provide it. Four properties a vendor API gateway for agents must have, why cost parsing from response bodies is the hard part, and when to build vs use a managed proxy.

Read the post →

OpenAI Agents SDK + Stripe: wiring function tools safely

The @function_tool decorator makes Stripe tools trivial to add — and the spend-cap gap just as trivial to miss. Three gaps the decorator can't fill (no per-run budget, no sub-second revoke, no per-call audit with agent context), the two-line proxy override, how to issue per-run vault keys, and what the audit log shows from a stuck billing agent that the Stripe dashboard never will.

Read the post →

Five things multi-agent systems break when they share an API key

CrewAI, LangGraph, and AutoGen all encourage shared API keys by default. In production, that pattern produces five distinct failure modes: attribution collapse (can't tell which agent spent what), rate-limit contention (one agent's burst kills another's quota), blast radius on compromise (rotating one key kills all agents), scope mismatch (least-privileged agents get the most-permissive key), and audit log collapse (one event stream, no per-agent reconstruction). Here's how the per-agent vault key pattern closes all five.

Read the post →

Budget alerts for AI agents: four patterns ranked by how late they fire

There are four ways to add spend monitoring to an AI agent. Three of them tell you about the damage after it's done — cloud billing alarms fire 8–48 hours late, vendor threshold emails arrive 15–60 minutes post-threshold, and agent-side counters reset on restart and don't aggregate across instances. One pattern fires before the spend happens. Here's how each works, what it catches, and how to layer them.

Read the post →

AI agent Twilio security: four controls that prevent the $1,200 SMS bill

Handing an AI agent your Twilio key is a four-figure SMS bill waiting to happen. Retry storms send every message 4–6×, international routing bleed turns an $82 batch into $400, and an unsubscribed-list broadcast sends 50,000 messages before anyone checks the console. Four controls — per-day USD cap, destination prefix allowlist, deduplication window, sub-second revoke — prevent all three failure modes at the proxy layer, before calls reach Twilio.

Read the post →

LangChain + Stripe: the spend-cap your agent doesn't have

Wiring Stripe into a LangChain agent takes ten lines. Limiting what that agent can spend takes zero lines — because there's nothing to configure. Three concrete failure modes (stuck refund loop, unbounded charges, customer scope bleed) and the two-line fix that closes all three without touching your agent code.

Read the post →

AI agent payment infrastructure in 2026: what's shipping, what's missing

Stripe Agent Toolkit, Stripe Projects, and proxy-layer governance all shipped in 2026 Q1-Q2. Here's the three-layer model — identity, authorization, enforcement — what each release covers, the three gaps that still have no clean answer, and a concrete build-on-today stack for engineers running agents against production money.

Read the post →

Giving Stripe Agent Toolkit an off-switch

Stripe Agent Toolkit lets Claude issue refunds and charges through MCP in under 30 seconds of config. The off-switch — spend cap, kill switch, per-call audit log — takes two minutes to add by routing through a governance proxy. Walkthrough: the two failure modes, the before/after config, and what you get.

Read the post →

Why your Stripe Restricted Key probably isn't restricted enough

Stripe Restricted Keys are the right primitive for about sixty percent of AI agent use cases. The four gaps — no per-day spend cap, no parameter-level scope, no sub-second mid-run revoke, no per-call audit with parsed cost — are where the real money leaks. The native Stripe workarounds for each, and when they stop being enough.

Read the post →

Rotate vs revoke: a 2am playbook for a stuck AI agent

Your agent is burning Stripe charges and you have ten minutes. The two moves people conflate — rotating the upstream key vs revoking a scoped one — have a 2-3 order-of-magnitude latency gap. Minute-by-minute playbook for both, with the call to make first.

Read the post →

The anatomy of an AI agent audit trail: an opinionated schema

The sixteen columns that earn their keep in an AI agent audit log, the SQL with indexes, five operational queries you'll run more than you expect, and a synthetic stuck-refund incident traced from log rows alone.

Read the post →

The 2026 agent governance stack: which proxy goes where

Agent governance isn't a product — it's a four-layer stack (LLM traffic, LLM observability, SaaS API governance, agent identity). Which proxy covers which risk, which players live at which layer, and the single header that lets you join an incident across all of them.

Read the post →

How to give an AI agent a Stripe API key without losing $4,000 to a stuck loop

Five controls every team needs before handing an autonomous agent a production Stripe key — what Stripe gives you out of the box, what it doesn't, and how to assemble the rest with either a wrapper or a proxy.

Read the post →