Back to skill

Security audit

claude-intel-monitor

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent model-benchmarking tool, but it handles provider API keys and recurring external calls with under-disclosed endpoint and persistence risks.

Review this carefully before installing. Use it only in an isolated environment with limited-scope API keys, avoid setting provider BASE_URL variables unless you fully trust the endpoint, prefer a pinned audited package version, and do not run watch or cron mode until you have cost limits, log retention, and a clear stop/cleanup plan.

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 (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:29
Finding

Unpinned Remote Package Installation Can Execute an Unreviewed Release

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
claude_intel_monitor/providers.py:38
Finding

Provider API Keys Can Be Redirected to an Arbitrary Environment-Controlled Endpoint

Content
View full analysis
dict: """Send HTTP POST with error handling.""" async with httpx.AsyncClient(timeout=self.timeout) as client: resp = await client.post(url, json=payload, headers=headers) if resp.status_code == 401: raise ProviderError(f"API key invalid for {self.__class__.__name__}") if resp.status_code == 429: raise ProviderError(f"Rate limited by {self.__class__.__name__}") if resp.status_code >= 400: body = resp.text[:200] raise ProviderError(f"HTTP {resp.status_code}: {body}") return resp.json() ``` `claude_intel_monitor/providers.py:87-101`: ```python async def chat(self, prompt: str, system: str = "") -> ModelResponse: url = f"{self.base_url.rstrip('/')}/chat/completions" headers = { "Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json", } messages = [] if system: messages.append({"role": "system", "content": system}) messages.append({"role": "user", "content": prompt}) payload = { "model": ...[truncated 3366 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (42)

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · README.md (reported line 31)May include surrounding context.

md
pip install claude-intel-monitor

# 测试某个模型(需要 API key)
claude-intel-monitor test --model claude-sonnet-4 --provider anthropic

# 自测模式(无需 API)
claude-intel-monitor test --self

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · README.md (reported line 109)May include surrounding context.

md
pip install claude-intel-monitor

# 测试某个模型(需要 API key)
claude-intel-monitor test --model claude-sonnet-4 --provider anthropic

# 自测模式(无需 API)
claude-intel-monitor test --self

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · README.md (reported line 118)May include surrounding context.

md
pip install claude-intel-monitor

# 测试某个模型(需要 API key)
claude-intel-monitor test --model claude-sonnet-4 --provider anthropic

# 自测模式(无需 API)
claude-intel-monitor test --self

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · claude_intel_monitor/cli.py (reported line 126)May include surrounding context.

python
pip install claude-intel-monitor

# 测试某个模型(需要 API key)
claude-intel-monitor test --model claude-sonnet-4 --provider anthropic

# 自测模式(无需 API)
claude-intel-monitor test --self

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · README.md (reported line 40)May include surrounding context.

md
claude-intel-monitor history

# 设置基线(用于后续检测退化)
claude-intel-monitor baseline --model claude-sonnet-4

# 持续监控
claude-intel-monitor watch --model claude-sonnet-4 --provider anthropic --interval 6h

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

The watch command encourages unattended recurring calls to an external AI provider, which can amplify privacy exposure and billing impact if users do not understand that monitoring runs continuously. In the context of benchmark prompts and stored history, this becomes more dangerous because the loop can silently persist data and repeatedly transmit content off-host.

Content

Scanner excerpt · README.md (reported line 43)May include surrounding context.

claude-intel-monitor baseline --model claude-sonnet-4

持续监控

claude-intel-monitor watch --model claude-sonnet-4 --provider anthropic --interval 6h

text

## 基准测试题

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · README.md (reported line 106)May include surrounding context.

bash
# Set a baseline when the model is performing well
claude-intel-monitor baseline --model claude-sonnet-4 --provider anthropic

# A week later, test again and compare
claude-intel-monitor test --model claude-sonnet-4 --provider anthropic

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · README.md (reported line 124)May include surrounding context.

md
claude-intel-monitor test --model gpt-4o --provider openai

# Test DeepSeek
claude-intel-monitor test --model deepseek-chat --provider deepseek

# View all results in history
claude-intel-monitor history

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · claude_intel_monitor/cli.py (reported line 127)May include surrounding context.

python
claude-intel-monitor test --model gpt-4o --provider openai

# Test DeepSeek
claude-intel-monitor test --model deepseek-chat --provider deepseek

# View all results in history
claude-intel-monitor history

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

The README explicitly recommends running the monitoring command in the background every 6 hours, which can create unattended outbound API activity and repeated local persistence without a prominent safety warning. In a security review context, automation plus external transmission increases risk of unnoticed charges, policy violations, and prolonged data retention.

Content

Scanner excerpt · README.md (reported line 136)May include surrounding context.

bash
# Run every 6 hours in the background
claude-intel-monitor watch --model claude-sonnet-4 --provider anthropic --interval 6h &

# Or add to a cron job for daily checks
0 9 * * * claude-intel-monitor test --model claude-sonnet-4 --provider anthropic >> ~/intel-monitor.log

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

The cron example operationalizes periodic external requests and appends logs to a local file, but the README does not pair this with warnings about recurring API spend, provider data exposure, or local log persistence. This is more dangerous in this skill context because the project is explicitly designed for repeated monitoring over time, making silent accumulation and repeated transmission likely.

Content

Scanner excerpt · README.md (reported line 139)May include surrounding context.

claude-intel-monitor watch --model claude-sonnet-4 --provider anthropic --interval 6h &

Or add to a cron job for daily checks

0 9 * * * claude-intel-monitor test --model claude-sonnet-4 --provider anthropic >> ~/intel-monitor.log

text

Ideal for teams that rely on a specific model and need early warning if its performance silently degrades.

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

The skill explicitly instructs use of an external provider for model testing, which can transmit benchmark prompts, outputs, and potentially associated metadata outside the local trust boundary. In an agent setting, external provider selection is security-relevant because it may route sensitive evaluation data to third parties without clear consent, residency, or retention guarantees.

Content

Scanner excerpt · SKILL.md (reported line 32)May include surrounding context.

md
pip install claude-intel-monitor

# Test a model
claude-intel-monitor test --model claude-sonnet-4 --provider anthropic

# Set baseline for degradation detection
claude-intel-monitor baseline --model claude-sonnet-4

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Creating a baseline for a named external model implies storing or comparing externally sourced responses over time, which may involve persistent transmission and retention of prompts and outputs. This is not malicious, but without clear disclosure and boundaries it can create privacy, compliance, and supply-chain risk in organizations using the skill.

Content

Scanner excerpt · SKILL.md (reported line 35)May include surrounding context.

md
claude-intel-monitor test --model claude-sonnet-4 --provider anthropic

# Set baseline for degradation detection
claude-intel-monitor baseline --model claude-sonnet-4

# View history
claude-intel-monitor history

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
93% confidence
Finding

Continuous watch mode against an external provider increases risk because it automates recurring outbound connections and repeated data disclosure over time. In monitored environments this can amplify cost, privacy leakage, and policy violations, especially if credentials, prompts, or histories are pulled from environment variables or local files during scheduled execution.

Content

Scanner excerpt · SKILL.md (reported line 41)May include surrounding context.

claude-intel-monitor history

Continuous watch mode

claude-intel-monitor watch --model claude-sonnet-4 --provider anthropic --interval 6h

text

## Benchmark Structure

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · claude_intel_monitor/cli.py (reported line 5)May include surrounding context.

python
Usage:
    claude-intel-monitor test                    # Run benchmark on default model
    claude-intel-monitor test --model claude-opus-4 --provider anthropic
    claude-intel-monitor test --model gpt-4o --provider openai
    claude-intel-monitor test --self             # Self-test mode (no API needed)
    claude-intel-monitor history                 # Show past runs

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · README.md (reported line 121)May include surrounding context.

md
Usage:
    claude-intel-monitor test                    # Run benchmark on default model
    claude-intel-monitor test --model claude-opus-4 --provider anthropic
    claude-intel-monitor test --model gpt-4o --provider openai
    claude-intel-monitor test --self             # Self-test mode (no API needed)
    claude-intel-monitor history                 # Show past runs
    claude-intel-monitor baseline --model claude-opus-4  # Set baseline

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · claude_intel_monitor/cli.py (reported line 6)May include surrounding context.

python
Usage:
    claude-intel-monitor test                    # Run benchmark on default model
    claude-intel-monitor test --model claude-opus-4 --provider anthropic
    claude-intel-monitor test --model gpt-4o --provider openai
    claude-intel-monitor test --self             # Self-test mode (no API needed)
    claude-intel-monitor history                 # Show past runs
    claude-intel-monitor baseline --model claude-opus-4  # Set baseline

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · claude_intel_monitor/cli.py (reported line 125)May include surrounding context.

python
Usage:
    claude-intel-monitor test                    # Run benchmark on default model
    claude-intel-monitor test --model claude-opus-4 --provider anthropic
    claude-intel-monitor test --model gpt-4o --provider openai
    claude-intel-monitor test --self             # Self-test mode (no API needed)
    claude-intel-monitor history                 # Show past runs
    claude-intel-monitor baseline --model claude-opus-4  # Set baseline

External Model or Provider Selection

High
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

Scanner excerpt · claude_intel_monitor/cli.py (reported line 9)May include surrounding context.

python
claude-intel-monitor test --model gpt-4o --provider openai
    claude-intel-monitor test --self             # Self-test mode (no API needed)
    claude-intel-monitor history                 # Show past runs
    claude-intel-monitor baseline --model claude-opus-4  # Set baseline
    claude-intel-monitor watch --interval 6h     # Continuous monitoring
"""

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The description says the benchmark uses a fixed set of questions and that all questions are in Chinese, which imposes a specific language constraint. Under the policy, forcing a language without opt-in or a clearly documented locale-specific scope can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The README explicitly promotes continuous background monitoring and persistent SQLite history storage, but it does not clearly warn users that this can cause recurring paid API calls and ongoing local data retention. In a tool that repeatedly sends prompts to external model providers, missing disclosure can lead to unexpected costs, unintended telemetry exposure, and unnoticed accumulation of benchmark outputs on disk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

This line reiterates that all benchmark questions are Chinese, reinforcing a fixed locale requirement. The README does not pair this with an explicit opt-in, alternative locale support, or a clear statement that the tool is intentionally limited to Chinese-language evaluation only.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
82% confidence
Finding

The skill advertises and demonstrates capabilities that can touch external providers and likely local state, but it does not declare any explicit tool scope or permissions boundaries. In an agent environment, that ambiguity can cause the skill to be invoked with broader-than-necessary access, making unintended network calls, file reads, or environment access harder to govern and audit.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown/manifest content describes the skill in general-purpose terms like "Detect intelligence degradation in Claude, GPT, and DeepSeek" but does not specify any concrete invocation phrases, scope limits, or exclusion conditions. In a skill-routing context, such broad wording can overlap with common requests about model quality or benchmarking and may cause unintended activation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The description states the skill uses "30 standardized Chinese benchmark questions," and later reiterates "All Chinese" without indicating this is optional or providing an opt-in language choice. This is a natural-language locale constraint that can violate language/locale policy when imposed by default without user choice or explicit justification.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.