Skip to content

v1.1.0: Merge pull request #48 from GetSHIM/release/1.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 09:52
· 99 commits to main since this release
d1cabc6

shim-cli 1.1.0

1.1.0 adds two commands and leaves the hook as it was in 1.0.3. shim audit
counts what your Claude Code sessions have already sent to the model, from
Claude Code's own history, and can delete those sessions from this computer.
shim keys lists the variables in a .env or INI file without their values,
so an agent can say which keys are set without reading the file.

Upgrading is uv tool upgrade shim. Both commands come with the package, not
the plugin: with the plugin alone, add them with
uv tool install --python 3.12 shim. The hooks need nothing new.

What already went out

shim has only ever seen what happened after it was installed. shim audit
reads Claude Code's own history and counts what has already reached the model:
by kind of value, by project, and by the way in — your prompt, a tool result, a
failed command, a file attached with @. On a synthetic history:

shim audit — Claude Code history, 3 sessions in 2 projects, 2026-09-28 to 2026-09-30

reached the model
  SECRET          10  in 2 sessions   @.env 5 · failed Bash 5
  EMAIL            3  in 3 sessions   @.env 1 · failed Bash 1 · your prompt 1
  DB_URI           2  in 2 sessions   @.env 1 · failed Bash 1

by project
  ~/work/kasa-mutabakat      SECRET 10, DB_URI 2, EMAIL 2 · last 2026-09-30
  ~/work/site                EMAIL 1 · last 2026-09-29

already masked by shim       3 values in 1 session
model output                 2 EMAIL (written by the model; it may repeat values it was given)

scanned 3 sessions, 5 KB, in 0.0 s. Nothing was changed, written or sent.

It prints no value, keeps nothing and sends nothing. shim audit --purge
deletes the transcripts of the sessions that sent something, and their lines in
history.jsonl, after you type a confirmation. It leaves Claude Code's other
per-session files, such as its backups of edited files, and says plainly that
this does not change what the model provider already received.

The names, not the values

shim keys .env lists the variables a .env or INI file defines, whether each
is set and what shim would call its value, and never the value:

.env
  APP_ENV                 set
  DATABASE_URL            set   DB_URI
  AWS_ACCESS_KEY_ID       set   SECRET
  AWS_SECRET_ACCESS_KEY   set   SECRET
  SLACK_BOT_TOKEN         set   SECRET
  LEDGER_API_TOKEN        set   SECRET
  STRIPE_SECRET_KEY       set   SECRET
  SUPPORT_EMAIL           set   EMAIL
  MAX_TOKENS              set
  TOKEN_TTL               set

Asked "which services have keys in .env?" with only a CLAUDE.md line pointing
at it, Claude Code 2.1.286 ran shim keys .env instead of opening the file and
answered: "I only listed the names with shim keys, so I haven't seen any
values." The cookbook
has the line and the permission rule that lets the agent run it without asking.