The "respond with gate widgets; use '!' for free text" notice is terminal- flavored. Like the reLoop Esc guard, it used ctx.hasUI, which on pi >=0.80 is true in RPC too, so it leaked to the browser. Now guarded on ctx.mode === "tui". The plain text is still swallowed by the `handled` return in all modes; only the warning is dropped in RPC. No functional ctx.hasUI guard remains in the gate. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>