web/src/alerts.js builds the prompt from alert annotations and labels, and main.js sends it with sendInput. Newlines, CR, ESC and control bytes in Grafana text pass through unchanged:
If the active window is shell, an embedded newline runs as a root command.
A CR submits to Claude, skipping the review step.
Fix: replace [\x00-\x1f\x7f] with spaces and send via term.paste(), so bracketed paste applies. Apply the same to every data-ask-claude source.
_Source: engineering review, 2026-10-07._
`web/src/alerts.js` builds the prompt from alert annotations and labels, and `main.js` sends it with `sendInput`. Newlines, CR, ESC and control bytes in Grafana text pass through unchanged:
- If the active window is `shell`, an embedded newline runs as a root command.
- A CR submits to Claude, skipping the review step.
**Fix:** replace `[\x00-\x1f\x7f]` with spaces and send via `term.paste()`, so bracketed paste applies. Apply the same to every `data-ask-claude` source.
jared
added this to the v0.5.0 hardening + header/phone milestone 2026-10-07 20:04:26 -04:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Source: engineering review, 2026-10-07.
web/src/alerts.jsbuilds the prompt from alert annotations and labels, andmain.jssends it withsendInput. Newlines, CR, ESC and control bytes in Grafana text pass through unchanged:shell, an embedded newline runs as a root command.Fix: replace
[\x00-\x1f\x7f]with spaces and send viaterm.paste(), so bracketed paste applies. Apply the same to everydata-ask-claudesource.