Back to skill

Security audit

Reflect

Security checks for vulnerabilities and agentic risk

Overview

This skill has a coherent self-improvement purpose, but it can persistently change agent instructions, install a cross-session hook, and includes private developer session logs, so it needs careful review before installation.

Install only if you intentionally want a skill that can propose and apply persistent changes to agent instructions and create new skills. Keep auto-reflection hooks disabled until you review the hook script and settings snippet, require explicit approval before any edits, remove the bundled logs from the package, validate skill names before file creation, and pin hook dependencies.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/output_generator.py:311
Finding
Arbitrary File Write Through Unvalidated Skill Name<![CDATA[ ## Vulnerability Details **File Location**: `scripts/output_generator.py:311-318` **Vulnerability Type**: Path traversal leading to arbitrary file creation or overwrite **Risk Level**: High ### Vulnerable Code ```python def create_skill_file(skill_name: str, skill_content: str) -> Path: """Create a new skill file in the project's .claude/skills/ directory.""" ensure_directories() skill_dir = get_project_skills_dir() / skill_name skill_dir.mkdir(parents=True, exist_ok=True) skill_path = skill_dir / 'SKILL.md' skill_path.write_text(skill_content) return skill_path ``` ### Technical Analysis The `skill_name` argument is accepted directly from the `--create-skill` command-line option and joined to the intended `.claude/skills` directory without validation or containment checks. `pathlib.Path` does not prevent traversal components such as `..`. In addition, if `skill_name` is an absolute path, joining it to the base path discards the base path. Consequently, the resulting destination can escape the intended skills directory. The final filename is always `SKILL.md`, but an attacker can still select an arbitrary parent directory reachable by the current user and overwrite an existing `SKILL.md`. This is especially security-sensitive because such files may contain persistent Agent instructions. ### Attack Path 1. An attacker or untrusted automation gains the ability to control the `--create-skill` value and `--content`. 2. The attacker supplies a traversal or absolute path, for example: ```bash python scripts/output_generator.py \ --create-skill "../../../../tmp/attacker-controlled" \ --content "attacker-controlled skill instructions" ``` 3. `get_project_skills_dir() / skill_name` resolves outside `.claude/skills`. 4. The program creates the selected directory if necessary. 5. It writes attacker-controlled content to the resulting `SKILL.md`. 6. If the selected destination is an Agent-discovered skill ...[truncated 709 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Restrict skill names to a safe slug format: ```python import re if not re.fullmatch(r"[a-z0-9][a-z0-9-]{0,63}", skill_name): raise ValueError("Invalid skill name") ``` 2. Resolve and verify path containment before creating directories: ```python base_dir = get_project_skills_dir().resolve() skill_dir = (base_dir / skill_name).resolve() if skill_dir.parent != base_dir: raise ValueError("Skill destination escapes the skills directory") ``` 3. Reject absolute paths and any name containing path separators or `..`. 4. Refuse to overwrite an existing `SKILL.md` unless the user explicitly authorizes replacement. 5. Write through a securely created temporary file and atomically replace the destination. 6. Add tests covering absolute paths, repeated traversal components, encoded separators, symlinks, and existing destination files. 7. If generated content can originate from conversation text, keep explicit human review mandatory before writing it as an executable Agent skill. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/logs/chat.json:6
Finding
Real Agent Session Transcript and Developer Metadata Included in the Package<![CDATA[ ## Vulnerability Details **File Location**: `scripts/logs/chat.json:6-7` and additional entries throughout the file, including `59-60` **Vulnerability Type**: Plaintext exposure of private development and Agent-session data **Risk Level**: Medium ### Vulnerable Data ```json "cwd": "/Users/stevengonsalvez/d/git/ai-coder-rules", "sessionId": "5c79586e-ef3b-4ff3-b6f0-3ce9a4fe9d51" ``` The same 1.6 MB file also contains internal Agent reasoning, conversation content, executed commands, tool outputs, token-usage metadata, local repository paths, model signatures, and references to the developer by name. A representative internal-reasoning entry begins as follows: ```json "thinking": "The user wants me to analyze the reflect command and its related files. I've already been provided with the content of these files in the system reminders..." ``` ### Technical Analysis A real Agent transcript appears to have been committed as a package fixture without sufficient redaction or minimization. Unlike diagnostic data generated on an end user's machine, this file is shipped directly to every package recipient and can be inspected without executing the Skill. Local absolute paths reveal the developer username, workstation layout, repository name, and internal directory organization. Stable session identifiers and detailed tool records expose additional operational metadata. Internal reasoning and conversation content may also contain proprietary implementation details or information that was not intended for publication. The audit did not identify a conventional API key, password, private key, or bearer token in the reviewed excerpts. The issue is nevertheless a confirmed disclosure of private session and development metadata. ### Attack Path 1. An attacker downloads, installs, or otherwise obtains the Skill package. 2. The attacker opens `scripts/logs/chat.json`; no code execution or special permission is required. 3. The attacker extracts the developer us ...[truncated 1009 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove `scripts/logs/chat.json` and all other real session logs from the distributable package. 2. Remove the data from version-control history if the repository has already been published. 3. Review whether the disclosed session identifier or model signatures require invalidation or rotation. 4. Add `scripts/logs/` and common transcript formats to `.gitignore` and package-exclusion configuration. 5. Replace real logs with small, synthetic fixtures containing no real names, paths, identifiers, conversations, signatures, or internal reasoning. 6. Add an automated secret and privacy scanner to CI that detects: - Absolute user-home paths. - Session identifiers. - API credentials and authorization headers. - Private keys. - Email addresses and account names. - Transcript fields such as `thinking`, `signature`, and raw tool output. 7. Apply data minimization: retain only the fields strictly necessary for tests. 8. Establish a release checklist that explicitly verifies that no debug logs, transcripts, or developer artifacts are included. ]]>

T08 · Insecure Dependencies

Warning
Location
hooks/precompact_reflect.py:1
Finding
Unpinned Third-Party Dependencies Used by Persistent Hook and Publishing Workflow<![CDATA[ ## Vulnerability Details **File Location**: `hooks/precompact_reflect.py:1-6`; related global installation instruction at `CLAWDHUB-PUBLISHING-GUIDE.md:212-217` **Vulnerability Type**: Unpinned dependency resolution in executable workflows **Risk Level**: Medium ### Vulnerable Code and Instructions ```python #!/usr/bin/env -S uv run --script # /// script # requires-python = ">=3.11" # dependencies = [ # "pyyaml", # ] # /// ``` The publishing guide additionally instructs users to install an unpinned package globally: ```bash # Install ClawdHub CLI npm install -g clawdhub # Authenticate clawdhub login ``` ### Technical Analysis The PreCompact hook declares `pyyaml` without an exact version or integrity hash. The documented configuration runs this script through `uv`, meaning dependency resolution is part of an executable hook that can be invoked repeatedly during Agent operation. The publishing workflow also performs a global npm installation without a version pin. Global installation increases scope because the resulting executable becomes available across projects for the current user. No evidence was found that PyYAML or the named ClawdHub package is currently malicious. The vulnerability is the absence of reproducible dependency controls: a compromised package release, registry account, dependency resolution change, or unexpected future version could introduce code that was not present during Skill review. ### Attack Path 1. A user follows the documentation and installs the PreCompact hook or publishing CLI. 2. `uv` resolves the unconstrained `pyyaml` dependency, or npm resolves the current `clawdhub` release. 3. A compromised or malicious future release is selected because no exact version or integrity constraint is present. 4. Package installation or import executes attacker-controlled package code with the permissions of the current user. 5. In the hook scenario, execution occurs in Agent hook context and may have access to environm ...[truncated 860 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin exact dependency versions: ```python # dependencies = [ # "pyyaml==<reviewed-version>", # ] ``` 2. Use a lockfile that records transitive dependency versions and cryptographic hashes. 3. Configure `uv` and npm to use approved registries and integrity verification. 4. Install hook dependencies into a dedicated virtual environment during an explicit setup phase rather than resolving them during hook execution. 5. Pin the publishing CLI to a reviewed version: ```bash npm install -g clawdhub@<reviewed-version> ``` 6. Prefer a project-local CLI installation over a global installation and invoke it through a locked package manager workflow. 7. Add automated dependency vulnerability and provenance checks to CI. 8. Document dependency update review procedures, including source review, changelog inspection, and lockfile regeneration. 9. Run hooks with a minimized environment and the least filesystem permissions practical. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (361)

Self-Modification

High
Category
Rogue Agent
Content
### 5. Publishing Checklist

- [ ] Update SKILL.md frontmatter with `triggers` and `user-invocable`
- [ ] Create skill.json with rich metadata
- [ ] Create README.md for user documentation
- [ ] Move reference files to `data/` directory
Confidence
85% confidence
Finding
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Self-Modification

High
Category
Rogue Agent
Content
### 5. Publishing Checklist

- [ ] Update SKILL.md frontmatter with `triggers` and `user-invocable`
- [ ] Create skill.json with rich metadata
- [ ] Create README.md for user documentation
- [ ] Move reference files to `data/` directory
Confidence
85% confidence
Finding
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding
The skill’s declared purpose centers on conversation reflection, but the content also instructs installation of hooks, access to agent configuration, and persistent writes to local/global state and skill files. This mismatch is security-relevant because users or orchestrators may authorize the skill based on a narrower description than what it actually does, enabling unexpected persistence and configuration changes.

Agent Config Directory Access

High
Category
Agent Snooping
Content
cp hooks/precompact_reflect.py ~/.claude/hooks/
```

Configure in `~/.claude/settings.json`:

```json
{
Confidence
96% confidence
Finding
The skill directs copying a hook into ~/.claude/hooks/ and editing ~/.claude/settings.json, which are sensitive agent configuration locations affecting future behavior across sessions. Writing or instructing modification there creates persistence and a cross-session execution path, so misuse or accidental approval could silently alter the agent’s runtime behavior beyond the current project.

Lp1

High
Category
MCP Least Privilege
Confidence
75% confidence
Finding
The skill uses 'env' capability that is not listed in its permissions. This may indicate deceptive intent or missing permission declarations.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
  "_comment": "Copy the relevant sections to your ~/.claude/settings.json",

  "hooks": {
    "PreCompact": [
Confidence
90% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
  "_comment": "Copy the relevant sections to your ~/.claude/settings.json",

  "hooks": {
    "PreCompact": [
Confidence
90% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
  "_comment": "Copy the relevant sections to your ~/.claude/settings.json",

  "hooks": {
    "PreCompact": [
Confidence
90% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
  "_comment": "Copy the relevant sections to your ~/.claude/settings.json",

  "hooks": {
    "PreCompact": [
Confidence
90% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
  "_comment": "Copy the relevant sections to your ~/.claude/settings.json",

  "hooks": {
    "PreCompact": [
Confidence
90% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
  "_comment": "Copy the relevant sections to your ~/.claude/settings.json",

  "hooks": {
    "PreCompact": [
Confidence
90% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Content
ties/commands/reflect.md` - The command definition\n2. `/Users/stevengonsalvez/d/git/ai-coder-rules/toolkit/claude-code-4.5/session/reflect-state.yaml` - The state configuration\n3. `/Users/stevengonsalvez/d/git/ai-coder-rules/toolkit/packages/agents/meta/reflect.md` - The agent definition\n\nLet me synthesize this information and explain the structure clearly to Stevie.",
          "signature": "EucGCkYICxgCKkBsR8RVGMmEMadeVYIGtAa/RgCR/qLne6dAxIR6VVGu7uYivUosG9IPC+4TWcz2OihMorsbjdgDtaQ6d40a2oHeEgxCLqO6gHewAEHoGNAaDET8NUrGlinYRproACIwqMFwuB8CswZ06cpxVo2y9lIefh+h9WlDq41lw9PjftaleTw4drJ7R1nxWX+qg78LKs4FPiLHwOAJXlQySbkXy4ul3G0bmIm/immbGtbMNxrt5bw+b+YesM2Jeg499bnlWxFWH+cfuI9Uuz6jov9OW1jvQMAwpGt7uwy/yoU0aege330k2/6yl1657c0+UGMf/jq94pwQAJKd+M65ZfJ7YHRZfKE29+ZIi684XQ2Sgvyw9XyA9Qhff67JR7/8OtJMHlW6UMw7ks6w1ISa1ntb28BGrUOsV0ICMoAdCkpe/CO4bpeFirqrgJ6qq1aTFTUG1qkVqHNHRD+REgcAg3uMPg2Sdd/svCGOMZP4GtmJZcCCvvhQwQOusK4vJrXxuT0UchkOHCXkD0r58GJzUOV/zWTyTdWegQA1DQGIgJpKDTV0W78AX6J2QNZFtnZ4l9Zaq0NMfml0Ebb7
Confidence
80% confidence
Finding
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
              "tool_use_id": "toolu_018BPS8r7HaYzawzCkiphBEx",
              "type": "tool_result",
              "content": "     1\u2192---\n     2\u2192name: webapp-testing\n     3\u2192description: Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.\n     4\u2192license: Complete terms in LICENSE.txt\n     5\u2192---\n     6\u2192\n     7\u2192# Web Application Testing\n     8\u2192\n     9\u2192To test local web applications, write native Python Playwright scripts.\n    10\u2192\n    11\u2192**Helper Scripts Available**:\n    12\u2192- `scripts/with_server.py` - Manages server lifecycle (supports multiple servers)\n    13\u2192\n    14\u2192**Always run scripts with `--help` first** to see usage. DO NOT read the source until you try running the script first and find that a customized solution is abslutely necessary. These scripts can be very large and thus pollute your context window. They exist to be called directly as black-box scripts rather than ingested into your context window.\n    15\u2192\n    16\u2192## Browser Tools (Direct Chrome DevTools Control)\n    17\u2192\n    18\u2192The `~/.claude/skills/webapp-testing/bin/browser-tools` utility provides lightweight, context-rot-proof browser automation using the Chrome DevTools Protocol directly (no MCP overhead).\n    19\u2192\n    20\u2192**Available Commands**:\n    21\u2192\n    22\u2192```bash\n    23\u2192# Launch browser and get connection details\n    24\u2192~/.claude/skills/webapp-testing/bin/browser-tools start [--port PORT] [--headless]\n    25\u2192\n    26\u2192# Navigate to URL\n    27\u2192~/.claude/skills/webapp-testing/bin/browser-tools nav <url> [--wait-for {load|networkidle|domcontentloaded}]\n    28\u2192\n    29\u2192# Evaluate JavaScript\n    30\u2192~/.claude/skills/webapp-testing/bin/browser-tools eval \"<javascript code>\"\n    3
...[truncated 27 chars]
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
              "tool_use_id": "toolu_018BPS8r7HaYzawzCkiphBEx",
              "type": "tool_result",
              "content": "     1\u2192---\n     2\u2192name: webapp-testing\n     3\u2192description: Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.\n     4\u2192license: Complete terms in LICENSE.txt\n     5\u2192---\n     6\u2192\n     7\u2192# Web Application Testing\n     8\u2192\n     9\u2192To test local web applications, write native Python Playwright scripts.\n    10\u2192\n    11\u2192**Helper Scripts Available**:\n    12\u2192- `scripts/with_server.py` - Manages server lifecycle (supports multiple servers)\n    13\u2192\n    14\u2192**Always run scripts with `--help` first** to see usage. DO NOT read the source until you try running the script first and find that a customized solution is abslutely necessary. These scripts can be very large and thus pollute your context window. They exist to be called directly as black-box scripts rather than ingested into your context window.\n    15\u2192\n    16\u2192## Browser Tools (Direct Chrome DevTools Control)\n    17\u2192\n    18\u2192The `~/.claude/skills/webapp-testing/bin/browser-tools` utility provides lightweight, context-rot-proof browser automation using the Chrome DevTools Protocol directly (no MCP overhead).\n    19\u2192\n    20\u2192**Available Commands**:\n    21\u2192\n    22\u2192```bash\n    23\u2192# Launch browser and get connection details\n    24\u2192~/.claude/skills/webapp-testing/bin/browser-tools start [--port PORT] [--headless]\n    25\u2192\n    26\u2192# Navigate to URL\n    27\u2192~/.claude/skills/webapp-testing/bin/browser-tools nav <url> [--wait-for {load|networkidle|domcontentloaded}]\n    28\u2192\n    29\u2192# Evaluate JavaScript\n    30\u2192~/.claude/skills/webapp-testing/bin/browser-tools eval \"<javascript code>\"\n    3
...[truncated 27 chars]
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
"id": "toolu_01GgZRrJzLCmKUW7p6ywFkzo",
              "name": "Bash",
              "input": {
                "command": "find /Users/stevengonsalvez/d/git/ai-coder-rules/.claude/skills/tui-screen -type f | sort"
              }
            }
          ],
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
"id": "toolu_01GgZRrJzLCmKUW7p6ywFkzo",
              "name": "Bash",
              "input": {
                "command": "find /Users/stevengonsalvez/d/git/ai-coder-rules/.claude/skills/tui-screen -type f | sort"
              }
            }
          ],
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
              "tool_use_id": "toolu_01YYveJ5nu4PNf8zQCmvNJCi",
              "type": "tool_result",
              "content": "<persisted-output>\nOutput too large (53.2KB). Full output saved to: /Users/stevengonsalvez/.claude/projects/-Users-stevengonsalvez-d-git-ai-coder-rules/14f59deb-c898-4bb2-8f03-6547d17df9fc/tool-results/toolu_01YYveJ5nu4PNf8zQCmvNJCi.txt\n\nPreview (first 2KB):\n/Users/stevengonsalvez/.claude\n/Users/stevengonsalvez/.claude/action-summaries\n/Users/stevengonsalvez/.claude/agents\n/Users/stevengonsalvez/.claude/agents/archived\n/Users/stevengonsalvez/.claude/agents/design\n/Users/stevengonsalvez/.claude/agents/engineering\n/Users/stevengonsalvez/.claude/agents/meta\n/Users/stevengonsalvez/.claude/agents/orchestrators\n/Users/stevengonsalvez/.claude/agents/universal\n/Users/stevengonsalvez/.claude/cache\n/Users/stevengonsalvez/.claude/chrome\n/Users/stevengonsalvez/.claude/commands\n/Users/stevengonsalvez/.claude/config\n/Users/stevengonsalvez/.claude/debug\n/Users/stevengonsalvez/.claude/file-history\n/Users/stevengonsalvez/.claude/file-history/03f91efd-d8eb-4b47-9114-980a484daee1\n/Users/stevengonsalvez/.claude/file-history/06130c1f-57ca-444b-8abf-90af3cafe84b\n/Users/stevengonsalvez/.claude/file-history/06b15b1f-1bda-4400-b66b-e1577481b434\n/Users/stevengonsalvez/.claude/file-history/06bb62f0-55c6-4d0f-a0d4-0b3bb70da81b\n/Users/stevengonsalvez/.claude/file-history/0720f7c1-fcf3-45d6-a626-cb084ffeac23\n/Users/stevengonsalvez/.claude/file-history/096fa5b4-b804-419f-80d4-681a159073e6\n/Users/stevengonsalvez/.claude/file-history/09ecfeb4-0a71-4390-ac5d-654fd0b8d34d\n/Users/stevengonsalvez/.claude/file-history/0a618bd5-eac4-4d43-88a0-e243805313d5\n/Users/stevengonsalvez/.claude/file-history/0b4a77b1-98c5-424f-9c54-49d1eaaca8a3\n/Users/stevengonsalvez/.claude/file-history/0cb07845-bd7f-4685-ba27-6453bbed51dc\n/Users/stevengonsalvez/.claude/file-history/112129d1-f44d-46da-8eca-4a7bdfd36788\n/Users/stevengonsalvez/.claude/file-history/126a1cd3-0dd
...[truncated 25 chars]
Confidence
90% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
"id": "toolu_014BRxDHjkuBS7NAiVKSFJGa",
              "name": "Bash",
              "input": {
                "command": "find /Users/stevengonsalvez/.claude/commands -maxdepth 1 -type f 2>/dev/null | head -20"
              }
            }
          ],
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
"id": "toolu_014BRxDHjkuBS7NAiVKSFJGa",
              "name": "Bash",
              "input": {
                "command": "find /Users/stevengonsalvez/.claude/commands -maxdepth 1 -type f 2>/dev/null | head -20"
              }
            }
          ],
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
"id": "toolu_014BRxDHjkuBS7NAiVKSFJGa",
              "name": "Bash",
              "input": {
                "command": "find /Users/stevengonsalvez/.claude/commands -maxdepth 1 -type f 2>/dev/null | head -20"
              }
            }
          ],
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
              "tool_use_id": "toolu_01VSUb2ttj3pjBrsiPnRHLuq",
              "type": "tool_result",
              "content": "     1\u2192# /reflect - Self-Improvement Reflection\n     2\u2192\n     3\u2192Analyze the current conversation for corrections, success patterns, and learnings. Extract insights and propose targeted updates to agent files.\n     4\u2192\n     5\u2192**Philosophy**: \"Correct once, never again.\"\n     6\u2192\n     7\u2192## Usage\n     8\u2192\n     9\u2192```bash\n    10\u2192/reflect                    # Analyze current conversation\n    11\u2192/reflect [agent-name]       # Focus on learnings for specific agent\n    12\u2192/reflect on                 # Enable auto-reflection at session end\n    13\u2192/reflect off                # Disable auto-reflection\n    14\u2192/reflect status             # Show toggle state and metrics\n    15\u2192/reflect review             # Review pending low-confidence learnings\n    16\u2192```\n    17\u2192\n    18\u2192## Modes\n    19\u2192\n    20\u2192### Standard Reflection (default)\n    21\u2192\n    22\u2192Scan entire conversation for:\n    23\u2192- **High confidence**: Explicit corrections (\"never do X\", \"always check Y\")\n    24\u2192- **Medium confidence**: Approved approaches (user confirmed it worked)\n    25\u2192- **Low confidence**: Observations (patterns that worked, not explicitly validated)\n    26\u2192- **New Skills**: Reusable techniques, workarounds, debugging patterns worth preserving\n    27\u2192\n    28\u2192### Targeted Reflection (`/reflect [agent-name]`)\n    29\u2192\n    30\u2192Focus analysis on learnings relevant to a specific agent:\n    31\u2192```bash\n    32\u2192/reflect code-reviewer      # Focus on code review learnings\n    33\u2192/reflect backend-developer  # Focus on backend learnings\n    34\u2192/reflect CLAUDE.md          # Focus on global preferences\n    35\u2192```\n    36\u2192\n    37\u2192### Toggle Auto-Reflection\n    38\u2192\n    39\u2192`
...[truncated 26 chars]
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
              "tool_use_id": "toolu_01VSUb2ttj3pjBrsiPnRHLuq",
              "type": "tool_result",
              "content": "     1\u2192# /reflect - Self-Improvement Reflection\n     2\u2192\n     3\u2192Analyze the current conversation for corrections, success patterns, and learnings. Extract insights and propose targeted updates to agent files.\n     4\u2192\n     5\u2192**Philosophy**: \"Correct once, never again.\"\n     6\u2192\n     7\u2192## Usage\n     8\u2192\n     9\u2192```bash\n    10\u2192/reflect                    # Analyze current conversation\n    11\u2192/reflect [agent-name]       # Focus on learnings for specific agent\n    12\u2192/reflect on                 # Enable auto-reflection at session end\n    13\u2192/reflect off                # Disable auto-reflection\n    14\u2192/reflect status             # Show toggle state and metrics\n    15\u2192/reflect review             # Review pending low-confidence learnings\n    16\u2192```\n    17\u2192\n    18\u2192## Modes\n    19\u2192\n    20\u2192### Standard Reflection (default)\n    21\u2192\n    22\u2192Scan entire conversation for:\n    23\u2192- **High confidence**: Explicit corrections (\"never do X\", \"always check Y\")\n    24\u2192- **Medium confidence**: Approved approaches (user confirmed it worked)\n    25\u2192- **Low confidence**: Observations (patterns that worked, not explicitly validated)\n    26\u2192- **New Skills**: Reusable techniques, workarounds, debugging patterns worth preserving\n    27\u2192\n    28\u2192### Targeted Reflection (`/reflect [agent-name]`)\n    29\u2192\n    30\u2192Focus analysis on learnings relevant to a specific agent:\n    31\u2192```bash\n    32\u2192/reflect code-reviewer      # Focus on code review learnings\n    33\u2192/reflect backend-developer  # Focus on backend learnings\n    34\u2192/reflect CLAUDE.md          # Focus on global preferences\n    35\u2192```\n    36\u2192\n    37\u2192### Toggle Auto-Reflection\n    38\u2192\n    39\u2192`
...[truncated 26 chars]
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
              "tool_use_id": "toolu_01VSUb2ttj3pjBrsiPnRHLuq",
              "type": "tool_result",
              "content": "     1\u2192# /reflect - Self-Improvement Reflection\n     2\u2192\n     3\u2192Analyze the current conversation for corrections, success patterns, and learnings. Extract insights and propose targeted updates to agent files.\n     4\u2192\n     5\u2192**Philosophy**: \"Correct once, never again.\"\n     6\u2192\n     7\u2192## Usage\n     8\u2192\n     9\u2192```bash\n    10\u2192/reflect                    # Analyze current conversation\n    11\u2192/reflect [agent-name]       # Focus on learnings for specific agent\n    12\u2192/reflect on                 # Enable auto-reflection at session end\n    13\u2192/reflect off                # Disable auto-reflection\n    14\u2192/reflect status             # Show toggle state and metrics\n    15\u2192/reflect review             # Review pending low-confidence learnings\n    16\u2192```\n    17\u2192\n    18\u2192## Modes\n    19\u2192\n    20\u2192### Standard Reflection (default)\n    21\u2192\n    22\u2192Scan entire conversation for:\n    23\u2192- **High confidence**: Explicit corrections (\"never do X\", \"always check Y\")\n    24\u2192- **Medium confidence**: Approved approaches (user confirmed it worked)\n    25\u2192- **Low confidence**: Observations (patterns that worked, not explicitly validated)\n    26\u2192- **New Skills**: Reusable techniques, workarounds, debugging patterns worth preserving\n    27\u2192\n    28\u2192### Targeted Reflection (`/reflect [agent-name]`)\n    29\u2192\n    30\u2192Focus analysis on learnings relevant to a specific agent:\n    31\u2192```bash\n    32\u2192/reflect code-reviewer      # Focus on code review learnings\n    33\u2192/reflect backend-developer  # Focus on backend learnings\n    34\u2192/reflect CLAUDE.md          # Focus on global preferences\n    35\u2192```\n    36\u2192\n    37\u2192### Toggle Auto-Reflection\n    38\u2192\n    39\u2192`
...[truncated 26 chars]
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
              "tool_use_id": "toolu_01VSUb2ttj3pjBrsiPnRHLuq",
              "type": "tool_result",
              "content": "     1\u2192# /reflect - Self-Improvement Reflection\n     2\u2192\n     3\u2192Analyze the current conversation for corrections, success patterns, and learnings. Extract insights and propose targeted updates to agent files.\n     4\u2192\n     5\u2192**Philosophy**: \"Correct once, never again.\"\n     6\u2192\n     7\u2192## Usage\n     8\u2192\n     9\u2192```bash\n    10\u2192/reflect                    # Analyze current conversation\n    11\u2192/reflect [agent-name]       # Focus on learnings for specific agent\n    12\u2192/reflect on                 # Enable auto-reflection at session end\n    13\u2192/reflect off                # Disable auto-reflection\n    14\u2192/reflect status             # Show toggle state and metrics\n    15\u2192/reflect review             # Review pending low-confidence learnings\n    16\u2192```\n    17\u2192\n    18\u2192## Modes\n    19\u2192\n    20\u2192### Standard Reflection (default)\n    21\u2192\n    22\u2192Scan entire conversation for:\n    23\u2192- **High confidence**: Explicit corrections (\"never do X\", \"always check Y\")\n    24\u2192- **Medium confidence**: Approved approaches (user confirmed it worked)\n    25\u2192- **Low confidence**: Observations (patterns that worked, not explicitly validated)\n    26\u2192- **New Skills**: Reusable techniques, workarounds, debugging patterns worth preserving\n    27\u2192\n    28\u2192### Targeted Reflection (`/reflect [agent-name]`)\n    29\u2192\n    30\u2192Focus analysis on learnings relevant to a specific agent:\n    31\u2192```bash\n    32\u2192/reflect code-reviewer      # Focus on code review learnings\n    33\u2192/reflect backend-developer  # Focus on backend learnings\n    34\u2192/reflect CLAUDE.md          # Focus on global preferences\n    35\u2192```\n    36\u2192\n    37\u2192### Toggle Auto-Reflection\n    38\u2192\n    39\u2192`
...[truncated 26 chars]
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Agent Config Directory Access

High
Category
Agent Snooping
Content
{
              "tool_use_id": "toolu_01VSUb2ttj3pjBrsiPnRHLuq",
              "type": "tool_result",
              "content": "     1\u2192# /reflect - Self-Improvement Reflection\n     2\u2192\n     3\u2192Analyze the current conversation for corrections, success patterns, and learnings. Extract insights and propose targeted updates to agent files.\n     4\u2192\n     5\u2192**Philosophy**: \"Correct once, never again.\"\n     6\u2192\n     7\u2192## Usage\n     8\u2192\n     9\u2192```bash\n    10\u2192/reflect                    # Analyze current conversation\n    11\u2192/reflect [agent-name]       # Focus on learnings for specific agent\n    12\u2192/reflect on                 # Enable auto-reflection at session end\n    13\u2192/reflect off                # Disable auto-reflection\n    14\u2192/reflect status             # Show toggle state and metrics\n    15\u2192/reflect review             # Review pending low-confidence learnings\n    16\u2192```\n    17\u2192\n    18\u2192## Modes\n    19\u2192\n    20\u2192### Standard Reflection (default)\n    21\u2192\n    22\u2192Scan entire conversation for:\n    23\u2192- **High confidence**: Explicit corrections (\"never do X\", \"always check Y\")\n    24\u2192- **Medium confidence**: Approved approaches (user confirmed it worked)\n    25\u2192- **Low confidence**: Observations (patterns that worked, not explicitly validated)\n    26\u2192- **New Skills**: Reusable techniques, workarounds, debugging patterns worth preserving\n    27\u2192\n    28\u2192### Targeted Reflection (`/reflect [agent-name]`)\n    29\u2192\n    30\u2192Focus analysis on learnings relevant to a specific agent:\n    31\u2192```bash\n    32\u2192/reflect code-reviewer      # Focus on code review learnings\n    33\u2192/reflect backend-developer  # Focus on backend learnings\n    34\u2192/reflect CLAUDE.md          # Focus on global preferences\n    35\u2192```\n    36\u2192\n    37\u2192### Toggle Auto-Reflection\n    38\u2192\n    39\u2192`
...[truncated 26 chars]
Confidence
85% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Static analysis

No suspicious patterns detected.