← All AI Engineer talks

AI Engineer Europe 2026

Building Agent Interfaces: Lessons from Chrome DevTools (MCP) for Agents

Michael Hablich· Product Manager, Chrome Developer Tools, Google22:38

Read the talk

Building agent interfaces that can check their work

Chrome DevTools’ agent interface shows how semantic output, task-level measurement, recoverable errors, clear tool descriptions, and browser consent shape a useful debugging loop.

From a talk by Michael Hablich

Give the coding agent a way to check its work

A coding agent asked to make a web page faster needs a way to measure what its changes accomplish. Human developers already use Chrome DevTools to inspect errors, audit pages, and profile performance. The opening demonstration puts those capabilities into an agent’s workflow: Gemini CLI, configured with Chrome DevTools MCP, opens Chrome, records a performance trace, examines the returned insights, changes the page, and measures again to validate the result. The recorded demonstration makes the debugging loop concrete: observe the browser, act on the evidence, and check the effect.

Dark terminal pane on the left; PITSTOP webpage with optimization buttons and a “Welcome to the track!” banner on the right.
Terminal output alongside the rendered PITSTOP page in Chrome.

MCP—the Model Context Protocol—provides the tool interface between the browser-debugging server and the agent harness. The demonstration uses Gemini CLI, but the talk also names Claude Code, Codex, and OpenClaw as compatible clients. Michael Hablich, Google’s product manager for Chrome Developer Tools, presents the engineering lessons behind building that interface for agents.

0:571:28
Suggest correction

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

0:57 · section reference included

Replace the trace dump with useful semantic output

The team built the interface because coding agents could generate code but lacked a way to validate its behavior in the browser. Its first assumption was that giving an agent enough browser data would solve the problem. In the early experiment described in the talk, a performance trace contained multiple megabytes of data and roughly 50,000 lines of JSON. Passing that trace to then-common agent harnesses overwhelmed their context windows, according to the speaker. This was a failure of the interface in that historical setup: the relevant evidence was present, but the agent could not usefully reason over the volume it received.

The performance endpoints therefore began returning semantic summaries in Markdown: concise output that surfaces relevant measurements, including Largest Contentful Paint (LCP) and Interaction to Next Paint (INP). Raw traces remained available for post-processing with other tools. The change was analogous to pointing a reader to the relevant sentence instead of requiring them to read an entire book before answering a question.

Slide comparing a dense trace labeled “All the data” with a red cross against a dark text panel labeled “Semantic summary” with a green check.
“We built it wrong”: all the data versus a semantic summary.

Humans and agents share the debugging goal—identify an error and fix it—but encounter different bottlenecks. A human can scan the DevTools console using layout and color, then investigate through its read–evaluate–print loop, or REPL. An agent-facing interface instead needs clear schemas and useful textual information density. Treating agents as a distinct user segment changes both what the interface exposes and how it presents the result.

3:293:44
Suggest correction

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

3:29 · section reference included

Measure token cost against successful user journeys

Four engineering concerns follow from that distinction: token burn, error recovery, tool discoverability, and trust boundaries. Token burn comes first because interaction overhead has a direct cost. The talk compares a cumbersome API to a fourteen-step checkout flow: each additional exchange demands more work from its user. For an agent, returned data occupies context, while further reasoning and tool interactions consume additional tokens and time.

Tokens per successful outcome connects that cost to whether the agent accomplishes anything useful. It requires keeping two dimensions visible:

  • Effectiveness: Does the agent complete the entire user journey and fulfill the user’s functional intent?
  • Efficiency: How many tokens and tool calls does the journey consume, and how long does it take?

The fuel-efficiency analogy has a limit: an economical journey is of little value if it never reaches its destination. Reducing token use cannot substitute for measuring success.

