Back to skill

Security audit

task-cost-estimator

Security checks for vulnerabilities and agentic risk

Overview

This looks like a local model-cost estimator, but its install instructions fetch unpinned code from GitHub, so it should be reviewed before installation.

Install only from a reviewed, pinned commit or trusted release, preferably in a virtual environment and without elevated privileges. Be aware the tool writes local aggregate usage history under `~/.hermes/`; use `--reset-bonus` if you want to remove that state.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:50
Finding
Unpinned Installation from a Mutable Git Repository## Vulnerability Details **File Location**: `SKILL.md:50-53` **Vulnerability Type**: Unpinned remote source dependency **Risk Level**: Medium **Complete Code Snippet**: ```markdown ## Install ```bash pip install git+https://github.com/minirr890112-byte/HermesMade.git#subdirectory=task-cost-estimator ``` ``` The same installation instruction also appears in `README.md:5-9`. ### Technical Analysis The documented installation command retrieves the package from the current state of a third-party Git repository without pinning a reviewed commit hash, release tag, package version, or artifact checksum. Consequently, the code installed later may differ from the code reviewed during this audit. Installing a Python project is security-sensitive because `pip` invokes the selected build backend and processes package-controlled build metadata. If the referenced repository is compromised or later contains malicious build or runtime code, following this command could execute that changed code with the privileges of the user performing the installation. No malicious remote retrieval occurs in the audited CLI itself, and no malicious code was identified in the reviewed artifact. The risk arises specifically from the mutable supply-chain installation instruction. ### Attack Path 1. An attacker compromises the referenced GitHub repository, its maintainer account, or another mechanism controlling its default branch. 2. The attacker adds malicious package code, build configuration, or build-time behavior. 3. A user or AI Agent follows the installation command in `SKILL.md` or `README.md`. 4. `pip` downloads the repository's then-current content rather than the reviewed artifact. 5. The Python build/install process processes the attacker-controlled project. 6. Malicious behavior executes with the installing user's permissions during installation or when the installed command is invoked. ### Impact Assessment Successful expl ...[truncated 394 chars]
Remediation
## Remediation Suggestions - Publish reviewed releases to a trusted package registry and require an exact package version. - Install with hash verification, such as a locked requirements file using `--require-hashes`. - If Git installation remains necessary, pin the URL to a reviewed full commit SHA rather than a branch or mutable tag. - Verify the pinned commit's provenance and signatures where available. - Generate and verify checksums or attestations for release artifacts. - Use an isolated virtual environment and avoid running installation commands with administrative privileges. - Keep the installation command in `SKILL.md` and `README.md` synchronized so both point to the same immutable, reviewed release.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (19)

YARA rule 'agent_skill_remote_bootstrap_execution': Remote script or code download followed by execution/bootstrap installation [agent_skills]

High
Category
YARA Match
Content
# task-cost

Before starting any AI task, find the most cost-effective model and estimated cost. One command tells you which model to use and what you'll spend.

## Install

```bash
pip install git+https://github.com/minirr890112-byte/HermesMade.git#subdirectory=task-cost-estimator
```

## Usage

```bash
task-cost "describe your task here"
```

## How it works

1. **Profiles** your task → reasoning need, coding need, writing need, complexity
2. **Matches** 18 models against your requirements
3. **Ranks** by cost-effectiveness (capability ÷ cost)
4. **Estimates** cost per run, per day

## Examples

```bash
$ task-cost "build a REST API with JWT auth in Python"

📋 Task: REST API with JWT auth
   Needs: reasoning=7/10  coding=9/10  writing=3/10
   Est. tokens: ~1,000 i
Confidence
88% confidence
Finding
The installation command pulls and installs code directly from a remote GitHub repository rather than from a pinned, reviewed release artifact. In an agent-skill ecosystem, this creates a software supply-chain risk: the referenced repository or branch can change over time, and anyone following the instruction may fetch unreviewed code that executes during package installation.

YARA rule 'agent_skill_remote_bootstrap_execution': Remote script or code download followed by execution/bootstrap installation [agent_skills]

High
Category
YARA Match
Content
reasoning=7/10  coding=9/10  writing=3/10
   Est. tokens: ~1,000 in / ~1,000 out

⭐ DeepSeek V4 Flash    $0.0004/run  87% match
   DeepSeek V4 Pro      $0.0027/run  96% match
```

## 数据来源

Built from HermesMade's pain point intelligence pipeline. Developers lose money using GPT-4 for simple tasks. This tool gives you the cheapest model that can actually do the job.

## Install

```bash
pip install git+https://github.com/minirr890112-byte/HermesMade.git#subdirectory=task-cost-estimator
```

## 为什么给颗星?

