0.2.111 — disable image/video generation tools, in-TUI doctor fix, /tutorial, resume-by-title, version pinning, plus a large reliability pass.
Changelog
[new] Image generation and video generation tools (and their slash commands) can be disabled via config.toml or environment variables.
[new] /session-info shows whether the session uses OAuth or an API key and where to manage the account.
[new] grok doctor fix runs from inside the TUI, not only the CLI — including named tmux fixes (tmux-clipboard, dcs-passthrough, tmux-extended-keys) that edit the host tmux config with backup and a manual reload step.
[new] Version pinning under [cli]: soft minimum_version / maximum_version guide the updater; hard required_minimum_version / required_maximum_version refuse startup outside the range. Env overrides (GROK_MINIMUM_VERSION, GROK_MAXIMUM_VERSION, GROK_REQUIRED_MINIMUM_VERSION, GROK_REQUIRED_MAXIMUM_VERSION) can only tighten bounds.
[new] Custom models (and shared model providers) accept query_params (appended to every request URL) and env_http_headers (header values resolved from env at client build).
[new] Top-level [shell_environment_policy] controls which environment variables tool subprocesses and terminals inherit (inherit, secret-pattern excludes, exclude / include_only, set).
[new] Under workspace, read-only, and strict sandbox profiles, Grok write-denies its user-global hook source paths (~/.grok/hooks/, hooks-paths, and absolute targets) while keeping the rest of the state dir usable.
[changed] minimum_version no longer blocks startup; it is only a soft anti-downgrade floor for the updater. Use required_minimum_version for a hard floor.
[changed] -r / --resume accepts a session ID or a title for the current directory (case-insensitive; a sole manually renamed title wins among duplicates; UUID-shaped values always take the ID path).
[fix] !cmd commands allow up to one hour before timing out.
[fix] npm package installs the native binary under $GROK_HOME/bin (same override as the Rust CLI).
[fix] Startup warnings point to /doctor for details and fixes.
[fix] Dashboard hover and clicks no longer miss the gaps between items in wide mode.
[fix] Shift/Alt+Enter inserts a newline while editing a queued prompt.
[fix] Queued prompt edits under combine mode no longer lose changes due to premature hold release.
[fix] Forking a session that used compaction no longer breaks later rewinds with missing checkpoint errors.
[fix] A permission prompt that appears while viewing scrollback correctly takes focus.
[fix] Esc once cancels the current agent turn (except in fullscreen vim scrollback mode).
[fix] Turns that repeat the exact same tool call many times in a row are stopped automatically.
[fix] Either spelling of the workspace teleport disable flag loads and saves correctly.
[fix] Background subagent completion messages no longer leak into unrelated sessions when several sessions are active.
[fix] When the auto-permission classifier times out or fails, a normal permission prompt is shown instead of a silent deny.
[fix] Managed MCP tools no longer time out prematurely on slow operations (for example Notion updates).
[changed] Voice dictation on macOS uses less memory by running capture in a temporary helper process.
Agent & tools
[new] /tutorial (aliases /tour, /onboarding) opens the onboarding topic list in the TUI — short reads on first prompt, context, navigation, slash commands, worktrees, plan mode, customization, and switching from another agent. Nothing auto-shows; the command or palette is the entry point.
Docs
Slash-commands guide: /tutorial and aliases.
Configuration: version pinning; pointers to custom-model request fields and shell environment policy.
Custom models: query_params and env_http_headers (including provider inheritance).
Headless mode and sessions: resume by ID or title; scripts should still prefer IDs.
Sandbox: global hook write-deny behavior; new shell environment policy section.
Shell README: -r / --resume ID-or-title wording aligned with the above.
Under the hood
Internal version-policy handling split into soft updater bounds vs hard startup bounds.
Subagent/task coordination and shell-environment policy helpers reworked for clearer ownership.
Image stack bumped (image 0.25.10 and related codecs); wildmatch added for glob-style env policy matching.
Package/crate versions advanced to 0.2.111.
Upgrade notes
If you depended on minimum_version refusing to start old builds, set required_minimum_version (or GROK_REQUIRED_MINIMUM_VERSION) instead.
npm installs now place the native binary under $GROK_HOME/bin; ensure that path matches how you invoke the CLI.
Sandbox profiles that enforce hook write-deny refuse to start if the kernel policy cannot be applied (including unsafe symlinked $GROK_HOME / hook targets).
After a tmux-related /doctor fix, reload tmux with the command shown (Grok does not source-file for you), then re-run /doctor.