Compare tokens per successful outcome within the same user journey or task class. Extracting information from a website is relatively cheap in the talk’s examples. Diagnosing why a responsive layout is broken requires a more intricate, interactive investigation and can reasonably consume more tokens. A useful decision rule is to compare interface changes on the same kind of task, checking completion alongside cost; a global average across scraping and debugging would obscure the difference in work.

The internal-project chart shown in the talk organizes effectiveness by use case. Longer bars represent more effective behavior; shorter bars identify journeys that deserve investigation and improvement. It serves as a way to decide where to work next, rather than as a single score for the whole interface. Measurement is not straightforward, but even imperfect measurements can make those decisions better informed than intuition alone.

6:477:11
Suggest correction

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

6:47 · section reference included

Reduce context without removing necessary capabilities

Chrome DevTools approaches token reduction in three ways. The first is tool categorization: specialized capabilities are enabled through command-line parameters instead of appearing in every agent’s default context. Chrome extension debugging is the example. An agent working on an ordinary web page has no reason to carry descriptions of extension-specific tools throughout its session.

The second approach, slim mode, pushes that reduction further. The version described in the talk exposes only select_page, navigate_page, and evaluate_script. A smaller tool surface reduces the context occupied by tool definitions, but it can force additional turns or leave a necessary capability unavailable. The speaker gives network-request inspection as an example of functionality missing from the described slim set. The relevant comparison is therefore total work required to finish the task, not just the size of the initial tool list.

Editor: The current slim-tool reference lists navigate, evaluate, and screenshot. Those names differ from the recording; use the current documentation when configuring today’s interface.

The third approach is a command-line interface offering nearly the same functionality as the MCP server. It lets the agent compose operations and perform intermediate processing locally. The demonstrated pipeline follows this sequence:

  1. Obtain the page’s accessibility tree, which represents accessible elements such as controls.
  2. Filter the tree with grep to obtain the relevant control’s identifier.
  3. Pass that identifier to a click command.

The computer processes the intermediate tree rather than sending all of it through the model. This moves suitable filtering work out of the agent’s context while retaining the browser action the task requires.

11:1111:20
Suggest correction

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

11:11 · section reference included

Make failures lead to a next action

An efficient interface still fails its user if the agent gets stuck. Errors create additional work: the agent must understand the failure, decide what to change, and retry. Recovery behavior therefore affects both completion and token cost.

The talk develops recovery as a spectrum of increasingly proactive support:

  • Explain the reason. In the back-navigation example, the selected page lacks a suitable history entry. The speaker reports that adding an explanatory sentence to the error enabled the agent to recover without a human fixing the problem. A failure message becomes useful when it gives the agent information it can act on.
  • Provide proactive detours. Models arrive with tool preferences shaped by training. For performance profiling, the interface directs the agent toward the performance-trace tool instead of a Lighthouse audit, counteracting a learned route that does not match the intended workflow.
  • Supply diagnostic playbooks. A troubleshooting skill helps the agent and human diagnose Chrome DevTools MCP setup problems. This gives recurring installation failures a structured recovery path.

Together, these mechanisms make the interface more resilient to mistakes and reduce the chance that a recoverable problem becomes a terminal failure.

“Beyond simple failure messages” slide with three columns, each containing a heading, terminal illustration, and short explanation.
Three recovery approaches: explain the reason, proactive detours, and a diagnostic playbook.
13:1213:21
Suggest correction

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

13:12 · section reference included

Make tool intent discoverable with minimal descriptions

Recovery handles mistakes after they occur; discoverability helps prevent them. The initial design exposed one broad tool, Debug Webpage, to which another agent could send a request such as investigating a broken responsive layout. That was appealing from an engineering perspective, but the speaker reports that it did not work well. The team replaced the monolithic tool with 25 tools, according to the talk. This introduced a different problem: the agent now had to choose which tool to use and when.

The talk cites Model Context Protocol (MCP) Tool Descriptions Are Smelly! for the finding that roughly 97% of analyzed MCP tool descriptions had quality smells. Descriptions matter because the schema is the agent’s interface: it is where the agent learns what a capability does and whether it fits the task.

