From a664863485b92ad0b3081fecf5e03a86df0b3615 Mon Sep 17 00:00:00 2001 From: artale Date: Mon, 15 Jun 2026 12:53:55 +0200 Subject: [PATCH] fix: exclude intentional prompt fixtures from default scan --- COMMANDS.md | 1 + src/index.ts | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/COMMANDS.md b/COMMANDS.md index 3805c97..1081344 100644 --- a/COMMANDS.md +++ b/COMMANDS.md @@ -89,6 +89,7 @@ fable-agent plinius godmode "improve explanation quality" ### `security` - `security scan `: hidden Unicode, reversed tags, fake wrappers, role spoofing, and instruction-smuggling markers + - `--include-fixtures`: include intentional red-team fixtures/generators ### `pai` diff --git a/src/index.ts b/src/index.ts index e7524c9..439e7b3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2576,7 +2576,8 @@ const security = program security .command("scan ") .description("Scan files for prompt-injection markers") - .action(async (target: string) => { + .option("--include-fixtures", "Include intentional red-team fixtures/generators") + .action(async (target: string, opts: { includeFixtures?: boolean }) => { const { findPromptInjection } = await import("./core/prompt-injection-safety.js"); const root = path.resolve(target); const files: string[] = []; @@ -2591,6 +2592,9 @@ security return; } if (/\.(test|spec)\.(ts|js)$/i.test(file)) return; + const rel = path.relative(root, file).replace(/\\/g, "/"); + // ponytail: default scan ignores our own intentional prompt-injection generator; use --include-fixtures for audit mode. + if (!opts.includeFixtures && rel === "src/upgrades/parseltongue.ts") return; if (/\.(md|txt|ts|js|json|yaml|yml)$/i.test(file)) files.push(file); };