<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Browsentic changelog</title>
  <subtitle>Every release, newest first, with what it fixed and what it added. The same notes ship on GitHub with the downloads attached.</subtitle>
  <id>https://browsentic.com/changelog/</id>
  <link href="https://browsentic.com/changelog/"/>
  <link rel="self" type="application/atom+xml" href="https://browsentic.com/changelog.xml"/>
  <updated>2026-09-21T00:00:00Z</updated>
  <author><name>imshaikot</name><uri>https://github.com/imshaikot</uri></author>
  <entry>
    <title>Browsentic v0.6.2</title>
    <id>https://browsentic.com/changelog/#v0.6.2</id>
    <link href="https://browsentic.com/changelog/#v0.6.2"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.6.2" title="Downloads on GitHub"/>
    <updated>2026-09-21T00:00:00Z</updated>
    <published>2026-09-21T00:00:00Z</published>
    <summary>Codex works in the side panel again, and screenshots follow the tab a run is working in.</summary>
    <content type="html">&lt;p&gt;Codex works in the side panel again, and screenshots follow the tab a run is working in.&lt;/p&gt;
&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Codex&lt;/strong&gt;: runs start again on current Codex releases. Codex stopped accepting the flags Browsentic used to keep it read-only, so every run ended with &amp;quot;Your Codex does not understand the flags Browsentic uses&amp;quot;, and a follow-up message in the same conversation failed the same way. The read-only sandbox is unchanged (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/98b5220&quot;&gt;98b5220&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Codex&lt;/strong&gt;: browser actions are no longer refused with &amp;quot;blocked by the approval policy&amp;quot;. Browsentic&#39;s own tools are approved for the run, and each one still passes through Browsentic&#39;s approval prompt and guardrails (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/856fd2d&quot;&gt;856fd2d&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Codex&lt;/strong&gt;: the model picker offers the models Codex has now (&lt;code&gt;gpt-5.6-terra&lt;/code&gt;, &lt;code&gt;gpt-5.6-luna&lt;/code&gt;, &lt;code&gt;gpt-5.5&lt;/code&gt;) and the effort levels it accepts (&lt;code&gt;low&lt;/code&gt; to &lt;code&gt;xhigh&lt;/code&gt;). A model your account cannot use now says so in a sentence and tells you to pick another in the popup (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/768de4c&quot;&gt;768de4c&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Screenshots&lt;/strong&gt;: a screenshot captures the tab the run is working in, not whichever tab is in front (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/00096b3&quot;&gt;00096b3&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;macOS&lt;/strong&gt;: the DMG is notarized when Apple credentials are present, and the instructions for opening an unnotarized copy are correct (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/e9907a7&quot;&gt;e9907a7&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;macOS&lt;/strong&gt;: install the app with the one-line script, with the disk image as the fallback. The installer clears the quarantine flag itself (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/5e7d4d6&quot;&gt;5e7d4d6&lt;/a&gt;, &lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/473bf2e&quot;&gt;473bf2e&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.6.0</title>
    <id>https://browsentic.com/changelog/#v0.6.0</id>
    <link href="https://browsentic.com/changelog/#v0.6.0"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.6.0" title="Downloads on GitHub"/>
    <updated>2026-09-20T00:00:00Z</updated>
    <published>2026-09-20T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;mac&lt;/strong&gt;: preflight screen and the seven-tab control panel in Ember and Daylight (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/8db6231&quot;&gt;8db6231&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mac&lt;/strong&gt;: native control client, Node runtime installer and payload installer (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/d8474df&quot;&gt;d8474df&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cli&lt;/strong&gt;: add start, agent model, and --json on agent, skills, approvals and downloads (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/779fe3a&quot;&gt;779fe3a&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cli&lt;/strong&gt;: recognise an install laid down by the macOS app and leave its updates to the app (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/c0e0495&quot;&gt;c0e0495&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;readme&lt;/strong&gt;: quick start first with the macOS install, security and contributing as links (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/83a3b40&quot;&gt;83a3b40&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;the macOS app guide, its internals page, and the new CLI commands (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/6318244&quot;&gt;6318244&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;put the side panel before the MCP server on every entry surface (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/3b5d3fb&quot;&gt;3b5d3fb&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.5.0</title>
    <id>https://browsentic.com/changelog/#v0.5.0</id>
    <link href="https://browsentic.com/changelog/#v0.5.0"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.5.0" title="Downloads on GitHub"/>
    <updated>2026-09-15T00:00:00Z</updated>
    <published>2026-09-15T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;frames&lt;/strong&gt;: step into an iframe and let every page tool, site tool and live tool follow (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/7dde448&quot;&gt;7dde448&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;readme&lt;/strong&gt;: call it a completely integrated agentic browser extension (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/3a93351&quot;&gt;3a93351&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.4.15</title>
    <id>https://browsentic.com/changelog/#v0.4.15</id>
    <link href="https://browsentic.com/changelog/#v0.4.15"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.4.15" title="Downloads on GitHub"/>
    <updated>2026-09-08T00:00:00Z</updated>
    <published>2026-09-08T00:00:00Z</published>
    <summary>A finished background monitor now tells you on the page you are actually looking at.</summary>
    <content type="html">&lt;p&gt;A finished background monitor now tells you on the page you are actually looking at.&lt;/p&gt;
&lt;h3&gt;Watch completions land in the page&lt;/h3&gt;&lt;p&gt;&lt;code&gt;page.startMonitor&lt;/code&gt; watches a tab in the background: an upload reaching 100%, a build log
announcing success: and until now it announced the result with an OS notification. That is a
banner that is gone in seconds, and on a busy desktop it is easy to miss entirely.&lt;/p&gt;
&lt;p&gt;A finished watch now draws a card into the page in front of you instead: the active tab of the
focused window, falling back to the window that owns the watched tab. &lt;strong&gt;Click it and you land on
the tab that finished&lt;/strong&gt;, window focused and all.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It follows your theme, and lives in a closed shadow root: the page can neither style nor read
it, and &lt;code&gt;page.extractText&lt;/code&gt; never picks it up.&lt;/li&gt;
&lt;li&gt;Ten seconds on screen, with a draining bar. The countdown does not start until the document is
actually visible, so a minimized window does not burn it unseen.&lt;/li&gt;
&lt;li&gt;Up to three stack at once, each with a dismiss button.&lt;/li&gt;
&lt;li&gt;A monitor you stopped yourself stays silent, as before.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The OS notification is now the fallback rather than the announcement. It fires only when no page
will take a card, every tab a &lt;code&gt;chrome://&lt;/code&gt; page, or a window with nothing open, so you still
hear about it, and nothing ever notifies twice.&lt;/p&gt;
&lt;p&gt;No new permissions.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.4.14</title>
    <id>https://browsentic.com/changelog/#v0.4.14</id>
    <link href="https://browsentic.com/changelog/#v0.4.14"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.4.14" title="Downloads on GitHub"/>
    <updated>2026-09-06T00:00:00Z</updated>
    <published>2026-09-06T00:00:00Z</published>
    <summary>This release is about the install lifecycle: uninstalling, updating, and the stale copy of the command that quietly defeated both.</summary>
    <content type="html">&lt;p&gt;This release is about the install lifecycle: uninstalling, updating, and the stale copy of the
command that quietly defeated both.&lt;/p&gt;
&lt;h3&gt;Features&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;browsentic uninstall&lt;/code&gt;&lt;/strong&gt;: one command for the whole sweep (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/4517fda&quot;&gt;4517fda&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;npx browsentic uninstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It prints exactly what it will remove and asks before removing any of it: the daemon, &lt;code&gt;~/.browsentic&lt;/code&gt;,
&lt;code&gt;~/browsentic&lt;/code&gt;, and every &lt;code&gt;npx&lt;/code&gt; cache directory holding a copy of the package. Sessions are revoked
through the live daemon first, so a connected browser is told it is unpaired rather than left to
discover it.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flag&lt;/th&gt;
&lt;th&gt;Does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--dry-run&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Print the plan and stop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--yes&lt;/code&gt; / &lt;code&gt;-y&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Skip the confirmation. Required when stdin is not a terminal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--keep-skills&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Leave &lt;code&gt;skills/&lt;/code&gt; behind: site maps and hand-written notes have no other copy&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;It names, but will not touch, the extension card at &lt;code&gt;chrome://extensions&lt;/code&gt;, the command itself, your
MCP client&#39;s entry, and any directory you moved with &lt;code&gt;screenshotDir&lt;/code&gt;, &lt;code&gt;downloadDir&lt;/code&gt; or &lt;code&gt;skillsDir&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Fixes&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;update&lt;/code&gt; now reaches past its own cache&lt;/strong&gt; (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/4517fda&quot;&gt;4517fda&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npx browsentic setup&lt;/code&gt; puts nothing on your &lt;code&gt;PATH&lt;/code&gt;: it runs the package out of npm&#39;s throwaway
cache, and npm records the version it resolved the &lt;em&gt;first&lt;/em&gt; time and reuses it forever without
consulting the registry again. Because the extension ships inside the package, &lt;code&gt;update&lt;/code&gt; had nothing
newer to install and answered &amp;quot;already current&amp;quot; every time, and a reinstall after the documented
manual uninstall landed on that same old build. It looked like the installer was broken.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;setup&lt;/code&gt; and &lt;code&gt;update&lt;/code&gt; now check the registry and replace the command itself before installing
anything. A pinned &lt;code&gt;npx browsentic@&amp;lt;version&amp;gt;&lt;/code&gt; is never upgraded past, a source checkout is told
rather than touched, and &lt;code&gt;--no-self-update&lt;/code&gt; opts out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;stop&lt;/code&gt; finds a daemon whose lockfile is gone&lt;/strong&gt; (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/4517fda&quot;&gt;4517fda&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rm -rf ~/.browsentic&lt;/code&gt; takes the lockfile with it, and the running daemon never notices: it held
its port for as long as the machine was up, invisible to everything that reads &lt;code&gt;~/.browsentic&lt;/code&gt;.
&lt;code&gt;stop&lt;/code&gt; now probes 8765–8767 for whatever is actually answering, then SIGTERMs and, if it must,
SIGKILLs it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;update&lt;/code&gt; no longer promises two steps and lists one&lt;/strong&gt; (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/4517fda&quot;&gt;4517fda&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--no-pair&lt;/code&gt; was suppressing the pairing &lt;em&gt;check&lt;/em&gt;, not just the code, so every update told you to
&amp;quot;Load unpacked&amp;quot; instead of the one thing an update needs, which is pressing ↻.&lt;/p&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;release&lt;/strong&gt;: the update line no longer needs an &lt;code&gt;@latest&lt;/code&gt; to reach the newest build (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/2db3e42&quot;&gt;2db3e42&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Uninstalling, the npx cache and the orphaned-daemon failure are written up in
&lt;a href=&quot;https://github.com/imshaikot/browsentic/blob/v0.4.14/docs/guide/maintenance.md&quot;&gt;maintenance&lt;/a&gt;,
&lt;a href=&quot;https://github.com/imshaikot/browsentic/blob/v0.4.14/docs/reference/cli.md&quot;&gt;the CLI reference&lt;/a&gt;
and &lt;a href=&quot;https://github.com/imshaikot/browsentic/blob/v0.4.14/docs/guide/troubleshooting.md&quot;&gt;troubleshooting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.4.13</title>
    <id>https://browsentic.com/changelog/#v0.4.13</id>
    <link href="https://browsentic.com/changelog/#v0.4.13"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.4.13" title="Downloads on GitHub"/>
    <updated>2026-09-05T00:00:00Z</updated>
    <published>2026-09-05T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;files&lt;/strong&gt;: drop files anywhere on the panel to attach them (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/9ca3d5e&quot;&gt;9ca3d5e&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;panel&lt;/strong&gt;: pick a theme for the panel, the popup and the rail (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/11f376d&quot;&gt;11f376d&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;voice&lt;/strong&gt;: ask Chrome for the microphone at install time (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/6de4ac8&quot;&gt;6de4ac8&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;guardrails&lt;/strong&gt;: judge a navigation by where it lands, not by whether it parses (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/2a214c9&quot;&gt;2a214c9&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;panel&lt;/strong&gt;: ask the theme whether it is dark, not a dropped class (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/2fad77b&quot;&gt;2fad77b&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;maintenance&lt;/strong&gt;: uninstall by install route, not by clone (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/d364617&quot;&gt;d364617&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.4.12</title>
    <id>https://browsentic.com/changelog/#v0.4.12</id>
    <link href="https://browsentic.com/changelog/#v0.4.12"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.4.12" title="Downloads on GitHub"/>
    <updated>2026-09-03T00:00:00Z</updated>
    <published>2026-09-03T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;tools&lt;/strong&gt;: list and call the tools a site registers through WebMCP (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/b46af91&quot;&gt;b46af91&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;readme&lt;/strong&gt;: refresh social card banner (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/65c11e0&quot;&gt;65c11e0&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;readme&lt;/strong&gt;: add npm, CI, node and license badges (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/46898c7&quot;&gt;46898c7&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.4.11</title>
    <id>https://browsentic.com/changelog/#v0.4.11</id>
    <link href="https://browsentic.com/changelog/#v0.4.11"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.4.11" title="Downloads on GitHub"/>
    <updated>2026-09-01T00:00:00Z</updated>
    <published>2026-09-01T00:00:00Z</published>
    <summary>Live tools you can keep. A script the agent wrote for a page no longer disappears when the tab does: name it, and it runs by typing / on that site from then on.</summary>
    <content type="html">&lt;p&gt;Live tools you can keep. A script the agent wrote for a page no longer disappears when the tab does: name it, and it runs by typing &lt;code&gt;/&lt;/code&gt; on that site from then on.&lt;/p&gt;
&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;tools&lt;/strong&gt;: keep an approved toolkit as a named tool for its site (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/9327283&quot;&gt;9327283&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Create your own agent tool&lt;/h3&gt;&lt;p&gt;Turn the &lt;strong&gt;Live tool&lt;/strong&gt; switch on, ask for something the built-in tools cannot do, and read the code the agent writes. A second after it works, the panel asks whether to keep it.&lt;/p&gt;
&lt;p&gt;Say yes and it takes a name after the place it belongs:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;youtube.com:watch:darken-page-except-video-player
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;From then on, type &lt;code&gt;/&lt;/code&gt; on that site and it is there. No agent, no round trip, and no second approval, because you already read the code. That is what keeping it means.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/remove-tools&lt;/code&gt; lists everything you saved, with a cross beside each.&lt;/p&gt;
&lt;h3&gt;Where a tool runs&lt;/h3&gt;&lt;p&gt;Scope is the host plus the first path segment, which is the granularity real sites are built at.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;youtube.com/watch?v=anything&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;offered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;youtube.com/watch/live&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;offered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;youtube.com/results&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;not offered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;youtube.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;not offered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;music.youtube.com/watch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;not offered&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Only a zero-argument function can be kept, since &lt;code&gt;/&lt;/code&gt; passes nothing. A toolkit whose entry point takes arguments stays a one-off, which is the honest answer for something needing input each time.&lt;/p&gt;
&lt;h3&gt;What stays where&lt;/h3&gt;&lt;p&gt;The JavaScript lives in the extension&#39;s own storage and goes nowhere else. The daemon gets a markdown note that the tool exists and what it does, never how it works, so the agent can point you at it instead of writing the same thing twice.&lt;/p&gt;
&lt;p&gt;Nothing about a saved tool is a page action, so no MCP client can call one, with or without &lt;code&gt;unattended&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ci&lt;/strong&gt;: release notes now come from the annotated tag rather than the commit log (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/d1cd070&quot;&gt;d1cd070&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.4.10</title>
    <id>https://browsentic.com/changelog/#v0.4.10</id>
    <link href="https://browsentic.com/changelog/#v0.4.10"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.4.10" title="Downloads on GitHub"/>
    <updated>2026-09-01T00:00:00Z</updated>
    <published>2026-09-01T00:00:00Z</published>
    <summary>A security fix for the live tools shipped in v0.4.9. Upgrade if you use Browsentic as an MCP server.</summary>
    <content type="html">&lt;p&gt;A security fix for the live tools shipped in v0.4.9. Upgrade if you use Browsentic as an MCP server.&lt;/p&gt;
&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;guardrails&lt;/strong&gt;: &lt;code&gt;page.injectCode&lt;/code&gt; is now denied outright to external MCP callers, not merely gated behind a confirm (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/a301930&quot;&gt;a301930&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;What was wrong&lt;/h3&gt;&lt;p&gt;The live tool pair is meant to be unavailable to MCP clients: there is nobody there to read the
code, so nobody who can approve it. &lt;code&gt;page.runCode&lt;/code&gt; enforced that with a hard &lt;code&gt;deny&lt;/code&gt;, which no
config can waive.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;page.injectCode&lt;/code&gt; only used &lt;code&gt;confirm&lt;/code&gt;. An external caller resolves a confirm through
&lt;code&gt;guardrails.unattended&lt;/code&gt;, so setting&lt;/p&gt;
&lt;pre class=&quot;language-json&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;guardrails&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;unattended&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;allow&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;let an MCP client install agent-written JavaScript into the page. It also executed it: the
optional &lt;code&gt;call&lt;/code&gt; argument runs a toolkit function inside the extension without passing the
guardrail a second time, so an allowed install went straight past the very rule that denies
&lt;code&gt;page.runCode&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The result was arbitrary JavaScript running in whatever site the tab was on, in your logged-in
session, with no human ever shown the source.&lt;/p&gt;
&lt;h3&gt;Were you affected&lt;/h3&gt;&lt;p&gt;Only with &lt;code&gt;guardrails.unattended&lt;/code&gt; set to &lt;code&gt;allow&lt;/code&gt; in &lt;code&gt;~/.browsentic/config.json&lt;/code&gt;. That is not the
default, and it is not set unless you set it. The side panel was never affected: it shows the
code behind the Review button, as it always has, and the &lt;strong&gt;Live tool&lt;/strong&gt; switch still has to be on.&lt;/p&gt;
&lt;h3&gt;The fix&lt;/h3&gt;&lt;p&gt;A new &lt;code&gt;external-code-injection&lt;/code&gt; rule denies &lt;code&gt;page.injectCode&lt;/code&gt; from an external caller, mirroring
the &lt;code&gt;external-code-execution&lt;/code&gt; rule beside it. A &lt;code&gt;deny&lt;/code&gt; is not waived by &lt;code&gt;unattended&lt;/code&gt;, so both
halves of the pair are now closed by construction rather than by configuration. Four regression
tests cover it, including an install carrying a piggybacked call.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.4.9</title>
    <id>https://browsentic.com/changelog/#v0.4.9</id>
    <link href="https://browsentic.com/changelog/#v0.4.9"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.4.9" title="Downloads on GitHub"/>
    <updated>2026-09-01T00:00:00Z</updated>
    <published>2026-09-01T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;tools&lt;/strong&gt;: live tools the user reviews before they run (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/fcd3869&quot;&gt;fcd3869&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.4.8</title>
    <id>https://browsentic.com/changelog/#v0.4.8</id>
    <link href="https://browsentic.com/changelog/#v0.4.8"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.4.8" title="Downloads on GitHub"/>
    <updated>2026-08-31T00:00:00Z</updated>
    <published>2026-08-31T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;panel&lt;/strong&gt;: context-menu close and stranded-rail cleanup (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/2429f7b&quot;&gt;2429f7b&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;panel&lt;/strong&gt;: themed select menu for the agent model picker (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/bda9432&quot;&gt;bda9432&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;panel&lt;/strong&gt;: /context shows what a conversation carries (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/a33c1ed&quot;&gt;a33c1ed&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;a-eye&lt;/strong&gt;: picks carry a photograph of the element (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/8f4548d&quot;&gt;8f4548d&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;agent&lt;/strong&gt;: report token usage from the agent CLIs (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/cabb861&quot;&gt;cabb861&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;site-maps&lt;/strong&gt;: keep map reviews with their conversation (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/e6db455&quot;&gt;e6db455&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.4.7</title>
    <id>https://browsentic.com/changelog/#v0.4.7</id>
    <link href="https://browsentic.com/changelog/#v0.4.7"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.4.7" title="Downloads on GitHub"/>
    <updated>2026-08-30T00:00:00Z</updated>
    <published>2026-08-30T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;agent&lt;/strong&gt;: pick each harness&#39;s model from the picker (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/5779cea&quot;&gt;5779cea&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;readme&lt;/strong&gt;: route contributors through CONTRIBUTING.md first (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/ca4e291&quot;&gt;ca4e291&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;open the door to community contributions (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/196cd16&quot;&gt;196cd16&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;readme&lt;/strong&gt;: version the hero image URL past stale CDN copies (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/849029e&quot;&gt;849029e&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;readme&lt;/strong&gt;: recut the hero card in the launch voice (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/07a28d9&quot;&gt;07a28d9&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.4.6</title>
    <id>https://browsentic.com/changelog/#v0.4.6</id>
    <link href="https://browsentic.com/changelog/#v0.4.6"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.4.6" title="Downloads on GitHub"/>
    <updated>2026-08-29T00:00:00Z</updated>
    <published>2026-08-29T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;capture a file out of a page, not just put one into it (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/f741266&quot;&gt;f741266&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;actions&lt;/strong&gt;: read the page&#39;s console and network activity over CDP (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/41b19ce&quot;&gt;41b19ce&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;daemon&lt;/strong&gt;: resolve the source-checkout extension from the repo root again (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/95fffe4&quot;&gt;95fffe4&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.4.0</title>
    <id>https://browsentic.com/changelog/#v0.4.0</id>
    <link href="https://browsentic.com/changelog/#v0.4.0"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.4.0" title="Downloads on GitHub"/>
    <updated>2026-08-28T00:00:00Z</updated>
    <published>2026-08-28T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;cli&lt;/strong&gt;: publish as browsentic, and install the extension with one command (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/e7e7fee&quot;&gt;e7e7fee&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ci&lt;/strong&gt;: keep npm pack&#39;s stdout to the tarball name (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/fb5821e&quot;&gt;fb5821e&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Refactoring&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;move all source under src/, split extension from daemon (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/3ac92be&quot;&gt;3ac92be&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;cli&lt;/strong&gt;: rewrite the install path around npx, and rename the command (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/51ec719&quot;&gt;51ec719&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;readme&lt;/strong&gt;: lead with a social card that lives in this repo (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/17ee60c&quot;&gt;17ee60c&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.3.1</title>
    <id>https://browsentic.com/changelog/#v0.3.1</id>
    <link href="https://browsentic.com/changelog/#v0.3.1"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.3.1" title="Downloads on GitHub"/>
    <updated>2026-08-26T00:00:00Z</updated>
    <published>2026-08-26T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;timers&lt;/strong&gt;: schedule a job the browser wakes you for (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/650dcaa&quot;&gt;650dcaa&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.3.0</title>
    <id>https://browsentic.com/changelog/#v0.3.0</id>
    <link href="https://browsentic.com/changelog/#v0.3.0"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.3.0" title="Downloads on GitHub"/>
    <updated>2026-08-26T00:00:00Z</updated>
    <published>2026-08-26T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;a-eye&lt;/strong&gt;: point at an element and hand it to the agent (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/860474f&quot;&gt;860474f&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;skills&lt;/strong&gt;: attach one of the agent&#39;s own skills from a / picker (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/5297790&quot;&gt;5297790&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;panel&lt;/strong&gt;: minimize into a rail the page carries (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/ea8cbbc&quot;&gt;ea8cbbc&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;internals&lt;/strong&gt;: a flow diagram on every page, and three that animate (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/46564b9&quot;&gt;46564b9&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.2.2</title>
    <id>https://browsentic.com/changelog/#v0.2.2</id>
    <link href="https://browsentic.com/changelog/#v0.2.2"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.2.2" title="Downloads on GitHub"/>
    <updated>2026-08-22T00:00:00Z</updated>
    <published>2026-08-22T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;actions&lt;/strong&gt;: hand page text back one group at a time, resumable by cursor (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/c15925f&quot;&gt;c15925f&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;panel&lt;/strong&gt;: a settings tab for the guardrails, one row per rule (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/c7fa72f&quot;&gt;c7fa72f&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;settings&lt;/strong&gt;: describe the guardrail policy, and write one override at a time (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/7f7584a&quot;&gt;7f7584a&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;guardrails&lt;/strong&gt;: ask before a sealed secret is released, and refuse one in a URL (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/de80cd9&quot;&gt;de80cd9&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;secrets&lt;/strong&gt;: seal what the daemon and the agent write back (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/9186ebd&quot;&gt;9186ebd&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;secrets&lt;/strong&gt;: keep the plaintext in the extension, release it only into a page field (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/e6146c9&quot;&gt;e6146c9&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;secrets&lt;/strong&gt;: a deterministic sanitizer both sides of the socket can agree on (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/1383b0b&quot;&gt;1383b0b&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mapping&lt;/strong&gt;: let a mapping run record where a site&#39;s search lives (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/bf7f4cd&quot;&gt;bf7f4cd&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;intent&lt;/strong&gt;: run &amp;quot;search this site for X&amp;quot; without waking the agent (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/acfa1de&quot;&gt;acfa1de&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;actions&lt;/strong&gt;: add page.searchSite to search a site with its own search (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/82613be&quot;&gt;82613be&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;actions&lt;/strong&gt;: add page.findSearch to report how a site can be searched (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/83985cf&quot;&gt;83985cf&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;actions&lt;/strong&gt;: detect a site&#39;s search box, its toggle and its URL template (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/4d6f556&quot;&gt;4d6f556&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Refactoring&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;fill-input&lt;/strong&gt;: extract typeInto so other actions can reuse the native setter (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/5940318&quot;&gt;5940318&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;skills&lt;/strong&gt;: sealed placeholders, and asking for the next group (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/8e7c80c&quot;&gt;8e7c80c&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tools&lt;/strong&gt;: grouped reads and the cursor page_extractText hands back (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/488d92b&quot;&gt;488d92b&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;guardrails&lt;/strong&gt;: the release rules, the settings tab and the config it writes (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/7f44e22&quot;&gt;7f44e22&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;secrets&lt;/strong&gt;: where a credential may become plaintext, and where it may not (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/5379bc1&quot;&gt;5379bc1&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tools&lt;/strong&gt;: document page_findSearch and page_searchSite (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/da07bc0&quot;&gt;da07bc0&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;skills&lt;/strong&gt;: teach the agent to search the site it is on, not the web (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/7c0801d&quot;&gt;7c0801d&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;readme&lt;/strong&gt;: illustrate the how-it-works flow, keeping the text diagram (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/5bbca50&quot;&gt;5bbca50&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;add the security policy, disclaimer and private reporting route (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/d351ecc&quot;&gt;d351ecc&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;readme&lt;/strong&gt;: restructure around key capabilities, quick start and resources (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/1899bae&quot;&gt;1899bae&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;split the manual into a user guide, internals and a reference (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/46078b6&quot;&gt;46078b6&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.2.1</title>
    <id>https://browsentic.com/changelog/#v0.2.1</id>
    <link href="https://browsentic.com/changelog/#v0.2.1"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.2.1" title="Downloads on GitHub"/>
    <updated>2026-08-20T00:00:00Z</updated>
    <published>2026-08-20T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;agent&lt;/strong&gt;: hold the agent to short answers in a narrow side panel (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/0868efb&quot;&gt;0868efb&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;agent&lt;/strong&gt;: run several tab sessions at once, one instruction per session (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/e9ed880&quot;&gt;e9ed880&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;guardrails&lt;/strong&gt;: let a pinned run reach the tabs it opened itself (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/f554cc6&quot;&gt;f554cc6&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;daemon&lt;/strong&gt;: thread runId through to the extension on every agent invoke (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/0517ba1&quot;&gt;0517ba1&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ui&lt;/strong&gt;: add a collapsible sessions rail above the side panel chat (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/379ec10&quot;&gt;379ec10&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sessions&lt;/strong&gt;: give every tab its own conversation, running side by side (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/6c00d6c&quot;&gt;6c00d6c&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bridge&lt;/strong&gt;: add useTabSessions to observe the live session registry (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/28fe9ed&quot;&gt;28fe9ed&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bridge&lt;/strong&gt;: pass runId on invokes and scope conversation resets to a session (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/f0cdd7f&quot;&gt;f0cdd7f&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bridge&lt;/strong&gt;: route agent actions to the tab their session owns (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/05e0d4a&quot;&gt;05e0d4a&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;indicator&lt;/strong&gt;: mark a working tab on the toolbar badge and its favicon (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/3a70d71&quot;&gt;3a70d71&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bridge&lt;/strong&gt;: keep a registry of tab-bound sessions in session storage (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/5889cd6&quot;&gt;5889cd6&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;protocol&lt;/strong&gt;: carry sessionId and runId across the socket, bump to v11 (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/78b6404&quot;&gt;78b6404&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bridge&lt;/strong&gt;: dispatch trusted drags through the Chrome debugger (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/d11d57e&quot;&gt;d11d57e&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;page&lt;/strong&gt;: add page.dragElement for pointer and HTML5 drag-and-drop (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/ec11a4d&quot;&gt;ec11a4d&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cli&lt;/strong&gt;: add browsentic-mcp restart to replace a stale daemon (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/e9c4fec&quot;&gt;e9c4fec&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Fixes&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;antigravity&lt;/strong&gt;: give each run its own workspace and sweep stale ones (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/e35e747&quot;&gt;e35e747&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pairing&lt;/strong&gt;: report the daemon&#39;s close reason instead of &amp;quot;no daemon is running&amp;quot; (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/907a3d5&quot;&gt;907a3d5&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Refactoring&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;bridge&lt;/strong&gt;: extract useActiveTab so callers can read the tab, not just its URL (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/7081d2c&quot;&gt;7081d2c&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bridge&lt;/strong&gt;: move the run timeline reducer into its own module (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/d02e614&quot;&gt;d02e614&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;page&lt;/strong&gt;: lift pointer geometry out of trusted-click into its own module (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/74a6a57&quot;&gt;74a6a57&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;cover the renamed check scripts and the daemon restart command (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/ed6722a&quot;&gt;ed6722a&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;describe tab-bound sessions in the architecture and feature guides (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/63ebd1a&quot;&gt;63ebd1a&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tools&lt;/strong&gt;: document page_dragElement and its two drag mechanisms (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/3acef4d&quot;&gt;3acef4d&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;skills&lt;/strong&gt;: teach the browser-control skill when and how to drag (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/4d9dd62&quot;&gt;4d9dd62&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>Browsentic v0.2.0</title>
    <id>https://browsentic.com/changelog/#v0.2.0</id>
    <link href="https://browsentic.com/changelog/#v0.2.0"/>
    <link rel="related" type="text/html" href="https://github.com/imshaikot/browsentic/releases/tag/v0.2.0" title="Downloads on GitHub"/>
    <updated>2026-08-20T00:00:00Z</updated>
    <published>2026-08-20T00:00:00Z</published>
    <content type="html">&lt;h3&gt;Features&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ui&lt;/strong&gt;: redesign the popup and side panel (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/d8c7ca2&quot;&gt;d8c7ca2&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ui&lt;/strong&gt;: new panel building blocks (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/ef516db&quot;&gt;ef516db&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;extension&lt;/strong&gt;: agent state bridge, side panel opener and context menu (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/3fd8bba&quot;&gt;3fd8bba&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;page&lt;/strong&gt;: register the new tools and enrich page info and screenshots (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/2fbecd8&quot;&gt;2fbecd8&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;page&lt;/strong&gt;: read, audit and restyle page themes (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/9bf472f&quot;&gt;9bf472f&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;page&lt;/strong&gt;: trusted clicks through the debugger API (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/f971312&quot;&gt;f971312&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;page&lt;/strong&gt;: detect captchas and walk the agent through solving them (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/36c79de&quot;&gt;36c79de&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cli&lt;/strong&gt;: agent switching and approval management commands (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/25a3452&quot;&gt;25a3452&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;daemon&lt;/strong&gt;: route every run through guardrails and the chosen agent (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/0611590&quot;&gt;0611590&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;agent&lt;/strong&gt;: split the runner into adapters for claude, codex and antigravity (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/69aa05e&quot;&gt;69aa05e&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mcp&lt;/strong&gt;: remember per-site approvals granted from the panel (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/24203eb&quot;&gt;24203eb&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;guardrails&lt;/strong&gt;: declarative policy, prompt fencing and spawn containment (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/20daaa2&quot;&gt;20daaa2&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bridge&lt;/strong&gt;: prove both ends of the socket with a challenge-response handshake (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/0abf895&quot;&gt;0abf895&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;agents&lt;/strong&gt;: add a catalog of supported agent CLIs (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/32db029&quot;&gt;32db029&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;document the tools, agents and the reworked architecture (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/4202df9&quot;&gt;4202df9&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;publish architecture, installation and feature guides (&lt;a href=&quot;https://github.com/imshaikot/browsentic/commit/b8fbbc0&quot;&gt;b8fbbc0&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
</feed>
