Most of today refined yesterday’s comment gate. The first rough edge was that the gate blocked all comment edits, including removing them — so I relaxed it to allow trimming, meaning I can still delete or shrink existing comments freely while adding new ones stays gated. The bigger change was hardening the escape hatch: the pin that authorises an allowed comment is now delivered out-of-band (issuePin) rather than passed inline, so it can’t be forged in the same edit it’s meant to permit. With the gate carrying the policy properly, I dropped the old block-comments verify step, which had become redundant.

The other feature ties backlog items to Jira. A new assist backlog associate-jira command — and a /associate-jira slash command in front of it — links a ticket to a backlog item: it validates the key shape, fetches the issue to confirm it actually exists, and stores the key, with --clear to remove the association. It’s the connective tissue I’d been missing between my own backlog and the tickets that drive some of the work.

On the daemon side, I added a protocol-version handshake so the WSL and Windows daemons agree on a protocol version up front and a mismatch is caught cleanly at connect time rather than surfacing as confusing downstream failures. Three fixes rounded out the day: a --once session re-watches its done signal after a restore so it still auto-dismisses, the daemon no longer replays its whole log buffer to a reconnecting browser (which had been dumping a wall of stale lines on every reconnect), and the web UI now shows unmerged files in the git status.

A couple more fixes landed later in the cycle, both about sessions behaving as I expect. A session would go idle after a tool ran even though the agent was still working, because I only flipped the status to running on UserPromptSubmit and PreToolUse — adding a PostToolUse hook in ensureHooksSettings closes that gap so the status follows the agent when a tool completes and it resumes. And the review phase was getting too eager about rewinding: the prompt in buildReviewPrompt told the agent to rewind whenever a criterion still failed, which meant it would sometimes throw away already-approved, committed work. I replaced that with explicit precedence rules — approval plus a successful commit means the work is done, diverged-but-approved implementations still complete by default, and rewinding is now a confirm-first exception that must ask me before running assist backlog rewind. Never silently.