0.2.106 — clipboard reliability (backup file + OSC 52 kill switch), in-place scheduled task updates, and Stop/SubagentStop hooks that can keep the agent working.
Changelog
[new] Stop and SubagentStop hooks can block the agent from finishing a turn and feed a reason back to the model (Claude Code-compatible stop decision control), with a built-in cap after repeated continuations.
[changed] Scheduled tasks can be updated in place; one-time tasks are retired in favor of background commands.
[new] GROK_CLIPBOARD_NO_OSC52 disables OSC 52 clipboard sequences so unsupported terminals do not paint base64 payloads as garbage.
[changed] Every copy also writes a backup file (~/.grok/last-copy.txt by default, or GROK_COPY_FILE) so text stays recoverable when the terminal clipboard fails; /copy can take a file path instead of the clipboard.
[fix] Syntax highlighting in --minimal mode is visible on light terminals (ANSI accents; no light/dark theme switching).
[changed] Hook matchers are evaluated against per-event match values (tool name, notification type, subagent type, session start source, end reason, compaction trigger, error class, and more); Stop/SubagentStop gates default to a 600s timeout.
Agent & tools
/copy: optional file path argument (/copy out.txt, /copy 2 ~/exports/last-reply.md) writes there instead of the clipboard; the toast always names the backup path.
Scheduled tasks: update existing schedules in place; prefer background commands over one-shot tasks.
Hooks: Stop / SubagentStop are blocking gates (decision: block, continue: false, exit code 2 + stderr, or additionalContext); input includes stopHookActive, lastAssistantMessage, backgroundTasks, and sessionCrons. Interrupted and API-error turns do not run the completion gate (StopFailure remains observation-only).
Docs
User guide Hooks chapter: stop decision control, matcher coverage, timeouts, payload fields (permissionMode, background task / session cron shapes), and Claude Code porting notes.
Slash commands: /copy backup file and path-target behavior.
Theming: minimal-mode syntax highlighting on light and dark profiles.
Terminal support: GROK_CLIPBOARD_NO_OSC52, copy backup file, and Apple Terminal + SSH recovery via the backup path or /copy <file>.
Custom hooks doc aligned with matcher, timeout, and exit-code behavior for stop gates.
Under the hood
Product version 0.2.106 (workspace crates bumped in lockstep).
Session stop-gate path and related session-state handling for hook-controlled turn continuation.
Clipboard path honors the OSC 52 kill switch and always persists a recoverable backup alongside native/tmux legs.
Upgrade notes
One-time scheduled tasks are retired; move recurring or deferred work to updatable schedules or background commands.
Stop-gate hooks that run builds or tests should set an explicit timeout when they need more than the 600s default; failures fail open and the agent stops.
On terminals that garble OSC 52 (some VNC/X11 clients), set GROK_CLIPBOARD_NO_OSC52=1 before launch; use the copy backup file or /copy <path> when the local clipboard is unreachable (for example Apple Terminal over SSH).