feat: add built-in Browser tab for agent-browser - #27910
Conversation
|
Codex Review: Didn't find any major issues. 🚀 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Export AGENT_BROWSER_SESSION=<chat id> on every process the execute tool starts, so agent-browser commands from a chat land in a browser session keyed by that chat instead of a shared default. Sessions show up under the chat id in the dashboard the Browser tab embeds.
|
@codex review
|
|
Codex Review: Didn't find any major issues. Delightful! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Documentation CheckNew Documentation Needed
Note The remaining changes (watch-handler refactor, right-panel tab exclusion logic, Storybook/unit tests, and the Automated review via Coder Agents |
|
@codex review |

Adds a built-in Browser tab to the Agents page right panel, alongside the built-in Terminal and Desktop tabs, when the chat's bound agent has an app with the well-known slug
agent-browser. The tab shows only while the app is embeddable and its health ishealthy(ordisabled, for templates without a healthcheck), so it appears and disappears live as the daemon comes up or goes down. The iframe stays mounted across tab switches to preserve session state.To avoid duplicates, the generic Add Tab menu and persisted workspace-app tabs now exclude the
agent-browserapp. Detection uses the existingcoder_appslug and healthcheck signals already present in the workspace data model. The workspace watch handler compares the agent app fields the chat UI consumes, so health transitions propagate without re-render churn on every heartbeat.On the backend, the chat
executetool now exportsAGENT_BROWSER_SESSION=<chat id>on every process it starts. agent-browser resolves its default session from that variable, so browser automation from each chat lands in its own isolated session (named by the chat id in the embedded dashboard) instead of a shared default browser.