On-behalf-of Token exchange with AgentCore Identity
When an agent calls an external API for a user, how does that authority get handed over? A walk through on-behalf-of token exchange in AgentCore Identity.
External link
Software Engineer
When an AI agent calls an API on a user’s behalf, whose authority is it acting under? That is where most of my time goes right now — on AWS, and by building rather than reading. Behind it is a decade of application work: iOS, then Flutter, Kotlin, and React.
The technical areas I spend most of my time on right now.
When an agent calls an external API on a user’s behalf, whose authority is it acting under? I work through this by actually wiring up three-legged OAuth and token exchange.
Mostly Amazon Bedrock AgentCore: what it takes to run agents in production. Tenant isolation and MCP server topology are the parts I keep coming back to.
AWS first, with Azure, Google Cloud, and Kubernetes alongside it. The interesting question is never whether a new service works, but whether it holds up in operation.
Starting from iOS and extending into Flutter and Android. This is the area I have spent the longest on: app architecture, and where to draw the line against the backend.
Selected articles, projects, and talks.
When an agent calls an external API for a user, how does that authority get handed over? A walk through on-behalf-of token exchange in AgentCore Identity.
External link
Pairing FastMCP's OIDCProxy with Amazon Cognito to compare three ways of authenticating an MCP client — CIMD, dynamic client registration, and pre-registered credentials — against one User Pool.
External link
What it takes to make three-legged OAuth work when tool calls are routed through AgentCore Gateway.
External link
A ground-up tour of the identity side of AgentCore, aimed at people picking it up for the first time. Delivered in Japanese.
External link
How to satisfy both of the things a chat screen is expected to do in SwiftUI — the newest item stacking at the bottom, and items sitting at the top when there are only a few.
Recently written.
An overview of prefill and decode, the two phases of ordinary LLM inference, and why one tends to be bottlenecked by compute while the other tends to be bottlenecked by memory reads — prompted by sessions at KubeCon + CloudNativeCon Japan 2026.
Notes on COAZ-MCP, the working group draft that maps MCP messages onto AuthZEN decision requests — the problem it tries to solve, how default and declared mappings work, and where it stands today.
Notes on AuthZEN, the authorisation standard I first came across at KubeCon + CloudNativeCon Japan 2026 — the problem it tries to solve, how it relates to OIDC, and where it stands today.
Hiding it with navigationBarBackButtonHidden also costs you the swipe-back gesture and the long-press stack. Adjusting UINavigationBar's appearance is the safer route.