Back to skill

Security audit

beancount-migrate

Security checks for vulnerabilities and agentic risk

Overview

Review before installing: the skill promises local-only migration but also directs your agent to use connected online financial-ledger tools.

Use a fresh local ledger and explicitly prohibit hosted-tool access until the conflicting routing instructions are corrected. Keep the original exports, preserve source categories, approve mappings and the write destination, and check the migration report. The static scan reported no findings; the Review verdict rests on the verified hosted-ledger scope conflict.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
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 (5)

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

Although using bea is declared, refreshing price data is a distinct capability not described as part of transaction-history migration. The supplied command does not import transactions or perform the stated mapping and reconciliation tasks.

Content

No source excerpt is available for this finding.

L064 directs the agent to use hosted-ledger MCP tools despite the manifest explicitly excluding Beancount.io-hosted ledgers.

Medium
Category
Excessive Agency
Confidence
98% confidence
Finding

The Identify phase instructs the agent to use connected hosted-ledger MCP tools despite the description excluding Beancount.io-hosted ledgers and the workflow declaring local-only operation. This creates an ambiguous authorization boundary: an agent could perform remote financial-ledger operations under a workflow presented as local, although the supplied file does not specify which hosted tools would be called or demonstrate actual remote changes.

Content

No source excerpt is available for this finding.

The hosted-ledger instructions direct the skill to operate on Beancount.io ledgers despite the manifest explicitly excluding them.

Medium
Category
Excessive Agency
Confidence
97% confidence
Finding

The skill explicitly excludes Beancount.io-hosted ledgers, but this shared reference directs hosted-ledger workflows to use MCP tools, including skills without a matching hosted prompt. That conflicting instruction could lead the agent to perform an unsupported migration against a live hosted financial ledger rather than stop at the declared scope boundary. The confirmation requirements reduce the risk, and there is no evidence of credential theft or deliberate exfiltration, but they do not resolve the conflicting authorization to use an excluded destination.

Content

No source excerpt is available for this finding.

CSV instructions discard source categories despite the manifest requiring category-aware migration into a fresh ledger.

Medium
Category
Excessive Agency
Confidence
98% confidence
Finding

The instruction to ignore source categories contradicts the skill's category-aware migration purpose and assumes authoritative ledger history that a fresh ledger does not have. Following it can discard classification information and produce incorrect or incomplete financial records; transaction counts and balance reconciliation would not necessarily detect those classification errors.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · references/formats.md (reported line 26)May include surrounding context.

md
After sign interpretation, map to the **ledger's** convention for the source account: asset in = `+`, out = `−`; liability charge = `−`, payment = `+` (same rule as beancount-reconcile — keep the two skills' config stanzas consistent).

**Dates:** `05/07/2026` is ambiguous (MDY vs DMY). Prove it from the data when possible (a day > 12 disambiguates); otherwise ask once and persist. ISO `2026-05-07` needs no confirmation.

**Payee cleanup:** strip trailing store numbers/reference codes for the *payee* field but keep the raw description as the narration when they differ meaningfully: `payee "TRADER JOES"`, narration `"TRADER JOES #123 SEATTLE WA"`. When in doubt keep the raw string as payee — dedup hashes use the raw description (see dedup.md), not the cleaned payee.

Static analysis

No suspicious patterns detected.