WEBVTT

NOTE Sentence-level transcript of https://www.youtube.com/watch?v=uTrY8slys0w

NOTE One cue per sentence. Cue ids are the line anchors on /transcripts/uTrY8slys0w.html. A cue ends where the next begins, or 2 s after its last word.

s1
00:00:01.309 --> 00:00:03.309
[music]

s2
00:00:12.960 --> 00:00:13.520
Hi everyone.

s3
00:00:13.520 --> 00:00:14.640
My name is Isabel.

s4
00:00:14.640 --> 00:00:17.160
I'm a product manager at WorkOS.

s5
00:00:17.160 --> 00:00:21.840
Today, I'm going to be talking about how your next user is an agent.

s6
00:00:21.840 --> 00:00:24.520
Briefly on WorkOS, we do infra for auth.

s7
00:00:24.520 --> 00:00:27.680
We help you build apps, agents, APIs.

s8
00:00:27.680 --> 00:00:33.480
We're trusted by over 3,000 customers including OpenAI and Propel and Cursor.

s9
00:00:33.480 --> 00:00:34.320
Okay.

s10
00:00:34.320 --> 00:00:39.080
For my presentation today, I'm going to be using an app that I live coded with Cursor.

s11
00:00:39.080 --> 00:00:40.880
It's called Waypoint.

s12
00:00:40.880 --> 00:00:45.840
It is a travel planning app both for individual use and for company travel.

s13
00:00:45.840 --> 00:00:52.040
And we're going to use Waypoint today to help plan our trip to AIE in New York City.

s14
00:00:52.320 --> 00:00:52.840
All righty.

s15
00:00:52.840 --> 00:01:02.880
So, over the past year, but especially in the past few weeks with Muse and Instinct and the rise of personal agents, I've been thinking a lot about what this means for Waypoint.

s16
00:01:02.880 --> 00:01:07.240
The first thing that I've been thinking about is how do I let agents into my app?

s17
00:01:07.240 --> 00:01:19.400
So, when I think about the personal travel tier of Waypoint, before agents, it's, you know, really important from like a product led growth perspective to think about how human users discover my application,

s18
00:01:19.400 --> 00:01:22.880
get signed up, and get to that aha moment really quickly.

s19
00:01:22.880 --> 00:01:35.080
But when I think about how I'm using personal agents, and how I think others are going to be using personal agents if they're not already, is that they're going to be turning over a lot of that research, product discovery, and getting started with the product, and getting to that aha moment

s20
00:01:35.080 --> 00:01:36.880
totally over to their agents.

s21
00:01:36.880 --> 00:01:42.000
So, I'm thinking about how it's going to be really important that I let agents do this with Waypoint.

s22
00:01:42.080 --> 00:01:50.600
Now, as I got a little further into that thinking, the next question that I have is how do I connect those agents that are getting started with my product in this mode

s23
00:01:50.600 --> 00:01:53.240
to real customers?

s24
00:01:53.520 --> 00:01:59.400
And then finally, as I think more about how Waypoint works for company travel for corporate teams.

s25
00:01:59.400 --> 00:02:02.360
There are compliance and financial risk elements to that.

s26
00:02:02.360 --> 00:02:06.760
So, it's really important to me to make sure that I can limit what an agent can do.

s27
00:02:06.760 --> 00:02:09.360
Um I can revoke it when I need to.

s28
00:02:09.360 --> 00:02:14.400
So, with those three questions in mind, let's talk through how I did them with Waypoint.

s29
00:02:14.400 --> 00:02:18.400
So, the first thing that I'm thinking about, how to let agents in.

s30
00:02:18.400 --> 00:02:23.640
Um if you go to this link here, um it ends in off.md.

s31
00:02:23.640 --> 00:02:24.400
So, this is a real link.

s32
00:02:24.400 --> 00:02:26.560
You can actually go to this, but it's not meant for us.

s33
00:02:26.560 --> 00:02:28.080
It's meant for agents.

s34
00:02:28.080 --> 00:02:37.920
Off.md is an open protocol um that um talks about how agents can register for accounts with applications.

s35
00:02:38.640 --> 00:02:43.400
Off.md is a markdown file that you host with your application.

s36
00:02:43.400 --> 00:02:46.000
And again, you can go to it and read it, but it's not meant for us.

s37
00:02:46.000 --> 00:02:47.440
It's meant for your agent.