Editor: The February 16, 2026 version of the paper examined 856 tools across 103 MCP servers. The figure concerns that sample, not a census of the MCP ecosystem.

Adding description text has costs of its own. Longer descriptions occupy more context, and the speaker warns that smaller models can become biased toward invoking tools that are not appropriate for the task. Description quality is therefore not equivalent to description length.

Two elements make a description useful:

  • Purpose: State the tool’s core function clearly.
  • Activation criteria: Explain when the agent should use it.

The performance-tracing description connects frontend performance investigations with Core Web Vitals, naming LCP, INP, and Cumulative Layout Shift (CLS). That vocabulary helps an agent connect a request to improve page loading with a relevant tool. Finding the minimum useful description remains an ongoing optimization problem because models and harnesses keep changing.

Skills can add guidance for more intricate workflows, but they move the same trade-off to another layer. Too many skills increase context and create more opportunities for irrelevant invocations. Their value depends on whether the agent can discover and activate the right guidance for the current task.

15:2715:39
Suggest correction

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

15:27 · section reference included

Match browser access to the deployment’s trust boundaries

Once cost, recovery, and discovery improve, a more capable interface raises a further question: what is the agent allowed to access? Chrome DevTools’ auto-connect feature lets a coding agent connect to the browser context where a human is encountering a problem. Users asked the team to remember their Allow choice so they would not have to approve repeatedly. The team deliberately retained that friction. Delegating browser work requires an explicit trust boundary, even when removing a click would make the interaction easier.

“Concern 4: Trust boundaries” slide showing an “Allow remote debugging?” dialog with Cancel and Allow buttons.
A remote-debugging consent dialog illustrates browser trust boundaries.

The talk invokes Simon Willison’s lethal trifecta for AI agents as a framework for reasoning about that boundary.

Editor: Willison’s framework combines private-data access, exposure to untrusted content, and the ability to communicate externally. The current Chrome DevTools MCP documentation says auto-connect can access all open windows in the selected default profile. That scope can extend beyond the page the user wants to debug.

The talk distinguishes three browser-agent deployment environments, each requiring a different access model:

EnvironmentIntended access and safeguards
Local developmentA human remains in the loop and grants time-bound access to the default Chrome profile and the data already available there.
Controlled CISeparate the agent’s data and environment using containers and separate Chrome profiles. A remote debugging port provides a way to connect to the browser; it is a connection mechanism, not the isolation boundary.
Full-internet browsingPublic pages can expose the agent to prompt injection. Retain the separation used for CI, then add domain allowlists and prompt-injection mitigations.

These tiers distinguish access to a human’s working browser from controlled automation and from agents encountering arbitrary internet content.

Returning to local development, the speaker identifies the default browser profile as a place where the trifecta’s risks can come together. That is the reason for requiring human consent for each connection. A local coding assistant and a fleet of browsing or research agents may use the same Chrome DevTools interface, but they require different security models. Sharing the tool does not make their data access or authorization requirements interchangeable.

18:3318:43
Suggest correction

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

18:33 · section reference included

Treat agents as users with non-functional requirements

Agent experience extends user experience to another user segment, with its own requirements for efficiency, discoverability, security, and stability. Those requirements shape the interface throughout a task: the cost of reaching a successful outcome, the path out of an error, the clarity of a tool’s intent, and the authority granted to use it. A useful agent interface must support all of those properties together.

21:3121:38
Suggest correction

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

21:31 · section reference included

Resources

From the talk

  • Official installation and tool documentation for the browser-debugging server used throughout the talk; current options may differ from the recording.

  • The study behind the 97% statement evaluates 856 tools on 103 servers and shows that richer descriptions also introduce cost and behavior tradeoffs.

  • The security framework Hablich cites when distinguishing local development, CI and open-internet browsing agents.

