Claude Code · macOS · Linux · preview
See what your coding agent loads before your first message.
harn lists every skill, plugin, hook, memory file, MCP server and CLAUDE.md that Claude Code puts into its first request, with its size, where it came from, and the official switch that turns it off. Every change is reversible, byte for byte.
brew install 2lab-ai/tap/harn-preview
then run harn in any project Releases
- MIT
- macOS + Linux
- No account, no telemetry
- Reversible byte for byte
One real project, measured by harn
- items load before the first message
- 312
- of the first request, sized from files
- ~145 KB
- skill-listing entries
- 218
- network requests from harn itself
- 0
The screen, as it ships
First screen
A real project, opened read-only: everything that loads, grouped by kind, each with its size and share.
zbrain · read-only · 312 items load before your first message ~145 KB biggest: skill listing 87 KB (60%) · project 22 KB · memory 20 KB ! 2 notes ──────────────────────────────────────────────────────────────────────────────── ▸ Skill listing 218 entries 87 KB ██████████████ 60% ▸ Project files (2) 22 KB ███▌ 15% ▸ Memory (1) 20 KB ███▎ 14% ▸ Agent listing 31 entries 15 KB ██▌ 10% ▸ Plugins (10) 48 KB would leave with them · counted in the listings above ▸ Hooks (14) unmeasured ▸ Built-in (8) mostly cannot be turned off unmeasured ──────────────────────────────────────────────────────────────────────────────── Skill listing · 218 entries, one line per skill or command Sent in every first request; it has a size cap, and whether it cuts descriptions here needs `harn verify --run`. Open it (→) to see the entries by owner; d on an entry would turn that one off. ──────────────────────────────────────────────────────────────────────────────── ↑↓ move →← open/close / search i notes ? keys q quit
Plugins
→ on Plugins: one row per plugin with its source, size and share. The panel explains the cursor row.
zbrain · read-only · 312 items load before your first message ~145 KB biggest: skill listing 87 KB (60%) · project 22 KB · memory 20 KB ! 2 notes ──────────────────────────────────────────────────────────────────────────────── ▸ Skill listing 218 entries 87 KB ██████████████ 60% ▸ Project files (2) 22 KB ███▌ 15% ▸ Memory (1) 20 KB ███▎ 14% ▸ Agent listing 31 entries 15 KB ██▌ 10% ▾ Plugins (10) 48 KB would leave with them · counted in the listings above ▸ zworkflow soma-work 32 KB █████▏ 22% ▸ stv oh-my-claude 4.3 KB ▋ 2% ▸ slack official 3.7 KB ▋ 2% ▸ atlassian official 3.2 KB ▌ 2% ▸ superpowers official 2.9 KB ▌ 1% ▸ cowork-plugin-management claude.ai 0.7 KB ▏ <1% ▸ typesafe typesafe-ai 0.7 KB ▏ <1% ▸ frontend-design official 0.2 KB <1% ▸ claude-and-me oh-my-claude — runs later ── 312 items · 14 of 17 lines shown ──────────────────────────────────────────── slack · plugin from the official marketplace · enabled for every project Brings 8 skills, 5 commands and 1 MCP server. d would turn it off for this project only (.claude/settings.local.json). Turning it off frees 3.7 KB: 3.7 KB of its entries in the skill listing, plus its own unmeasured part. ──────────────────────────────────────────────────────────────────────────────── ↑↓ move →← open/close / search w where from i notes ? keys q quit
Where from
w on slack: the settings key that turns it on, where it was installed from, its files, what it brings.
zbrain · read-only · 312 items load before your first message ~145 KB biggest: skill listing 87 KB (60%) · project 22 KB · memory 20 KB ! 2 notes ──────────────────────────────────────────────────────────────────────────────── ▸ Skill listing 218 entries 87 KB ██████████████ 60% ▸ Project files (2) 22 KB ███▌ 15% ▸ Memory (1) 20 KB ███▎ 14% ▸ Agent listing 31 entries 15 KB ██▌ 10% ┌ Where slack comes from ──────────────────────────────────────────────────────┐ │ 1 ~/.claude/settings.json › enabledPlugins › slack = true (every project) │ │ 2 installed from claude-plugins-official, version 1.4.1 │ │ 3 files: ~/.claude/plugins/cache/claude-plugins-official/slack/1.4.1 │ │ 4 contributes 8 skills · 5 commands · 1 MCP server │ │ Switches this project (.claude/settings.local.json) │ │ Esc close │ └──────────────────────────────────────────────────────────────────────────────┘ ▸ frontend-design official 0.2 KB <1% ▸ claude-and-me oh-my-claude — runs later ── 312 items · 14 of 17 lines shown ──────────────────────────────────────────── slack · plugin from the official marketplace · enabled for every project Brings 8 skills, 5 commands and 1 MCP server. d would turn it off for this project only (.claude/settings.local.json). Turning it off frees 3.7 KB: 3.7 KB of its entries in the skill listing, plus its own unmeasured part. ──────────────────────────────────────────────────────────────────────────────── Esc close
Turn off
d on a plugin, in a test project: the file it writes, what leaves, what it saves, how to undo.
project · Claude Code · 83 items load before your first message ~15 KB biggest: memory 13 KB (84%) · project 1.4 KB ! 3 notes ──────────────────────────────────────────────────────────────────────────────── ▸ Memory (1) 13 KB ██████████████ 84% ▸ Project files (4) 1.4 KB █▌ 9% ▸ Skill listing 20 entries 0.5 KB ▌ 3% ▸ Agent listing 10 entries 0.4 KB ▌ 2% ┌ Turn off alpha for this project ─────────────────────────────────────────────┐ │ Writes .claude/settings.local.json → enabledPlugins.alpha = false │ │ Leaves 6 at start (alpha, 2 skills, 1 MCP server, 1 MCP instructions, │ │ 1 hook) → list │ │ Saves 0.1 KB: 0.1 KB of its entries in the skill listing, plus its own │ │ unmeasured part │ │ Undo u here, or `harn undo` later — the file is restored byte for byte │ │ Enter apply · Esc │ └──────────────────────────────────────────────────────────────────────────────┘ ──────────────────────────────────────────────────────────────────────────────── alpha · plugin from the market-one marketplace · enabled for every project Brings 2 skills, 1 MCP server and 1 hook. d turns it off for this project only (.claude/settings.local.json). Turning it off frees 0.1 KB: 0.1 KB of its entries in the skill listing, plus its own unmeasured part. Reversible with u. ──────────────────────────────────────────────────────────────────────────────── Enter apply → what leaves Esc cancel
What leaves
→ on the card: every item that leaves with the plugin.
project · Claude Code · 83 items load before your first message ~15 KB biggest: memory 13 KB (84%) · project 1.4 KB ! 3 notes ──────────────────────────────────────────────────────────────────────────────── ▸ Memory (1) 13 KB ██████████████ 84% ▸ Project files (4) 1.4 KB █▌ 9% ▸ Skill listing 20 entries 0.5 KB ▌ 3% ┌ What leaves with alpha ──────────────────────────────────────────────────────┐ │ at start (6) │ │ alpha (plugin) │ │ alpha-other (skill) │ │ alpha-skill (skill) │ │ alpha-server (MCP server) │ │ alpha-server (MCP instructions) │ │ UserPromptSubmit (hook) │ │ Esc back │ └──────────────────────────────────────────────────────────────────────────────┘ ──────────────────────────────────────────────────────────────────────────────── alpha · plugin from the market-one marketplace · enabled for every project Brings 2 skills, 1 MCP server and 1 hook. d turns it off for this project only (.claude/settings.local.json). Turning it off frees 0.1 KB: 0.1 KB of its entries in the skill listing, plus its own unmeasured part. Reversible with u. ──────────────────────────────────────────────────────────────────────────────── Esc back
Applied
Enter: one settings key written and journaled. 83 → 77 items load at start.
project · Claude Code · 77 items load before your first message ~15 KB
biggest: memory 13 KB (85%) · project 1.4 KB ! 3 notes
────────────────────────────────────────────────────────────────────────────────
▸ Memory (1) 13 KB ██████████████ 85%
▸ Project files (4) 1.4 KB █▌ 9%
▸ Agent listing 10 entries 0.4 KB ▌ 2%
▸ Skill listing 18 entries 0.3 KB ▍ 2%
▾ Plugins (2) 0.2 KB would leave with them · counted in the listings above
▸ beta market-two 0.2 KB ▎ 1%
alpha market-one — off
▸ Hooks (2) unmeasured
▸ MCP servers (2) unmeasured
▸ Built-in (7) mostly cannot be turned off unmeasured
────────────────────────────────────────────────────────────────────────────────
turned off alpha · 6 fewer items load at start (83 → 77) · u undoes
alpha · turned off · u undoes · takes effect next session
harn turned it off here; it stays off until it is turned back on.
o turns it back on (the change is reversed byte for byte).
────────────────────────────────────────────────────────────────────────────────
↑↓ move →← open/close o turn back on u undo w where from ? keys q quitUndo
u: one card says what comes back.
project · Claude Code · 77 items load before your first message ~15 KB biggest: memory 13 KB (85%) · project 1.4 KB ! 3 notes ──────────────────────────────────────────────────────────────────────────────── ▸ Memory (1) 13 KB ██████████████ 85% ▸ Project files (4) 1.4 KB █▌ 9% ▸ Agent listing 10 entries 0.4 KB ▌ 2% ▸ Skill listing 18 entries 0.3 KB ▍ 2% ▾ Plugins (2) 0.2 KB would leave with them · counted in the listings above ▸ beta market-two 0.2 KB ▎ 1% ┌ Undo the last change ────────────────────────────────────────────────────────┐ │ alpha comes back on │ │ restores .claude/settings.local.json byte for byte │ │ Enter undo · Esc keep │ └──────────────────────────────────────────────────────────────────────────────┘ ──────────────────────────────────────────────────────────────────────────────── alpha · turned off · u undoes · takes effect next session harn turned it off here; it stays off until it is turned back on. o turns it back on (the change is reversed byte for byte). ──────────────────────────────────────────────────────────────────────────────── Enter undo it Esc keep it
Enter: the file is restored byte for byte. 77 → 83.
project · Claude Code · 83 items load before your first message ~15 KB biggest: memory 13 KB (84%) · project 1.4 KB ! 3 notes ──────────────────────────────────────────────────────────────────────────────── ▸ Memory (1) 13 KB ██████████████ 84% ▸ Project files (4) 1.4 KB █▌ 9% ▸ Skill listing 20 entries 0.5 KB ▌ 3% ▸ Agent listing 10 entries 0.4 KB ▌ 2% ▾ Plugins (2) 0.3 KB would leave with them · counted in the listings above ▸ beta market-two 0.2 KB ▎ 1% ▸ alpha market-one 0.1 KB ▏ <1% ▸ Hooks (2) unmeasured ▸ MCP servers (2) unmeasured ▸ Built-in (7) mostly cannot be turned off unmeasured ──────────────────────────────────────────────────────────────────────────────── undone: alpha back · 6 more items load at start (77 → 83) alpha · plugin from the market-one marketplace · enabled for every project Brings 2 skills, 1 MCP server and 1 hook. d turns it off for this project only (.claude/settings.local.json). ──────────────────────────────────────────────────────────────────────────────── ↑↓ move →← open/close / search d turn off w where from ? keys q quit
Real output: harn 0.1.0 preview on macOS, 80×24.
How it works
Look first. Change one thing. Undo anything.
-
See everything it loads.
harn reads Claude Code's config layers without starting a session and groups what lands in the first request by kind: the skill listing, project files, memory, agents, plugins, hooks and built-ins, each with its size, a bar and its share. What files cannot size reads
unmeasureduntilharn verify --runmeasures one real session.First screen · excerpt 312 items load before your first message biggest: skill listing 87 KB (60%) · project 22 KB ▸ Skill listing 218 entries ▸ Plugins (10) 48 KB would leave with them ▸ Built-in (8) mostly cannot be turned off
-
Know where each item comes from.
Press w on any row: the settings file and key that turn it on, where it was installed from, the files on disk, and everything it contributes.
Where from · excerpt Where slack comes from ~/.claude/settings.json › enabledPlugins › slack = true installed from claude-plugins-official, version 1.4.1 contributes 8 skills · 5 commands · 1 MCP server
-
Turn one off with one card.
Press d: one card says which file it writes, what leaves with it (→ lists every item), what it saves and how to undo. Enter applies, Esc cancels. harn only uses the agent's official switches: a settings key, written to
.claude/settings.local.jsonfor this project, never a wider scope silently.Turn off · excerpt Turn off alpha for this project Writes .claude/settings.local.json → enabledPlugins.alpha = false Leaves 6 at start (alpha, 2 skills, 1 MCP server, 1 MCP instructions, 1 hook) Enter apply · Esc -
Undo, byte for byte.
harn snapshots the file before every write and journals the change. u undoes the last one, o turns an item back on, and
harn undoworks later from the shell. The file comes back byte for byte.Undo · excerpt Undo the last change alpha comes back on restores .claude/settings.local.json byte for byte undone: alpha back · 6 more items load at start (77 → 83)
-
Or let your agent trim.
harn trimasks your coding agent for a plan in one headless request, with no tools and one turn. It validates the plan, prints each change with the agent's reason and the bytes it frees, and applies only when you answer y. Inside Claude Code,/harn-trimruns the same loop.harn trim · first line and last line $ harn trim asking claude -p --output-format json --tools '' --max-turns 1 - for a plan (one model request)… apply? [y/N]
Principles
- Official switches onlyA settings key the agent already reads, never a wider scope silently.
- Reversible byte for byteA snapshot before every write;
harn undoputs it back. --readonlyrefuses every writeAnd every active verify. The screen says so in its header.- Looks without starting a sessionIt reads files. Your agent starts only on
harn trimorharn verify --run. - No network from harn itselfThe binary has no network code.
Questions
What it touches, and what it doesn't.
What does it change on disk?
Nothing until you ask. When you turn something off, harn sets one official settings key, by default in .claude/settings.local.json for this project only, never a wider scope silently. It snapshots the file first and journals the change (harn history).
How do I undo?
u on the screen undoes the last change, o turns an item back on, and harn undo works from the shell. Each one restores the file byte for byte.
Does it start Claude Code?
No. It reads the config layers and sizes what files can size. Two commands start your agent: harn trim (one headless request for a plan) and harn verify --run (one real session, which may cost one model request).
Does it send anything anywhere?
harn itself has no network code. harn trim and harn verify --run start your own agent, which talks to its provider the way it always does.
What about Codex?
Claude Code today. The Codex CLI is next; harn shows one tree per agent.
Linux?
Yes. One binary for macOS and Linux, on Apple silicon, Intel and ARM. Homebrew works on both; Releases has the four binaries and their SHA256SUMS.
Know what you're sending.
One binary for macOS and Linux, through Homebrew on both. Or take a binary and its checksum from Releases.
brew install 2lab-ai/tap/harn-preview
Claude Code today Codex CLI next