{"repo":"NousResearch/hermes-agent","public_id":"18581","display_label":"ZWJ emoji falsely flagged as prompt injection threat","summary":"A threat/injection scanner incorrectly flags Zero Width Joiner (U+200D) characters in context files, causing legitimate emoji sequences and files like SOUL.md to be dropped. Multiple fixes attempt to exempt ZWJ within valid emoji grapheme clusters from the invisible-unicode detection rule, with at least one related change to surface scanner block warnings to users.","subsystem":"agent","counts":{"members":12,"open_issues":1,"open_issues_distinct":1,"open_prs":4,"closed_issues":1,"merged_prs":0,"attempt_prs":10},"landed_fix":null,"resolution":{"state":"unresolved","by":null},"freshness":{"state":"never_verified","last_verified_at":null,"is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.15696969696969695},"fix_edges":[],"members":[{"kind":"issue","number":18581,"title":"🤸‍♀️ SOUL.md blocked by ZWJ emoji — cartwheel gymnast triggers prompt injection filter","url":null,"state":"closed"},{"kind":"issue","number":59492,"title":"False positive: ZWJ emoji (U+200D) in context files (SOUL.md/AGENTS.md) is flagged as injection and drops the whole file","url":null,"state":"open"},{"kind":"pr","number":12673,"title":"fix: allow ZWJ inside emoji grapheme clusters in context/memory/skills scanners","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":18644,"title":"fix: remove ZWJ from invisible char blocklist to allow compound emoji in context files","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#18616","number":18616}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":35808,"title":"fix: allow ZWJ (U+200D) in legitimate emoji sequences","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":59503,"title":"fix(security): skip ZWJ in legitimate emoji sequences during injection scan","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":59622,"title":"fix(agent): surface threat-scanner block warnings to users","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":59652,"title":"fix(prompt-builder): surface threat-scanner context blocks to the user","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#59622","number":59622},{"kind":"pr","value":"#59612","number":59612},{"kind":"pr","value":"#59625","number":59625},{"kind":"pr","value":"#59622","number":59622},{"kind":"pr","value":"#59622","number":59622}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":59668,"title":"fix(agent): preserve ZWJ (U+200D) in context files (#59492)","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#59503","number":59503},{"kind":"pr","value":"#59492","number":59492},{"kind":"pr","value":"#59503","number":59503},{"kind":"pr","value":"#12673","number":12673}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":59701,"title":"fix(agent): allow ZWJ emoji sequences in threat scanner (#59492)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#59503","number":59503},{"kind":"pr","value":"#59503","number":59503},{"kind":"pr","value":"#12673","number":12673},{"kind":"pr","value":"#59492","number":59492}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":59710,"title":"fix(threat_patterns): stop flagging legitimate ZWJ emoji as invisible-unicode injection","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#59503","number":59503},{"kind":"pr","value":"#59492","number":59492},{"kind":"pr","value":"#59503","number":59503},{"kind":"pr","value":"#12673","number":12673}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":59925,"title":"fix(threat-scanner): exempt ZWJ emoji sequences from invisible unicode flag (#59492)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#59503","number":59503},{"kind":"pr","value":"#59492","number":59492},{"kind":"pr","value":"#59701","number":59701},{"kind":"pr","value":"#59668","number":59668},{"kind":"pr","value":"#59710","number":59710},{"kind":"pr","value":"#59923","number":59923}],"category":"duplicate_of","implication":"duplicate"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}