s38
00:02:47.440 --> 00:02:52.440
It's where an agent can discover how to get started with your application.

s39
00:02:52.440 --> 00:03:00.560
It describes the mechanisms for getting access, for creating an account, um and being able to call an user API.

s40
00:03:00.560 --> 00:03:11.640
One thing that's important to remember with Off.md is that it describes access and operations, but your application, so in this case Waypoint, is the one that's enforcing off theory API.

s41
00:03:11.720 --> 00:03:18.160
So, in this Off.md file that I'm going to talk about for Waypoint and I'm going to demo, um there's two modes to it.

s42
00:03:18.160 --> 00:03:24.320
The first mode is allowing agents to um try my application in anonymous mode.

s43
00:03:24.320 --> 00:03:32.880
So, I want agents to be able to take limited to prove that my application has value without having to sign up and create an account.

s44
00:03:32.880 --> 00:03:37.920
But to the second question I posed earlier, I really want these agents to be acting on behalf of users.

s45
00:03:37.920 --> 00:03:45.480
So, I want to be able to expand the available actions um that I give to these agents when I can tie them back to a real user.

s46
00:03:45.480 --> 00:03:52.240
So, let's jump into the first mechanism of the Off.md Off.md protocol for how that can happen.

s47
00:03:52.240 --> 00:04:04.080
So, this flow goes from letting an agent try things out in an anonymous mode, and then a user coming in and claiming what that agent did and transferring the actions over to the agent account.

s48
00:04:04.360 --> 00:04:11.400
So, the first part of this protocol is an agent being able to take anonymous actions at my API.

s49
00:04:11.400 --> 00:04:24.720
So, in the end of this, the agent gets an access token, and then they get something that a claim token that eventually is going to let a user claim what the agent did and move it under that user's account.

s50
00:04:24.720 --> 00:04:31.960
So, the flow to this one, at some point when the user wants to take ownership of what their agent is doing, the agent can give them a link and

s51
00:04:31.960 --> 00:04:33.520
a one-time code.

s52
00:04:33.520 --> 00:04:36.320
The user comes over to my application, Waypoint.

s53
00:04:36.320 --> 00:04:39.320
They sign up, they sign in, they enter the code.

s54
00:04:39.320 --> 00:04:43.200
They've claimed what the agent has done, they've brought it under their account.

s55
00:04:43.200 --> 00:04:54.400
And finally, using OAuth, my authorization server can issue an access token on behalf of that user to the agent, and the agent's going to use that to call my API.

s56
00:04:54.800 --> 00:05:04.000
So, this lets the agent do things, but you might have noticed there is a link and a sign-up flow and entering a code and verifying my email.

s57
00:05:04.000 --> 00:05:09.720
And if you know anything about product-led growth, you know this is where you lose your user.

s58
00:05:09.720 --> 00:05:14.600
But, doesn't my agent already know who I am?

s59
00:05:14.600 --> 00:05:19.880
Like, when you guys use Cloud Code today, when you use Muse, you're signed in.

s60
00:05:19.880 --> 00:05:29.560
And that service has done something to verify that you are who you say they are to you say you are because they care about ensuring that you are probably a real person.

s61
00:05:29.560 --> 00:05:32.840
So, they verified your email or something to that extent.

s62
00:05:32.840 --> 00:05:45.720
So, if the agent knows who I am, why can't the agent provider just tell my application who I am and let me in without me having to take manual actions?

s63
00:05:46.240 --> 00:05:49.280
Well, that's also possible with AuthMode.

s64
00:05:49.280 --> 00:05:56.360
So, I'm going to break down this protocol and the standard called ID Jag that it's built on and I'll show you a little demo of how this works.

s65
00:05:56.360 --> 00:06:01.800
So, to break this down, this starts with your agent discovering how to authenticate with your API.

s66
00:06:01.800 --> 00:06:11.280
This is like standard OAuth parlance of finding out about your protected resource, your API, your MCP server, um and your OAuth authorization server.

s67
00:06:11.280 --> 00:06:12.960
And then things get a little fun.

s68
00:06:12.960 --> 00:06:21.720
So, your agent is going to come to you as the user and ask for consent to share your identity and your email with the application Waypoint.

s69
00:06:21.720 --> 00:06:25.480
If you consent, the agent goes to the agent provider.

s70
00:06:25.480 --> 00:06:31.960
So, your you know, Claude agent goes to Claude and says, "Hey, give me an ID Jag."

