Skip to content

browser: fail startup when browser capability is declared but Chromium/proxy is unavailable #291

Description

@initializ-mk

Summary

When a skill declares requires.capabilities: [browser] but no Chromium binary is found (or the egress proxy failed to start), the runner logs an Error and continues serving — leaving the LLM with a skill that instructs browser use and no tools to do it (forge-cli/runtime/runner.go, browser registration block; decision in browserRegistrationDecision).

This is inconsistent with the requires.bins posture, where a missing required binary fails startup validation (validateSkillRequirements returns an error). It's also weaker than PR #260's own fail-closed framing.

Options

  1. Fail startup when a browser capability is active but no Chromium resolves (or the proxy is unavailable) — matches requires.bins semantics. Simplest and most consistent.
  2. Gate the leniency on dev mode — fail in prod, warn-and-continue in dev for iteration ergonomics.

Leaning toward (1) for consistency, but flagging the dev-ergonomics tradeoff for a maintainer call. It's roughly a one-liner either way.

Context

Medium finding from the PR #260 review; deferred as non-blocking pending a decision on ergonomics.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestforge-cliAffects the forge-cli command-line tool (init, run, build, mcp commands)toolsAffects builtin or adapter tools (cli_execute, http_request, browser, etc.)

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions