Auth0's Token Vault partitions a user's Connected Accounts by Organization, so the same Google or GitHub connection in one org is invisible from another. The isolation itself just works. Getting a demo application to the point where it worked took three separately-gated setup steps, each with a misleading error.
Toby Allen
Solutions Engineer at Okta. I write about identity, access management, and security. This site archives my published articles, talks, and presentations.
Series - Indepth Explainers
Latest
The feature was built and the model never heard about it
Two new capabilities shipped in the same session, wired into the backend correctly and invisible to the chat model anyway - because registering a tool and telling the model it exists turned out to be two separate, separately-forgettable steps.
From Service Accounts to Agents: The Identity Progression Behind an AI Chatbot
Most AI chatbots reach a backend API the same way any other service does: a client credentials grant and a static scope. That model breaks down fast once the chatbot is acting on behalf of a specific user, and breaks down again once you want to know which agent did what.
Four more bugs: applying last week's lesson in the wrong place
A live user hit a broken appeal submission on an error from the exact family the previous post had just spent two sessions solving. It wasn't the same bug - the earlier fix's own assumption didn't hold for a second hop, and two more unrelated bugs were stacked underneath it.
Three bugs Claude Code and I only caught by checking the wrong layer
Building out an Auth0 Organizations demo suite with Claude Code, three separate bugs all had the same shape: the verification looked complete, and was still checking a different layer to the one where the failure actually lived.
Six checks later: the on-behalf-of bug that took two sessions to find
On-behalf-of token exchange for the apidays demo's MCP server failed with the same generic error no matter what I tried. Six separate, individually correct verification passes across two sessions all checked the wrong property of the one field that mattered.