s71
00:06:31.960 --> 00:06:32.640
Put a pin in that.

s72
00:06:32.640 --> 00:06:34.720
I'll come back to what that is in a second.

s73
00:06:34.720 --> 00:06:41.600
So, the agent gets the ID Jag, sends the ID Jag over to your API's authorization server.

s74
00:06:41.600 --> 00:06:47.480
Your application, your authorization server is going to verify that that ID Jag is the real deal.

s75
00:06:47.480 --> 00:06:54.520
It's going to see some information on you inside of it and then your app is in control of deciding, am I going to create an account for this user?

s76
00:06:54.520 --> 00:06:56.160
Am I going to link it to an existing account?

s77
00:06:56.160 --> 00:07:00.120
What sort of access am I going to give back in the access token to this agent?

s78
00:07:00.120 --> 00:07:03.520
Your app is completely in control of that.

s79
00:07:03.520 --> 00:07:10.800
And so finally, with that access token, the agent can call your API on behalf of the user.

s80
00:07:11.200 --> 00:07:16.800
So, I said something, to use a Claude term, a little bit load-bearing um in this ID Jag.

s81
00:07:16.800 --> 00:07:20.200
Has anyone here heard of ID Jag?

s82
00:07:20.760 --> 00:07:23.360
I see one person and he works with me, so that's funny.

s83
00:07:23.360 --> 00:07:36.160
Um so, if you've been following what Claude is doing, what Anthropic is doing with enterprise managed authorizations in the MCP spec, what Okta is doing with cross-app access, that's using the same spec, the same protocol called ID Jag.

s84
00:07:36.160 --> 00:07:37.560
Let me break down what that is.

s85
00:07:37.560 --> 00:07:41.200
So, ID Jag, Identity Assertion Joined Authorization Grant.

s86
00:07:41.200 --> 00:07:44.400
This is a spec in the IETF.

s87
00:07:44.400 --> 00:07:49.920
Um effectively what an ID jag is is an assertion of a user's identity.

s88
00:07:49.920 --> 00:07:51.560
It's signed by an issuer.

s89
00:07:51.560 --> 00:07:54.880
So, in this flow, the agent provider is the issuer.

s90
00:07:54.880 --> 00:07:57.440
And it's sent for a specific audience.

s91
00:07:57.440 --> 00:08:01.840
So, again in this flow, the specific audience is my application.

s92
00:08:01.840 --> 00:08:04.880
And let's break down what's in this.

s93
00:08:04.880 --> 00:08:13.880
Um in the header, it tells you that this is of type ID jag, the algorithm used for signing, and the signing key.

s94
00:08:13.880 --> 00:08:16.400
In the payload, this is where things get interesting.

s95
00:08:16.400 --> 00:08:19.919
It tells you who issued it, which in this case is the agent provider.

s96
00:08:19.919 --> 00:08:23.480
It gives you information from the agent provider on the user.

s97
00:08:23.480 --> 00:08:28.600
So, the user's name, their email, whether the email was verified.

s98
00:08:30.160 --> 00:08:31.440
And then it tells you who it's for.

s99
00:08:31.440 --> 00:08:37.719
So, the audience is my application Waypoint, and a client ID is a client that's known to Waypoint.

s100
00:08:37.760 --> 00:08:40.719
And then finally, it tells you how long it's valid.

s101
00:08:40.719 --> 00:08:46.120
And most importantly, it's signed by the issuer, the agent provider's public key.

s102
00:08:46.120 --> 00:08:50.120
So, Waypoint, their authorization server, gets this ID jag.

s103
00:08:50.120 --> 00:08:54.040
They are going to verify um the signature.

s104
00:08:54.040 --> 00:08:56.920
And it's up to Waypoint what they want to trust in this.

s105
00:08:56.920 --> 00:09:08.760
It's completely up to Waypoint if they want to create an account for this user, what sort of access they want to what sort of scopes they want to give in the access token that they hand back to the agent on behalf of this user.

s106
00:09:09.120 --> 00:09:12.800
So, let's see what that actually looks like in action.

s107
00:09:14.440 --> 00:09:15.400
To give you a demo.

s108
00:09:15.400 --> 00:09:19.080
Um so, I am in an agent harness that I built here.

s109
00:09:19.080 --> 00:09:22.120
This agent harness is able to issue ID jags.

s110
00:09:22.120 --> 00:09:25.640
I am logged in to this agent harness as Sam Rivera.

s111
00:09:25.640 --> 00:09:28.160
I have an email, and this is a fresh user.

s112
00:09:28.160 --> 00:09:30.400
It Waypoint doesn't know anything about this user.

s113
00:09:30.400 --> 00:09:32.440
It's never seen this user before.

s114
00:09:32.440 --> 00:09:40.000
And I am going to say to my agent Harness, um let's see here.

s115
00:09:40.000 --> 00:09:43.040
Plan I need to put down my mic.

s116
00:09:54.560 --> 00:09:55.360
Okay.

s117
00:09:55.360 --> 00:10:08.680
So, I'm telling my agent Harness, I want you to plan my itinerary for a New York City and I want to be able to share with my co-workers and I want you to find a tool that's going to do the planning and make it easy to share, all that good stuff.

s118
00:10:08.680 --> 00:10:12.280
So, my agent Harness is going and looking at tools.

s119
00:10:12.280 --> 00:10:21.480
It's finding some other travel itinerary planning tools like Maple itinerary, um and it can't get through to there cuz it needs a browser sign up, TripIt needs an API key,

s120
00:10:21.480 --> 00:10:24.720
but Waygo allows for agents to sign up.

s121
00:10:24.720 --> 00:10:26.720
And so it asked me for consent.

s122
00:10:26.720 --> 00:10:30.000
Can I share your name and verified email with Waygo?

s123
00:10:30.000 --> 00:10:31.240
I'm going to say yes.

s124
00:10:31.240 --> 00:10:37.360
And then Waygo and Waygo's off and be filed also asked for some other consent for some more elevated permissions.

s125
00:10:37.360 --> 00:10:43.120
In this example, it's allowing Waygo to book dinner reservations with the agent.

s126
00:10:43.480 --> 00:10:46.360
So, I give it my consent.

s127
00:10:46.400 --> 00:10:52.080
And my agent Harness is going to talk to Waygo about this.

s128
00:10:52.080 --> 00:10:54.440
Let's see what it does.

s129
00:10:56.680 --> 00:10:59.000
Okay, it's verified my identity.

s130
00:10:59.000 --> 00:11:00.720
It created my Waygo account.

s131
00:11:00.720 --> 00:11:01.760
I didn't have to do anything.

s132
00:11:01.760 --> 00:11:04.720
Totally hands-off on my part.

s133
00:11:08.600 --> 00:11:14.960
Oh, it booked a trip, dinner reservation, and my itinerary is ready to share.

s134
00:11:14.960 --> 00:11:16.120
Okay, look at that.

s135
00:11:16.120 --> 00:11:17.280
Um there's my itinerary.

s136
00:11:17.280 --> 00:11:19.680
It booked me dinner at Quality Bistro, which is quite good.

s137
00:11:19.680 --> 00:11:22.440
If anyone has been there before, I would I would recommend it.

s138
00:11:22.440 --> 00:11:25.240
Um it's given me a link that I can share with my colleagues.

s139
00:11:25.240 --> 00:11:29.680
And all that was done without any interaction on my part.

s140
00:11:29.680 --> 00:11:31.920
So, that was pretty cool.

s141
00:11:31.920 --> 00:11:42.520
Um what I'll final thing I'll say on the ID Jack part is that um, what I feel really confident in in um, kind of this era of agents accessing other things

s142
00:11:42.520 --> 00:11:49.240
is that for us to be able to do this safely and securely and in a trusted manner, it's going to all need to be built on open standards.

s143
00:11:49.240 --> 00:11:56.480
Um, we are all going to need open standards for agents to talk to services to do things to pay to sign up for accounts.

s144
00:11:56.480 --> 00:12:00.880
Um, so I'm really excited about a lot of the standard standardization work that's been happening right now.

s145
00:12:00.880 --> 00:12:04.840
A lot of things are announced like just over the past week.

s146
00:12:04.840 --> 00:12:08.480
All right, moving on to the last part of this presentation.

s147
00:12:08.480 --> 00:12:12.360
How can I limit and revoke what an agent can do?

s148
00:12:12.360 --> 00:12:19.240
So, for me this is really important in Waypoint because I allow for corporate travel booking.

s149
00:12:19.240 --> 00:12:24.680
And I want to let corporate employees responsible for travel booking um, use agents.

