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 quit

Undo

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.

  1. 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 unmeasured until harn verify --run measures 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
  2. 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
  3. 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.json for 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
  4. 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 undo works 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)
  5. Or let your agent trim.

    harn trim asks 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-trim runs 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 undo puts it back.
  • --readonly refuses 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 trim or harn 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