Skip to content

feat: add browser_execute CLI IPC route for daemon-side browser operations#26200

Merged
noanflaherty merged 1 commit into
noanflaherty/assistant-browser-cli-decouplingfrom
asst-browser-cli/pr-3-browser-ipc
Apr 17, 2026
Merged

feat: add browser_execute CLI IPC route for daemon-side browser operations#26200
noanflaherty merged 1 commit into
noanflaherty/assistant-browser-cli-decouplingfrom
asst-browser-cli/pr-3-browser-ipc

Conversation

@noanflaherty
Copy link
Copy Markdown
Contributor

@noanflaherty noanflaherty commented Apr 17, 2026

Summary

  • Add browser_execute IPC method with operation/input/sessionId params
  • Build daemon-side execution context with deterministic conversation key (browser-cli:<sessionId>)
  • Route through executeBrowserOperation with structured result payload including screenshot extraction

Part of plan: assistant-browser-cli-decoupling.md (PR 3 of 5)


Open with Devin

Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 3 additional findings.

Open in Devin Review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8ed33a1915

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

Comment on lines +75 to +77
workingDir: process.cwd(),
conversationId,
trustClass: "guardian",
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Authenticate IPC caller before assigning guardian trust

This route hardcodes trustClass: "guardian" for every browser_execute request, but the CLI IPC protocol itself does not authenticate callers (the socket server dispatches any JSON request it receives). As a result, any process that can connect to assistant-cli.sock can execute privileged browser operations (including sensitive ones like fill_credential) with guardian-level trust, bypassing the trust boundary expected for non-guardian actors. Please derive trust from an authenticated IPC identity or explicitly restrict high-risk operations on this route.

Useful? React with 👍 / 👎.

@noanflaherty noanflaherty merged commit 21c9729 into noanflaherty/assistant-browser-cli-decoupling Apr 17, 2026
12 checks passed
@noanflaherty noanflaherty deleted the asst-browser-cli/pr-3-browser-ipc branch April 17, 2026 20:35
noanflaherty added a commit that referenced this pull request Apr 17, 2026
…26235)

* refactor: add browser operations contract decoupled from tool wrappers (#26193)

* refactor: add browser operations contract decoupled from tool wrappers

* fix: remove TOOLS.json literal from doc comment to pass static analysis guard

* fix: remove bundled-skills reference from doc comment to pass static analysis guard

* refactor: make browser skill wrappers thin adapters over browser operations (#26199)

* feat: add browser_execute CLI IPC route for daemon-side browser operations (#26200)

* feat: add `assistant browser` command namespace with 17 browser subcommands (#26207)

* feat: add assistant browser command namespace with 17 browser subcommands

* fix: address review feedback — daemon terminology, help text examples, boolean flags, write error handling

1. Replace "daemon" and "CLI IPC socket" with user-friendly terminology
   in all user-facing text per AGENTS.md guidelines.

2. Add optional `helpText` field to `BrowserOperationMeta` type and
   populate it for all 16 operations with behavioral notes and 2-3
   concrete examples per CLI AGENTS.md Help Text Standards.
   `buildSubcommand` now calls `subcmd.addHelpText("after", ...)`.

3. Fix boolean flags to support explicit `false` values via Commander's
   `--no-<flag>` negation pattern. `fieldToFlag` now emits
   `--flag, --no-flag` for booleans, and `parseFieldValue` passes
   through the actual boolean value instead of always coercing to `true`.

4. Wrap `writeFileSync` for screenshot `--output` in try/catch,
   producing structured error output (JSON or log) instead of an
   unhandled stack trace on invalid path or permission errors.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: add enum choices validation and fix boolean option negation for Commander 13

- Use Commander's Option class with .choices() when field.enum is defined,
  enforcing valid values at the CLI level and showing allowed choices in --help.
  Required enum fields also call .makeOptionMandatory(true).

- Fix boolean option negation by declaring only --flag (not --flag, --no-flag).
  Commander 13 auto-generates --no-flag; the dual-declaration pattern caused
  --flag to parse as false.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: centralize browser identifier sets across permissions and side-effects (#26223)

* fix: stale comment and error message wording for wait_for_download (#26234)

* fix: IPC timeout for browser operations, JSDoc accuracy, and misleading comments (#26233)

* fix: update stale JSDoc on executeWaitForDownload to describe current state

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant