AI Engineer World's Fair 2026

FinOps for AI Agents: Who Spent All the Tokens? — Tisha Chawla & Susheem Koul, Microsoft

Read the talk

FinOps for AI Agents: Who Spent All the Tokens?

Tisha Chawla and Susheem Koul explain how TokenOps attributes spending to agent runs, applies shared budgets, and changes execution before a hard cap has to stop the work.

From a talk by Tisha Chawla and Susheem Koul

At a glance

Ideas worth remembering

  • Attribute model consumption to agent runs and usage dimensions so policies can act on the workflow responsible for spending.

  • TokenOps uses a boundary annotation for observations and action delivery, while a governor applies only developer-allowed changes.

  • Preview mode evaluates policies without enforcing them, allowing thresholds and guardrails to be adjusted before they change live execution.

  • A hard cap stops work; the cost guard uses consumed budget and consumption velocity to request shorter future outputs before predicted exhaustion.

  • The companion article reports 78.9% lower mean cost per completed run and within-cap success rising from 18/27 to 26/27 versus no governance. The recording instead names throttling as the completion baseline, so the comparison remains unresolved.

  • The proposed learning module would use ledger records to discover missed failure modes, generate policies, and refine existing parameters.

From token spending to useful work

An AI bill arrives, and you cannot trace it back to the agent workflow that produced it. That is the opening problem for Tisha Chawla and Susheem Koul’s FinOps talk. Exploration can justify spending heavily—Chawla makes room for the enthusiasm around becoming a token millionaire—but eventually the question changes: what useful work did those tokens buy?

Software’s controls have usually followed its billing model. SaaS products use seat limits, usage caps, and tier policies. Pay-as-you-go cloud infrastructure adds provisioning and autoscaling policies. Agent workflows create spending through code that repeatedly calls a model. The proposed missing control sits close enough to that execution to understand why another call is happening and whether the workflow should change.

A gateway can impose a hard cap or route a request to a cheaper model. A runaway agent loop presents a different problem: individually acceptable calls can accumulate into an expensive, unproductive run. Controlling that behavior requires a view of the work unfolding across calls, rather than waiting for the final bill.

0:130:43
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:13 · section reference included

Attribute each call, then control the run

Cost begins at the model-call boundary, so that is where accounting must connect consumption to an agent and a run. An aggregate total can tell you that spending rose; attribution identifies the execution responsible. That identification makes a targeted policy possible: change the costly part of the workflow instead of treating every request alike.

The run supplies the context needed to choose an intervention. Repeated agent–tool exchanges, growing context, and the spawning of multiple sub-agents can all increase cumulative consumption. Chawla’s design calls for a shared budget across attributed work and enforcement in the call path. If context grows excessively, for example, the workflow should be able to compact it in place; a budget halt becomes the last resort after useful corrective policies have been tried.

This is the motivation for TokenOps, a run-aware token-governance system. The talk contrasts its execution-level interventions with request-level caps and routing in gateways such as LiteLLM, Portkey, and Cloudflare. The distinction concerns the control being proposed: a gateway can change or reject a model request, while run-aware governance can also act on the loop, retrieval output, or context that produces future requests.

The architecture separates three jobs:

  • Instrumentation: Capture telemetry, including OpenTelemetry data, and enrich it with attribution so consumption has an identifiable cause.
  • Accounting: Accumulate the attributed activity in a ledger rather than leaving each call as an isolated event.
  • Enforcement: Apply policies that steer execution, with halting available when the budget is exhausted.

The control plane is deliberately out of band, but its effects still enter the execution path. Those two choices fit together: policy and accounting live separately from the agent’s application logic, while an instrumented boundary carries observations upward and authorized actions back down. Keeping the plane separate does not make enforcement passive.

3:474:17
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

3:47 · section reference included

A boundary reports activity; a governor applies allowed changes

Koul develops the implementation as three connected layers: the existing agent runtime, a bridge, and the control plane. The bridge associates runs with developer-supplied usage dimensions. Its central mechanism is a boundary annotation applied to existing methods, allowing the integration to work around method inputs and outputs without rewriting the workflow around a new agent framework.

The annotation has two directions of traffic. It records method inputs and outputs as ledger entries, attaching the agent run ID and other attributes. It also receives actions from the control plane. Observability supplies the information for a decision; the return channel lets that decision change the ongoing run.

Consider the talk’s hypothetical retrieval-augmented generation example. A retrieval tool returns twenty chunks per call, sorted by relevance. Suppose the model only uses the first five because the remaining chunks are irrelevant. The extra material still contributes to the budget problem. The control plane observes the situation and proposes limiting the tool output to five chunks.

