Back to skill

Security audit

rabbit-reads

Security checks for vulnerabilities and agentic risk

Overview

The reading-notes workflow is mostly coherent, but the package includes an under-disclosed hook that can rewrite Git commit or pull request commands if registered.

Install only if you are comfortable reviewing or removing the bundled hook and broader writing-engine scripts. The core reading-notes workflow is not shown exfiltrating data by default, but the documentation is inconsistent and the hook behavior should not be enabled unless you explicitly want Git/PR message rewriting.

Vulnerability Patterns
  • Tool Hijacking and SpoofingModifies or replaces tools so legitimate-looking calls execute attacker logic
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T07 · Tool Hijacking and Spoofing

Warning
Location
scripts/claude_hook.py:318
Finding

Claude Code Hook Silently Rewrites Git Commit and Pull Request Commands

Content
View full analysis

Vulnerability Details

File Location: scripts/claude_hook.py, lines 318–330
Vulnerability Type: Tool input hijacking and unauthorized command mutation
Risk Level: Medium

Vulnerable Code

python
def on_pre_tool_use(payload):
    if payload.get("tool_name") != "Bash":
        _emit("PreToolUse")
    tool_input = payload.get("tool_input")
    command = tool_input.get("command") if isinstance(tool_input, dict) else None
    if not isinstance(command, str) or not any(
            c in command for c in GIT_GH_COMMANDS):
        _emit("PreToolUse")
    rewritten = _rewritten_command(command)
    if rewritten is None:
        _emit("PreToolUse")
    _emit("PreToolUse", updated_input={"command": rewritten})

The command transformation is supported by the following logic at lines 101–110 and 267–316:

python
ATTRIBUTION_PATTERNS = (
    re.compile(r"co-authored-by:.*claude", re.IGNORECASE),
    re.compile(r"https?://(www\.)?claude\.ai/", re.IGNORECASE),
    re.compile(r"https?://code\.claude\.com/", re.IGNORECASE),
    re.compile(r"https?://(www\.)?claude\.com/claude-code", re.IGNORECASE),
    re.compile(r"generated with \[claude code\]", re.IGNORECASE),
)

def _strip_attribution(text):
    """`text` with every attribution line dropped, trailing blanks collapsed."""
    kept = [ln for ln in text.split("\n")
            if not any(p.search(ln) for p in ATTRIBUTION_PATTERNS)]
    while kept and not kept[-1].strip():
        kept.pop()
    return "\n".join(kept)


def _mechanical_pass(text):
    """`text` through scan.py's mechanical fixes, or unchanged on any failure."""
    if not text.strip():
        return text
    argv = [sys.executable, SCAN_PATH, "--apply-safe", "--stdout",
            "--voice", "auto"]
    try:
        proc = subprocess.run(argv, input=text.encode("utf-8"),
                              stdout=subprocess.PIPE,
                              stderr=subprocess.DEVNULL, timeout=COMMIT_TIMEOUT)
    except (OSError, subpro
...[truncated 3719 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove the Claude hook component from the reading-notes bundle because command rewriting is not required for the Skill's declared functionality.
  2. If retained as a separate, explicitly installed feature, disable command mutation by default and require a clear opt-in setting.
  3. Before returning updatedInput, show the exact original and proposed command or message diff and require explicit user approval.
  4. Separate attribution removal from prose linting. Neither operation should silently modify commit or pull request metadata.
  5. Parse command arguments structurally instead of relying on substring checks for git commit and gh pr create.
  6. Restrict matching to commands whose executable and subcommand are exactly identified, and reject ambiguous shell constructs.
  7. Prefer reporting suggested edits through non-mutating hook context rather than replacing the Bash command.
  8. Add tests proving that provenance lines are retained unless the user explicitly requests their removal.
  9. Document the hook's command-mutation capability prominently wherever registration is performed.
  10. Keep hook installation outside the core reading-notes workflow and provide a complete uninstall mechanism if an external installer is distributed.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (77)

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The security document appears to describe a different bundle ('rabbit-writes', voice setup, host hooks, ~/.claude modification) than the declared skill ('rabbit-reads'). That mismatch undermines reviewer trust and can conceal actual capabilities, especially where the file documents network use and host-side persistence unrelated to the manifest. In a security-sensitive package, misleading or transplanted documentation is itself dangerous because it can hide code paths or cause reviewers to approve the wrong threat model.

Content

No source excerpt is available for this finding.

Agent Config Directory Access

High
Category
Agent Snooping
Confidence
91% confidence
Finding

The file documents writing to ~/.claude/settings.json and related ~/.claude paths, which is agent configuration persistence on the host. Even though the text says this occurs only under an explicit install path and in a different bundle, host config modification is highly sensitive because it can establish lasting behavior changes, hooks, or trust boundary violations if present or reachable.

Content

Scanner excerpt · SECURITY.md (reported line 74)May include surrounding context.

md
- It writes four paths and no others: two markdown files under
  `~/.claude/output-styles/`, the `hooks` and `outputStyle` keys inside
  `~/.claude/settings.json`, and a record of those at
  `~/.claude/rabbit-writes-host.json`.
- `--dry-run` prints every one of them and writes nothing, and the skill's
  own instructions require showing that output to the user before running the

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill description claims a narrowly scoped document-distillation workflow, while the analyzed implementation reportedly includes materially different behaviors such as linting, style scanning, rewrite support, hidden-text detection, network/model endpoint handling, and other undeclared processing. This mismatch is dangerous because operators and policy systems may grant trust, routing, or permissions based on the declared purpose while the actual behavior exercises a much broader and different capability set.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dynamic_code_execution, suspicious.exposed_secret_literal

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/rwlib/voices.py:688

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
scripts/rwlib/endpoint.py:54