如果你觉得有用,点个 ⭐ 让更多人找到它 → [GitHub](https://github.com/minirr890112-byte/HermesMade)
Confidence
95% confidence
Finding
The installation instruction uses `pip install git+https://...`, which pulls code directly from a remote Git repository at install time rather than from a pinned, reviewed package release. This creates a software supply chain risk: a compromised repository, force-pushed branch, or malicious upstream change could deliver arbitrary code during installation.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The phrase 'Before starting any AI task' is extremely broad and could overlap with many ordinary workflows, making it unclear when this skill should activate versus when it should not. The description does not provide explicit trigger phrases, scope limits, or negative examples to reduce unintended invocation.

Lp3

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding
Without declared permissions the skill's intent is opaque and cannot be validated.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The phrase 'Before starting any AI task' is very broad and overlaps with a large range of normal user requests. The file does not provide narrow trigger phrases, boundaries, or negative examples to clarify when this skill should or should not activate.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The CLI creates, overwrites, and deletes a persistent local history file without prominent user disclosure, even though the tool presents itself as a one-shot estimator. In an agent-skill context, undisclosed persistence can leak behavioral metadata across runs, surprise users, and violate least-surprise/privacy expectations.

Session Persistence

Medium
Category
Rogue Agent
Content
Usage:
  task-cost "Build a REST API with user auth in Python"
  task-cost "Write a 2000-word blog post about climate change"
  task-cost "Debug this recursive function that causes stack overflow"

Repo: github.com/minirr890112-byte/HermesMade
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Session Persistence

Medium
Category
Rogue Agent
Content
Usage:
  task-cost "Build a REST API with user auth in Python"
  task-cost "Write a 2000-word blog post about climate change"
  task-cost "Debug this recursive function that causes stack overflow"

Repo: github.com/minirr890112-byte/HermesMade
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
This code stores usage-derived data in ~/.hermes/task-cost-history.json, and the task text may contain sensitive project, debugging, or personal information. The file includes no confirmation prompt and the user-facing usage/help text does not disclose that data will be persisted locally.

Context Window Stuffing

Medium
Category
Memory Poisoning
Content
print(f"\n  💸 Cheapest option: {cheapest['provider']} {cheapest['model']} (${cheapest['cost']:.4f})")
        print(f"     Saves ${best['cost'] - cheapest['cost']:.4f} vs best pick")
        if not cheapest["ctx_ok"]:
            print(f"     ⚠ Warning: may exceed context window")

    # Most capable option (if different)
    most_capable = max(rankings, key=lambda x: x["reasoning"] + x["coding"])
Confidence
80% confidence
Finding
Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Context Window Stuffing

Medium
Category
Memory Poisoning
Content
print(f"\n  💸 Cheapest option: {cheapest['provider']} {cheapest['model']} (${cheapest['cost']:.4f})")
        print(f"     Saves ${best['cost'] - cheapest['cost']:.4f} vs best pick")
        if not cheapest["ctx_ok"]:
            print(f"     ⚠ Warning: may exceed context window")

    # Most capable option (if different)
    most_capable = max(rankings, key=lambda x: x["reasoning"] + x["coding"])
Confidence
80% confidence
Finding
Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Natural-Language Policy Violations

Low
Confidence
89% confidence
Finding
The file presents section headers and feature descriptions partly in Chinese and partly in English, but it does not state that the skill is intended for Chinese-speaking users or offer an alternative language. This can conflict with language/locale policy expectations when users have not opted into a specific language.

Description-Behavior Mismatch

Low
Confidence
89% confidence
Finding
The manifest describes a command that profiles a task, matches models, and estimates cost before starting work. In addition to that estimation behavior, the code reads, writes, and deletes a persistent history file under the user's home directory to track a "Lifetime Bonus," which is an extra stateful feature not conveyed by the main description beyond the brief mention of tracking lifetime bonus.

Context-Inappropriate Capability

Low
Confidence
83% confidence
Finding
The core stated purpose is selecting cost-effective models and estimating task cost. The reset function removes a file from the user's home directory, adding a data-deletion capability that is ancillary to cost estimation and not obviously required by that purpose.

Unverifiable Dependency: setuptools has 10 known advisory(ies) (CVE-2013-1633 (Setuptools vulnerable to Man-in-the-middle attacks); CVE-2025-47273 (setuptools has a path traversal vulnerability in PackageIndex.download that lead); CVE-2024-6345 (setuptools vulnerable to Command Injection via package URL) +7 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Unverifiable Dependency: wheel has 4 known advisory(ies) (CVE-2026-24049 (Wheel Affected by Arbitrary File Permission Modification via Path Traversal in w); CVE-2022-40898 (pypa/wheel vulnerable to Regular Expression denial of service (ReDoS)); CVE-2022-40898 (An issue discovered in Python Packaging Authority (PyPA) Wheel 0.37.1 and earlie) +1 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Description-Behavior Mismatch

Low
Confidence
94% confidence
Finding
The skill persists user-specific usage data to ~/.hermes/task-cost-history.json even though its primary purpose is model ranking and cost estimation. In this context, hidden persistence expands the data footprint of potentially sensitive task metadata and may surprise users who expect a stateless utility.

Context-Inappropriate Capability

Low
Confidence
91% confidence
Finding
The file performs persistent state management by creating, overwriting, and deleting a history file under the user's home directory. While not inherently malicious, filesystem mutation increases privacy and integrity risk for a tool that users may assume only computes recommendations locally in memory.

Missing User Warnings

Low
Confidence
90% confidence
Finding
The reset command deletes the history file immediately with no confirmation prompt or destructive-action warning. This can cause accidental loss of user state and auditability, especially if invoked indirectly or by typo in an automation context.

Static analysis

No suspicious patterns detected.