Skip to content

Add browser use security policy and URL allowlisting #459

@kovtcharov

Description

@kovtcharov

Summary

Implement security controls for the browser use feature to prevent misuse, credential exposure, and unauthorized access.

Security Requirements

URL/Domain Controls

  • Configurable domain allowlist (`None` = all allowed)
  • Default blocked domains: banking sites, cloud consoles, email providers
  • Block dangerous protocols: `file://`, `ftp://`, `data://`, `javascript://`
  • Validate URLs before navigation

Resource Controls

  • Max pages per session (default: 50)
  • Navigation timeout (default: 30s)
  • Max concurrent browser instances (default: 1)
  • Memory limit per browser context
  • Rate limiting on navigation (max 10 pages/min)

Content Controls

  • No file downloads by default (`allow_downloads=False`)
  • No access to browser storage/cookies from other sessions
  • Incognito/isolated browser context per session
  • Clear all browser data on session end

Logging & Audit

  • Log all URLs navigated with timestamps
  • Log all form interactions (field names, not values)
  • Warn on navigation to login pages
  • Alert if credentials detected in page content

Configuration

# In ChatAgentConfig or standalone
enable_browser: bool = False  # Opt-in only
browser_security:
  allowed_domains: null       # null = all
  blocked_domains: ["bank", "chase", "gmail"]
  blocked_protocols: ["file", "ftp", "data"]
  max_pages_per_session: 50
  allow_downloads: false
  allow_javascript: true
  incognito: true

Files

  • `src/gaia/agents/chat/tools/browser_tools.py` (security validation in tool methods)
  • `src/gaia/agents/chat/agent.py` (config integration)
  • `tests/unit/chat/test_browser_security.py` (NEW)

Acceptance Criteria

  • Blocked domains/protocols raise clear error
  • Rate limiting enforced
  • Browser context isolated and cleaned up
  • All navigations logged
  • Unit tests for every security check
  • Security policy documented with rationale

Metadata

Metadata

Assignees

No one assigned

    Labels

    agentbrowser-useBrowser automation and control featuresdomain:multimodalVoice (ASR/TTS), Vision (VLM), Image gen (SD), CUAp1medium prioritysecuritySecurity-sensitive changestrack:consumer-appHermes-competitor consumer product — mobile-first, voice + messaging + memory + skills

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions