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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
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.
Further reading
The authors’ companion explanation develops shared-ledger accounting and enforcement tradeoffs. It supplies the 27-trial benchmark counts and defines its comparison as no governance, differing from the recording’s completion comparison.
Related talks
- Your Agent Failed in Prod. Good Luck Reproducing It.
Chawla and Koul use recorded method boundaries for selective replay and regression testing, complementing this talk’s use of boundaries for accounting and intervention.
- Context Engineering in 2026: Compaction, Memory & Cost
A related route into context compaction and memory, which appear here as mechanisms for controlling agent consumption.
Read the complete timestamped transcript
- 0:01
[music]
- 0:13
Okay. Um, good morning everyone. So, um,
- 0:16
I'm Tisha and I have Sushim with me as
- 0:18
my co-presenter. All right. So, we'll be
- 0:21
talking about the most expensive
- 0:23
question in AI today. I think a lot of
- 0:27
you would have come across the scenario
- 0:29
that um you know when you opened an AI
- 0:32
bill like through your agent workflows
- 0:34
um you couldn't actually trace back
- 0:37
where that bill was actually coming from
- 0:39
right and um and I don't think that's a
- 0:42
problem right now because right now the
- 0:45
industry is valuing you know um token
- 0:48
maxing that is like spending the most
- 0:51
amount of tokens for exploration for all
- 0:54
of those purposes
- 0:55
And um people are proud to call
- 0:57
themselves token billionaires and um I
- 0:59
think that's all right but this talk is
- 1:02
you know the shift from token maxing to
- 1:05
value maxing you know how do we get
- 1:08
there and um we'll talk about it from
- 1:12
this question um who spent all the
- 1:15
tokens and um if anyone spent all the
- 1:19
tokens there has to be value associated
- 1:21
with this right and that is um the talk
- 1:26
about.
- 1:30
All right. Now in order to minimize the
- 1:33
gap you know from token maxing to value
- 1:36
maxing we'll kind of see we'll observe
- 1:39
the patterns which the like the existing
- 1:43
um u like the past software evolution
- 1:46
eras had like for instance when we talk
- 1:49
about the SAS era the interface was UI
- 1:53
and the control was in the form of usage
- 1:56
caps right like or the seat limits or
- 1:58
tier based policies
- 2:00
Now when we moved on to the cloud era,
- 2:03
the control surface again changed. The
- 2:06
model became pay as you go and the
- 2:08
control moved like in the form of
- 2:10
autoprovisioning and you know
- 2:12
autoscaling policies.
- 2:14
Now we are in the agentic era right and
- 2:18
um now how the cost is calculated here
- 2:22
is in the form of model calls right like
- 2:26
u how like the code calls your model but
- 2:31
what we've observed is that there isn't
- 2:34
a proper control plane in place for that
- 2:37
like we do have control plane in place
- 2:40
for you in place as model gateways where
- 2:43
they're um are hard caps or there is
- 2:46
model routing to downgrade the model but
- 2:49
the part like where the code you know
- 2:53
calls the model that um is what we'll be
- 2:57
talking about uh today
- 3:00
and um we also you know see um like in
- 3:05
the last year we've seen a lot of
- 3:07
unbounded consumption happening like um
- 3:12
if you've read the news. There was news
- 3:14
about the like the uh AI budget for Uber
- 3:19
getting exhausted within 4 months and um
- 3:21
there were companies who like who ran
- 3:24
into you know
- 3:26
like hundreds of millions of dollars
- 3:28
within just months or days and like
- 3:30
there were a lot of um like other news
- 3:32
in place as well where like these
- 3:35
runaway loops um led to a very like
- 3:39
massive increase in the cost and there
- 3:42
wasn't proper mechanisms to control it.
- 3:47
Um so when we see all of this the first
- 3:50
thing that comes to our mind is is there
- 3:52
a tool or is there a product to save us?
- 3:54
But uh we'll instead talk about the
- 3:58
first principles of how you know we can
- 4:02
design a system which is actually true
- 4:05
enough to solve the problem from the
- 4:07
very root. So for that let's um like
- 4:10
dive onto the principles. First of all,
- 4:13
let's talk about token being the unit of
- 4:15
cost. Right? We are charged in terms of
- 4:18
token. So the now we have to see value
- 4:23
also in terms of token. Right? Next um
- 4:27
we all know that cost is created at the
- 4:30
LLM like the model call boundary. Um so
- 4:33
that is what we'll have to track and if
- 4:37
we don't have proper attribution like if
- 4:39
we don't know what agent want run made
- 4:42
that particular call we we can't you
- 4:45
know control it right we we just know
- 4:48
the like the broad uh picture of what
- 4:51
went wrong but we don't we can't you
- 4:53
know trace it back or narrow it down. So
- 4:55
that is why attribution is a very
- 4:57
important element to have and um like
- 5:01
once you know which particular run or
- 5:04
which particular agent is actually you
- 5:07
know attributing to the cost you should
- 5:09
have proper policies in place to
- 5:11
actually stop it. Like um let's take
- 5:14
example that um if you have a you know
- 5:17
um a loop which is you know running um
- 5:22
very excessively and which is not
- 5:24
required or you know if your context is
- 5:27
growing very out of range. you should
- 5:30
have in place policies which can um like
- 5:33
solve that particular thing there and
- 5:35
there instead of halting that and if um
- 5:38
and as the last resort only a like a
- 5:41
halting or a should happen from a budget
- 5:44
cap. So these are the first principles.
- 5:46
Now let's see how we can you know define
- 5:50
an ideal uh platform on top of that from
- 5:53
these principles which we talked about.
- 5:56
All right. Uh so one thing which is very
- 5:58
important that which matters here is
- 6:00
that u when we talk about um like the um
- 6:05
existing frameworks for token ops or for
- 6:07
token management most of them are at the
- 6:11
um like u basically monitor the model uh
- 6:15
request. they like they are like model
- 6:19
gateways which will u you know u
- 6:22
basically um do like model routing or
- 6:26
hard budget capping. But what we need
- 6:28
right now is something which you know um
- 6:33
like monitors you at the run instead.
- 6:35
Like um if you see we need something uh
- 6:39
which can control the loop between like
- 6:43
the agent call between the tool um and
- 6:47
the agent. something you know which can
- 6:50
um uh see or control the the spawning of
- 6:54
multiple sub aents happening from a one
- 6:56
main agent or um like something which
- 7:00
can control the growing of context. So
- 7:02
like that is the need of the right and
- 7:05
that is what we need. So for all of this
- 7:08
um we like uh kind of are proposing a
- 7:12
platform which first of all um has a
- 7:15
cumulative budget across like the uh
- 7:19
like the attribution runs which happened
- 7:24
and then where enforcement actually
- 7:26
happens in call path rather than um you
- 7:30
know a separate thing like for example
- 7:33
if something goes wrong if your like if
- 7:35
your context is just growing heavily.
- 7:38
Then like in place compaction should
- 7:43
happen or like in place caching or
- 7:45
something like that should happen. And
- 7:47
um after that if like after basically
- 7:50
exhausting the list of all in place
- 7:53
policies only like uh the budget cap
- 7:57
should happen at the very last. Um so
- 7:59
that is something which we are
- 8:01
proposing. But um if you look at the
- 8:04
landscape today, if you see the uh like
- 8:07
the uh tools like um this light LLM,
- 8:10
port key, cloudflare, all of those they
- 8:12
happen at again the request level right
- 8:16
um like if you see like halting is
- 8:20
there, routing is there for some of
- 8:22
those but all of this again is at a
- 8:26
request and you can't control the cost
- 8:28
at the uh request layer uh at the model
- 8:31
layer, Right.
- 8:34
So this is the missing piece which is
- 8:36
you know the
- 8:38
u basically navigating it at the um you
- 8:42
know the model the agent run layer.
- 8:47
So for that we have token ops which is
- 8:50
uh you know a runaway token governance
- 8:52
for AI agents and u this is the uh
- 8:57
architecture for that. So first of all
- 9:00
one thing I would want to highlight is
- 9:02
the like the intentional design decision
- 9:04
we took here was an out ofbound plane.
- 9:07
So it doesn't interfere with your code
- 9:10
at all. Um so if you see here that out
- 9:13
of the bandound plane has three modules
- 9:15
which I'll be talking about. The first
- 9:17
one being instrumentation. It is a
- 9:19
common observability layer where you
- 9:21
know you'll u like uh have u like the
- 9:25
basic telemetry the open telemetry the
- 9:27
cost in microns and um like the um like
- 9:32
enrichment layer and basically um the uh
- 9:37
attribution like what caused that uh
- 9:40
like particular run
- 9:43
and then there is um obviously
- 9:45
accounting where
- 9:48
you'll basically accumulate it in a kind
- 9:51
of a ledger like the total runs which
- 9:54
are happening. And finally we have this
- 9:56
enforced layer which has uh two main
- 10:00
purposes. one is steering it um through
- 10:04
the policies which we've defined which I
- 10:06
think will cover later and um then we
- 10:10
have halt in place as the you know final
- 10:13
um like u final thing if um you know
- 10:16
your budget is getting exhausted
- 10:19
so yeah that is there now when we again
- 10:22
look at the landscape this kind of will
- 10:26
solve a lot of problems
- 10:29
um which kind of happened uh when we
- 10:32
like look at the previous um tools or
- 10:35
products there because uh it is at
- 10:38
happening at run and it is you know uh
- 10:41
helping you solve the problem from the
- 10:44
very root by steering it in place.
- 10:48
All right. So uh with this I would like
- 10:51
to hand it over to Sashim for the demo.
- 10:53
>> Yeah.
- 10:57
>> Oh yeah. Now I think I should be able to
- 10:59
everyone in the back can hear me. All
- 11:00
right, perfect. So yeah, we have
- 11:03
established the principles behind token
- 11:05
ops till now. Right. Now let's shift
- 11:08
gears, talk about the design part of it
- 11:09
and uh maybe get into the code and the
- 11:12
eventual demo. Right? So what I have
- 11:14
behind me on the screen is the like
- 11:16
bird's eye view of what token ops looks
- 11:19
like today. It's it's three layers.
- 11:21
We'll go left to right and top to
- 11:23
bottom. So on the left most you have
- 11:24
your own agent runtime which you're
- 11:26
trying to instrument and kind of manage
- 11:27
the cost for right the middle layer is
- 11:30
what we're calling the bridge that
- 11:32
basically shuffles data between your
- 11:33
agent and the control plane and the
- 11:36
control plane is where the mind of the
- 11:38
system lies right so let's talk about
- 11:40
the bridge layer very briefly if we uh
- 11:42
go from top to bottom you have the
- 11:43
attribution on top so what we're trying
- 11:45
to do here is every agent run that you
- 11:48
do it's attributed to some user
- 11:50
dimensions so the idea is everything
- 11:53
that you do every run of the agent is
- 11:55
accounted to some usability or some
- 11:57
usage. This comes in handy later. We'll
- 11:59
talk about it. Uh the second part which
- 12:01
is the boundary annotation that you see
- 12:03
this is pretty much the heart and soul
- 12:04
of this middle layer. So the idea behind
- 12:07
the boundary annotation is that you take
- 12:08
any method. It doesn't matter what
- 12:10
framework you're using. You might be
- 12:11
using uh let's say lang chain lang
- 12:13
whatever. If you have a method you can
- 12:15
annotate it with boundary. What this
- 12:17
annotation is going to do is it's going
- 12:19
to do two things. First it's going to
- 12:20
track the input and the output and it's
- 12:22
going to flight that up to the control
- 12:24
layer and record it there as a ledger
- 12:26
entry. Now this will be annotated with
- 12:28
the further agent run ID and the other
- 12:30
attributes and so on. The second thing
- 12:32
the boundary annotation does is it acts
- 12:34
as a channel through which the control
- 12:35
plane can push actions down to the
- 12:37
agent. This is where the entire
- 12:39
intelligence lies. So we do not have a
- 12:41
single directional highway. We want the
- 12:43
control plane to be able to tweak the
- 12:45
behavior of the agent on the fly to
- 12:48
ensure that we are able to squeeze in
- 12:49
more runs inside our budget cap. Right
- 12:52
now let's say the control plane pushes
- 12:54
down an action. Let's take a small
- 12:55
example. Let's say you have a rag
- 12:56
retrieval tool which is generating like
- 12:58
20 chunks every retrieval for every call
- 13:01
and that's eating up eating up your
- 13:02
budget. And let's say the LLM is not
- 13:04
even using the chunks that are after
- 13:06
five because they are just not relevant,
- 13:07
right? They're sorted by relevance. So
- 13:09
let's say the control plane observes
- 13:10
this and it wants to limit the output to
- 13:13
just five chunks. So it can push down an
- 13:15
action but that action has to be
- 13:17
received by boundary and then has to be
- 13:19
executed by something. That is where the
- 13:21
third node, the governor node comes in.
- 13:22
The governor knows what actions are
- 13:26
allowed on your agent by you as a
- 13:28
developer and it receives those actions
- 13:30
from the control plane and knows how to
- 13:31
apply it in a non-destructive way. So
- 13:34
that's the first three. The fourth one
- 13:35
wrap uh the wrap complete is essentially
- 13:37
just a helper method. So as we know most
- 13:40
of the agent providers or the model
- 13:41
providers they provide objects rather
- 13:43
than methods for their LMS right. So
- 13:45
wrap complete is just another way of
- 13:46
applying boundary on objects rather than
- 13:48
methods. Let's shift right to the
- 13:51
control plane. On the control plane the
- 13:52
first layer is the segment. Now this is
- 13:55
where the attribution that we talked
- 13:56
about earlier comes into picture. So any
- 13:59
dimensions that you float from the
- 14:01
attribution layer. Let's say you have a
- 14:03
preview agent that you share with
- 14:04
everyone in this room and your agent is
- 14:06
floating a dimension saying that cohort
- 14:09
is AIE 2026 right so you can create a
- 14:12
segment which is a cohort of users which
- 14:15
is based on this tag like dimension
- 14:16
being AI 2026 right and you can apply
- 14:19
your budgets at this cohort level so you
- 14:21
don't necessarily have to restrict
- 14:23
everything at an agent level or a run
- 14:24
level you can do you can do rollups you
- 14:27
can do fine grain or coarse grain
- 14:28
control right so that's the segmentation
- 14:31
part of Ledger as I mentioned is just
- 14:33
one agent run all the traces in one
- 14:35
place. Then you have budgets. Budgets
- 14:37
are basically just the static thresholds
- 14:39
that work across a time window against a
- 14:41
particular segment or an agent run. And
- 14:43
then you have actions. So on the actions
- 14:45
part we have broadly two flavors. First
- 14:48
is the halt type actions which basically
- 14:49
just kill your agent if it exceeds a
- 14:51
budget. The second part where we are
- 14:53
adding value is the steer type actions.
- 14:56
So here we do not kill the agent.
- 14:58
Instead we try to steer the behavior of
- 15:00
the agent or the components of the agent
- 15:02
to try and fit that particular run
- 15:05
within the alerted budget. Right? And
- 15:07
then the policies layer is where it all
- 15:09
comes together. You basically uh group
- 15:11
the budgets the actions and then set
- 15:13
your policies against certain segments
- 15:15
or agent runs and that is where it
- 15:16
executes. Right? So moving on uh what
- 15:20
changes in your code that is the
- 15:21
boundary annotation that we just talked
- 15:22
about. As Disha mentioned earlier this
- 15:24
is all out of band. So you do not have
- 15:26
to change your code. You just have to
- 15:27
apply the annotation on the methods that
- 15:29
you have. This boundary annotation will
- 15:31
take care of floating all the
- 15:32
information up to the control plane. And
- 15:34
uh the control plane lies in your own
- 15:35
tenant. So you do not need to worry
- 15:37
about any data leaks or anything. Then
- 15:39
if I talk about the governor, so for the
- 15:42
governor, you just have to create an
- 15:43
instance. You just have to pass it your
- 15:44
own configs. These configs will
- 15:46
basically declare what sort of actions
- 15:48
are allowed for those agents, right? so
- 15:50
that your control plane cannot just
- 15:53
willingly do any random things on your
- 15:55
on your agents. So before we move on to
- 15:58
the demo, I'll just briefly touch upon
- 16:00
the uh test that we're going to use
- 16:01
today. So it's a simple two agent
- 16:03
workflow. We have a research agent which
- 16:06
has access to a search tool. Uh you give
- 16:08
it a question. It's allowed to look up
- 16:10
on the web as many times as it wants.
- 16:12
And once it knows that it has all the
- 16:14
data, it passes the findings on to the
- 16:16
second agent which is a summarizer which
- 16:17
creates creates a research report.
- 16:19
Right? So with that out of the way,
- 16:21
let's just quickly walk over to the
- 16:23
demo. So for the demo, we have three
- 16:25
different scenarios that we're going to
- 16:26
talk about. For the first one, we're
- 16:28
going to run the token ops in what we
- 16:30
call preview mode. So in preview mode,
- 16:32
what happens is that all the policies
- 16:34
run as is, but the enforcement doesn't
- 16:36
happen. So if you see we ran a
- 16:39
particular run over here which completed
- 16:42
but we did not see any sort of failures
- 16:45
there. The policies executed but the
- 16:48
actions that were associated with those
- 16:50
policies were not allowed to be
- 16:51
executed. So we're just going to load
- 16:53
the dashboard screen here.
- 16:57
Yeah. So this is the governance output.
- 17:00
Governance is off. The run completed.
- 17:02
But in the dashboard you can see the
- 17:03
policies have executed. So you can see
- 17:04
the cost budget, the cost guard and so
- 17:06
on. Right? So this was the first
- 17:08
scenario. For the second scenario, what
- 17:10
we're going to do is we're going to turn
- 17:11
on the governance. Now while that is
- 17:14
happening, I just want to touch upon why
- 17:15
this is important. So if you want to
- 17:17
like include this product into your
- 17:19
production agents, you want to have a
- 17:21
safe environment or a safe way to
- 17:22
firstly put it in your production
- 17:24
environment, test the guardrails, tweak
- 17:25
the guardrail, see what's the policies
- 17:27
are doing and then finalize the
- 17:30
thresholds. Right? So this is the second
- 17:32
one where we have now enforced the
- 17:34
governance and you can see in the
- 17:36
dashboard that the pre-all cost cap has
- 17:39
exceeded. So you had a budget allotted
- 17:41
for this run but the agent exceeded the
- 17:44
budget and it was killed immediately. So
- 17:45
that's the simple circuit breaker sort
- 17:47
of a methodology. So this is the halt
- 17:49
behavior. And now let's see the steer
- 17:52
behavior which is the which is where we
- 17:55
are trying to add value to this entire
- 17:57
cost management scenario. So this time
- 17:59
we're going to run the third the second
- 18:00
prompt. The budget allotted for this one
- 18:03
is slightly higher but it's still not
- 18:04
high enough for the agent to complete in
- 18:07
time. So what instead happens is there
- 18:09
is something called cost guard which
- 18:11
kicks in. This cost guard it takes into
- 18:13
account two things. First how much of
- 18:15
your allotted budget have you consumed?
- 18:17
Second what is the velocity at which
- 18:19
you're consuming tokens. [music] Now
- 18:20
based on these two things if it predicts
- 18:22
that you're going to run out of your
- 18:24
tokens or your allotted budget by the
- 18:26
end of the run it's going to inject
- 18:28
something into your system instructions
- 18:30
that something could be as simple as hey
- 18:33
you're running out of budget so make
- 18:35
sure that the LM outputs are more
- 18:36
succinct or more summarized right so
- 18:39
that is the way we are doing the
- 18:41
steering now the this was a very simple
- 18:44
test bench to show you like how this
- 18:46
works on a like working code we have
- 18:49
also benchmarked it on a couple of open
- 18:51
source repos. So we have benchmarked it
- 18:53
on browser use as well as metagp. Uh we
- 18:56
ran it across multiple iterations across
- 18:58
stress tests across simple scenarios
- 19:00
hard scenarios and everything. And the
- 19:01
results we see are the average spend
- 19:03
goes down by almost 78% with token ops
- 19:06
enabled with the full policy suit that
- 19:07
we have today. On the completion part
- 19:10
when we compare it with throttling just
- 19:12
simple throttling your simple throttling
- 19:14
is going to kill your agent runs no
- 19:16
matter what. Right? So with the reduced
- 19:18
average spend what you get is you get an
- 19:20
uplift in that completion percentage
- 19:22
from 67% to roughly 96%. So that is the
- 19:25
value ad that token ops is doing here.
- 19:27
Now this is the policy catalog that we
- 19:29
run this benchmark against. This is what
- 19:31
we support today. We kind of researched
- 19:33
what are the different failure modes
- 19:34
that are there today out in the wild and
- 19:36
tried to cover most of them here. So you
- 19:38
have things across spend management, you
- 19:40
have things across context management
- 19:41
like context compaction, tool output
- 19:43
reduction, you have things across loop
- 19:45
detection and progress detection and
- 19:46
stuff like that. So this is the entire
- 19:48
set of policies that we support. And at
- 19:50
the bottom you can see the actions. So
- 19:51
as I mentioned earlier, we have two
- 19:53
flavors. You have the uh the halt type
- 19:56
actions and then the steer type actions.
- 19:58
So for the steer we can do allow,
- 20:00
mutate, inject and so on. And for the
- 20:02
halt, it can be a simple kill. But this
- 20:04
is not the end state that we envision
- 20:05
for this. The end state is we have a lot
- 20:09
of data right we have a ledger that is
- 20:11
continuously being updated. So what we
- 20:13
want to try is we want to try a
- 20:15
self-learning module within the token
- 20:17
ops plane within the control plane which
- 20:19
can look at this ledger and ask this
- 20:21
question hey why or what is the failure
- 20:24
mode that I'm still not able to catch
- 20:26
and then based on that it can do two
- 20:28
things one is it can enhance it can
- 20:30
generate new policies on the fly based
- 20:33
on the missing or the still uh runaway
- 20:36
costs or it can refine the existing
- 20:39
parameters for the existing policies
- 20:40
that are there so that the runaway costs
- 20:43
are managed more effectively in the
- 20:44
future. So with that I think uh that is
- 20:47
all we have for you guys today. Thank
- 20:49
you so much for your time and you can
- 20:51
scan this QR code that's the public
- 20:52
wiki. We are updating it almost
- 20:54
regularly. So you can scan this and stay
- 20:57
up to date and uh Tisha and I are around
- 20:59
so if you guys have any questions or if
- 21:00
you want to discuss more about it just
- 21:02
let us know. That's it. Thank you.
- 21:05
[applause]