s150
00:12:24.680 --> 00:12:26.480
I want to build agents for them.

s151
00:12:26.480 --> 00:12:30.160
But with this, there's real corporate money on the line.

s152
00:12:30.160 --> 00:12:31.600
I need to be able to audit.

s153
00:12:31.600 --> 00:12:37.040
I need to be able to make sure that money is not thrown around in ways that it shouldn't be.

s154
00:12:37.040 --> 00:12:38.720
So, introducing a persona here.

s155
00:12:38.720 --> 00:12:42.839
Jordan, Jordan's responsible for company funds at Jordan's company.

s156
00:12:42.839 --> 00:12:47.200
Um, Jordan's the only one that can approve budget and approve her rules.

s157
00:12:47.200 --> 00:12:51.560
Now, I've built a couple of agents into Waypoint for Jordan to use.

s158
00:12:51.560 --> 00:12:52.520
The first one's read only.

s159
00:12:52.520 --> 00:12:56.320
It's your classic chatbot that Jordan can ask, "Hey, what's wrong with the budget?"

s160
00:12:56.320 --> 00:12:57.520
or whatever.

s161
00:12:57.520 --> 00:13:01.160
Um, and it'll tell it, but it can't actually do anything.

s162
00:13:01.160 --> 00:13:03.640
But then I built Jordan a fund agent.

s163
00:13:03.640 --> 00:13:07.720
This fund agent is going to actually be able to move funds around between users.

s164
00:13:07.720 --> 00:13:14.440
Let's say that one user is flying from San Francisco and flights are really expensive compared to the user coming in via train from Boston.

s165
00:13:14.440 --> 00:13:23.120
And so Jordan wants to be able to move funds around, but as long as it's happening within the budget and the approved rules, Jordan doesn't need to manually do it himself.

s166
00:13:23.120 --> 00:13:25.000
He can use the agent.

s167
00:13:25.000 --> 00:13:28.920
But it's really important to Jordan that the funding agent can't go rogue.

s168
00:13:28.920 --> 00:13:30.200
It can't change the budget.

s169
00:13:30.200 --> 00:13:34.000
It can't change the approval rules to make things work.

s170
00:13:34.000 --> 00:13:36.840
So, how do I make this happen within my application?

s171
00:13:36.840 --> 00:13:40.280
So, Jordan invokes an agent.

s172
00:13:40.520 --> 00:13:45.440
And on the back end of my app, my app issues agent tokens.

s173
00:13:45.440 --> 00:13:49.880
So, it's really important to me that I don't just hand an agent Jordan's user token.

s174
00:13:49.880 --> 00:13:51.560
There's a few reasons for this.

s175
00:13:51.560 --> 00:13:54.480
One is auditing and attribution.

s176
00:13:54.480 --> 00:13:56.920
Two is revocation.

s177
00:13:56.920 --> 00:13:59.000
I want Jordan to be able to revoke the agent.

s178
00:13:59.000 --> 00:14:05.840
I want to be able I want my application to be able to revoke the agent without impacting Jordan's session and Jordan's access.

s179
00:14:05.840 --> 00:14:09.120
And then finally, I want to be able to limit what the agent can do.

s180
00:14:09.120 --> 00:14:11.360
I want to limit the scopes in the token.

s181
00:14:11.360 --> 00:14:19.120
So, the way that I've set these agents up is I've created a blueprint or like a ceiling of access for the read-only agent and for the fund agent.

s182
00:14:19.120 --> 00:14:32.640
And when Jordan invokes them, um the agent token that's issued for the agent, the scopes in it is the intersection of Jordan's user permissions and the scopes in the ceiling of the agent blueprint.

s183
00:14:32.839 --> 00:14:38.560
And so then finally, the agent can call my API with a scoped access uh sorry, a scoped agent token.

s184
00:14:38.560 --> 00:14:44.480
So, I'll just briefly show you what that is and then I'll end with some QR codes here so you guys can check out um all of this stuff.

s185
00:14:44.480 --> 00:14:46.800
So, I am in Waypoint as Jordan.

s186
00:14:46.800 --> 00:14:49.480
I am looking at my team travel here.

s187
00:14:49.480 --> 00:14:50.640
I have a team budget.

s188
00:14:50.640 --> 00:14:53.320
There's looks like $70 available.

s189
00:14:53.320 --> 00:14:56.440
Start up my read-only agent.

