You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The gh-issue-create block in unified_pre_tool.py fires even when documented allowances should permit filing. Consolidates and supersedes #987, #1095, #1199 with verified facts and live two-failure evidence.
Verified Facts (plan-critic round 2, against live code)
GH_ISSUE_COMMANDS = {create-issue, plan-to-issues, improve, refactor, retrospective} at unified_pre_tool.py:513
_is_issue_command_active line 1417; _write_issue_context_for_skill line 4510
Live Evidence (2026-06-11)
/improve --auto-file (improve IS whitelisted): context file with command=improve written in same Bash call as the create — BLOCKED
/plan STEP 6: context with command=create-issue, fresh timestamp — BLOCKED twice (with AND without the literal trigger string in the heredoc body, ruling out heredoc false positive)
(a) Allowance keyed to actual Skill-invocation state — _write_issue_context_for_skill (4510) writes the authoritative context when the Skill tool fires; manually-written context is ignored/insufficient (different path, signature, or session-keyed field)
(b) _is_issue_command_active mtime/TTL ordering rejects same-Bash-call writes
(c) Command-value validation rejects values not matching the invoking skill
Implementation Approach
Diagnose (read lines 2775-2840, 1417-1460, 4510-4560; reproduce each evidence case via subprocess) → fix the legitimate paths (improve promotion CREATE, plan STEP 6, fix-forward filing) → update skill docs (plugins/autonomous-dev/commands/improve.md STEP 5, plugins/autonomous-dev/commands/plan.md STEP 6) to match the actual hook contract → add runtime-context regression tests invoking the REAL hook via subprocess.
Acceptance Criteria
Root cause identified and documented (which hypothesis)
/improve --auto-file CREATE path files without block
/plan STEP 6 files without block
Bare gh issue create (no skill context) still blocked
Split from macro-first plan (.claude/plans/macro-first-continuous-improvement.md) per plan-critic round 2 — load-bearing for the promotion CREATE path but decoupled from signal capture. Supersedes #987, #1095, #1199. Plugin Version: 3.50.0 (c41558b)
Summary
The gh-issue-create block in unified_pre_tool.py fires even when documented allowances should permit filing. Consolidates and supersedes #987, #1095, #1199 with verified facts and live two-failure evidence.
Verified Facts (plan-critic round 2, against live code)
GH_ISSUE_COMMANDS = {create-issue, plan-to-issues, improve, refactor, retrospective}at unified_pre_tool.py:513_detect_gh_issue_create(line 2775), NOT validate_command_file_ops.py as [CI-warning] /improve --auto-file skill instructs gh issue create but hook blocks it — skill/hook contract mismatch #1199 assumed_is_issue_command_activeline 1417;_write_issue_context_for_skillline 4510Live Evidence (2026-06-11)
Hypotheses (investigate in order)
(a) Allowance keyed to actual Skill-invocation state —
_write_issue_context_for_skill(4510) writes the authoritative context when the Skill tool fires; manually-written context is ignored/insufficient (different path, signature, or session-keyed field)(b)
_is_issue_command_activemtime/TTL ordering rejects same-Bash-call writes(c) Command-value validation rejects values not matching the invoking skill
Implementation Approach
Diagnose (read lines 2775-2840, 1417-1460, 4510-4560; reproduce each evidence case via subprocess) → fix the legitimate paths (improve promotion CREATE, plan STEP 6, fix-forward filing) → update skill docs (
plugins/autonomous-dev/commands/improve.mdSTEP 5,plugins/autonomous-dev/commands/plan.mdSTEP 6) to match the actual hook contract → add runtime-context regression tests invoking the REAL hook via subprocess.Acceptance Criteria
Split from macro-first plan (.claude/plans/macro-first-continuous-improvement.md) per plan-critic round 2 — load-bearing for the promotion CREATE path but decoupled from signal capture. Supersedes #987, #1095, #1199.
Plugin Version: 3.50.0 (c41558b)