0.1 Open source, MIT licensed

Share coding-agent sessions as links.

overshare turns a Claude Code or pi session into a readable, redacted transcript your team can open in a browser. Published to your own GitHub gists. No server, no account.

npm i -g overshare
See an example →

Works with Claude Codepi

OVERSHARE SESSION RECEIPT · № 5260B8CF

fix-500-invoices

Claude Code8 prompts

Model calls20

Tokens processed400k

Est. cost$0.811

Redactions

home-path62

known-secret11

secret-pattern2

email2

Final re-scanclean ✓

Published 23.1 KBsecret gist

Thank you for not oversharing

$ overshare publish--current
overshare publishing a session from the terminal: secrets are redacted on your machine, the file is re-scanned and uploaded to a secret gist or your R2 bucket, then the link opens in the viewer, where readers can switch share modes

The interesting part of AI-written code is how it got written. Right now that lives in your scrollback, next to your API keys. (hover the bar. overshare would have kept it.)

01 / How it works

From session to link in one command.

Everything runs on your machine. The only thing that leaves it is the redacted share file.

01

Find the session

Share the one you're in, search every local session in a terminal browser, or ask the agent itself.

overshare publish --current
overshare browse
/share-session brief
  # in Claude Code or pi
02

See what gets removed

A report lists every redaction by rule and location. It never prints the values.

Redactions:
  home-path       17
  known-secret    11  ← review
  email            2
Final re-scan: clean ✓
03

Send the link

A secret gist under your account and a link that opens in the viewer.

Publish 23.1 KB to a secret
(unlisted) gist? [y/N] y

Shared: overshare.link/s/#you/5260b8cf…

02 / Modes

Choose how much to share.

Four modes, cut down before redaction and upload. What you leave out is never published.

07:02POST /v1/invoices returns a 500 when the request has no currency field. It should default to the customer's currency, and fall back to USD.

thinking 180 tok

I'll find where invoice creation resolves the currency.

grep currency in src · 4 lines
read src/invoices/create.ts · 78 lines
$ npm test -- src/invoices error
× creates an invoice without currency
edit src/invoices/create.ts +2 −1- const rate = rates[body.currency.toUpperCase()];+ const currency = (body.currency ?? customer.currency ?? "USD")…+ const rate = rates[currency];
$ npm test -- src/invoices ✓ 6 tests
Bash ×2Grep ×1Read ×2Edit ×2

src/invoices/create.ts · src/invoices/schema.ts · npm test -- src/invoices

7 tools

7 tool calls · 1 error · 2 files read · 2 edited · 180 thinking tok · 3.1k output tok

Fixed. The route dereferenced body.currency before validation, so a missing field threw inside createInvoice.

03 / Redaction

Redacted before it leaves your machine.

Then the exact bytes are scanned again. If anything is still there, overshare refuses to publish. See it in the example session →

In the transcripttool output, turn 3

$ cat /home/dana/acme/.env.test
DATABASE_URL=postgres://app:h7Qe2pXr9v@db:5432
STRIPE_SECRET_KEY=sk_live_51Hx9QeLm2…
ANTHROPIC_API_KEY=sk-ant-api03-Zr8…
OPS_CONTACT=dana@acme.dev

In the sharere-scan: clean ✓

$ cat ~/acme/.env.test
DATABASE_URL=postgres://app:[REDACTED:DATABASE_URL_PASSWORD]@db:5432
STRIPE_SECRET_KEY=[REDACTED:STRIPE_SECRET_KEY]
ANTHROPIC_API_KEY=[REDACTED:ANTHROPIC_API_KEY]
OPS_CONTACT=[email]
  1. 1Structural dropSystem prompts, CLAUDE.md and environment attachments, reminders, image data.
  2. 2Known valuesExact values of secret-looking env vars and your project's .env files.
  3. 3PatternsAbout 1,100 token formats: GitHub, Anthropic, OpenAI, AWS, Stripe, JWTs, keys.
  4. 4Paths and PIIHome directory, username and email addresses.
  5. 5Final re-scanAnything left blocks publishing.
A shared session in the overshare viewer: a failing test, two diffs, a passing test, with contents and token rails 1Contents rail 2Session stats 3Token rail

04 / Viewer

A viewer built for reading agent work.

It reads like the terminal the work happened in, laid out so you can follow it.

  • Contents rail to jump between prompts
  • Model, duration, tokens and cost at a glance
  • Tokens per turn and per model call, cache misses called out
  • One line per tool call, real diffs, highlighted shell
  • Light and dark, desktop and phone
overshare browse: a session list with a search highlighted in the preview

05 / Finder

Find the session worth sharing.

overshare browse is a terminal browser over every local Claude Code and pi session.

  • Search prompts, filter by repo, harness, model or tool
  • Preview, then read the whole session in two panes
  • Press p to publish with the same redaction

06 / FAQ

Questions

The short answers. The README has the long ones.

Read the README →
Who can see a shared session?

Anyone with the link. Shares are unlisted, not private: a secret gist isn't listed on your profile or in search, but the link is all it takes to read it.

Where is it stored?

In a secret gist on your own GitHub account, created with the gh CLI. You can use your own public R2 bucket instead. There is no overshare server.

How do I unpublish?

overshare delete <link> deletes the gist, and the link stops working.

Is the redaction perfect?

No redaction can promise that. overshare layers known values, ~1,100 patterns and PII rules, re-scans the exact bytes, and asks you to confirm when anything was found or looks suspicious. Values with no recognizable format can't be detected, so overshare report tells you which turns to check.

Can I host my own viewer?

Yes. The viewer is a static page: fork the repo and deploy it anywhere, then point viewerUrl at it.

Which agents are supported?

Claude Code and pi today. Sessions are normalized into one format, so a new harness is an adapter away.

Start sharing
sessions.

Redacted, so you never really overshare.

npm i -g overshare
Read the docs →