feat(mcp): MCP UX improvement#201
Merged
Merged
Conversation
…-free Telemetry no longer collects the per-skill `rationale` one-liner — it was descriptive freeform text that risked leaking session context into PostHog without measurable analytic value. Removes the `rationale` parameter from `record_skill_event`, the `rationale` property from the `bicameral.skill_begin` tool schema, the `_skill_sessions[...]["rationale"]` plumbing in server.py, and the `rationale=...` examples from every skill's `skill_begin` snippet. Report-bug skill: replaces all Bash blocks (env probing, URL construction via `python3 -c`, `open`/`xdg-open` browser launch) with agent-native behavior — `Read` for `.bicameral/config.yaml`, agent-side URL encoding, and printing the URL for the user to click. Keeps the same redaction rules and the Step 3.5 consent gate. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Implements §1 of the v0 productization plan: the wizard offers to write a permissions allowlist into ~/.claude/settings.json so catch-up flows that fire pure-read ledger queries don't spam the user with permission prompts. Bash, Edit, Write, Read/Grep/Glob, and every non-bicameral tool stay prompted — only bicameral MCP tools are pre-approved, and bicameral.reset is deny-listed so it always confirms. Wizard shows the exact diff before writing and requires explicit y/N in interactive runs. Project-level .claude/settings.json is never touched (no commit pollution). Tests cover: user-level write target, no Bash/Edit/Write in the allow list, idempotency (preserves user's own allow entries), declined consent writes nothing, extract_symbols not auto-approved. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Retires the public MCP-tool surface for extract_symbols. The internal adapter method (RealCodeLocatorAdapter.extract_symbols) and the tree-sitter helper (code_locator.indexing.symbol_extractor.extract_symbols) remain — handlers/detect_drift.py still calls them. What's gone is the MCP-callable tool that exposed the same capability to agents: - server.py: header doc count drops 15 → 14, _TOOL_NAMES entry removed, Tool(...) registration removed, dispatch branch removed. - README.md / docs/v0-architecture-current.md: drop extract_symbols from the deterministic-primitives table. - handlers/link_commit.py: tighten the ungrounded-decisions guidance string to point only at validate_symbols. The capability was redundant on the MCP surface — agents resolve files via Grep/Read and use validate_symbols / get_neighbors for index-aware work. Drift detection (the only internal consumer) keeps its direct call into the adapter. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3 tasks
Knapp-Kevin
added a commit
to Knapp-Kevin/bicameral-mcp
that referenced
this pull request
May 21, 2026
…icameralAI#200 A4) Closes A4 of BicameralAI#200's audit findings (privacy hardening). The current bug-report skill (post BicameralAI#201) does Read on .bicameral/config.yaml and dumps <contents> verbatim into the issue body. Workspace IDs, tokens, allowlists, and env-specific values leak into GitHub issues — exactly the kind of "presence not value" data the user's "transparency + accuracy + minimum data shared" directive flagged. Changes (skills/bicameral-report-bug/SKILL.md, three edits): 1. Step 2 §config.yaml: default extraction is now top-level keys only (sorted, one per line, no values / nested keys / comments). Sufficient diagnostic signal for "is this bug in the config loader?" while leaking zero values by default. 2. Step 3 body-assembly template: replace the verbatim ```yaml <contents> ``` block with the keys-only shape. Add a "values redacted by default — opt in via Step 3.5 to include verbatim" sentinel line. 3. Step 3.5 transparency preview: add the explicit verbatim toggle as a new option in the AskUserQuestion. When the operator picks "Yes, but include config.yaml verbatim", the body regenerates with the verbatim block and the preview re-displays with the new shape so the operator sees what's actually being shipped before clicking through. Update the Auto-redacted summary block to print the chosen shape. Defense-in-depth: the secret-redaction regex (api_key|token|secret| password|bearer) still runs on verbatim contents. Other findings status: - A1 (python3 portability) — closed by BicameralAI#201 (full bash removal) - A6 (browser-open success) — closed by BicameralAI#201 (URL printed, user clicks) - A7 (telemetry transparency) — partially closed by BicameralAI#201 (rationale field dropped from skill_begin telemetry) Test functionality carve-out justified per doctrine-test-functionality and the precedent across plan-156 PR A Phase 2, plan-156b Phase 1, plan-187 Phase 2, plan-197 Phase 1: skill markdown is LLM-consumed agent-instruction, not pytest-invocable. Plan-grounding lint (BicameralAI#114) self-test exit 0. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
User-facing UX wins, in install order:
~/.claude/settings.jsonafter showing the exact diff and requiring explicity/N. Project.claude/settings.jsonis never touched.bicameral.resetis deny-listed so destructive work always confirms. Tests guard the no-Bash invariant./bicameral-report-bugno longer shells out. Removed every Bash block (env probing,python3 -cURL construction,open/xdg-open/start). The skill now derives env from agent context +Readand prints a clickable URL — no shell-permission friction in the bug-report flow.rationale. It was descriptive freeform text that risked leaking session context into PostHog without measurable analytic value.extract_symbolsretired from the MCP surface. Redundant — agents resolve files via Grep/Read and usevalidate_symbols/get_neighbors. Internal adapter method stays (drift detection still uses it).Linked issues
Refs the v0 Productization Notion page (§1 — Allowlist changes during setup).
Plan / Audit / Seal
Plan: trivial; risk:L1.
extract_symbolstool surface and therationaletelemetry param are removed (no callers in production code).Test plan
pytest tests/test_setup_wizard.py -q(11/11)pytest tests/test_preflight_telemetry.py -q(19/19)pytest tests/test_phase1_code_locator.py -q(passes — internalextract_symbolsstill works)pytest tests/test_hook_command_registration.py -q(passes)bicameral-mcp setupin a scratch dir, accept allowlist, confirm~/.claude/settings.jsonhas the new entries and project.claude/settings.jsonis untouched./bicameral-report-bugin Claude Code, verify zero Bash calls and a clickable GitHub-issue URL withdev,buglabels.🤖 Generated with Claude Code