This is a submission for the Auth0 for AI Agents Challenge
What I Built
Assistant0 - A secure, enterprise-grade AI assistant that helps you manage your digital life with the power of Auth0's security features.
Assistant0 is not just another chatbot. It's a comprehensive AI agent system that can:
- π§ Search and manage your Gmail - Find emails, create drafts, and send messages
- π Manage your Google Calendar - View events and schedule meetings
- π Search the web - Get real-time information using Exa AI-powered search
- π Search your documents - With fine-grained access control
- π Maintain complete audit trails - Every action is logged and traceable
The key differentiator? Enterprise-grade security powered by Auth0 for AI Agents, ensuring that every action your AI agent takes is properly authenticated, authorized, and auditable.
Login with:
acc:
replacementadapter@gmail.com
pass:
1212diGital01#884516
Demo
π Live Demo: https://assistant0agent.vercel.app
π¦ GitHub Repository: https://github.com/bO-05/assistantzero
Screenshots

Clean, intuitive chat interface powered by Mistral AI
Complete visibility into all agent actions with risk scoring and approval status

Organize your work with isolated workspaces and FGA-based permissions
How I Used Auth0 for AI Agents
Assistant0 leverages the full spectrum of Auth0's AI agent security features:
1. π Token Vault for Federated API Access
The Token Vault is the backbone of Assistant0's Google integration. When users ask the AI to read emails or create calendar events, Auth0 securely:
- Stores OAuth refresh tokens
- Exchanges them for access tokens on-demand
- Handles token refresh automatically
- Creates user-friendly authorization flows
Implementation:
export const withGoogleConnection = auth0AI.withTokenVault({
connection: 'google-oauth2',
scopes: [
'https://www.googleapis.com/auth/gmail.readonly',
'https://www.googleapis.com/auth/gmail.compose',
'https://www.googleapis.com/auth/calendar.events',
],
refreshToken: getRefreshToken,
credentialsContext: 'tool-call',
});
When the AI agent needs to access Gmail or Calendar on behalf of the user, it seamlessly prompts for authorization with a clean UI component, then securely accesses the API.
2. π‘οΈ Fine-Grained Authorization (FGA) with Okta FGA
Assistant0 implements document-level access control using Okta FGA. Users can upload documents to their workspace, and the AI agent only retrieves documents they have permission to view.
Implementation:
const retriever = FGAFilter.create({
buildQuery: (doc: DocumentWithScore) => ({
user: `user:${user?.email}`,
object: `doc:${doc.documentId}`,
relation: 'can_view',
}),
});
// AI only sees documents user can access
const authorizedDocs = await retriever.filter(documents);
This ensures that in multi-user workspaces, the AI agent respects organizational hierarchies and access policies.
3. β‘ Client Initiated Backchannel Authentication (CIBA)
For high-risk operations like online purchases, Assistant0 implements async authorization using CIBA. When the AI agent attempts to buy something, it:
- Sends an authorization request to the user's device
- Displays the transaction details ("Do you want to buy 2 iPhone for $2000?")
- Waits for user approval
- Only proceeds after explicit confirmation
Implementation:
export const withAsyncAuthorization = auth0AI.withAsyncAuthorization({
userID: async () => (await getUser())?.sub as string,
bindingMessage: async ({ product, qty }) =>
`Do you want to buy ${qty} ${product}`,
scopes: ['openid', 'product:buy'],
onAuthorizationRequest: async (authReq, creds) => {
// Non-blocking: user can approve from mobile device
await creds;
},
});
This prevents unauthorized purchases even if someone gains access to the chat interface.
4. π Comprehensive Audit Logging
Every AI agent action is logged to the Mission Control dashboard with:
- Full Auth0 user context (user ID, email, session)
- Tool name and agent role (communication-agent, scheduler-agent, etc.)
- Input/output data
- Risk assessment scores
- Success/failure status
- Duration metrics
- Approval requirements
This provides complete provenance and traceability - critical for enterprise compliance.
5. π― Risk-Based Step-Up Authentication
Assistant0 implements adaptive security with risk scoring:
- Low-risk actions (searching emails, reading calendar): Seamless execution
- Medium-risk actions (creating calendar events): Standard authorization
- High-risk actions (sending emails, making purchases): Step-up authentication required
The system can be extended to trigger Auth0 Guardian for MFA when risk thresholds are exceeded.
6. π Secure Session Management
All routes are protected with Auth0 Next.js SDK middleware, ensuring:
- Server-side session validation
- Automatic token refresh
- Secure cookie handling
- Protection against CSRF and XSS attacks
Tech Stack
- Frontend: Next.js 15.2, React 19, TailwindCSS
- AI: Mistral AI (via AI SDK), LangChain Community Tools
- Auth: Auth0 for AI Agents (@auth0/ai-vercel 4.0.1)
- Database: PostgreSQL with Drizzle ORM
- Authorization: Okta FGA for fine-grained access control
- Deployment: Vercel
Lessons Learned and Takeaways
Challenges Faced
-
Token Vault Interrupts vs Errors
- Challenge: Initially, token authorization failures were returning as errors instead of interrupts, preventing the UI from showing authorization buttons.
-
Solution: Discovered that
getAccessTokenFromTokenVault()is synchronous, not async! Removingawaitfixed the interrupt flow. - Lesson: Read SDK documentation carefully - async/sync semantics matter!
-
Database State vs Real-Time Interrupts
- Challenge: Old error messages persisted in the database prevented new authorization flows from triggering.
- Solution: Implemented smart history loading that detects TokenVault errors and auto-clears the conversation for fresh auth attempts.
- Lesson: Stateful systems need reconciliation logic between persisted data and real-time state.
-
LangChain vs Direct SDK Integration
-
Challenge: Gmail tools use LangChain wrappers expecting
() => Promise<string>for access tokens, but Auth0 SDK provides sync access. - Solution: Wrapped the sync token getter in an async function for LangChain compatibility.
- Lesson: Bridge patterns are essential when integrating multiple SDKs with different conventions.
-
Challenge: Gmail tools use LangChain wrappers expecting
-
Audit Logging Without Breaking Interrupts
- Challenge: Wrapping tools with audit logic could catch and suppress Auth0 interrupts.
- Solution: Explicit interrupt detection by error name and re-throwing to preserve the interrupt flow.
- Lesson: Middleware must be interrupt-aware in AI agent architectures.
Key Insights
π― AI Agents Need Special Security Models
Traditional web auth isn't enough. AI agents act autonomously, access multiple services, and handle sensitive data. Auth0's specialized features (Token Vault, CIBA, FGA) are purpose-built for this new paradigm.
π Auditability is Non-Negotiable
In production, you MUST know what your AI agent did, when, why, and with whose permission. Mission Control-style audit dashboards aren't optional - they're table stakes for enterprise AI.
π Progressive Security Works
Not every action needs Guardian MFA. Risk-based authentication provides the right balance: seamless UX for safe actions, step-up auth for risky ones.
π Auth0 SDK Makes Complex Auth Simple
Implementing CIBA, Token Vault, and FGA from scratch would take months. Auth0's AI SDK reduces it to configuration and a few wrapper functions.
Advice for Other Developers
Start with Auth Early - Don't bolt on security later. Design your agent architecture around Auth0's primitives from day one.
Test the Unhappy Paths - Authorization failures, expired tokens, denied requests - these are where most bugs hide. Test them thoroughly.
Build Audit Logging First - You can't debug what you can't see. Mission Control saved me hours of debugging by showing exactly what the agent was doing.
Use TypeScript - The Auth0 AI SDK has excellent types. They caught dozens of bugs during development.
Read the Vercel AI SDK Docs - Auth0's AI SDK builds on top of Vercel AI SDK. Understanding both is crucial.
What's Next for Assistant0
- Multi-Agent Orchestration: Specialized agents (email agent, calendar agent) collaborating on complex tasks
- Voice Interface: Speak to your AI assistant with secure voice biometrics
- Mobile App: iOS/Android apps with native Auth0 Guardian integration
- Enterprise Features: SSO, custom branding, admin controls for organizations
- More Integrations: Slack, Microsoft 365, Notion, Linear, and more
Try It Yourself
- Clone the repo:
git clone https://github.com/bO-05/assistantzero - Set up Auth0 credentials in
.env.local - Configure Google OAuth social connection with offline_access
- Run
npm install && npm run dev - Chat with your secure AI assistant!
Built with β€οΈ for the Auth0 AI Agents Challenge
Special thanks to the Auth0 team for creating such a comprehensive SDK for AI agent security. This challenge pushed me to explore the cutting edge of AI authentication, and I learned more in two weeks than I have in months of regular development.
Auth0Challenge #AIAgents #NextJS #SecureAI
I built this in about 2 days, so maybe still much needed touchup!





Top comments (0)