πŸ“¦

Audit History

paid-measurement-loop - 8 audits

Version comparison

Capability and finding changes across audited versions, newest first.

VersionDateResultReview itemsChange vs previous
v8 LatestJul 27, 2026, 11:36 AM 1 confirmed1No capability change
v7 Jul 13, 2026, 02:23 PM No confirmed findings2No capability change
v6 Jul 13, 2026, 02:23 PM No confirmed findings2No capability change
v5 Jul 12, 2026, 01:21 PM No confirmed findings1No capability change
v4 Jul 6, 2026, 06:18 PM 1 confirmed1No capability change
v3 Jul 9, 2026, 12:15 PM No confirmed findings2No capability change
v2 Jul 6, 2026, 06:18 PM 1 confirmed1No capability change
v1 Jul 4, 2026, 04:17 PM No confirmed findings1Baseline

Jul 27, 2026, 11:36 AM

Most static alerts are false positives caused by Markdown code formatting and static repository links. One instructed ledger command interpolates a campaign placeholder into a shell command, and the result filename convention lacks a campaign-name sanitization rule. No prompt injection, credential collection, or unauthorized network behavior was found.

1
Files scanned
86
Lines analyzed
5
Review items
0
False positives ignored

Confirmed security concerns (1)

Medium
Unsanitized campaign name in result filename
The save convention inserts the campaign name into a result filename without specifying a safe character set. A campaign name containing path separators could write outside the intended results directory if implemented literally.
The filename template explicitly includes a campaign placeholder and gives no sanitization rule. Exploitability depends on the host implementation, but the instruction creates a clear path-handling hazard.
Capability review items (1)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

Medium
Ruby/shell backtick execution
5. **Snapshot to the ledger.** Record baseline and candidate signals so the delta is computed, not e
The skill instructs a shell command that interpolates the campaign placeholder without quoting or argument validation. A campaign value containing shell metacharacters could alter command execution.
Audited by: claude

Jul 13, 2026, 02:23 PM

Thirty-four static alerts are false positives caused by Markdown formatting, repository links, metadata URLs, or ordinary analysis prose. The line 62 command risks shell injection through an unquoted campaign value. The line 71 save rule risks path traversal through an unsanitized campaign filename.

1
Files scanned
83
Lines analyzed
5
Review items
0
False positives ignored
Capability review items (2)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

High
Ruby/shell backtick execution
5. **Snapshot to the ledger.** Record baseline and candidate signals so the delta is computed, not e
Line 62 directs execution of a shell command with the user-derived campaign placeholder unquoted. Shell metacharacters in a campaign name could alter the command.
High
Path traversal sequence
Ask "Save these results?" If yes, write to `memory/ad/paid-measurement-loop/` using `YYYY-MM-DD-<cam
Line 71 incorporates the user-derived campaign value into a filename without sanitization or a containment check. Path separators could make the write escape the intended directory.
Audited by: codex

Jul 13, 2026, 02:23 PM

Thirty-four static alerts are false positives caused by Markdown formatting, repository links, metadata URLs, or ordinary analysis prose. The line 62 command risks shell injection through an unquoted campaign value. The line 71 save rule risks path traversal through an unsanitized campaign filename.

1
Files scanned
83
Lines analyzed
5
Review items
0
False positives ignored
Capability review items (2)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

High
Ruby/shell backtick execution
5. **Snapshot to the ledger.** Record baseline and candidate signals so the delta is computed, not e
Line 62 directs execution of a shell command with the user-derived campaign placeholder unquoted. Shell metacharacters in a campaign name could alter the command.
High
Path traversal sequence
Ask "Save these results?" If yes, write to `memory/ad/paid-measurement-loop/` using `YYYY-MM-DD-<cam
Line 71 incorporates the user-derived campaign value into a filename without sanitization or a containment check. Path separators could make the write escape the intended directory.
Audited by: codex

Jul 12, 2026, 01:21 PM

Thirty-five static findings are false positives caused by Markdown formatting, repository-relative links, metadata URLs, and ordinary campaign terminology. The line 62 ledger command is confirmed because its unquoted campaign placeholder could permit shell argument or command injection.

1
Files scanned
83
Lines analyzed
4
Review items
0
False positives ignored
Capability review items (1)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