The proposal travels through the boundary to a governor. The governor knows which actions the developer has allowed and how to apply them. If output reduction is permitted, the tool’s returned context changes from twenty chunks to five, retaining the relevant leading chunks in this example. The intended saving comes from reducing the material passed onward, rather than ending the retrieval workflow. This depends on the example’s assumption that the omitted chunks are unused; the talk does not demonstrate a general method for establishing that relevance.

How does a cost observation become a change to retrieval without giving the control plane unrestricted access to the agent? The diagram follows the twenty-chunk example through observation, proposal, and developer-authorized application. The governor is the point where a requested action must fit the agent’s allowed capabilities.

For model integrations exposed as objects rather than methods, a completion-wrapper helper applies the same boundary idea. It is an integration convenience: capture the operation and provide an action channel without requiring every provider interface to have the same shape.

How it fits togetherFrom twenty retrieved chunks to five

Returns twenty relevance-sorted chunks; only the first five are useful in the hypothetical example.

Observations travel to the control plane; its proposed reduction returns through the boundary and is applied by the governor only within developer-allowed actions.

10:5511:25
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

10:49 · section reference included

Choose who shares a budget and what happens near its limit

Attribution dimensions become useful when the control plane groups them into segments. A preview agent shared with a conference audience can emit a cohort tag; a segment selects the users carrying that tag, and a budget applies to their combined usage. This supports both fine-grained limits on individual runs and coarser limits across a group. The grouping follows the dimensions the application emits.

The ledger gathers a run’s traces in one place. A budget adds a static threshold over a time window for a segment or run. A policy then connects that budget and its scope to an action. These are separate decisions: whose consumption counts together, how much they may spend during a period, and how execution should respond.

Actions have two broad behaviors:

  • Halt: Stop the agent when it exceeds a budget. This is the circuit breaker that limits further work by terminating the run.
  • Steer: Change the agent or one of its components so the run has a chance to finish within the allotted budget. Retrieval-output reduction is one example; changing instructions is another.

Integration therefore involves more than attaching telemetry. Existing methods receive the boundary annotation, and a governor instance receives configuration declaring allowed actions. Koul describes hosting the control plane in the application owner’s own tenant. That hosting choice keeps the described plane under the owner’s control; it does not by itself establish that captured method data cannot leak.

The demonstration uses a two-agent research workflow. A research agent receives a question and can repeatedly use a web-search tool. Once it considers the findings sufficient, it hands them to a summarizer that creates a research report. This gives governance something meaningful to preserve: completing the report, despite a research phase that can keep making calls.

11:2513:54
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

13:54 · section reference included

Preview the policies, then compare halting with steering

The first scenario runs TokenOps in preview mode. Policies evaluate normally, but their associated actions cannot execute. The research workflow completes, and the dashboard displays policy activity—including the cost budget and cost guard—while governance remains off. Preview mode separates learning what the policies would do from allowing them to change production behavior.

That separation creates a practical introduction sequence: install the instrumentation, observe policy decisions, adjust guardrails and thresholds, then enable enforcement. The second scenario turns governance on. The dashboard reports that the pre-call cost cap has been exceeded, and the agent is killed immediately. The cap works as a circuit breaker, but the work stops with it.

The steering scenario uses another prompt with a slightly higher budget that Koul describes as still insufficient for the unmodified run. The cost guard considers two signals: how much of the budget has already been consumed and the velocity of token consumption. If those signals predict exhaustion before the run ends, the guard injects a system instruction asking for more succinct or summarized model outputs.

The causal difference is when and how the response acts. The hard cap stops execution at its threshold. The cost guard tries to change future generation before exhaustion, reducing the verbosity of subsequent outputs while leaving the workflow running. The talk explains the intervention but does not specify the prediction formula or establish the final report’s quality in this scenario; instruction injection is an attempt to influence consumption, rather than a guaranteed spending limit.

Where does preview mode differ from enforcement, and where does steering differ from a stop? The diagram makes the three paths visible. Preview ends with a recorded decision; enforcement can deliver either a halt or an instruction intended to reduce future output.

How it fits togetherThree governance paths

Budget and cost-guard policies run against the workflow.

Preview records policy activity without applying actions. With enforcement on, a cap can halt execution, while a predictive cost guard can steer subsequent model output.

16:2416:54
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

16:24 · section reference included

Measure completion alongside spend, then learn from missed failures

The benchmark extends beyond the small research demonstration to Browser Use and MetaGPT. Koul reports repeated runs across stress tests and simpler and harder scenarios. In the recording, enabling the full TokenOps policy suite lowers average spending by almost 78%, without an explicit spend baseline. He then compares completion with simple throttling, reporting an increase from 67% to roughly 96%.

The authors’ Microsoft companion article gives a more specific account with a different comparison: both results are measured against no governance. It reports 27 scored trials across Browser Use and MetaGPT scenarios, a 78.9% reduction in mean cost per completed run—from $0.068 to $0.014—and within-cap success rising from 18/27 to 26/27, rounded to 67% and 96%. The recording’s throttling comparison and the article’s no-governance comparison conflict; these figures cannot establish a measured advantage over throttling without resolving that baseline. The article’s completion measure means finishing under the cap, and cost governance does not determine whether the resulting answer is correct.

Completion is nevertheless the consequential companion metric. A control can lower consumption simply by killing runs. Steering instead tries to retain the useful result while spending less. Evaluating those controls together asks whether the budget buys completed work, rather than rewarding a low bill in isolation.

The benchmark uses a suite aimed at several failure modes:

  • Spend management: Budget policies and the cost guard respond to consumption and its trajectory.
  • Context management: Context compaction and tool-output reduction reduce material carried through the workflow.
  • Loop and progress detection: Policies look for repeated activity and inadequate progress, extending governance beyond the size of an individual request.

The available action vocabulary includes allowing, mutating, or injecting for steering, and killing for halting. Different policies can therefore share an action mechanism while detecting different reasons for waste.

The ending turns the ledger into a proposed learning input. A self-learning module would examine the continuously updated records to find failure modes that current policies still miss. It could then generate new policies for remaining runaway costs or refine the parameters of existing policies. This is the envisioned next stage, rather than a demonstrated capability of the system presented.

That proposal closes the loop between accounting and control: record what happened, identify spending that escaped intervention, and change the rules used on future runs. The closing invitation points to a public wiki. That historical wiki front page is now archived and directs readers to the main TokenOps repository, where the SDK, control plane, dashboard, documentation, and runnable examples live. The useful starting decision remains which actions your agent may accept while preserving the work it exists to finish.

18:2418:54
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

18:24 · section reference included

Resources

From the talk

  • The main project contains the SDK, control plane, Admin/Dashboard, current documentation, and runnable examples for exploring run-aware governance.

  • The historical resource corresponding to the closing wiki invitation. Its standalone front page is archived and directs readers to the main TokenOps project for documentation and examples.

Read the complete timestamped transcript
  1. 0:01

    [music]

  2. 0:13

    Okay. Um, good morning everyone. So, um,

  3. 0:16

    I'm Tisha and I have Sushim with me as

  4. 0:18

    my co-presenter. All right. So, we'll be

  5. 0:21

    talking about the most expensive

  6. 0:23

    question in AI today. I think a lot of

  7. 0:27

    you would have come across the scenario

  8. 0:29

    that um you know when you opened an AI

  9. 0:32

    bill like through your agent workflows

  10. 0:34

    um you couldn't actually trace back

  11. 0:37

    where that bill was actually coming from

  12. 0:39

    right and um and I don't think that's a

  13. 0:42

    problem right now because right now the

  14. 0:45

    industry is valuing you know um token

  15. 0:48

    maxing that is like spending the most

  16. 0:51

    amount of tokens for exploration for all

  17. 0:54

    of those purposes

  18. 0:55

    And um people are proud to call

  19. 0:57

    themselves token billionaires and um I

  20. 0:59

    think that's all right but this talk is

  21. 1:02

    you know the shift from token maxing to

  22. 1:05

    value maxing you know how do we get

  23. 1:08

    there and um we'll talk about it from

  24. 1:12

    this question um who spent all the

  25. 1:15

    tokens and um if anyone spent all the

  26. 1:19

    tokens there has to be value associated

  27. 1:21

    with this right and that is um the talk

  28. 1:26

    about.

  29. 1:30

    All right. Now in order to minimize the

  30. 1:33

    gap you know from token maxing to value

  31. 1:36

    maxing we'll kind of see we'll observe

  32. 1:39

    the patterns which the like the existing

  33. 1:43

    um u like the past software evolution

  34. 1:46

    eras had like for instance when we talk

  35. 1:49

    about the SAS era the interface was UI

  36. 1:53

    and the control was in the form of usage

  37. 1:56

    caps right like or the seat limits or

  38. 1:58

    tier based policies

  39. 2:00

    Now when we moved on to the cloud era,

  40. 2:03

    the control surface again changed. The

  41. 2:06

    model became pay as you go and the

  42. 2:08

    control moved like in the form of

  43. 2:10

    autoprovisioning and you know

  44. 2:12

    autoscaling policies.

  45. 2:14

    Now we are in the agentic era right and

  46. 2:18

    um now how the cost is calculated here

  47. 2:22

    is in the form of model calls right like

  48. 2:26

    u how like the code calls your model but

  49. 2:31

    what we've observed is that there isn't

  50. 2:34

    a proper control plane in place for that

  51. 2:37

    like we do have control plane in place

  52. 2:40

    for you in place as model gateways where

  53. 2:43

    they're um are hard caps or there is

  54. 2:46

    model routing to downgrade the model but

  55. 2:49

    the part like where the code you know

  56. 2:53

    calls the model that um is what we'll be

  57. 2:57

    talking about uh today

  58. 3:00

    and um we also you know see um like in

  59. 3:05

    the last year we've seen a lot of

  60. 3:07

    unbounded consumption happening like um

  61. 3:12

    if you've read the news. There was news

  62. 3:14

    about the like the uh AI budget for Uber

  63. 3:19

    getting exhausted within 4 months and um

  64. 3:21

    there were companies who like who ran

  65. 3:24

    into you know

  66. 3:26

    like hundreds of millions of dollars

  67. 3:28

    within just months or days and like

  68. 3:30

    there were a lot of um like other news

  69. 3:32

    in place as well where like these

  70. 3:35

    runaway loops um led to a very like

  71. 3:39

    massive increase in the cost and there

  72. 3:42

    wasn't proper mechanisms to control it.

  73. 3:47

    Um so when we see all of this the first

  74. 3:50

    thing that comes to our mind is is there

  75. 3:52

    a tool or is there a product to save us?

  76. 3:54

    But uh we'll instead talk about the

  77. 3:58

    first principles of how you know we can

  78. 4:02

    design a system which is actually true

  79. 4:05

    enough to solve the problem from the

  80. 4:07

    very root. So for that let's um like

  81. 4:10

    dive onto the principles. First of all,

  82. 4:13

    let's talk about token being the unit of

  83. 4:15

    cost. Right? We are charged in terms of

  84. 4:18

    token. So the now we have to see value

  85. 4:23

    also in terms of token. Right? Next um

  86. 4:27

    we all know that cost is created at the

  87. 4:30

    LLM like the model call boundary. Um so

  88. 4:33

    that is what we'll have to track and if

  89. 4:37

    we don't have proper attribution like if

  90. 4:39

    we don't know what agent want run made

  91. 4:42

    that particular call we we can't you

  92. 4:45

    know control it right we we just know

  93. 4:48

    the like the broad uh picture of what

  94. 4:51

    went wrong but we don't we can't you

  95. 4:53

    know trace it back or narrow it down. So

  96. 4:55

    that is why attribution is a very

  97. 4:57

    important element to have and um like

  98. 5:01

    once you know which particular run or

  99. 5:04

    which particular agent is actually you

  100. 5:07

    know attributing to the cost you should

  101. 5:09

    have proper policies in place to

  102. 5:11

    actually stop it. Like um let's take

  103. 5:14

    example that um if you have a you know

  104. 5:17

    um a loop which is you know running um

  105. 5:22

    very excessively and which is not

  106. 5:24

    required or you know if your context is

  107. 5:27

    growing very out of range. you should

  108. 5:30

    have in place policies which can um like

  109. 5:33

    solve that particular thing there and

  110. 5:35

    there instead of halting that and if um

  111. 5:38

    and as the last resort only a like a

  112. 5:41

    halting or a should happen from a budget

  113. 5:44

    cap. So these are the first principles.

  114. 5:46

    Now let's see how we can you know define

  115. 5:50

    an ideal uh platform on top of that from

  116. 5:53

    these principles which we talked about.

  117. 5:56

    All right. Uh so one thing which is very

  118. 5:58

    important that which matters here is

  119. 6:00

    that u when we talk about um like the um

  120. 6:05

    existing frameworks for token ops or for

  121. 6:07

    token management most of them are at the

  122. 6:11

    um like u basically monitor the model uh

  123. 6:15

    request. they like they are like model

  124. 6:19

    gateways which will u you know u

  125. 6:22

    basically um do like model routing or

  126. 6:26

    hard budget capping. But what we need

  127. 6:28

    right now is something which you know um

  128. 6:33

    like monitors you at the run instead.

  129. 6:35

    Like um if you see we need something uh

  130. 6:39

    which can control the loop between like

  131. 6:43

    the agent call between the tool um and

  132. 6:47

    the agent. something you know which can

  133. 6:50

    um uh see or control the the spawning of

  134. 6:54

    multiple sub aents happening from a one

  135. 6:56

    main agent or um like something which

  136. 7:00

    can control the growing of context. So

  137. 7:02

    like that is the need of the right and

  138. 7:05

    that is what we need. So for all of this

  139. 7:08

    um we like uh kind of are proposing a

  140. 7:12

    platform which first of all um has a

  141. 7:15

    cumulative budget across like the uh

  142. 7:19

    like the attribution runs which happened

  143. 7:24

    and then where enforcement actually

  144. 7:26

    happens in call path rather than um you

  145. 7:30

    know a separate thing like for example

  146. 7:33

    if something goes wrong if your like if

  147. 7:35

    your context is just growing heavily.

  148. 7:38

    Then like in place compaction should

  149. 7:43

    happen or like in place caching or

  150. 7:45

    something like that should happen. And

  151. 7:47

    um after that if like after basically

  152. 7:50

    exhausting the list of all in place

  153. 7:53

    policies only like uh the budget cap

  154. 7:57

    should happen at the very last. Um so

  155. 7:59

    that is something which we are

  156. 8:01

    proposing. But um if you look at the

  157. 8:04

    landscape today, if you see the uh like

  158. 8:07

    the uh tools like um this light LLM,

  159. 8:10

    port key, cloudflare, all of those they

  160. 8:12

    happen at again the request level right

  161. 8:16

    um like if you see like halting is

  162. 8:20

    there, routing is there for some of

  163. 8:22

    those but all of this again is at a

  164. 8:26

    request and you can't control the cost

  165. 8:28

    at the uh request layer uh at the model

  166. 8:31

    layer, Right.

  167. 8:34

    So this is the missing piece which is

  168. 8:36

    you know the

  169. 8:38

    u basically navigating it at the um you

  170. 8:42

    know the model the agent run layer.

  171. 8:47

    So for that we have token ops which is

  172. 8:50

    uh you know a runaway token governance

  173. 8:52

    for AI agents and u this is the uh

  174. 8:57

    architecture for that. So first of all

  175. 9:00

    one thing I would want to highlight is

  176. 9:02

    the like the intentional design decision

  177. 9:04

    we took here was an out ofbound plane.

  178. 9:07

    So it doesn't interfere with your code

  179. 9:10

    at all. Um so if you see here that out

  180. 9:13

    of the bandound plane has three modules

  181. 9:15

    which I'll be talking about. The first

  182. 9:17

    one being instrumentation. It is a

  183. 9:19

    common observability layer where you

  184. 9:21

    know you'll u like uh have u like the

  185. 9:25

    basic telemetry the open telemetry the

  186. 9:27

    cost in microns and um like the um like

  187. 9:32

    enrichment layer and basically um the uh

  188. 9:37

    attribution like what caused that uh

  189. 9:40

    like particular run

  190. 9:43

    and then there is um obviously

  191. 9:45

    accounting where

  192. 9:48

    you'll basically accumulate it in a kind

  193. 9:51

    of a ledger like the total runs which

  194. 9:54

    are happening. And finally we have this

  195. 9:56

    enforced layer which has uh two main

  196. 10:00

    purposes. one is steering it um through

  197. 10:04

    the policies which we've defined which I

  198. 10:06

    think will cover later and um then we

  199. 10:10

    have halt in place as the you know final

  200. 10:13

    um like u final thing if um you know

  201. 10:16

    your budget is getting exhausted

  202. 10:19

    so yeah that is there now when we again

  203. 10:22

    look at the landscape this kind of will

  204. 10:26

    solve a lot of problems

  205. 10:29

    um which kind of happened uh when we

  206. 10:32

    like look at the previous um tools or

  207. 10:35

    products there because uh it is at

  208. 10:38

    happening at run and it is you know uh

  209. 10:41

    helping you solve the problem from the

  210. 10:44

    very root by steering it in place.

  211. 10:48

    All right. So uh with this I would like

  212. 10:51

    to hand it over to Sashim for the demo.

  213. 10:53

    >> Yeah.

  214. 10:57

    >> Oh yeah. Now I think I should be able to

  215. 10:59

    everyone in the back can hear me. All

  216. 11:00

    right, perfect. So yeah, we have

  217. 11:03

    established the principles behind token

  218. 11:05

    ops till now. Right. Now let's shift

  219. 11:08

    gears, talk about the design part of it

  220. 11:09

    and uh maybe get into the code and the

  221. 11:12

    eventual demo. Right? So what I have

  222. 11:14

    behind me on the screen is the like

  223. 11:16

    bird's eye view of what token ops looks

  224. 11:19

    like today. It's it's three layers.

  225. 11:21

    We'll go left to right and top to

  226. 11:23

    bottom. So on the left most you have

  227. 11:24

    your own agent runtime which you're

  228. 11:26

    trying to instrument and kind of manage

  229. 11:27

    the cost for right the middle layer is

  230. 11:30

    what we're calling the bridge that

  231. 11:32

    basically shuffles data between your

  232. 11:33

    agent and the control plane and the

  233. 11:36

    control plane is where the mind of the

  234. 11:38

    system lies right so let's talk about

  235. 11:40

    the bridge layer very briefly if we uh

  236. 11:42

    go from top to bottom you have the

  237. 11:43

    attribution on top so what we're trying

  238. 11:45

    to do here is every agent run that you

  239. 11:48

    do it's attributed to some user

  240. 11:50

    dimensions so the idea is everything

  241. 11:53

    that you do every run of the agent is

  242. 11:55

    accounted to some usability or some

  243. 11:57

    usage. This comes in handy later. We'll

  244. 11:59

    talk about it. Uh the second part which

  245. 12:01

    is the boundary annotation that you see

  246. 12:03

    this is pretty much the heart and soul

  247. 12:04

    of this middle layer. So the idea behind

  248. 12:07

    the boundary annotation is that you take

  249. 12:08

    any method. It doesn't matter what

  250. 12:10

    framework you're using. You might be

  251. 12:11

    using uh let's say lang chain lang

  252. 12:13

    whatever. If you have a method you can

  253. 12:15

    annotate it with boundary. What this

  254. 12:17

    annotation is going to do is it's going

  255. 12:19

    to do two things. First it's going to

  256. 12:20

    track the input and the output and it's

  257. 12:22

    going to flight that up to the control

  258. 12:24

    layer and record it there as a ledger

  259. 12:26

    entry. Now this will be annotated with

  260. 12:28

    the further agent run ID and the other

  261. 12:30

    attributes and so on. The second thing

  262. 12:32

    the boundary annotation does is it acts

  263. 12:34

    as a channel through which the control

  264. 12:35

    plane can push actions down to the

  265. 12:37

    agent. This is where the entire

  266. 12:39

    intelligence lies. So we do not have a

  267. 12:41

    single directional highway. We want the

  268. 12:43

    control plane to be able to tweak the

  269. 12:45

    behavior of the agent on the fly to

  270. 12:48

    ensure that we are able to squeeze in

  271. 12:49

    more runs inside our budget cap. Right

  272. 12:52

    now let's say the control plane pushes

  273. 12:54

    down an action. Let's take a small

  274. 12:55

    example. Let's say you have a rag

  275. 12:56

    retrieval tool which is generating like

  276. 12:58

    20 chunks every retrieval for every call

  277. 13:01

    and that's eating up eating up your

  278. 13:02

    budget. And let's say the LLM is not

  279. 13:04

    even using the chunks that are after

  280. 13:06

    five because they are just not relevant,

  281. 13:07

    right? They're sorted by relevance. So

  282. 13:09

    let's say the control plane observes

  283. 13:10

    this and it wants to limit the output to

  284. 13:13

    just five chunks. So it can push down an

  285. 13:15

    action but that action has to be

  286. 13:17

    received by boundary and then has to be

  287. 13:19

    executed by something. That is where the

  288. 13:21

    third node, the governor node comes in.

  289. 13:22

    The governor knows what actions are

  290. 13:26

    allowed on your agent by you as a

  291. 13:28

    developer and it receives those actions

  292. 13:30

    from the control plane and knows how to

  293. 13:31

    apply it in a non-destructive way. So

  294. 13:34

    that's the first three. The fourth one

  295. 13:35

    wrap uh the wrap complete is essentially

  296. 13:37

    just a helper method. So as we know most

  297. 13:40

    of the agent providers or the model

  298. 13:41

    providers they provide objects rather

  299. 13:43

    than methods for their LMS right. So

  300. 13:45

    wrap complete is just another way of

  301. 13:46

    applying boundary on objects rather than

  302. 13:48

    methods. Let's shift right to the

  303. 13:51

    control plane. On the control plane the

  304. 13:52

    first layer is the segment. Now this is

  305. 13:55

    where the attribution that we talked

  306. 13:56

    about earlier comes into picture. So any

  307. 13:59

    dimensions that you float from the

  308. 14:01

    attribution layer. Let's say you have a

  309. 14:03

    preview agent that you share with

  310. 14:04

    everyone in this room and your agent is

  311. 14:06

    floating a dimension saying that cohort

  312. 14:09

    is AIE 2026 right so you can create a

  313. 14:12

    segment which is a cohort of users which

  314. 14:15

    is based on this tag like dimension

  315. 14:16

    being AI 2026 right and you can apply

  316. 14:19

    your budgets at this cohort level so you

  317. 14:21

    don't necessarily have to restrict

  318. 14:23

    everything at an agent level or a run

  319. 14:24

    level you can do you can do rollups you

  320. 14:27

    can do fine grain or coarse grain

  321. 14:28

    control right so that's the segmentation

  322. 14:31

    part of Ledger as I mentioned is just

  323. 14:33

    one agent run all the traces in one

  324. 14:35

    place. Then you have budgets. Budgets

  325. 14:37

    are basically just the static thresholds

  326. 14:39

    that work across a time window against a

  327. 14:41

    particular segment or an agent run. And

  328. 14:43

    then you have actions. So on the actions

  329. 14:45

    part we have broadly two flavors. First

  330. 14:48

    is the halt type actions which basically

  331. 14:49

    just kill your agent if it exceeds a

  332. 14:51

    budget. The second part where we are

  333. 14:53

    adding value is the steer type actions.

  334. 14:56

    So here we do not kill the agent.

  335. 14:58

    Instead we try to steer the behavior of

  336. 15:00

    the agent or the components of the agent

  337. 15:02

    to try and fit that particular run

  338. 15:05

    within the alerted budget. Right? And

  339. 15:07

    then the policies layer is where it all

  340. 15:09

    comes together. You basically uh group

  341. 15:11

    the budgets the actions and then set

  342. 15:13

    your policies against certain segments

  343. 15:15

    or agent runs and that is where it

  344. 15:16

    executes. Right? So moving on uh what

  345. 15:20

    changes in your code that is the

  346. 15:21

    boundary annotation that we just talked

  347. 15:22

    about. As Disha mentioned earlier this

  348. 15:24

    is all out of band. So you do not have

  349. 15:26

    to change your code. You just have to

  350. 15:27

    apply the annotation on the methods that

  351. 15:29

    you have. This boundary annotation will

  352. 15:31

    take care of floating all the

  353. 15:32

    information up to the control plane. And

  354. 15:34

    uh the control plane lies in your own

  355. 15:35

    tenant. So you do not need to worry

  356. 15:37

    about any data leaks or anything. Then

  357. 15:39

    if I talk about the governor, so for the

  358. 15:42

    governor, you just have to create an

  359. 15:43

    instance. You just have to pass it your

  360. 15:44

    own configs. These configs will

  361. 15:46

    basically declare what sort of actions

  362. 15:48

    are allowed for those agents, right? so

  363. 15:50

    that your control plane cannot just

  364. 15:53

    willingly do any random things on your

  365. 15:55

    on your agents. So before we move on to

  366. 15:58

    the demo, I'll just briefly touch upon

  367. 16:00

    the uh test that we're going to use

  368. 16:01

    today. So it's a simple two agent

  369. 16:03

    workflow. We have a research agent which

  370. 16:06

    has access to a search tool. Uh you give

  371. 16:08

    it a question. It's allowed to look up

  372. 16:10

    on the web as many times as it wants.

  373. 16:12

    And once it knows that it has all the

  374. 16:14

    data, it passes the findings on to the

  375. 16:16

    second agent which is a summarizer which

  376. 16:17

    creates creates a research report.

  377. 16:19

    Right? So with that out of the way,

  378. 16:21

    let's just quickly walk over to the

  379. 16:23

    demo. So for the demo, we have three

  380. 16:25

    different scenarios that we're going to

  381. 16:26

    talk about. For the first one, we're

  382. 16:28

    going to run the token ops in what we

  383. 16:30

    call preview mode. So in preview mode,

  384. 16:32

    what happens is that all the policies

  385. 16:34

    run as is, but the enforcement doesn't

  386. 16:36

    happen. So if you see we ran a

  387. 16:39

    particular run over here which completed

  388. 16:42

    but we did not see any sort of failures

  389. 16:45

    there. The policies executed but the

  390. 16:48

    actions that were associated with those

  391. 16:50

    policies were not allowed to be

  392. 16:51

    executed. So we're just going to load

  393. 16:53

    the dashboard screen here.

  394. 16:57

    Yeah. So this is the governance output.

  395. 17:00

    Governance is off. The run completed.

  396. 17:02

    But in the dashboard you can see the

  397. 17:03

    policies have executed. So you can see

  398. 17:04

    the cost budget, the cost guard and so

  399. 17:06

    on. Right? So this was the first

  400. 17:08

    scenario. For the second scenario, what

  401. 17:10

    we're going to do is we're going to turn

  402. 17:11

    on the governance. Now while that is

  403. 17:14

    happening, I just want to touch upon why

  404. 17:15

    this is important. So if you want to

  405. 17:17

    like include this product into your

  406. 17:19

    production agents, you want to have a

  407. 17:21

    safe environment or a safe way to

  408. 17:22

    firstly put it in your production

  409. 17:24

    environment, test the guardrails, tweak

  410. 17:25

    the guardrail, see what's the policies

  411. 17:27

    are doing and then finalize the

  412. 17:30

    thresholds. Right? So this is the second

  413. 17:32

    one where we have now enforced the

  414. 17:34

    governance and you can see in the

  415. 17:36

    dashboard that the pre-all cost cap has

  416. 17:39

    exceeded. So you had a budget allotted

  417. 17:41

    for this run but the agent exceeded the

  418. 17:44

    budget and it was killed immediately. So

  419. 17:45

    that's the simple circuit breaker sort

  420. 17:47

    of a methodology. So this is the halt

  421. 17:49

    behavior. And now let's see the steer

  422. 17:52

    behavior which is the which is where we

  423. 17:55

    are trying to add value to this entire

  424. 17:57

    cost management scenario. So this time

  425. 17:59

    we're going to run the third the second

  426. 18:00

    prompt. The budget allotted for this one

  427. 18:03

    is slightly higher but it's still not

  428. 18:04

    high enough for the agent to complete in

  429. 18:07

    time. So what instead happens is there

  430. 18:09

    is something called cost guard which

  431. 18:11

    kicks in. This cost guard it takes into

  432. 18:13

    account two things. First how much of

  433. 18:15

    your allotted budget have you consumed?

  434. 18:17

    Second what is the velocity at which

  435. 18:19

    you're consuming tokens. [music] Now

  436. 18:20

    based on these two things if it predicts

  437. 18:22

    that you're going to run out of your

  438. 18:24

    tokens or your allotted budget by the

  439. 18:26

    end of the run it's going to inject

  440. 18:28

    something into your system instructions

  441. 18:30

    that something could be as simple as hey

  442. 18:33

    you're running out of budget so make

  443. 18:35

    sure that the LM outputs are more

  444. 18:36

    succinct or more summarized right so

  445. 18:39

    that is the way we are doing the

  446. 18:41

    steering now the this was a very simple

  447. 18:44

    test bench to show you like how this

  448. 18:46

    works on a like working code we have

  449. 18:49

    also benchmarked it on a couple of open

  450. 18:51

    source repos. So we have benchmarked it

  451. 18:53

    on browser use as well as metagp. Uh we

  452. 18:56

    ran it across multiple iterations across

  453. 18:58

    stress tests across simple scenarios

  454. 19:00

    hard scenarios and everything. And the

  455. 19:01

    results we see are the average spend

  456. 19:03

    goes down by almost 78% with token ops

  457. 19:06

    enabled with the full policy suit that

  458. 19:07

    we have today. On the completion part

  459. 19:10

    when we compare it with throttling just

  460. 19:12

    simple throttling your simple throttling

  461. 19:14

    is going to kill your agent runs no

  462. 19:16

    matter what. Right? So with the reduced

  463. 19:18

    average spend what you get is you get an

  464. 19:20

    uplift in that completion percentage

  465. 19:22

    from 67% to roughly 96%. So that is the

  466. 19:25

    value ad that token ops is doing here.

  467. 19:27

    Now this is the policy catalog that we

  468. 19:29

    run this benchmark against. This is what

  469. 19:31

    we support today. We kind of researched

  470. 19:33

    what are the different failure modes

  471. 19:34

    that are there today out in the wild and

  472. 19:36

    tried to cover most of them here. So you

  473. 19:38

    have things across spend management, you

  474. 19:40

    have things across context management

  475. 19:41

    like context compaction, tool output

  476. 19:43

    reduction, you have things across loop

  477. 19:45

    detection and progress detection and

  478. 19:46

    stuff like that. So this is the entire

  479. 19:48

    set of policies that we support. And at

  480. 19:50

    the bottom you can see the actions. So

  481. 19:51

    as I mentioned earlier, we have two

  482. 19:53

    flavors. You have the uh the halt type

  483. 19:56

    actions and then the steer type actions.

  484. 19:58

    So for the steer we can do allow,

  485. 20:00

    mutate, inject and so on. And for the

  486. 20:02

    halt, it can be a simple kill. But this

  487. 20:04

    is not the end state that we envision

  488. 20:05

    for this. The end state is we have a lot

  489. 20:09

    of data right we have a ledger that is

  490. 20:11

    continuously being updated. So what we

  491. 20:13

    want to try is we want to try a

  492. 20:15

    self-learning module within the token

  493. 20:17

    ops plane within the control plane which

  494. 20:19

    can look at this ledger and ask this

  495. 20:21

    question hey why or what is the failure

  496. 20:24

    mode that I'm still not able to catch

  497. 20:26

    and then based on that it can do two

  498. 20:28

    things one is it can enhance it can

  499. 20:30

    generate new policies on the fly based

  500. 20:33

    on the missing or the still uh runaway

  501. 20:36

    costs or it can refine the existing

  502. 20:39

    parameters for the existing policies

  503. 20:40

    that are there so that the runaway costs

  504. 20:43

    are managed more effectively in the

  505. 20:44

    future. So with that I think uh that is

  506. 20:47

    all we have for you guys today. Thank

  507. 20:49

    you so much for your time and you can

  508. 20:51

    scan this QR code that's the public

  509. 20:52

    wiki. We are updating it almost

  510. 20:54

    regularly. So you can scan this and stay

  511. 20:57

    up to date and uh Tisha and I are around

  512. 20:59

    so if you guys have any questions or if

  513. 21:00

    you want to discuss more about it just

  514. 21:02

    let us know. That's it. Thank you.

  515. 21:05

    [applause]