Help

Quick answers

What does Keysmith Lens do?

It replays coding-agent runs: in each request sent to the model, did your AGENTS.md, CLAUDE.md and system prompts arrive, in which layer, and when did they drop?

How does it relate to Keysmith Switch?

Both are part of the Keysmith family. Switch manages and deploys prompts; Lens checks whether they actually reach the model. Each works on its own.

Does it cost anything?

No. It's open source under the MIT License, with no account.

What do I need to install?

Just Python 3.9 or later; there are no dependencies. See Quick start.

Which agents does it support?

Any agent whose API address you can set. Tested with Claude Code, Codex, OpenCode, Pi and OpenHands; see Recording each agent.

Recording

Does recording save my API key?

No. Recording saves each request's method, path and body; headers are never written. See Data and privacy.

Does recording slow the agent down?

Requests take one extra local hop, and responses are passed on as they arrive, so streaming is unaffected.

My agent signs in with an account, not an API key. Can I record it?

Only if the agent lets you set a custom API address when signed in. Many agents use a custom address only with an API key.

What if the agent runs in Docker?

The proxy listens on 127.0.0.1 only. Share the network with the proxy (for example docker run --network host) or run the proxy inside the container.

I already have captured requests. Can I use them?

Yes. Arrange them as captures/NNN-*.json, each with path and body_parsed fields; the format is in docs/capture-format.md on GitHub.

Reading results

What does "partly delivered" mean?

Some lines of the rule file were found in the request and others were not. Usually the agent rewrote or truncated the rule, or split it up. Open that request's raw text to check.

Why is one column faded?

It's a side request, such as title generation. It carries no tool definitions and is left out when deciding "late" and "dropped".

Why doesn't my rule file show up?

Its name may not be on the default list, or all its lines are short (under 20 characters). Name it with --rule when recording.

Can I send the HTML to someone?

It contains request text, which may include file contents, paths or private details. Redact the runs first, then build again.