Open source plugin for Claude Code

Give Claude a browser.
Keep your chat light.

A helper opens the web for Claude, reads the pages, and hands back a short note. Your chat stays small and cheap.

Read the source on GitHub
$ claude plugin marketplace add SirCharan/claude-browse && claude plugin install claude-browse
  • MIT licence
  • No API key
  • macOS and Linux
your chattop story?note, 9 linesabout 90 tokens arrivenews page1.2.3.4.5.6.7.8.9.about 6,400 tokens stay here
Page to note
6,400 to 90 tokens
One full run
11 seconds
Longest note
12 lines
The story

Web pages are heavy. Your chat should not carry them.

your chatpage 1page 2page 3page 4page 5page 6page 7fullover the topchat size
Chapter 01

Your chat fills up with pages.

When Claude reads a web page itself, the whole page lands in your chat. One news page is about 6,400 tokens. A token is roughly a word, and tokens are what you pay for. Every later message sends the whole chat again, pages included.

your chatyou keep talkingthe webreads and clicks out herehelper
Chapter 02

A helper goes out instead.

With claude-browse, Claude sends a helper. The helper is a second, smaller Claude (Sonnet) with its own browser. It opens the page, reads it, and clicks where it needs to. None of that reading happens in your chat.

your chattop story?note, 9 linesabout 90 tokenshelperpagepagepageabout 6,400 tokens stay out
Chapter 03

It comes back with a short note.

The helper returns a note of 12 lines at most. It says what it found, the key facts, the sources and any problems. The pages stay behind. In the measured run, the note was about 90 tokens.

Side by side

A helper reads the page. Your chat gets the answer.

You ask Claude the way you always do. A second, smaller Claude (a sub-agent) does the browsing and reports back.

Without
  1. You ask a question that needs the web
  2. Claude opens the page itself
  3. The whole page lands in your chat6,400 tokens
  4. It is re-sent with every later message

The page becomes part of the chat for good.

With claude-browse
  1. You ask with /browse
  2. A helper (a Sonnet sub-agent) opens a browser
  3. It reads and clicks. The pages stay with it.
  4. It sends back 12 lines at most
  5. Your chat keeps only the reply90 tokens

The page never enters your chat. Only the short reply does.

Every reply has the same 5 parts

  • RESULTthe answer
  • KEY DATAthe facts and numbers
  • SOURCESwhere it looked
  • ARTIFACTSfiles it saved
  • SESSION | BLOCKERSwhich window, and what got in the way

One real run, start to finish

You askBrowser opensHelper readsReply writtenChat gets it0 s11 s
Only the start and end times were measured. The steps show order, not length.
How it works

One question, one trip, one short note.

You ask in your chat as usual. The web work happens next door, and only the note comes back.

  1. 01YouType /browse and a question
  2. 02ClaudePasses the job to a helper
  3. Outside your chat
    1. 03The helperA second, smaller Claude (Sonnet)
    2. 04A browserPrivate and hidden, or your own Chrome
    3. 05The pageRead and clicked, never copied back
A note of 12 lines or less comes back to your chat. Nothing else does.

Two ways to browse

Private browserdefault

A hidden browser that starts clean. It sees none of your logins.

Your own Chrome

The Chrome you already use, signed in. Pick it for sites that need your account.

QuestionPrivate browserYour own Chrome
Where it runsA hidden browser just for the helperThe Chrome you already have open
Sees your loginsNo. It starts cleanYes. Whatever you are signed in to
How it reads pagesA structured map of the page, not pixelsTalks to Chrome directly
Sites it can visitOnly the ones you allowAny, with a warning
Best forPublic pages, checks, researchSites that need your account
Proof

One real page, weighed three ways.

You ask for the top story on Y Combinator's news page. Here is what each part weighed on 30 Sep 2026.

The whole pagewhat Claude would read by itself
6,400tokens
The clickable partsthe page map the helper read
3,350tokens
The notewhat your chat received
90tokens
Measured on 30 Sep 2026 with agent-browser 0.38.1, one visit to Y Combinator's news page. The whole run took 11 seconds.

71xThe note your chat gets is about 71 times smaller than the whole page.

Y Combinator's news page as the helper saw it on 30 Sep 2026, with the top story at number 1.
What the helper saw. It read the page as a map of clickable parts.
- link [ref=e101]
- link "Hacker News" [ref=e102]
- link "new" [ref=e103]
- link "past" [ref=e104]
- link "comments" [ref=e105]
- link "ask" [ref=e106]
- link "show" [ref=e107]
- link "jobs" [ref=e108]
- link "submit" [ref=e109]
- link "login" [ref=e110]
- cell "1." [ref=e10]
- link [ref=e261]
- cell "Livenerf: Has Opus 5.5 been nerfed yet? (github.com/ninjahawk)" [ref=e11]
  - link "Livenerf: Has Opus 5.5 been nerfed yet?" [ref=e111]
  - link "github.com/ninjahawk" [ref=e112]
