Dani Akash febaf58f91 fix: guard filesystem tools behind workspace selection and handle mid-conversation changes (#595)
* fix: remove filesystem tools when no workspace is selected

- Make workingDir optional on ResolvedAgentConfig
- Remove resolveSessionDir() fallback that always created a session dir,
  masking the no-workspace state and keeping filesystem tools available
- Gate buildFilesystemToolSet() on workingDir being defined
- Add workspace change detection mid-conversation — rebuilds the agent
  session when workspace is added, removed, or switched (same pattern
  as existing MCP server change detection)
- download_file falls back to tmpdir() when no workspace is set
- Memory/soul tools are unaffected — they use ~/BrowserOS/ paths

* fix: sanitize message history when session rebuilds with different tools

When a session is rebuilt due to workspace or MCP changes, the carried-over
message history may contain tool parts for tools that no longer exist in
the new session. The AI SDK validates messages against the current toolset
and rejects parts with no matching schema.

- Add toolNames getter to AiSdkAgent exposing registered tool names
- Add sanitizeMessagesForToolset() to strip tool parts referencing
  removed tools from carried-over messages
- Apply sanitization in both MCP and workspace session rebuilds

* fix: prepend tool-change context to user message on session rebuild

When workspace or MCP integrations change mid-conversation, prepend a
[Context: ...] block to the user's message explaining what changed.
This prevents the LLM from hallucinating tool usage based on patterns
in the carried-over conversation history.

Context messages vary by change type:
- Workspace removed: lists unavailable filesystem tools, suggests
  selecting a working directory
- Workspace added: confirms filesystem tools are available with path
- Workspace switched: notes the new working directory
- MCP changed: notes that some integration tools may have changed

Only fires on the first message after a rebuild. Invisible in the UI.

* fix: make MCP change context specific about which apps were added/removed

Diff the old and new MCP server keys to produce specific context like:
- "The following app integrations were disconnected: Gmail, Slack."
- "The following app integrations were connected: Linear."
instead of a generic "some tools may no longer be available" message.

* refactor: extract shared rebuildSession helper in ChatService

Eliminates the duplicated 20-line dispose→create→sanitize→store flow
that existed separately in both the MCP and workspace change-detection
blocks.

Co-authored-by: Dani Akash <DaniAkash@users.noreply.github.com>

* test: add sanitizeMessagesForToolset test suite

Tests for the message sanitization that runs when a session rebuilds
with a different toolset (workspace or MCP change mid-conversation):

- Preserves messages with no tool parts
- Preserves tool parts when tool is in the toolset
- Strips tool parts when tool is NOT in the toolset
- Strips multiple removed tool parts from same message
- Keeps browser tools while removing filesystem tools
- Removes messages that become empty after stripping
- Preserves non-tool parts (reasoning, step-start, file)
- Returns same references when no filtering needed
- Handles empty message array and empty toolset

* style: fix biome formatting in chat-service.ts

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
2026-03-27 18:30:25 +05:30
2026-03-17 19:01:10 +05:30
2025-09-13 18:04:54 +05:30
2026-01-06 16:24:19 -08:00
2025-09-30 12:54:03 -07:00
2025-06-18 17:48:04 -07:00

BrowserOS is an open-source Chromium fork that runs AI agents natively. The privacy-first alternative to ChatGPT Atlas, Perplexity Comet, and Dia.

Use your own API keys or run local models with Ollama. Your data never leaves your machine.

Documentation · Discord · Slack · Twitter · Feature Requests

Quick Start

  1. Download and install BrowserOS — macOS · Windows · Linux (AppImage) · Linux (Debian)
  2. Import your Chrome data (optional) — bookmarks, passwords, extensions all carry over
  3. Connect your AI provider — Claude, OpenAI, Gemini, ChatGPT Pro via OAuth, or local models via Ollama/LM Studio

Features

Feature Description Docs
AI Agent 53+ browser automation tools — navigate, click, type, extract data, all with natural language Guide
MCP Server Control the browser from Claude Code, Gemini CLI, or any MCP client Setup
Workflows Build repeatable browser automations with a visual graph builder Docs
Cowork Combine browser automation with local file operations — research the web, save reports to your folder Docs
Scheduled Tasks Run agents on autopilot — daily, hourly, or every few minutes Docs
Memory Persistent memory across conversations — your assistant remembers context over time Docs
SOUL.md Define your AI's personality and instructions in a single markdown file Docs
LLM Hub Compare Claude, ChatGPT, and Gemini responses side-by-side on any page Docs
40+ App Integrations Gmail, Slack, GitHub, Linear, Notion, Figma, Salesforce, and more via MCP Docs
Vertical Tabs Side-panel tab management — stay organized even with 100+ tabs open Docs
Ad Blocking uBlock Origin + Manifest V2 support — 10x more protection than Chrome Docs
Cloud Sync Sync browser config and agent history across devices Docs
Skills Custom instruction sets that shape how your AI assistant behaves Docs
Smart Nudges Contextual suggestions to connect apps and use features at the right moment Docs

Demos

BrowserOS agent in action

BrowserOS agent in action

Install BrowserOS as MCP and control it from claude-code

https://github.com/user-attachments/assets/c725d6df-1a0d-40eb-a125-ea009bf664dc



Use BrowserOS to chat

https://github.com/user-attachments/assets/726803c5-8e36-420e-8694-c63a2607beca



Use BrowserOS to scrape data

https://github.com/user-attachments/assets/9f038216-bc24-4555-abf1-af2adcb7ebc0



Install browseros-cli

Use browseros-cli to launch and control BrowserOS from the terminal or from AI coding agents like Claude Code.

macOS / Linux:

curl -fsSL https://cdn.browseros.com/cli/install.sh | bash

Windows:

irm https://cdn.browseros.com/cli/install.ps1 | iex

After install, run browseros-cli init to connect the CLI to your running BrowserOS instance.

LLM Providers

BrowserOS works with any LLM. Bring your own keys, use OAuth, or run models locally.

Provider Type Auth
Kimi K2.5 Cloud (default) Built-in
ChatGPT Pro/Plus Cloud OAuth
GitHub Copilot Cloud OAuth
Qwen Code Cloud OAuth
Claude (Anthropic) Cloud API key
GPT-4o / o3 (OpenAI) Cloud API key
Gemini (Google) Cloud API key
Azure OpenAI Cloud API key
AWS Bedrock Cloud IAM credentials
OpenRouter Cloud API key
Ollama Local Setup
LM Studio Local Setup

How We Compare

BrowserOS Chrome Brave Dia Comet Atlas
Open Source
AI Agent
MCP Server
Visual Workflows
Cowork (files + browser)
Scheduled Tasks
Bring Your Own Keys
Local Models (Ollama)
Local-first Privacy
Ad Blocking (MV2)

Detailed comparisons:

Architecture

BrowserOS is a monorepo with two main subsystems: the browser (Chromium fork) and the agent platform (TypeScript/Go).

BrowserOS/
├── packages/browseros/              # Chromium fork + build system (Python)
│   ├── chromium_patches/            # Patches applied to Chromium source
│   ├── build/                       # Build CLI and modules
│   └── resources/                   # Icons, entitlements, signing
│
├── packages/browseros-agent/        # Agent platform (TypeScript/Go)
│   ├── apps/
│   │   ├── server/                  # MCP server + AI agent loop (Bun)
│   │   ├── agent/                   # Browser extension UI (WXT + React)
│   │   ├── cli/                     # CLI tool (Go)
│   │   ├── eval/                    # Benchmark framework
│   │   └── controller-ext/          # Chrome API bridge extension
│   │
│   └── packages/
│       ├── agent-sdk/               # Node.js SDK (npm: @browseros-ai/agent-sdk)
│       ├── cdp-protocol/            # CDP type bindings
│       └── shared/                  # Shared constants
Package What it does
packages/browseros Chromium fork — patches, build system, signing
apps/server Bun server exposing 53+ MCP tools and running the AI agent loop
apps/agent Browser extension — new tab, side panel chat, onboarding, settings
apps/cli Go CLI — control BrowserOS from the terminal or AI coding agents
apps/eval Benchmark framework — WebVoyager, Mind2Web evaluation
agent-sdk Node.js SDK for browser automation with natural language
cdp-protocol Type-safe Chrome DevTools Protocol bindings

Contributing

We'd love your help making BrowserOS better! See our Contributing Guide for details.

Agent development (TypeScript/Go) — see the agent monorepo README for setup instructions.

Browser development (C++/Python) — requires ~100GB disk space. See packages/browseros for build instructions.

Credits

  • ungoogled-chromium — BrowserOS uses some patches for enhanced privacy. Thanks to everyone behind this project!
  • The Chromium Project — at the core of BrowserOS, making it possible to exist in the first place.

License

BrowserOS is open source under the AGPL-3.0 license.

Copyright © 2025 Felafax, Inc.

Stargazers

Thank you to all our supporters!

Star History Chart

Built with ❤️ from San Francisco

Description
No description provided
Readme AGPL-3.0 18 GiB
Languages
TypeScript 65.6%
C++ 24%
Go 6.5%
C 1.5%
Objective-C++ 1%
Other 1.3%