Updates since the talk

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] Let's get started in, in, in interest of time, right?

  2. 0:20

    So hi. Welcome. Let's talk about building agent interfaces today. So let me start with a question first. Who in here is already using MCP servers or CLI tools on your,

  3. 0:32

    uh, agent? Okay, everybody. That is unsurprising, to be honest. [laughs]

  4. 0:37

    Um, who in here have already built MCP servers and deployed them for effect? Okay, it's approximately half of the people.

  5. 0:46

    Well, today I'm going to share four engineering lessons from the Chrome, uh, DevTools team on how we build Chrome DevTools for agents and how we deployed it for effect.

  6. 0:57

    Quick context setting. Chrome DevTools for humans is used by millions of web developers on a daily basis to debug web pages. It's directly built into Chrome, and developers use it to debug web pages, find errors, audit it, performance profile it, and so on and so on.

  7. 1:13

    Uh, right. So n-now let's talk a little bit more about Chrome DevTools for agents. So this is a purpose-built Chrome DevTools, but for agents. How surprising. Um, yeah. Let me briefly show you how it works.

  8. 1:28

    So you can see on the left side, Gemini CLI and the prompt is being ent-entered. And now, uh, Gemini CLI has the MCP server being configured, and it opens Chrome on the right side and then does debugging.

  9. 1:41

    Uh, uh, I think, yes, this is about performance tracing, so it does a performance trace, analyzes the trace that comes back or the performance insight, acts on it, and then makes the web page faster, uh, validate that it's actually faster afterwards, and it's done.

  10. 1:57

    You should be done now. It's nearly done. Sorry, it's a video.

  11. 2:01

    Whatever. What I wanted to tell you is like, yeah, this is going to work in any MCP client and, uh, agent harness that is MCP capable. Doesn't really matter.

  12. 2:09

    That was Gemini CLI. Also works in Claude Code, Codex, OpenClau, doesn't matter.

  13. 2:17

    If you want to have more information, go to this QR code because that QR code is going to, uh, bring you to a web page, and that's going to tell you everything about how you can install it, configure it for your agent harness.

  14. 2:30

    Question again. Who in here has already tried it out?

  15. 2:35

    Okay, so ten percent. Thank you. [laughs] I love you. I al-also love everybody else, but- [laughing] ... I love the others more. So I was rude. I didn't introduce myself. Uh, my name is Michael Hablich.

  16. 2:48

    I am the product manager for Chrome Dev-Developer Tools, uh, at Google. And I'm also a guest lecturer at the university nearby, nearby where I'm living. I have twenty years of experience in tech, developer, tester, QA engineer, project manager, product manager, program manager, and so on.

  17. 3:08

    If you have questions afterwards, please talk with me in the hallway track or, uh, connect with me over LinkedIn. Uh, the QR code will bring you to my LinkedIn page.

  18. 3:18

    Both is fine. Uh, please do that. I would be super interested to talk w-with you about MCP servers, browse automation tools, and stuff like that. Okay, but now enough advertisement.

  19. 3:29

    Let's move on. We ship Chrome DevTools because we saw that coding agents were flying blind. So like one and a half years ago, they were very good with generating code, but they were not able to validate what they actually were doing, right?

  20. 3:44

    And it just sucked. But we assumed they are going to be fine if we throw a lot of data at them because, I mean, they are machines, right? The thing is, we were wrong.

  21. 3:55

    So this is a, uh, this is the head of a trace file. A trace file, it has all the data about the performance profile.

  22. 4:07

    And this is a file, like multiple megabytes of data, and this is like fifty thousand lines of JSON. And we did throw that against common agent harnesses at that point, like one and a half year ago, stuff like that.

  23. 4:18

    And without surprise, this is too much data for an agent, for a model to actually reason about, and it blew through the context window. And if you have seen Matt's talk about the dump zone,

  24. 4:30

    you're moving the agent into the dump zone at that point. So we thought, okay, we built it wrong. That's not going to work. We need to do something else.

  25. 4:36

    So in that case, for example, what we did, our performance tracing endpoints, it can also return that for post-processing, uh, with other tools. But what it's really doing is it's returning Markdown now and semantic summaries.

  26. 4:50

    Like this is a example of such a semantic summary, which just gives you information about typical performance metrics like Largest Contentful Paint, INP, and so on and so on.

  27. 5:00

    I'm not going to bore you about all the, uh, performance metrics. And we are going to talk about them anyway because they're a very good example of how this is, uh, working.

  28. 5:10

    Well, essentially, we didn't force the agent to read the entire book, the trace, but instead we just pointed it at the right sentence and this is the semantic summary.

  29. 5:19

    That works quite well. In the end, uh, or in the beginning, agents are a different user class. So that's where when it's kind of like clicked for me like, ah, yeah, they are kind of like a separate user segment.

  30. 5:33

    So how do we reason about that? The thing is, agents and humans, they share the intent, they share the goal, right? In our case, for example, both want to identify errors on a page and want to fix those errors,

  31. 5:48

    but they think differently. They have different cognitive bottlenecks, more or less. For humans, it's a lot about visual complexity. So humans are very, typically very visual, uh, creatures.

  32. 6:02

    And we need layout, we need color in order to find a signal. And this might not be the best example for a appealing UI, but this is just, uh, our console interface where console errors are being, uh, surfaced, and we can also use it as a wrapper interface on Chrome DevTools for humans.

  33. 6:19

    But you can u- if you know where to look, you can use it to identify errors on the page very easily. Um, LLMs, on the other hand, they prefer, unsurprisingly, non-visual interfaces, right?

  34. 6:31

    They care about schema clarity, data density. So, uh, on the right side, you see a schema for, I think it's for the performance endpoints that we just discussed earlier.

  35. 6:40

    Um, yeah, and they really like that. It's a textual, non-visual interface, right?

  36. 6:47

    Whatever. This now was my long way of saying, ah, designing for agents actually requiring a few engineering concerns I'm going to talk about today. So there's token burn rate, there's error recovery, there's tool discoverability, and there's also trust boundaries.

  37. 7:05

    And I'm going to cover them today very shallow. Let's talk in a whole bit track more.

  38. 7:11

    Let's start with token turn, uh, burn rate. So tokens are kind of like a cognitive load for agents, right? Very similar to humans remembering clicks, the right clicks on a visual interface.

  39. 7:25

    The thing is, most APIs, uh, todays, uh, they're very often

  40. 7:32

    like a fourteen-step checkout flow, as you can see on the left side, for example, for human, or the trace that I showed you before. Kind of like that sucks because every word that is sent back to the model is metered.

  41. 7:43

    It costs money, right? Every word, every output token, uh, input token that it gets costs you money. Uh, every reason is happening costs you money. And that just sucks because that translates to monetary cost.

  42. 7:55

    So how can we reduce that? Well, let me introduce you to a metric. Of course, uh, let's talk about metrics. It is called tokens per successful outcome. What it does, it balances effectiveness and efficiency.

  43. 8:10

    Uh, sounds very hypey, and maybe it is. I don't know. Um, what is it about? So effectiveness is about does the agent complete the entire user journey? Is the functional intent actually fulfilled?

  44. 8:25

    Yes or no. And then there's efficiency, which unsurprisingly is about token cost, tool calls, duration.

  45. 8:36

    In the end, what tokens per successful outcome tell you is the s- the fuel efficiency of your interface, right?

  46. 8:45

    And there's a caveat because there's always a caveat.

  47. 8:49

    Fuel efficiency is relatively worthless if you can't reach your destination. So that's why it's called tokens per successful outcome and not tokens per outcome. So make sure that you actually also measure effectiveness, right?

  48. 9:05

    And there's one more caveat, and this is

  49. 9:10

    you can't measure that globally. I mean, you can do that, but you sh-- maybe you want to do that because it's a nice metric,

  50. 9:17

    but it's going to ch-- uh, be tremendously different between different user journeys and task classes. So don't compare them globally, compare them within your user journey that you're measuring that.

  51. 9:29

    And what I mean with that is like, for example, in Chrome DevTools, we have the user journey of web scraping, right? So an agent going to website and extracting information, that's relatively cheap.

  52. 9:41

    But there's also user journeys that are more intricate, like debugging a website, finding out why the responsive layout is not working. That thing is going to use more tokens, but that is fine because it's a much more, much more intricate, uh, and more interactive session that's happening.

  53. 10:01

    Okay, how does this look like in real life? Uh, this is what it looks like in practice and for a project, an internal project that we are working on.

  54. 10:08

    And you see a lot of neon bars, which is great. I like neon bars. But I am not going to bore about details. The important thing is the neon bars on the left side, the longer the bar, the more effective a tool, right?

  55. 10:23

    The shorter the bar, the less effective a tool for a particular use case. So each of those bars on the left side are about use cases. Uh, which means

  56. 10:32

    the smaller bars are probably the ones that we should be focusing on our work next, how to improve that, how to improve the tokens per successful outcome there.

  57. 10:42

    Yeah, uh, as you might have already guessed, measuring tokens per successful outcome is not straightforward.

  58. 10:49

    The thing is, but even an imperfect measurement is better than simply doing gut-driven, um, decisions. And with that, at least you can do data-informed decisions.

  59. 11:03

    Right. In-- Sorry, uh, I had my audio on.

  60. 11:11

    In DevTools for agents, we're addressing, uh, token burn from three different, three different angles. First, there's tool categorization, so

  61. 11:20

    very straightforward. We hide, hide niche, niche tools, we hide command line parameters. Like, for example, uh, we have tools for Chrome extension debugging.

  62. 11:31

    And not everybody is developing Chrome extensions, so why add it to the default context window? There's no point in doing that.

  63. 11:38

    Then there's a slim mode, and this one is fun. So what slim mode is doing is like, uh, pushing tool categorization to its limits. It's only exposing, I think, three different tools.

  64. 11:50

    Select page, navigate page, and evaluate script. And this is great for a context window, but there's a trade-off. I'm going to talk about a lot about trade-offs today. Um, there's a trade-off Because the last tools you exposed, the last tools also have, uh, to dispose for your, for your agent harness, which means your agent might do extra

  65. 12:11

    turns to achieve the same goal. It might not actually have the right tools at the-- that is supposed to actually do something like, for example, getting network requests. You can't do that with a lab-- evaluate script and stuff like that.

  66. 12:23

    Yeah. And there's also a CLI interface. Uh, sorry, there's a command line interface that we're offering. Uh, you have seen the previous talk maybe about a code model and all that stuff.

  67. 12:32

    We also support that. So it is a MCP server, yes, but there's also a, a command line interface for the same thing, giving you nearly the same functionality. What it enables you, you can have your agent chain commands together to do post-processing.

  68. 12:47

    Like in this example, I don't think you can see it. Um, the accessibility tree is extract with a, with a grab, uh, command, and then the result, the ID of the control is being piped into a click command.

  69. 12:59

    And that is, of course, sav-saving a lot of tokens doing that because the model doesn't need to process all the tokens. The token, the post-processing is happening on your computer.

  70. 13:12

    Right. Um, efficiency is useless if your agents get stuck. So that brings us to error recovery.

  71. 13:21

    And, yeah, because every time you were to-- your agent encounters an error, it's going to cost you tokens

  72. 13:30

    because it needs to retry, it needs to understand what is happening and stuff like that, and that just sucks.

  73. 13:38

    Yeah. Error recovery is a spectrum. And let's talk a little bit about that, what we are doing here. So first, of course, you should add,

  74. 13:48

    uh, useful error messages. That sounds obvious. Uh, for a lot of tools, it isn't. [chuckles] And it was also not obvious for all the tools that we actually offered. So we also did, uh, a few iterations on them to actually make the er-- make the error messages good.

  75. 14:01

    Like here, for example, uh, an unable to navigate back in a selected page for a particular tool, history entry to navigate, uh, was not found. We actually added the last sentence, and that enabled the agent to self-heal, which is super useful because then the agent doesn't need a human to actually fix the problems, but the agent can

  76. 14:19

    s-self-fix the problems. Then there's proactive detours. So be-beneath each of the agents, there's a model, and the model is being trained on certain data.

  77. 14:29

    And sometimes the-- there are things where you

  78. 14:35

    want to contact the training data, and that's what you can do with proactive detours. Like in this example, um, we detour the agent for performance profiling to our start performance trace tool and not to the lightest audit.

  79. 14:50

    And there's diagnostic playbooks. Uh, so we also offer, uh, skills, of course, and we have a skill that's called, uh, troubleshooting. And we see a lot of people have problem in setting up the Chrome DevTools, MCP server correctly, and that troubleshooting skill is then going to kick in and help the human and the agent to f-fix the

  80. 15:10

    setup issues. Again, enabling self-healing of the agent.

  81. 15:16

    And all of this increase the resilience of your product, uh, of the agent harness that you're building. And this is nice and helps you withstanding mistakes.

  82. 15:27

    And now let's talk about discoverability, which is about actually preventing them. So our initial design had one monolithic tool called Debug Webpage. So we only had one tool, Debug Webpage.

  83. 15:39

    And you could-- The-- Another agent could send a prompt there and tell it, "Hey, debug this webpage. There is some responsive layout is not working."

  84. 15:47

    And it was neat from engineering per-perspective, but it didn't really work. Uh, so we decomposed it into twenty-five different tools. And we thought problem solved. Of course, it wasn't.

  85. 15:58

    Because we traded that problem off to another, and that was agents now had twenty-five tools at their disposal. How are we going to find out which one to use when?

  86. 16:09

    Well, let's talk about that. According to this paper here, uh, ninety-seven percent of MCP tool descriptions have quality smells.

  87. 16:19

    And this matters because the schema is the UI for an agent. So let's make the UI better.

  88. 16:27

    And fixing this is a trade-off. As I said, [chuckles] it's always a trade-off. Because of course, you can make the descriptions better, and that's going to increase your context window size.

  89. 16:36

    So you probably don't want to have that, or maybe you won't. And also smaller models in particular are not that good with more descriptions because they get biased in using tools they shouldn't be using in the first place.

  90. 16:48

    There's a trade-off space. Uh, read the paper. Super interesting. Uh, yeah. But there are a few things you actually should be doing. They are relatively uncontroversial, and that is, um, define purpose.

  91. 17:04

    Clearly explain how-- what the tool core function is. Is this working? Ah, yeah, here it is.

  92. 17:10

    Come on. Yes. Ah, it says, uh, okay. Clearly explain the tool's, uh, core function, and there's usage guidelines like provide clear activation criteria.

  93. 17:21

    And how this looks like in, uh, Chrome DevTools for agents, for example. And, uh,

  94. 17:28

    again, performance.trace tool, what we have in there as a, as a description is used to find performance, uh, front-end performance issues and core web vitals, LCP, INP, CLS. Why is this relevant?

  95. 17:39

    LCP, INP, and CLS are web performance metrics, and an agent is able to make the connection, oh, I'm going to use that tool if I need to, uh, improve a page load, for example.

  96. 17:50

    We're far from finished optimizing that because models and agent harnesses also keep on, uh, changing all the time. So it's kind of like an endless quest for minimum viable description.

  97. 18:00

    Yeah, but it is what it is. You can supercharge all of that with skills. As I said, we also have skills, and that is great, uh, in particular, if you have more intricate workflows.

  98. 18:10

    But again, there's a trade-off They are not free lunch. If you pile in too many skills, uh, you're going to, [laughs] to shift the problem and run into the same problem again.

  99. 18:22

    Uh, agents are going to call your skills even if they shouldn't be calling them. Uh, your context window size is going to increase and all that stuff. The trigger of the shifting, it's not disappearing.

  100. 18:33

    Okay, now we have optimized for cost, recovery, and discovery. Let's now talk a little bit about trust, because we don't want to have a backdoor in the system.

  101. 18:43

    Chrome DevTools for agents has a feature called auto-connect, and it's kind of like it lets you as a human using your coding agent like Claude Code, share the screen with the agent like, "Hey, I'm stuck here.

  102. 18:55

    Uh, please help me debugging the, debug that and fix the problem that I'm seeing here." A-amazing feature. I really like it. Um,

  103. 19:05

    and users of course requested the feature, "Hey, why do I need to click allow all the time? I don't want to do that. Please remember my choice." And in a traditional user experience design, that would've been a clear win, right?

  104. 19:17

    Because it's just friction, friction that you want to remove. In a world where you are delegating away work to agents and automating a-away agents, you need to think about trust boundaries.

  105. 19:30

    And so that's why we actually designed it, uh, with... So that friction is actually by design because we didn't want to have that. And why? Let's talk about that.

  106. 19:39

    There's a blog post from, uh, Simon Willison about the lethal trifecta.

  107. 19:45

    QR code. You should read it. It's great. Uh, I'm not going to talk, uh, more about that.

  108. 19:52

    And utilizing that, there is a free, uh, at least free tiers that I'm thinking about in browser, uh, browsing agents more or less. You have tier one, and that is the local development environment.

  109. 20:03

    In a local development environment, you have the human-in-the-loop, and the human wants to grant access to the default Chrome profile, to the data that you already have access to, uh, to the agent in a

  110. 20:12

    time-bound manner. And then you have, uh, tier two, and tier two is, uh, agents running in a continuous integration environment, so it's controlled environments, but they're separated away. At that point, you should be using data separation, things like containers of course, but also other things like separate Chrome profiles and stuff like that.

  111. 20:31

    Um, if you want to connect to them, we also have a mechanism for that, and that is called, uh, remote debugging port. And third, there's agents with full internet access, and that is YOLO mode essentially, because every webpage out there is able to do some prompt injection attacks to your agent.

  112. 20:49

    So make sure that it do the same thing as in tier two, but also in tier three, uh, make sure that they have the domain allow lists and dom- uh, prompt injection mitigations, all that stuff together.

  113. 21:02

    Going back to the lethal trifecta, that's what we mostly reason about, uh, tier one, and that's where all those free things are coming together, so that's why we actually say no, the human actually need to consent every time.

  114. 21:15

    Key point being is a local agent, tier one, and the browsing agent fleet, tier three, re-your research agents maybe, might share a tool like Chrome DevTools for agents, but they shouldn't share nothing el-else about your security model that you're having, right?

  115. 21:31

    Okay. Let's wrap, let me wrap that up. User experience is evolving to incorporate agent experience.

  116. 21:38

    An agent is just another type of user, segment of user, also with non-functional requirements,

  117. 21:44

    efficiency, discoverability, security, stability, and so on and so on and so on.

  118. 21:50

    I shared four takeaways from Chrome DevTools for agents, um, when we are implem-- why we are implementing that. That is measure fuel, fuel efficiency of your interface with tokens per successful outcome, turn errors into recovery playbooks, audit descriptions for intent, and never compromise trust for convenience.

  119. 22:11

    Agents are our next users. Let's help them help us. And with that, I wish you a nice remaining conference. [audience applauding] [outro music]