- cell "563 points by bryan0 9 hours ago | hide | 239 comments" [ref=e12]

you /browse "top story on Hacker News, with points"

RESULT: The current top story on Hacker News is "Livenerf: Has Opus 5.5 been nerfed yet?", with 561 points and 239 comments.
KEY DATA:
- Title: Livenerf: Has Opus 5.5 been nerfed yet?
- Points: 561
- Comments: 239
- Linked URL: https://github.com/ninjahawk/livenerf
SOURCES: https://news.ycombinator.com
ARTIFACTS: none
SESSION: ab-hn-top (ab, closed) | BLOCKERS: none
What your chat got: the whole reply, unedited. 9 lines, about 90 tokens.

Why a small note matters later

Each new message carries the whole chat again. A page in your chat gets paid for over and over.

Illustrative

016,00032,00048,00064,00012345678910messages after the pagepage in chat: 64,000note only: 900
Each later message sends the whole chat again. This counts only the page part, 6,400 or 90 tokens a time, over 10 messages.
Trust

You can see every window, and close it.

$ browse lsdefaultpurposelegacy (unknown)owner6e2be8eebrowseragent-browserage7d 16hey-bookpurposelegacy (unknown)owner6e2be8eebrowseragent-browserage10d 15hkayakpurposelegacy (unknown)owner6e2be8eebrowseragent-browserage10d 15hetihad-bcnpurposelegacy (unknown)owner6e2be8eebrowseragent-browserage10d 15h
Chapter 04

Every browser window has a name tag.

A ledger, which is a simple record, tracks each browser window. It notes the purpose, the owner, which browser it uses, the allowed sites and the last use. Type browse ls to see them all. Nothing runs where you cannot see it.

$ browse reapdefaultidleclosedey-bookidleclosedin usestays openkayakidleclosedetihad-bcnidleclosed
Chapter 05

Idle windows get swept away.

Type browse reap to close the windows nobody is using. Add --dry-run first, and it only shows what it would close. Windows still at work stay open. In the real run below, it found 4 windows from an older version.

helper asks for a siteon your list?yesnobrowser goesto that siterefused, exit 3browser stays put

Only the sites you name

Name the sites when you start. Any other site is refused (exit code 3) before the browser moves.

the pagefingerprintkept in the logthe wordsnot kept

A fingerprint, not the words

The log keeps a short fingerprint of each page. It never stores what the page said.

PASS agent-browser 0.38.1
PASS browser-harness on PATH
WARN Chrome CDP 9222 not reachable | fix: start Chrome with --remote-debugging-port=9222
PASS ledger ok
WARN version-mismatched daemons: default, etihad-bcn, ey-book, kayak | fix: browse reap --restart-mismatch
PASS /Users/ck/.claude-browse writable

A quick health check

browse doctor checks each part of your setup. When something is off, it prints the fix.

Real output from browse ls and browse reap
$ browse ls
NAME        STACK          PURPOSE           OWNER     AGE      IDLE     PID    STATE
default     agent-browser  legacy (unknown)  6e2be8ee  7d 16h   7d 16h   74432  version-mismatch
ey-book     agent-browser  legacy (unknown)  6e2be8ee  10d 15h  10d 15h  81395  version-mismatch
kayak       agent-browser  legacy (unknown)  6e2be8ee  10d 15h  10d 15h  81228  version-mismatch
etihad-bcn  agent-browser  legacy (unknown)  6e2be8ee  10d 15h  10d 15h  80833  version-mismatch

$ browse reap --dry-run --restart-mismatch
would close default (version mismatch)
would close etihad-bcn (version mismatch)
would close ey-book (version mismatch)
would close kayak (version mismatch)
reap: closed 4, orphans removed 0, flagged 4, dry-run
Start

Three steps to your first answer.

It is free, open source, and needs no API key. It works on macOS and Linux.

  1. 01

    Add the plugin

    claude plugin marketplace add SirCharan/claude-browse && claude plugin install claude-browse
  2. 02

    Check your setup

    browse doctor
  3. 03

    Ask your first question

    /browse "top story on Hacker News, with points"

Questions

Is it free?

Yes. It is open source under the MIT licence and needs no extra API key. It runs inside the Claude Code you already use.

Which browser does it use?

By default a private, hidden browser that starts clean. If a site needs your account, it can use your own Chrome instead.

Can it see my passwords or logins?

Only in the "your own Chrome" mode, and only what that Chrome is already signed in to. The private browser sees nothing of yours.

What if a window gets left open?

Run browse ls to see every window and browse reap to close the idle ones. Add --dry-run to see the list before anything closes.

Can I keep it to certain sites?

Yes. Name the sites when you start. Anything else is refused before the browser moves.

Keep your chat light.
Give Claude a browser.

Copy the install line, run browse doctor, then ask your first question.

$ claude plugin marketplace add SirCharan/claude-browse && claude plugin install claude-browse