Product Thumbnail

shim-cli

See what your coding agent sends. Mask what you can.

Open Source
Privacy
Developer Tools
GitHub
Visit WebsiteSee on Product HuntPyPI ⧉LinkedIn ⧉Twitter ⧉Github ⧉

Hunted byMertcan SağlamMertcan Sağlam

An open-source hook and local proxy for Claude Code, Codex, Copilot CLI and VS Code. In Claude Code it masks secrets and personal data in tool results before the model reads them, and shim watch shows what a session sent and cost. No account, no telemetry.

Top comment

Hi Product Hunt, I'm Mertcan, one of the makers of shim-cli.

We built it because we wanted to see what our own coding agents send to the model. A request carries a lot more than your prompt: the system prompt and the tools array, plus every file the agent read along the way. When the agent opens a .env, the keys in it go to the model too, and nothing in the session tells you.

shim-cli sits next to the agent you already use and runs on your machine:

• shim install claude adds hooks to Claude Code. When a tool result holds an API key, a password, an email, an IBAN, a phone number or a Turkish ID number, the model gets a placeholder like <SECRET_1> instead.
• shim watch -- claude runs one session through a local proxy and prints where the input tokens went, what the session cost (or would cost on an API key), and which sensitive values were in the request and the response. It forwards every byte unchanged.

There's no account and no telemetry, and the hook adds no network destination. Codex, GitHub Copilot CLI and VS Code are supported too, with less coverage.

What it cannot do, so you know before you install:
• A prompt you type into Claude Code or Codex is not masked, because neither client lets a hook rewrite it. shim reports it, or stops it under enforce. Copilot CLI does get the masked prompt.
• In Claude Code, shell commands, the output of a failed command and files attached with @ are reported, not masked.
• Codex and Copilot CLI tool traffic is not inspected, and VS Code only reports.
• Detection is best effort and misses some values. It is not a DLP boundary.
• macOS and Linux only. Windows is first on our list.

Try it in a minute:
uv tool install --python 3.12 shim
shim demo claude
shim install claude


It's Apache-2.0 on GitHub. The feedback we want most: what shim missed in your own sessions, and which client we should go deeper on next.

Comment highlights

I build everything with Claude Code without being a developer, so I honestly have no idea what goes out in each session. The shim watch cost view is what got me. Does it also make sense on a subscription plan, or is it mostly for people paying per API call?

saw the 70ms median hook cost for the interpreter start.

are you intercepting the tool execution locally before the api call
or just proxying the whole network request for claude?

Congrats Mertcan and the shim team on the launch. Being upfront about what it can't mask, like typed prompts and failed command output, makes me trust the rest more. When a tool result gets <SECRET_1> instead of the key and the agent then writes that placeholder into a config file or a curl call, does shim swap the real value back on the way out, or does the agent just end up with a broken file?

Great idea! Congrats on the launch! How does it handle an agent that writes a script that reads a .env file and prints it? Does the output of the script get masked too? Also if the script sends the secrets out, does that get caught too?

Coding agents today are reading files, executing commands, and sending all of that information to a model on every step, and in most cases, not many people know what left the machine. This is a new channel of data collection in the development process, and it's barely studied right now.

From my point of view, working at GTM at shim, it's a small niche, but a vital one. It should be a default layer in your stack, like secret scanning and network logging. It will not be a magic solution, but a minimum for every team to enable without creating an account or going through the procurement cycle.

Masking secrets in tool results before the model ever sees them solves the thing that always made me nervous about letting Claude Code run loose, and a local proxy with no telemetry is exactly how I want to audit it.

@mertcansaglam - great addition to anyones agentic workflow. Best of luck with the launch.

If you are using an AI agent: You can paste this prompt:



Set up shim-cli 1.2.0 on this machine for me, then show me that it works.

shim-cli is an open source CLI (Apache-2.0). It finds secrets and personal data in what my coding agent sends to the model, and masks them where the client allows it.
Read first: https://github.com/GetSHIM/shim-... and https://github.com/GetSHIM/shim-...

How to work:
- Before each command, show it to me and wait for my OK.
- Use --json where a command offers it. Branch on "code" and do what "fix" says.
- Never add --yes until I have seen the --dry-run output and said yes.
- Change settings only through shim commands. Do not edit a client's settings file yourself.
- Do not use sudo, curl piped to a shell, or any flag that skips permissions or hook trust.
- Do not open, print or scan my real .env files or secrets. To list the names in a .env without values, use: shim keys .env --json
- If anything here disagrees with the README at that tag, follow the README and tell me.

Steps:
1. Check the OS. shim-cli runs on macOS and Linux. On Windows outside WSL, stop and tell me.
2. Install it with uv, or with pipx if uv is missing:
   uv tool install --python 3.12 --compile-bytecode shim
   pipx install --python python3.12 --fetch-missing-python shim
3. Ask me which agent I use: claude, codex or copilot. For VS Code, follow the README section "VS Code" instead.
4. Preview the hook and show me the target file and the fragment:
   shim install <client> --dry-run --json
   After my yes: shim install <client> --yes --json
5. Check it: shim doctor <client> --json
   For every check that is not PASS, show me its code and its fix.
6. If I use Codex, tell me to open /hooks in Codex and enable the shim entry.
7. Tell me what shim will do in my next session, as the README's "Supported clients" table says for my client.

Only if I ask: shim audit counts what my past Claude Code sessions already sent, without printing any value.

About shim-cli on Product Hunt

“See what your coding agent sends. Mask what you can.”

shim-cli launched on Product Hunt on October 18th, 2026 and earned 153 upvotes and 20 comments, earning #3 Product of the Day. An open-source hook and local proxy for Claude Code, Codex, Copilot CLI and VS Code. In Claude Code it masks secrets and personal data in tool results before the model reads them, and shim watch shows what a session sent and cost. No account, no telemetry.

shim-cli was featured in Open Source (69k followers), Privacy (11.4k followers), Developer Tools (521.3k followers) and GitHub (41.4k followers) on Product Hunt. Together, these topics include over 148k products, making this a competitive space to launch in.

Who hunted shim-cli?

shim-cli was hunted by Mertcan Sağlam. A “hunter” on Product Hunt is the community member who submits a product to the platform — uploading the images, the link, and tagging the makers behind it. Hunters typically write the first comment explaining why a product is worth attention, and their followers are notified the moment they post. Around 79% of featured launches on Product Hunt are self-hunted by their makers, but a well-known hunter still acts as a signal of quality to the rest of the community. See the full all-time top hunters leaderboard to discover who is shaping the Product Hunt ecosystem.

Want to see how shim-cli stacked up against nearby launches in real time? Check out the live launch dashboard for upvote speed charts, proximity comparisons, and more analytics.