Medium
Ruby/shell backtick execution
5. **Snapshot to the ledger.** Record baseline and candidate signals so the delta is computed, not e
Line 62 instructs execution of a Python ledger command with an unquoted campaign placeholder, allowing user-supplied shell metacharacters to alter the command.
Audited by: codex

Jul 6, 2026, 06:18 PM

Most static findings are false positives caused by Markdown code fences, inline code, metadata URLs, and fixed relative documentation links. One real medium-risk issue remains: the skill instructs the agent to run a local ledger command with user-controlled campaign data. A semantic review also found that saved filenames should sanitize campaign names before writing to memory.

1
Files scanned
81
Lines analyzed
5
Review items
0
False positives ignored

Confirmed security concerns (1)

Medium
User-Controlled Filename Requires Sanitization
Line 69 tells the agent to save results using a filename that includes the campaign name. Because the campaign name is user-controlled, path separators or special characters could change the write target unless sanitized.
The save path is fixed, but the filename pattern includes a user-derived campaign field. The risk depends on host filename handling, so confidence is high enough to require mitigation but not critical.
Capability review items (1)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

Medium
Ruby/shell backtick execution
5. **Snapshot to the ledger.** Record baseline and candidate signals so the delta is computed, not e
Line 60 instructs the agent to run a local python3 ledger command with a user-controlled campaign placeholder. This is legitimate tooling, but it creates command-injection and unsafe-argument risk unless arguments are passed without shell interpolation.
Audited by: codex

Jul 9, 2026, 12:15 PM

Most static alerts are false positives from Markdown backticks, static documentation links, and marketing workflow language. Two external command instructions are confirmed because they direct the agent to run local Python helper scripts on campaign data. No prompt injection or data exfiltration intent was found.

1
Files scanned
83
Lines analyzed
5
Review items
0
False positives ignored
Capability review items (2)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

Medium
Ruby/shell backtick execution
> **Significance on the rollup (keyless):** when comparing variants or before/after periods, `python
Line 46 instructs the agent to run python3 against a helper script under CLAUDE_PLUGIN_ROOT with user-supplied measurement values. The command appears legitimate, but it is still external command execution in a community skill.
Medium
Ruby/shell backtick execution
5. **Snapshot to the ledger.** Record baseline and candidate signals so the delta is computed, not e
Line 62 instructs running python3 ledger helper commands to record, diff, and trend campaign data. The purpose is measurement workflow support, but it still causes local script execution and filesystem writes.
Audited by: codex

Jul 6, 2026, 06:18 PM

Most static findings are false positives caused by Markdown code fences, inline code, metadata URLs, and fixed relative documentation links. One real medium-risk issue remains: the skill instructs the agent to run a local ledger command with user-controlled campaign data. A semantic review also found that saved filenames should sanitize campaign names before writing to memory.

1
Files scanned
81
Lines analyzed
5
Review items
0
False positives ignored

Confirmed security concerns (1)

Medium
User-Controlled Filename Requires Sanitization
Line 69 tells the agent to save results using a filename that includes the campaign name. Because the campaign name is user-controlled, path separators or special characters could change the write target unless sanitized.
The save path is fixed, but the filename pattern includes a user-derived campaign field. The risk depends on host filename handling, so confidence is high enough to require mitigation but not critical.
Capability review items (1)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

Medium
Ruby/shell backtick execution
5. **Snapshot to the ledger.** Record baseline and candidate signals so the delta is computed, not e
Line 60 instructs the agent to run a local python3 ledger command with a user-controlled campaign placeholder. This is legitimate tooling, but it creates command-injection and unsafe-argument risk unless arguments are passed without shell interpolation.
Audited by: codex

Jul 4, 2026, 04:17 PM

The skill is primarily instructional Markdown. Most static alerts are false positives caused by inline code formatting, homepage metadata, and relative repository links. One external command pattern is confirmed at SKILL.md line 60 because the skill instructs agents to call a local ledger helper, which should require user confirmation and safe argument handling.

1
Files scanned
81
Lines analyzed
4
Review items
0
False positives ignored
Capability review items (1)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

Medium
Ruby/shell backtick execution
5. **Snapshot to the ledger.** Record baseline and candidate signals so the delta is computed, not e
Line 60 instructs an agent to execute python3 against a local ledger helper with a user-supplied campaign placeholder. The helper appears bounded to the repository, but it is still an external command that needs confirmation and argument validation.
Audited by: codex