s190
00:14:58.720 --> 00:14:59.040
All right.

s191
00:14:59.040 --> 00:15:01.839
So, my read-only agent is started.

s192
00:15:01.839 --> 00:15:08.200
If I take a look here at the session details, what we were talking about earlier with Jordan's user token, it's here on the left.

s193
00:15:08.200 --> 00:15:10.360
I can see that Jordan has a bunch of permissions.

s194
00:15:10.360 --> 00:15:12.800
The agent blueprint for the read-only agent is in the middle.

s195
00:15:12.800 --> 00:15:14.400
It only has one permission.

s196
00:15:14.400 --> 00:15:18.160
Um it has some session session information.

s197
00:15:18.160 --> 00:15:22.160
And then the agent token, it's issued by my application.

s198
00:15:22.160 --> 00:15:30.640
The subject of the agent token is the agent ID, so it's attributable to the actual agent.

s199
00:15:30.640 --> 00:15:35.080
It's acting on behalf of Jordan the user, so I have that information in there as well.

s200
00:15:35.080 --> 00:15:40.520
And the permissions are the intersection between Jordan's user token and the agent blueprint.

s201
00:15:40.520 --> 00:15:48.200
Um so I'm in the interest of time, I'm going to skip the read-only agent and just move over to the fund agent cuz it's a little more interesting.

s202
00:15:48.200 --> 00:15:58.280
So starting up this fund agent, I'm going to ask it to fix Alex's budget.

s203
00:16:08.960 --> 00:16:13.440
Okay, so Alex has a $250 shortfall.

s204
00:16:13.440 --> 00:16:15.200
Um do you want me to rebalance funds?

s205
00:16:15.200 --> 00:16:17.960
Yes, rebalance.

s206
00:16:18.800 --> 00:16:21.560
Hard to do while holding a mic.

s207
00:16:26.800 --> 00:16:36.200
All righty, so the funding agent was able to move $70 over to Alex, but they can't fix all of it because there's no more budget available left.

s208
00:16:36.200 --> 00:16:41.560
And the funding agent doesn't have the ability to change the budget, but I as Jordan do.

s209
00:16:41.560 --> 00:16:46.640
So my user is still able with their user token to change the budget.

s210
00:16:46.640 --> 00:16:50.760
Let's change it to 2,000.

s211
00:16:53.160 --> 00:16:55.080
So as the user I was able to do that.

s212
00:16:55.080 --> 00:16:56.600
The agent couldn't.

s213
00:16:56.600 --> 00:17:04.440
Um and then so I'm going to tell it I increased the Oop.

s214
00:17:04.600 --> 00:17:06.600
budget.

s215
00:17:16.800 --> 00:17:17.680
Okay, there we go.

s216
00:17:17.680 --> 00:17:20.680
And so the agent was able to fix Alex's budget.

s217
00:17:20.680 --> 00:17:35.360
So really what we showed here is that how you can build agents into your application um putting a ceiling on their permissions and they operate using an agent token with that scoped access instead of taking your user's token or an API key.

s218
00:17:35.360 --> 00:17:36.440
So you can audit it.

s219
00:17:36.440 --> 00:17:43.080
It's um yeah, you can audit it, you can revoke it and you can make sure that you limit the permissions of that agent.

s220
00:17:43.960 --> 00:17:45.000
All righty.

s221
00:17:45.000 --> 00:17:47.120
Coming back in here, I just showed that demo.

s222
00:17:47.120 --> 00:17:57.840
Um so three takeaways here, um how you can let agents into your application with an Auth MD file, how you can connect them to a customer using the user claim flow in Auth MD

s223
00:17:57.840 --> 00:18:05.320
or the ID Jag identity assertion, and then finally how you can limit actions by enforcing permissions and revocation.

s224
00:18:05.320 --> 00:18:07.040
I'll end with some QR codes.

s225
00:18:07.040 --> 00:18:10.560
Um the one on the left for Auth MD, like I said, it's an open standard.

s226
00:18:10.560 --> 00:18:20.560
Um and the one on the right is WorkOS agent auth, which is how I was able to um build agents into my application with limited permissions using an agent token.

s227
00:18:20.560 --> 00:18:22.920
And I will end my talk there.

s228
00:18:22.920 --> 00:18:23.800
Thank you all so much.

s229
00:18:23.800 --> 00:18:27.920
And if anyone has any questions, I'm happy to talk about it after.
