Skip to content

docs: bring README up to date with shipped features - #2

Merged
digitaldrreamer merged 3 commits into
mainfrom
claude/understand-project-goals-m8s0g3
Jul 2, 2026
Merged

docs: bring README up to date with shipped features#2
digitaldrreamer merged 3 commits into
mainfrom
claude/understand-project-goals-m8s0g3

Conversation

@digitaldrreamer

Copy link
Copy Markdown
Owner

PR #1 was merged before the README could be refreshed. The README still described the CLI as "prints a notice only" and predated the implemented engine. This brings it in line with what actually ships.

Changes

  • Drop the stale "notice only" status; note the scanner, redactor, source adapters, allowlist, install command, and proxy are all implemented and tested
  • Document broom proxy (live redacting proxy; --install / --daemon / --uninstall)
  • Document broom install (Claude Code skill + Stop hook) and broom sources
  • Document the allowlist file and --allowlist / --no-allowlist flags
  • Bump the stated Node floor to >=22.13 (node:sqlite unflagged) with rationale
  • Refresh the flags tables and examples to match broom --help

Docs-only; no code changes.

🤖 Generated with Claude Code

The README still described the CLI as "prints a notice only" and predated
the implemented engine. Update it to reflect what actually ships:

- Drop the stale "notice only" status; the scanner, redactor, source
  adapters, allowlist, install command, and proxy are all implemented+tested
- Document `broom proxy` (live redacting proxy, --install/--daemon/--uninstall)
- Document `broom install` (Claude Code skill + Stop hook) and `broom sources`
- Document the allowlist file and --allowlist/--no-allowlist flags
- Bump the stated Node floor to >=22.13 (node:sqlite unflagged) with rationale
- Refresh the flags tables and examples to match `broom --help`

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@digitaldrreamer, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 22 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 70b0f8ba-f28d-4234-993b-9468b01a1d81

📥 Commits

Reviewing files that changed from the base of the PR and between d683029 and 3bf68af.

📒 Files selected for processing (5)
  • README.md
  • bin/broom.mjs
  • src/proxy.mjs
  • test/proxy-env.test.mjs
  • test/proxy-sse.test.mjs
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/understand-project-goals-m8s0g3

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@digitaldrreamer digitaldrreamer self-assigned this Jul 2, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the README.md to document several new features of broomsticks, including the local redacting proxy (broom proxy), automated Claude Code sweeps (broom install), the broom sources command, and custom allowlist support. Feedback on these additions highlights three main areas for improvement: addressing the leftover environment variables in shell profiles after running broom proxy --uninstall to prevent connection failures, documenting or optimizing the latency introduced by buffering entire streaming responses in the proxy, and recommending a global installation to avoid performance degradation when the Claude Code integration falls back to using npx.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread README.md
broom proxy --install --daemon

# Remove the daemon later
broom proxy --uninstall

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Usability Note: Running broom proxy --uninstall only removes the background daemon; it does not clean up or remove the ANTHROPIC_BASE_URL and OPENAI_BASE_URL environment variables from the shell profile files (e.g., .zshrc, .bashrc).

If these environment variables are left in the shell profiles after the proxy is uninstalled or stopped, all subsequent AI CLI tools (like Claude Code or Aider) will fail to connect to their upstream APIs (resulting in connection refused errors).

Consider:

  1. Clarifying in the README that users must manually remove these lines from their shell profiles when uninstalling, or
  2. Implementing an automatic cleanup of shell profiles in the --uninstall command (e.g., an uninstallProxyEnv function) to prevent leaving the user's shell in a broken state.

Comment thread README.md Outdated
| `POST /v1/messages` | `api.anthropic.com` | Claude Code, Aider |
| `POST /v1/chat/completions` | `api.openai.com` | Codex, OpenAI-compatible clients |

Both streaming (SSE) and non-streaming responses are handled — a streaming response is buffered in full before redaction so a secret straddling two chunks can't slip through, then re-emitted as a valid SSE stream.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Performance / UX Note: Buffering the entire streaming response in full before redacting and re-emitting it defeats the primary benefit of streaming (reducing perceived latency). For long model responses, this will cause the AI assistant's UI to appear to hang and then dump the entire response at once, leading to a degraded user experience.

Consider:

  1. Documenting this latency impact as a known limitation of the proxy in the Limitations section.
  2. Exploring a sliding-window buffering mechanism in the future, which only buffers a small window (e.g., matching the maximum length of a potential secret) before flushing, thereby preserving the streaming experience while still preventing secrets from straddling chunk boundaries.

Comment thread README.md
This adds (with your confirmation):

- `~/.claude/skills/broom-sweep/SKILL.md` — a skill that teaches Claude to preview and apply redactions
- `~/.claude/hooks/stop-broom.mjs` — a Stop hook that silently scans your transcripts after every turn

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Performance Note: The installed Stop hook (stop-broom.mjs) falls back to running npx broomsticks scan if the global broom command is not found in the PATH. Running npx on every single turn of Claude Code introduces significant latency (often 1-2+ seconds) due to package resolution overhead, making the chat experience feel sluggish.

Consider adding a note in this section recommending that users install broomsticks globally (npm install -g broomsticks) when using the automatic Claude Code integration to ensure optimal performance.

- Note that `broom proxy --uninstall` leaves base-URL env vars in shell
  profiles and they must be removed by hand (else tools hit a dead proxy)
- Recommend a global install for the Claude Code integration, since the
  Stop hook's npx fallback adds per-turn latency
- Document full-response buffering in the proxy as a streaming-latency
  limitation

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@battletest battletest Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛡️ BattleTest Security Review

No security issues found.

View full report

Two proxy fixes surfaced by PR #2 review/battletest:

1. Tool-call argument leak (security). redactAnthropicSSE / redactOpenAISSE
   only handled text deltas; every other event — including tool-call argument
   deltas (Anthropic input_json_delta, OpenAI tool_calls[].function.arguments)
   — passed through unredacted. A model echoing a secret into a tool argument
   (e.g. write_file content) leaked it to the client. Both redactors now
   accumulate and redact tool-call argument JSON alongside text, keyed by block
   / tool_call index, then collapse into the first occurrence. Extended-thinking
   blocks are deliberately left untouched (rewriting them invalidates their
   signature and breaks multi-turn thinking+tool loops) and documented as such.

2. Env-var cleanup on uninstall. Added uninstallProxyEnv() — the inverse of
   installProxyEnv() — and wired it into `broom proxy --uninstall`, so the
   ANTHROPIC_BASE_URL / OPENAI_BASE_URL block is removed from shell profiles
   instead of being left behind pointing at a dead proxy.

README updated to describe the proxy's actual scope; new tests cover the SSE
tool-call round-trip (secret split across chunks), the thinking passthrough,
and the env install/uninstall round-trip. Full suite: 38 passing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@digitaldrreamer
digitaldrreamer merged commit d336eb3 into main Jul 2, 2026
2 checks passed
@digitaldrreamer
digitaldrreamer deleted the claude/understand-project-goals-m8s0g3 branch July 2, 2026 02:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant