Alex Rudenko
178b790493
refactor: extract ToolHandler ( #2032 )
...
Follow-up for
https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/2030
2026-05-11 14:56:47 +00:00
dependabot[bot]
aa5e21cd02
chore(deps): bump fast-uri from 3.1.0 to 3.1.2 ( #2024 )
...
Bumps [fast-uri](https://github.com/fastify/fast-uri ) from 3.1.0 to
3.1.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fastify/fast-uri/releases ">fast-uri's
releases</a>.</em></p>
<blockquote>
<h2>v3.1.2</h2>
<h2>⚠️ Security Release</h2>
<ul>
<li>Fix for <a
href="https://github.com/fastify/fast-uri/security/advisories/GHSA-v39h-62p7-jpjc ">https://github.com/fastify/fast-uri/security/advisories/GHSA-v39h-62p7-jpjc </a></li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Handle malformed fragment decoding as a parse error by <a
href="https://github.com/mcollina "><code>@mcollina</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/171 ">fastify/fast-uri#171</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fastify/fast-uri/compare/v3.1.1...v3.1.2 ">https://github.com/fastify/fast-uri/compare/v3.1.1...v3.1.2 </a></p>
<h2>v3.1.1</h2>
<h2>⚠️ Security Release</h2>
<ul>
<li>Fix for <a
href="https://github.com/fastify/fast-uri/security/advisories/GHSA-q3j6-qgpj-74h6 ">https://github.com/fastify/fast-uri/security/advisories/GHSA-q3j6-qgpj-74h6 </a></li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>build(deps-dev): bump tsd from 0.32.0 to 0.33.0 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/148 ">fastify/fast-uri#148</a></li>
<li>build(deps): bump actions/checkout from 4 to 5 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/149 ">fastify/fast-uri#149</a></li>
<li>chore(.npmrc): ignore scripts by <a
href="https://github.com/Fdawgs "><code>@Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/150 ">fastify/fast-uri#150</a></li>
<li>build(deps-dev): remove <code>@fastify/pre-commit</code> by <a
href="https://github.com/Fdawgs "><code>@Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/151 ">fastify/fast-uri#151</a></li>
<li>build(deps): bump actions/setup-node from 4 to 5 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/152 ">fastify/fast-uri#152</a></li>
<li>ci(ci): add concurrency config by <a
href="https://github.com/Fdawgs "><code>@Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/153 ">fastify/fast-uri#153</a></li>
<li>build(deps): bump actions/setup-node from 5 to 6 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/154 ">fastify/fast-uri#154</a></li>
<li>build(deps): bump actions/checkout from 5 to 6 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/156 ">fastify/fast-uri#156</a></li>
<li>chore(license): standardise license notice by <a
href="https://github.com/Fdawgs "><code>@Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/159 ">fastify/fast-uri#159</a></li>
<li>style: remove trailing whitespace by <a
href="https://github.com/Fdawgs "><code>@Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/161 ">fastify/fast-uri#161</a></li>
<li>ci: remove unused github files by <a
href="https://github.com/Tony133 "><code>@Tony133</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/162 ">fastify/fast-uri#162</a></li>
<li>chore: update readme by <a
href="https://github.com/Tony133 "><code>@Tony133</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/164 ">fastify/fast-uri#164</a></li>
<li>build(deps): bump
fastify/workflows/.github/workflows/plugins-ci-package-manager.yml from
5 to 6 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/165 ">fastify/fast-uri#165</a></li>
<li>build(deps): bump fastify/workflows/.github/workflows/plugins-ci.yml
from 5 to 6 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/166 ">fastify/fast-uri#166</a></li>
<li>build(deps-dev): bump neostandard from 0.12.2 to 0.13.0 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/167 ">fastify/fast-uri#167</a></li>
<li>ci: add lock-threads workflow by <a
href="https://github.com/Fdawgs "><code>@Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/169 ">fastify/fast-uri#169</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Tony133 "><code>@Tony133</code></a> made
their first contribution in <a
href="https://redirect.github.com/fastify/fast-uri/pull/162 ">fastify/fast-uri#162</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.1 ">https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.1 </a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fastify/fast-uri/commit/919dd8ea7689fcc220d0d9b71307f5095e723ef9 "><code>919dd8e</code></a>
Bumped v3.1.2</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/c65ba573714af6b8e19e481d9444c27bc4355d07 "><code>c65ba57</code></a>
fixup: linting</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/6c86c17c3d76fb93aa3700ec6c0fa00faeb97293 "><code>6c86c17</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/a95158ad308df4d92bbde4eba699ce5165e9f796 "><code>a95158a</code></a>
Handle malformed fragment decoding without throwing (<a
href="https://redirect.github.com/fastify/fast-uri/issues/171 ">#171</a>)</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/cea547c91c6aae610041b17b75792ca4aa035a6d "><code>cea547c</code></a>
Bumped v3.1.1</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/876ce79b662c3e5015e4e7dffe6f37752ad34f35 "><code>876ce79</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/dcdf690b71a7bb3a19887ada65a9ab160d83bcc0 "><code>dcdf690</code></a>
ci: add lock-threads workflow (<a
href="https://redirect.github.com/fastify/fast-uri/issues/169 ">#169</a>)</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/c860e6589b1ac346f66e114b4eadb9613768108c "><code>c860e65</code></a>
build(deps-dev): bump neostandard from 0.12.2 to 0.13.0 (<a
href="https://redirect.github.com/fastify/fast-uri/issues/167 ">#167</a>)</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/9b4c6dc82fde0ca44e674403ece9185d85bb6d5f "><code>9b4c6dc</code></a>
build(deps): bump fastify/workflows/.github/workflows/plugins-ci.yml (<a
href="https://redirect.github.com/fastify/fast-uri/issues/166 ">#166</a>)</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/85d09a9f7aa76b32c2bb005a90a71e144c361d24 "><code>85d09a9</code></a>
build(deps): bump
fastify/workflows/.github/workflows/plugins-ci-package-mana...</li>
<li>Additional commits viewable in <a
href="https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.2 ">compare
view</a></li>
</ul>
</details>
<br />
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org >
2026-05-11 11:26:11 +00:00
Alex Rudenko
8e06761572
fix: only require a page in page-scoped tools ( #2030 )
...
getSelectedMcpPage and getPageById throw if the page is not found, so
these should only be called for page-scoped tools.
2026-05-11 09:39:23 +00:00
Samiya Caur
64a02d8c8e
test: fix flaky navigate_page with open dialog test ( #2020 )
...
Attempt to fix flakiness reported in #2019
2026-05-08 11:20:49 +00:00
yulunz
06e0ab6022
feat: add an error logging method ( #2006 )
2026-05-07 23:06:18 +00:00
Piotr Paulski
407c2bd03f
fix: Make fill_form more appealing when filling forms with checkboxes ( #1971 )
...
Fixes #1942
Verified using `npm run eval --
scripts/eval_scenarios/fill_select_and_checkboxes_test.ts`
Without this change, I observed 7 runs using fill_form for all controls
at once, 14 runs using click to select checkboxes and 10 runs that did
nothing (total 31 runs)
After this change: 9 fill_form using runs (passes), 1 click based
approach and 10 no-attempt fails (20 runs total)
Depending how we count the no-attempt runs, its either increase from 23%
to 45% or 33% to 90% in eval pass rate.
Co-authored-by: Piotr Paulski <piotrpaulski@chromium.org >
2026-05-07 15:00:52 +00:00
yulunz
a0d6ea1a62
chore: make Clearcut logger a global singleton ( #1999 )
...
We will add a error logging method to ClearcutLogger in a follow-up PR.
Since the error can happen anywhere in the stack, the logger instance
has to be readily available (i.e. w/o passing the logger instance
everywhere). This commit registers the instantiated logger as a global
singleton, and makes it possible to retrieve it by a static method
(`ClearcutLogger.get()`) wherever we need it.
2026-05-07 05:46:24 +00:00
Wolfgang Beyer
7548c97663
feat: support third-party developer tools ( #1982 )
...
Enables "third-party developer tools" feature. This allows the inspected
web page to expose tools which provide debugging information to Chrome
DevTools for Agents.
Third-party developer tools enable web applications to expose internal
state, component hierarchies, or specific debug data that cannot be
deduced through static analysis. This allows Chrome DevTools for Agents
to provide richer, more actionable context to AI agents during debugging
sessions.
2 additional tools are enabled in Chrome DevTools for Agents for
interacting with third-party developer tools:
`list_3p_developer_tools()` and `execute_3p_developer_tool`.
Code changes in this PR:
- Rename "in-page tools" to "third-party developer tools"
- Unhide
- Make available in CLI
- Add documentation
2026-05-06 12:43:34 +00:00
Alex Rudenko
f45f0681a2
fix: make sure env variables are consistently applied when parsing args ( #1994 )
...
This PR moves the checks for CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS and
CI env vars to parseArguments making sure it is correctly applied by the
daemon and in tests. It also updates the tests to set explicit
CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS as it might not always be
inherited. This change is likely to affect the metrics collected and
might explain some fluctuations we observed.
2026-05-05 15:44:55 +00:00
Alex Rudenko
da0441d425
docs: extract WebMCP into its own category ( #1993 )
...
Extracting WebMCP tools into a separate category for better grouping in
the docs. This changes `--experimentalWebmcp` to
`--categoryExperimentalWebmcp` to align with other experimental
categories. Debugging category was not a good fit since the tools
provided by WebMCP are not necessarily used for debugging.
cc @beaufortfrancois
2026-05-05 12:50:42 +00:00
cooleryu
510ec0f48b
fix(input): stop native select option clicks from timing out ( #1960 )
...
## Summary
Teach the `click` tool to handle accessibility snapshot targets that
point at an `option` inside a native, single-select `<select>` element.
When the target is a native select option, `click` now selects that
option through the owning `<select>` element instead of asking Puppeteer
to click an option node that has no clickable box while the dropdown is
collapsed. Other option-like targets, including custom ARIA options,
continue through the normal click path.
## Motivation
Fixes #1941 .
The text snapshot can expose native `<option>` nodes with stable uids.
This makes it natural for an agent to call `click` on an option uid
after seeing the desired option in the snapshot.
However, a collapsed native `<select>` does not expose its child
`<option>` nodes as directly clickable page boxes. In that state, the
option can exist in the DOM and accessibility tree while still having no
clickable geometry. Puppeteer therefore waits for the option to become
interactive and eventually times out.
The existing `fill` tool already handles selecting native `<select>`
options. This change keeps that guidance explicit in the `click` tool
description, while also making `click(option_uid)` robust for the native
select case that appears in the snapshot.
## Changes
- Added a constrained native select fallback in `click`:
- Only runs for single-click requests.
- Only runs when the snapshot node role is `option`.
- Only handles real `HTMLOptionElement` nodes owned by a native
`<select>`.
- Does not handle disabled selects, disabled options, disabled
optgroups, or multi-selects.
- Falls back to the existing locator click behavior for all other
targets.
- Dispatches `input` and `change` events when selecting a different
native option.
- Updated the `click` tool description to steer agents toward `fill` for
native `<select>` option selection.
- Regenerated CLI/tool reference docs with `npm run gen`.
- Added regression coverage for:
- Clicking an option uid in a collapsed native `<select>`.
- Clicking an option uid inside a native `<optgroup>`.
- Clicking a custom ARIA `role="option"` element through the normal
click path.
## Test Plan
Passed:
```bash
npm run test -- tests/tools/input.test.ts
npm run check-format
```
Also attempted:
```bash
npm run test
```
The full suite hit unrelated local failures outside this change area:
- `tests/tools/network.test.ts`: snapshot ordering difference for
redirected requests.
- `tests/tools/screenshot.test.ts`: `Page.captureScreenshot` failed for
the large full-page screenshot case with `Page is too large`.
The changed input tool tests pass locally.
## Risk
Low. The fallback is intentionally narrow:
- It is gated by the accessibility role being `option`.
- It verifies the DOM node is an actual `HTMLOptionElement`.
- It only applies to native, non-disabled, single-select `<select>`
controls.
- It does not reinterpret custom combobox/listbox implementations.
- It preserves the existing locator click path for non-native option
targets.
The main behavior change is that `click(option_uid)` can now succeed for
native collapsed dropdowns that previously timed out.
## Related Issue
Closes #1941 .
## Maintainer Context
This targets a small but high-impact mismatch between the snapshot
representation and browser interaction semantics.
The snapshot correctly exposes native options because they exist in the
accessibility tree. The click implementation previously treated that uid
like any other clickable element, but collapsed native options do not
have normal clickable layout boxes. This PR makes the native select case
explicit without expanding `click` into a general custom dropdown
heuristic.
The tool description still recommends `fill` for native `<select>`
selection so agents are guided toward the more direct tool. The code
fallback exists for the common case where an agent already selected an
option uid from the snapshot.
2026-05-04 09:12:43 +00:00
Alex Rudenko
a90378adf3
fix: always allow tmpdir access with client roots ( #1984 )
...
This PR changes the implementation to allow access to tmpdir even if the
client is not configured it explicitly because several tools default to
the tmpdir for outputs. Many clients like gemini-cli/claude do not
configure the tmp dir as a root by default.
2026-04-30 12:25:35 +00:00
Nicholas Roscino
b2b3e99d67
feat(cli): generate commands for conditional tools ( #1962 )
...
This PR adds all tools in the CLI interface. When a tool is not enabled
the server responds with an error guiding the user on how to enable the
category or the experiment.
Closes:
https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1933
2026-04-30 07:59:08 +00:00
Samiya Caur
6ce254e541
fix: add proactive tool rejection when dialog is open ( #1978 )
...
Adding proactive rejection of tool execution for tools which currently
get blocked due to open dialogs (related to #1069 )
2026-04-29 13:59:50 +00:00
Samiya Caur
f1afe842ae
test: add tests for checking behavior when dialog is open ( #1977 )
...
This is the first part of adding tests for checking tool behavior when a
dialog is already open (related to #1069 )
In future CL, I will be focusing on tools which currently get blocked
due to open dialogs. As part of those CLs, proactive rejection of tool
execution will be implemented.
2026-04-29 10:38:27 +00:00
yulunz
bf3cb58d27
fix(telemetry): bucketize string length ( #1972 )
...
Only the string length needs to be bucketized. We can log the array size
as-is.
2026-04-29 05:32:52 +00:00
Samiya Caur
06b331f403
fix: handle errors due to open dialogs during tool calls ( #1953 )
...
This change is part of the fix for #1069
- Errors during tool calls are now consumed and handled as part of
McpResponse format
2026-04-28 16:45:48 +00:00
Nikolay Vitkov
66dacb83fd
chore(memory): sort all by retainer size ( #1963 )
...
This is a better measurement as if object self size is X and the
retainerSize Y. X will always be smaller then Y, there Y will be the
actual size on the Heap.
2026-04-28 14:32:04 +00:00
Alex Rudenko
def53ddf1d
feat: support MCP client roots feature ( #1945 )
...
This PR implements
https://modelcontextprotocol.io/specification/2025-11-25/client/roots If
client specifies roots, all reads and writes to the file system
originating in tool calls will denied (including tmp files). The client
specified empty list of roots, all filesystem access will be restricted.
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1860
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Piotr Paulski <piotrpaulski@chromium.org >
2026-04-27 11:55:30 +00:00
Alex Rudenko
80bee1e6cd
fix: note about missing elements should not show in verbose mode ( #1950 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1947
2026-04-24 07:29:05 +00:00
Nikolay Vitkov
136da6a350
build: add dev source maps ( #1948 )
...
This allows setting up a debugger script with either enabled debugging
port or tools like VS Code or Antigravity.
2026-04-23 18:35:34 +00:00
@masamaru0513
dbddb2e4ef
feat: group identical consecutive console messages in list_console_messages ( #1939 )
...
## Summary
Group consecutive identical console messages in `list_console_messages`,
similar to Chrome DevTools' console grouping behavior.
Fixes #904
## Changes
- Introduce `GroupedConsoleFormatter` subclass that extends
`ConsoleFormatter` and overrides `toString()` / `toJSON()` for
count-aware formatting
- Add `ConsoleFormatter.groupConsecutive()` static method that groups
consecutive messages with the same type, text, and argument count
- Apply grouping **before pagination** so grouped counts are accurate
and page sizes reflect the collapsed view
- Add unit tests for grouping logic, string formatting, and JSON output
## Key design decisions
- **`GroupedConsoleFormatter` subclass**: Keeps the existing formatter
interface clean — no new methods added to `ConsoleFormatter`.
`ConsoleFormatter` and `GroupedConsoleFormatter` are interchangeable via
the same interface.
- **Grouping before pagination** (not at format time): This was the
feedback on #963 and #1025 — grouping at format time breaks pagination
counts. This implementation groups in `McpResponse` before calling
`paginate()`.
- **No `lastId`**: Since grouped messages are truly identical, only the
first message's ID is needed.
- **`argCount` matching**: Prevents false grouping of messages with the
same text but different argument counts.
## Output example
```
msgid=1 [log] hello world (1 args) [5 times]
```
## Testing
- Unit tests in `tests/formatters/ConsoleFormatterGrouping.test.ts`
- Manual verification: identical messages (×5), mixed pattern (A,A,B,A,A
→ A×2, B×1, A×2)
2026-04-23 09:55:18 +00:00
Nikolay Vitkov
9f5dd6229c
chore(memory): expose way to get the nodes ( #1916 )
...
The next step for the memory debugging is to provide the nodes that the
aggregates have, from which you can get the retainers of the object.
2026-04-23 09:44:06 +00:00
Wolfgang Beyer
e046c23563
chore: in-page tool output: stash DOM elements and preprocess for serialization ( #1877 )
...
Improvements for handling in-page tool responses. In order to
successfully pass an in-page tool response from the page context to the
MCP server, the response needs to be serializable. The code walks the
response object an performs the following changes:
- DOM elements are stashed onto the window object and replaced with an
ID. On the MCP server side this ID is used to map back to the
corresponding UID in the page snapshot generated from the accessibility
tree.
- Circular references are replaced with a string.
- Class instances (which can be complex or non-serializable) are
replaced with a string.
- Functions are replaced with a string.
If the in-page tool response contains DOM elements which are not part of
the page snapshot, a new snapshot is created add the missing elements
are added explicitly.
2026-04-22 14:51:09 +00:00
Alex Rudenko
85b89931ed
feat: support webm format in screencast ( #1934 )
...
Modifies the experimental screencast command to support `.webm` in
addition to `.mp4`. Renamed `path` to `filePath` to align with other
tools.
2026-04-22 13:51:51 +00:00
Alex Rudenko
b377454b1b
feat: add an option to customize ffmpeg path ( #1937 )
...
This PR adds experimental flag to customize `experimentalScreencast`
that allows specifying a different path to the ffmpeg binary.
2026-04-22 12:22:20 +00:00
Alex Rudenko
d50255778a
feat: support experimental allowlist for navigate tool calls ( #1935 )
...
This PR adds an experimental allowlist for the page navigate tool call
(requires `--experimentalNavigationAllowlist`, off by default). The
feature uses a list of URLPatterns to decline navigations that land on
disallowed URLs. If that happens, the client can update the allowlist
and re-try. The purpose of the this feature is to offer additional
guardrails on top of the MCP server. It does not restrict subresources
or JS/iframe navigations in any way. The performance impact is minimized
by turning off interception as soon as the navigation request is done.
2026-04-22 12:16:10 +00:00
Alex Rudenko
82b67b07d3
refactor: add support for CLI sessionIds in tests ( #1919 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1119
2026-04-22 08:15:36 +00:00
Nicholas Roscino
a1612be8e0
test: refactor tests to reduce duplication ( #1926 )
2026-04-21 16:07:45 +00:00
Nicholas Roscino
3ff21cf30d
feat: support Chrome extensions debugging ( #1922 )
...
Adds ability to install, uninstall and reload extensions, trigger
extension actions and inspect extension pages, service workers and
content scripts. Specify `--categoryExtensions` to enable.
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1173
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/96
---------
Co-authored-by: Mathias Bynens <mathias@qiwi.be >
Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com >
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org >
2026-04-21 14:03:15 +00:00
Nicholas Roscino
86ffd58c2f
test: add test for console log from content script ( #1920 )
...
This PR adds a test to prove extension content script can be captured in
logs for pages
2026-04-21 10:35:39 +00:00
Nikolay Vitkov
9211c6b52d
chore(memory): expose a tool for getting the inital data. ( #1909 )
...
This refactors the code to extract the Id logic from the PageCollector
and provide it in the heapsnapshot.
We need to use an UID as we need the internal ClassKey to query the
heapsnapshot, but that is a strange string (usually looking like
`,ClassName`) which may get the LLM confused as we use comma separated
output.
2026-04-20 18:39:48 +00:00
Nicholas Roscino
ec895f195a
refactor: use puppeteer Extension API ( #1911 )
...
This PR refactor the extension usages using the new Puppeteer API.
Requires puppeteer release before merging
2026-04-20 14:38:48 +00:00
Mukunda Rao Katta
3a24d71f2c
test: save WebP responses with the right extension ( #1901 )
...
## Summary
- fix the WebP MIME type match in daemon response handling
- save responses with a suffix instead of falling back to
- add a regression test for WebP image handling
## Testing
- npm run build
- node --test --test-name-pattern="parsing"
build/tests/daemon/client.test.js
Fixes #1898
2026-04-20 12:05:47 +00:00
Nikolay Vitkov
da33cb5b95
feat: auto handle dialogs during script evaluation ( #1839 )
...
Provide a argument to LLM to handle dialogs that come up during code
execution.
---------
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2026-04-20 06:42:05 +00:00
yulunz
0a6aaa52eb
chore: generate a json file for flag usage metrics ( #1881 )
...
This is the second most highly touched metric areas - so let's automate
this portion first. The approach is similar to what we have for tool
call args. The append-only logic will be added in the follow-up PR:
#1882
2026-04-17 18:50:31 +00:00
Nikolay Vitkov
0331f6a8a2
chore: implement memory snapshot information ( #1874 )
...
WIP of exposing a tool for debugging memory issue directly with the MCP
2026-04-17 12:40:41 +00:00
Asish Kumar
ea57e863f8
fix: ignore unmapped PerformanceIssue events ( #1852 )
...
## Summary
- ignore Audits `PerformanceIssue` events before passing them to the
DevTools IssuesManager mapper, which currently has no handler for that
issue code
- preserve the existing mapper/logging path for other issue codes
- add regression coverage that `PerformanceIssue` is ignored without
collecting an issue or writing a console warning
Fixes #1850
## Testing
- `npm run build`
- `npm run test:no-build -- tests/PageCollector.test.ts`
- `npm run check-format`
Signed-off-by: Asish Kumar <officialasishkumar@gmail.com >
2026-04-17 12:34:05 +00:00
Nikolay Vitkov
2f458c11eb
fix(network): trailing data in Network redirect chain ( #1880 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/1808
2026-04-17 12:19:46 +00:00
Mathias Bynens
3f0cf1068b
fix: avoid showing update notification for local builds ( #1889 )
...
Previously, we would show the notification if the local version string
was *different* from the latest version string published to npm.
With this patch, we actually check if the npm-published version is newer
and avoid showing the notification otherwise.
Closes #1886
2026-04-17 09:38:51 +00:00
Alex Rudenko
e102a43bab
test: try things to reduce flakiness ( #1879 )
2026-04-16 15:35:34 +00:00
François Beaufort
0aff266111
feat(webmcp): Add experimental tool to execute WebMCP tool ( #1873 )
...
<img width="1840" height="1191" alt="Screenshot 2026-04-16 at 11 00 37"
src="https://github.com/user-attachments/assets/6e69dfef-8903-4cbc-ba59-191edd76c0c8 "
/>
@OrKoN
2026-04-16 09:33:32 +00:00
François Beaufort
f97b573d70
feat(webmcp): Add experimental tool to list WebMCP tools page exposes ( #1845 )
...
<img width="1305" height="735" alt="image"
src="https://github.com/user-attachments/assets/ea154d81-c1cf-4758-98c2-7dce25d6ad8b "
/>
```
npx @modelcontextprotocol/inspector node build/src/bin/chrome-devtools-mcp.js --channel=canary --experimentalWebmcp --chrome-arg='--enable-features=WebMCPTesting,DevToolsWebMCPSupport'
```
<img width="1728" height="1117" alt="image"
src="https://github.com/user-attachments/assets/133ac10e-7bd3-4eaa-b1e9-25b1283e5761 "
/>
cc @OrKoN
2026-04-16 07:42:32 +00:00
Alex Rudenko
e7a0d50977
feat: ensure extensions for file outputs ( #1867 )
...
This PR ensures the extensions for the file outputs of different types
minimizing the chance of misuse. The input filePath, thus, might be
modified but it should not be an issue for clients as the final output
path is returned to the clients in the response.
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1864
---------
Co-authored-by: Nikolay Vitkov <34244704+Lightning00Blade@users.noreply.github.com >
2026-04-16 06:08:22 +00:00
dependabot[bot]
93691110b9
chore(deps-dev): bump puppeteer from 24.40.0 to 24.41.0 in the bundled group ( #1869 )
...
Bumps the bundled group with 1 update:
[puppeteer](https://github.com/puppeteer/puppeteer ).
Updates `puppeteer` from 24.40.0 to 24.41.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/releases ">puppeteer's
releases</a>.</em></p>
<blockquote>
<h2>puppeteer-core: v24.41.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v24.40.0...puppeteer-core-v24.41.0 ">24.41.0</a>
(2026-04-15)</h2>
<h3>🎉 Features</h3>
<ul>
<li>add support for Issues (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14845 ">#14845</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/6e8dbe7a998a3619f089f549009ebcb860389fdd ">6e8dbe7</a>)</li>
<li>adds extension realms api (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14824 ">#14824</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/c14f4ae7ee65fd95a4a1f9d722e73f67c37da44b ">c14f4ae</a>)</li>
<li>API to list installed browser extensions and trigger extension
actions (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14821 ">#14821</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d6395ef88103a50cb2b2c43f61953ab6a495a8c3 ">d6395ef</a>)</li>
<li>implement console event on web workers (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14784 ">#14784</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/fa6158a1dfa327df8dc8eea1eb22c49efefb3be5 ">fa6158a</a>)</li>
<li>roll to Chrome 147.0.7727.24 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14797 ">#14797</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/ee81786a8285e20afdee70e4fb8660df4d6748b0 ">ee81786</a>)</li>
<li>roll to Firefox 149.0 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14799 ">#14799</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/9fd5ceb054b0508bd8f4b14ed950a011a31f101a ">9fd5ceb</a>)</li>
<li><strong>webmcp:</strong> add hook for tool invocation (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14835 ">#14835</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/cf8169d5dee0bbff06118c211969eb94849f6bbd ">cf8169d</a>)</li>
<li><strong>webmcp:</strong> add hook for tool response (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14841 ">#14841</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/6fb05bc9e45fb2735a1c44b59ad868af2fb1ee9b ">6fb05bc</a>)</li>
<li><strong>webmcp:</strong> add initial API to inspect tool
registrations (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14814 ">#14814</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/655c996fed21d4ac7f5df841aef0c6b246ba2e9d ">655c996</a>)</li>
<li><strong>webmcp:</strong> add WebMCPTool execute support (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14851 ">#14851</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/8f95117960af969ee31595406f985c924eb67bf1 ">8f95117</a>)</li>
<li><strong>webmcp:</strong> expose WebMCPToolCall in
WebMCPToolCallResult (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14848 ">#14848</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/242ac0b2d364e9463f2b0e37f26d8bd0cfdf4d3e ">242ac0b</a>)</li>
<li><strong>webmcp:</strong> Switch from WebMCPInvocationStatus Success
to Completed (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14859 ">#14859</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/375e636beedaa5fef53d5f198fa70229d47155b5 ">375e636</a>)</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>add missing onRelease to Mutex and add tests (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14818 ">#14818</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/bf1e9722eef723c80250119d81fd9d9e0596c074 ">bf1e972</a>)</li>
<li>make <code>Target.asPage</code> return the same Page instance (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14862 ">#14862</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/e484a918c432859efbf57a74b4957097b13f8575 ">e484a91</a>)</li>
<li>remove RenderDocument from disabled Chrome features (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14745 ">#14745</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/a48eba24dcb2663da543bdf1f4597a2c1a56f0ff ">a48eba2</a>)</li>
<li>roll to Chrome 147.0.7727.50 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14819 ">#14819</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/2be30023994ee2e7ebb15e43dc0e2804256f8ca2 ">2be3002</a>)</li>
<li>roll to Chrome 147.0.7727.56 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14842 ">#14842</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/fdb3c64f8bfcff367eab862c0309f9c4bf6d6f20 ">fdb3c64</a>)</li>
<li>roll to Firefox 149.0.2 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14838 ">#14838</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/55359a3d7383c03a9d9de7ff8e24b613655694e8 ">55359a3</a>)</li>
<li>without azimuthAngle the altitudeAngle should no be specified (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14781 ">#14781</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/6f9d9752207d55be0e3b0d10ba9a416a81af4694 ">6f9d975</a>)</li>
</ul>
<h3>📄 Documentation</h3>
<ul>
<li>update extension and realm docs (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14867 ">#14867</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/080379bf24c6bd021d664bcf993457542cf76dcc ">080379b</a>)</li>
<li><strong>webmcp:</strong> Add JS example to WebMCP class (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14852 ">#14852</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/c514dba3316e742f2d2b428fd72a49890c0a2255 ">c514dba</a>)</li>
<li><strong>webmcp:</strong> Add missing documentation (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14849 ">#14849</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/76b08d20305283b9a2a2ccd5cf9c2f5bad63e337 ">76b08d2</a>)</li>
<li><strong>webmcp:</strong> tune tags and descriptions (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14844 ">#14844</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/578295815ca559790626b8aeeddeea9f9cef67be ">5782958</a>)</li>
</ul>
<h2>puppeteer: v24.41.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.40.0...puppeteer-v24.41.0 ">24.41.0</a>
(2026-04-15)</h2>
<h3>🎉 Features</h3>
<ul>
<li>roll to Chrome 147.0.7727.24 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14797 ">#14797</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/ee81786a8285e20afdee70e4fb8660df4d6748b0 ">ee81786</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md ">puppeteer's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.40.0...puppeteer-v24.41.0 ">24.41.0</a>
(2026-04-15)</h2>
<h3>🎉 Features</h3>
<ul>
<li>add support for Issues (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14845 ">#14845</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/6e8dbe7a998a3619f089f549009ebcb860389fdd ">6e8dbe7</a>)</li>
<li>adds extension realms api (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14824 ">#14824</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/c14f4ae7ee65fd95a4a1f9d722e73f67c37da44b ">c14f4ae</a>)</li>
<li>API to list installed browser extensions and trigger extension
actions (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14821 ">#14821</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d6395ef88103a50cb2b2c43f61953ab6a495a8c3 ">d6395ef</a>)</li>
<li>implement console event on web workers (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14784 ">#14784</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/fa6158a1dfa327df8dc8eea1eb22c49efefb3be5 ">fa6158a</a>)</li>
<li>roll to Chrome 147.0.7727.24 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14797 ">#14797</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/ee81786a8285e20afdee70e4fb8660df4d6748b0 ">ee81786</a>)</li>
<li>roll to Firefox 149.0 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14799 ">#14799</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/9fd5ceb054b0508bd8f4b14ed950a011a31f101a ">9fd5ceb</a>)</li>
<li><strong>webmcp:</strong> add hook for tool invocation (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14835 ">#14835</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/cf8169d5dee0bbff06118c211969eb94849f6bbd ">cf8169d</a>)</li>
<li><strong>webmcp:</strong> add hook for tool response (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14841 ">#14841</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/6fb05bc9e45fb2735a1c44b59ad868af2fb1ee9b ">6fb05bc</a>)</li>
<li><strong>webmcp:</strong> add initial API to inspect tool
registrations (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14814 ">#14814</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/655c996fed21d4ac7f5df841aef0c6b246ba2e9d ">655c996</a>)</li>
<li><strong>webmcp:</strong> add WebMCPTool execute support (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14851 ">#14851</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/8f95117960af969ee31595406f985c924eb67bf1 ">8f95117</a>)</li>
<li><strong>webmcp:</strong> expose WebMCPToolCall in
WebMCPToolCallResult (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14848 ">#14848</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/242ac0b2d364e9463f2b0e37f26d8bd0cfdf4d3e ">242ac0b</a>)</li>
<li><strong>webmcp:</strong> Switch from WebMCPInvocationStatus Success
to Completed (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14859 ">#14859</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/375e636beedaa5fef53d5f198fa70229d47155b5 ">375e636</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li>puppeteer-core bumped from 24.40.0 to 24.41.0</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>add missing onRelease to Mutex and add tests (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14818 ">#14818</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/bf1e9722eef723c80250119d81fd9d9e0596c074 ">bf1e972</a>)</li>
<li>make <code>Target.asPage</code> return the same Page instance (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14862 ">#14862</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/e484a918c432859efbf57a74b4957097b13f8575 ">e484a91</a>)</li>
<li>remove RenderDocument from disabled Chrome features (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14745 ">#14745</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/a48eba24dcb2663da543bdf1f4597a2c1a56f0ff ">a48eba2</a>)</li>
<li>roll to Chrome 147.0.7727.50 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14819 ">#14819</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/2be30023994ee2e7ebb15e43dc0e2804256f8ca2 ">2be3002</a>)</li>
<li>roll to Chrome 147.0.7727.56 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14842 ">#14842</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/fdb3c64f8bfcff367eab862c0309f9c4bf6d6f20 ">fdb3c64</a>)</li>
<li>roll to Firefox 149.0.2 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14838 ">#14838</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/55359a3d7383c03a9d9de7ff8e24b613655694e8 ">55359a3</a>)</li>
<li>without azimuthAngle the altitudeAngle should no be specified (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14781 ">#14781</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/6f9d9752207d55be0e3b0d10ba9a416a81af4694 ">6f9d975</a>)</li>
</ul>
<h3>📄 Documentation</h3>
<ul>
<li>update extension and realm docs (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14867 ">#14867</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/080379bf24c6bd021d664bcf993457542cf76dcc ">080379b</a>)</li>
<li><strong>webmcp:</strong> Add JS example to WebMCP class (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14852 ">#14852</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/c514dba3316e742f2d2b428fd72a49890c0a2255 ">c514dba</a>)</li>
<li><strong>webmcp:</strong> Add missing documentation (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14849 ">#14849</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/76b08d20305283b9a2a2ccd5cf9c2f5bad63e337 ">76b08d2</a>)</li>
<li><strong>webmcp:</strong> tune tags and descriptions (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14844 ">#14844</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/578295815ca559790626b8aeeddeea9f9cef67be ">5782958</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/2d05dfcfa321f7e6289e4658cd6f0cced3d62fe2 "><code>2d05dfc</code></a>
fix: bump node to 24 to avoid publishing bugs with npm (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14868 ">#14868</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/20402bc0f9a7daeee2afc6a9859a55ff9bf0e391 "><code>20402bc</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14866 ">#14866</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/080379bf24c6bd021d664bcf993457542cf76dcc "><code>080379b</code></a>
docs: update extension and realm docs (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14867 ">#14867</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/1f9dc746565c818d59fff9e84c3c795ddd2ec32d "><code>1f9dc74</code></a>
chore(deps): bump follow-redirects from 1.15.11 to 1.16.0 in /website
(<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14865 ">#14865</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/4655500ac52c67c782a956ea66270dfcf5a38d91 "><code>4655500</code></a>
chore(deps-dev): bump the dev-dependencies group with 8 updates (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14855 ">#14855</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/d5029415e2c3d83ed340cf29733662e9f0b58434 "><code>d502941</code></a>
test: fix extension test flakiness (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14864 ">#14864</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/e484a918c432859efbf57a74b4957097b13f8575 "><code>e484a91</code></a>
fix: make <code>Target.asPage</code> return the same Page instance (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14862 ">#14862</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/c14f4ae7ee65fd95a4a1f9d722e73f67c37da44b "><code>c14f4ae</code></a>
feat: adds extension realms api (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14824 ">#14824</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/5097b97d07eb0e3c68d99fce80efe899084a313d "><code>5097b97</code></a>
test: fix flaky extension test (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14853 ">#14853</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/8f95117960af969ee31595406f985c924eb67bf1 "><code>8f95117</code></a>
feat(webmcp): add WebMCPTool execute support (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14851 ">#14851</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.40.0...puppeteer-v24.41.0 ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
</details>
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org >
2026-04-16 05:57:05 +00:00
yulunz
528309af15
feat: add tool call params logging ( #1863 )
...
This will enable logging for tool params. The server side changes should
all be ready now.
parent pr: #1862
2026-04-15 20:19:41 +00:00
yulunz
48e484f205
chore: turn arg name into snake case in sanitization ( #1862 )
...
This fixes the casing of the tool call params. We don't need any server
side fix since they are already converted to snake case in the proto
definition. This is needed nevertheless since the sanitizeParams()
function will be called when we log the params (see the next PR: #1863
1863).
2026-04-15 18:21:19 +00:00
Alex Rudenko
5c398c4e7c
feat: support DevTools header redactions as an option ( #1848 )
...
This PR adds a CLI flag to enable redacting network headers in the same
way they are redacted in DevTools. Note that sometimes it might prevent
the agent from properly analysing network issues. Pass
`--redact-headers=false` to revert to the previous behavior.
2026-04-14 13:21:11 +00:00
dependabot[bot]
1b857c9865
chore(deps-dev): bump chrome-devtools-frontend from 1.0.1608868 to 1.0.1611390 in the bundled-devtools group ( #1837 )
...
Bumps the bundled-devtools group with 1 update:
[chrome-devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend ).
Updates `chrome-devtools-frontend` from 1.0.1608868 to 1.0.1611390
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/33ce23b14afcc640b4e15fdf16c535e2cb7b5228 "><code>33ce23b</code></a>
[settings_ui] Migrate createControlForSetting to Lit</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/cc6b3a07a9ddcaea8970fd206a3d0b5a62357acf "><code>cc6b3a0</code></a>
[console] Fix deleting wrong pin expression</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/8143bff1c7c72e08468efbad0be70abf6d8719aa "><code>8143bff</code></a>
Roll browser-protocol and CfT</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/843aa648d193a2bdaf7e2581bd782edda4c09691 "><code>843aa64</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/59ae199e9f8ebc5fb5fa00e65ec297bbff7c8559 "><code>59ae199</code></a>
[Lighthouse] Roll Lighthouse 13.1.0</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/3bcb73aaf7ff065c59be62bdd9ff0561447306c6 "><code>3bcb73a</code></a>
Bring back IgnoreManager</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/fe984400d55634ca97d7eb418e91d8d2e7ae2810 "><code>fe98440</code></a>
Role should be 'user' for content specified by the client</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/5e628fde96f28faf8da4af994e96e9cefb09f9ac "><code>5e628fd</code></a>
Align thinking pill with greenlines when walkthrough is closed</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/155667f4979a587ae3597ae98082fed8551e1cb9 "><code>155667f</code></a>
Revert "Fix flakiness in LoggingDriver by ensuring all processing
is coordina...</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/bfee745bf1baa2cb374fc926d2103fbc5e4ce06d "><code>bfee745</code></a>
[settings_ui] Migrate 'createSettingSelect' to Lit</li>
<li>Additional commits viewable in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/v1.0.1608868...v1.0.1611390 ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
</details>
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org >
2026-04-09 08:49:51 +00:00
Mathias Bynens
e01e33355e
feat: add update notification to both binaries ( #1783 )
...
Both `chrome-devtools` and `chrome-devtools-mcp` now log a notification
when a newer version is detected to be available.
This detection is implemented as follows:
1. Read the latest version from a local 24-hour cache
(`~/.cache/chrome-devtools-mcp/latest.json`).
2. If the cache is stale or missing, spawn a detached background process
to fetch the latest version from the npm registry and update the cache
file.
2026-04-02 09:38:12 +00:00