# 1.0.52 — 2026-10-11

## Features

- **Rex terminal support**: Grok now reports its status (working, waiting for you, done, or failed) to Rex through OSC 7501, so Rex tabs show what each session is doing.
- **Tool call density improvements**: expanded tool call groups now stay expanded as new calls join them, and Ctrl+E expands or collapses thinking faster in long transcripts.
- Project hooks placed in a repository subfolder are now loaded when you launch inside that folder.
- HTTP hooks to localhost now work, and bad hook URLs are reported at load time.
- Command status-line scripts now see the current turn's prompt ID and start time while the turn is active.

## Bug Fixes

- **Grep searches** that time out or fail now show an error instead of appearing as empty results.
- **`/model` switches** that fail no longer change the footer or saved default model.
- **Export and copy** commands no longer overwrite an existing file; they refuse with a clear message.
- **Shell commands** no longer keep running after you quit grok or it receives a signal.
- Approval cards for background subagents no longer disappear when the parent turn ends.
- `grok worktree rm` and `gc` no longer delete a worktree that an open session is using.
- **grok inspect** no longer warns about valid pins that only requirements.toml accepts.
- **Pasted images** that exceed the 50 MB send limit are now rejected with a clear message instead of silently dropped.
- `grok -p --effort` now prints a warning when the model ignores the flag and refuses invalid effort levels.
- Permission prompts now show which session needs approval.
- **grok worktree rm** now refuses to delete git repositories, .git folders, or any directory grok did not create.
- **Grep** and **list_dir** now report a clear error when the search root or directory cannot be read instead of silently returning no results.
- **Cancelled terminal commands** now show the actual command that was stopped.
- **Wrapped URLs** in prompts and quotes now link to the complete address instead of being cut at the wrap.
- **@mentions and image placeholders** now respect Read deny rules and are omitted from the prompt.
- **Restarting** after a model switch no longer reverts to the previous model.
- Long tool turns that include PostToolUse hook output now compact correctly instead of hitting the prompt length limit.
- Headless prompts that start with a byte-order mark no longer send the mark to the model or break JSON prompt files.
- When a permission rule blocks a tool call, any context returned by a PreToolUse hook still reaches the model.
- An invalid shell_environment_policy table in config.toml now causes grok to exit with a clear error instead of silently using the full environment.
- MCP tool replies containing invalid characters no longer cause the call to time out.
- **Context overflow errors** now trigger automatic compaction instead of failing the turn.
- Inline tags in agent replies no longer break line layout, and /workflow stop now picks the correct live run.
- **Auto-compaction** now stops after three context refills in a row instead of looping forever.
- **Minimal mode** now shows the permission prompt instead of a hidden plan or cancel panel when both are present.
- **Project rules files** that resolve outside the git root or workspace folder are now skipped.
- **[permission] rules** now load alongside compact deny/allow/ask lists in config.toml.
- **Unrecognized permission keys** or [permissions] sections now appear as skipped entries in grok inspect.
- **Approval cards** now close the block viewer so the card is visible.
- Shell redirects to wildcard or variable paths now correctly respect deny rules in Auto mode.
- The in-session resume picker now matches the ungrouped layout shown on the welcome screen when configured.
- HTTP MCP tools that return a JSON-RPC error are now executed only once.
- StopFailure hook matchers containing commas or spaces are now treated as regex patterns.

## Performance

- Multiple Notification hook chains now start in parallel instead of waiting for the previous chain to finish.


# 1.0.51 — 2026-10-09

## Breaking Changes

- Cancel and edit-resend on long sessions no longer unexpectedly revert workspace files.
- **Memory settings** simplified: rollout and file_writes_enabled options removed; memory is on or off.
- **Removed the `/share` command** and related session sharing features from the CLI and SDK.

## Features

- **Inline viewports** can now be restored at a previously saved screen area without extra cursor queries.
- Headless `grok -p` now waits for background goals to finish and reports their outcome.
- **`/imagine`** and similar commands now run the matching bundled skill when the required tools are unavailable.
- **New `/density` command** and Tool call density setting let you choose how much detail tool calls show in the transcript.
- **Web fetch approval cards** now include "always allow" and "never allow" domain options that persist for the folder.
- **Slash command completion** now updates live when skills are added or changed during a session.
- **Request form** now securely collects and fills sensitive details like passwords or card numbers without sending values to the model.
- **Chrome profiles** can now be persisted across restarts using durable state directories.
- Workspace server sessions now share one Chrome instance for cookies and storage.
- **`/feedback` Drafts tab** now supports `G` / `Home` and `End` to jump to the first or last draft.
- **Pinned sessions** on the dashboard now stay in the order you pinned or reordered them.
- **Shift+Enter, Ctrl+., Ctrl+/ and Ctrl+[ / ]** now work inside tmux when extended-keys are enabled.
- **grok -p --output-format json** now reports the exact worktree folder used (useful after -w name collisions).
- Bare hook commands such as `my-guard` now run from PATH when not found next to the hook file.
- Headless JSON error output now includes the worktree folder when a session was started.
- **grok sessions list** and /resume now show worktree sessions started from the same subfolder.
- **/exit** (and aliases) in a dashboard details view now closes only that session instead of quitting Grok.
- **Editors offering file access** now receive a one-time transcript notice that the agent reads and writes disk files.
- **--background-wait-timeout** now also stops an active headless goal after the timeout and exits with an error.
- **Interactive sessions** now include the Grok Build user guide location so the agent can answer usage questions.
- **New `/workflow` commands** let you list, stop, and resume background workflow runs without sending them to the model.
- **Background workflow runs** now appear in the tasks pane with a stop button.
- Hooks that ask about web searches or file deletes now show the hook name on the approval card.
- config.toml now accepts an [update] section without breaking other commands.
- Hook load errors listed in /hooks can now be expanded to see the full message.
- `grok worktree` commands now work correctly inside Jujutsu repositories.
- Images pasted with skill commands like /pr-workflow are now sent to the model.
- Pressing Ctrl+C on a goal now pauses the goal instead of letting it continue.
- grok -p now runs auth_provider_command when no login is stored.
- Reopening a chat with an active goal now continues the goal automatically.
- Browser tabs can now be restored on demand instead of all at once when a session resumes.
- `grok agent stdio` now supports listing sessions via ACP and returns consistent reply envelopes.
- Answering an approval with a message now tells the model it is a follow-up.
- **--allowed-tools** is now accepted as an alias for --allow in headless mode.

## Bug Fixes

- Slash command suggestions no longer make the text after the cursor disappear while typing.
- Running workflows in the dock now show the same pulsing indicator as in the main scrollback.
- Mode switch tool calls now appear in the transcript with the target mode name.
- Always-approve mode now automatically approves web requests without extra prompts.
- **The follow indicator no longer appears** when only blank padding sits below the viewport.
- **Search failures now keep the original pattern** instead of showing an empty Search "".
- **Sessions that open without a model list now use the public Auto id** and succeed on every account.
- Background wake turns that request plan changes or mode switches are now handled correctly.
- Model-call retries now show progress status instead of a generic waiting message.
- Foreground subagent activity now appears correctly after resume.
- Very large pasted prompts are now offloaded to a file instead of being sent inline.
- Sign-in failures now show a clear plain-English message with the next step instead of raw errors.
- Logging out now stops any running turns on local sessions instead of leaving them active.
- The send-now shortcut no longer accidentally enables always-approve mode while a permission card is open.
- `/find` now keeps match counts and navigation accurate while replies or command output stream in.
- Images from tools are now validated so bad files no longer break the current turn or future replays.
- Screenshots and other image artifacts saved by the browser tool are now stored as real image files.
- Rate-limit errors now show the expected message; very small images are rejected early.
- Send-now (Ctrl+Enter) no longer accidentally answers an open question card.
- Opening the queue with Up now scrolls so the selected follow-up is visible.
- Command output that contains clear-screen codes is no longer discarded.
- **Dashboard cursor and overlay counter** now correctly track the active grouping view.
- **Headless JSON output** now reports the correct stop reason when the turn limit is reached and removes duplicate error prefixes.
- **Session picker footer** no longer lists the same shortcut twice.
- **Dragging images** from a file manager onto terminals like GNOME Terminal or xfce4-terminal now attaches them correctly.
- **Plan comments** added while a revision runs are now preserved and sent when the plan is approved.
- **Permission prompts** that fail now show a clearer message without blaming the interface.
- **--disallowed-tools** now accepts the exact names shown to the model (run_terminal_command, spawn_subagent, etc.).
- Long pastes without bracketed-paste markers are now read completely instead of stalling after ~1 KB.
- A feedback send now shows "Sending feedback…" immediately; failed sends no longer repeat the lead phrase.
- Typing, arrows or Enter while an approval card appears no longer accidentally approve the action or enable always-approve mode.
- **Error hints** for legacy session import now appear in full instead of being cut off by the pager.
- **Skills** in the folder where grok started now correctly show as (local).
- **Worktree creation** no longer hangs when the repo contains named pipes or sockets.
- **--no-subagents** flag now works correctly in headless / -p sessions.
- **Resumed sessions** now correctly show aborted subagent tasks as cancelled instead of failed.
- **Large parallel shell batches** no longer drop calls with "hook state lost" errors.
- **Write approval cards** now show the existing file contents that will be replaced.
- **Slash command completion** now shows the correct name for files under commands/ instead of always showing /commands.
- **PreToolUse hooks** now validate rewrites against the tool schema and deny invalid ones before running the tool.
- **Ctrl+C during a turn** now cancels the turn even when a modal such as /mcps or the block viewer is open.
- **grok -w** now opens the session at the worktree root (with a note) when the original launch folder does not exist in the new worktree.
- **`/cd`** and the location picker now accept quoted or escaped folder paths.
- Web search hooks now fire under the correct `web_search` name and carry `query`.
- Large file writes or many screenshots no longer end the session.
- Glob tool hooks now match under `list_dir` and carry the correct directory.
- **`/find`** now scrolls to the exact wrapped row containing the current match.
- Downloads via FetchMcpResource are now refused in plan mode and resolve paths consistently.
- Pinned dashboard sessions now survive restarts and layout changes instead of disappearing from the saved list.
- Slash commands like /imagine now work regardless of capitalization and correctly substitute skills when tools are missing.
- Turning off bypass mode without naming a session now correctly restores prompts in all open sessions.
- /delete with extra text now shows an error instead of deleting the current session.
- **Failed /feedback** status messages now wrap inside the dialog instead of clipping at the border.
- **Number-key picks in the dashboard peek** no longer leak to the wrong agent after Up/Down navigation.
- **Worktrees created with -w** are now correctly tracked and resumable even when GROK_HOME is reached through a symlink.
- `grok worktree rm` and `gc` now clean up names after manually deleting a worktree folder so `-w NAME` works again.
- Hook scripts that read stdin with `read` now receive a complete line.
- A policy that disables non-managed hooks now applies to the next session instead of only after restart.
- `/resume` and `grok sessions list` no longer show worktree sessions from a sibling submodule or separate-git-dir repo.
- A hook listed under two different matchers now runs only once per tool call.
- Typing a hidden command such as `/cd` in a session and pressing Enter now runs it instead of accepting a near-match skill.
- **@-file completion** no longer accepts a match from an earlier query when you type quickly.
- **Tool hooks** now run one at a time per session and stop promptly on cancel or exit.
- **PostToolUse hooks** now receive a correct whole-millisecond duration.
- **PreToolUse hooks** for shell commands now see the model's block_until_ms value.
- **MCP tool calls** now show hook permission prompts and cards name the hook that asked.
- **Typing while a permission or ask card is visible** no longer selects or answers the card.
- **grok worktree list** now shows unfinished copies left by an interrupted create.
- **Auto mode** now asks before deleting files that the classifier has not already allowed.
- **Fixed intermittent** List/Read/Open failures during concurrent v2 hardening migrations.
- **grok -p -s** with a reused session id now shows the plain refusal message instead of JSON-RPC noise.
- **Settings saves** no longer re-insert the built-in default fork model into config.toml.
- **Fixed several** pager rows that showed wrong paths, truncated names, or hid failure/cancel states.
- **--system-prompt** now correctly appends rules from --append-system-prompt instead of dropping them.
- **/new** now inherits always-approve mode from the tab it was run from instead of another tab.
- **Multi-select questions** now let you toggle several answers with number keys before submitting.
- **Slash-command notices** typed while a reply streams no longer hide the streaming reply.
- **@ file search** no longer accepts keys or moves the highlight while results are still updating.
- **Worktree db rebuild** now restores names so `rm` and `show` by name work again.
- A prompt blocked by a hook no longer titles the session.
- **Background subagents** now respect saved approvals and --always-approve after the parent turn finishes.
- **Per-session system prompt overrides** now correctly use only the session's own rules.
- **Connection stalled** errors now show a clearer message with network advice.
- **Invalid model provider tables** now produce a clear startup error instead of silent fallback.
- **Narrow feedback dialog** now shows full draft titles and readable confirm prompts.
- **/workflow stop|resume <name>** now correctly targets the live run instead of an ended first run.
- Dialogs like /feedback no longer disappear on very short terminal windows.
- Delete operations now respect the same permission rules as shell rm commands.
- Hooks can no longer rewrite a web-search call to restrict domains.
- Workspace server now starts with per-session private Chrome by default.
- Notification hooks for permission prompts and task completion now run reliably before a headless session exits.
- Headless goal runs no longer print a spurious "Goal paused" message after completion.
- Legacy UI density settings now combine correctly across config tiers and produce expected folding.
- Approval answers sent after a turn ends no longer affect the turn.
- Background shell commands now fail immediately when the working directory does not exist.
- `grok worktree rm` without `-f` now safely keeps worktrees when the unsaved-work check fails or times out.
- The dashboard slash menu now shows skills from the home session even when opened early.
- `grok worktree rm` and `gc` now correctly remove worktrees whose only untracked content is empty folders.
- Editing a queued prompt now prevents accidental removal with a stale client view.
- The model is now told when memory is turned off or on for the session.
- Hook results in the UI now correctly distinguish between notes and tool outcomes.
- Permission cards for MCP tools can no longer be tricked into showing fake option rows.
- The agent stdio mode now returns clearer errors for malformed client requests and consistent recap replies.
- Scroll logging and acceleration calculations no longer produce backwards timestamps under load.
- Hooks and tool commands started from the TUI can no longer read or write the interactive terminal.
- Delete operations now correctly match `Bash(rm …)` ask/deny rules even when the path contains `..` or the cwd is a symlink.
- **Web search and image approval cards** now only offer always-approve mode to clients that support it.
- Closing a session in the dashboard no longer leaves it listed under Inactive.
- Running /compact on an empty session no longer resets the reported context window.
- With goals disabled, a headless `/goal` line is now treated as a normal prompt instead of failing.
- **Background shell commands** no longer flip back to running when late output arrives.
- Only slash commands at the start of a message trigger skills.
- **Browser tabs** restore and close more reliably with fewer races.
- Fast model names in the footer no longer show double parentheses.
- SubagentStart and Notification hook activity is no longer reported to the UI.
- **Voice error messages** now display with correct punctuation.
- **disable_zdr_incompatible_tools** changes now apply to new turns without restarting the worker.
- **Project skills** are now labeled correctly for nested projects.

## Performance

- Opening the resume picker is now much faster on machines with many worktrees.
- **grok worktree commands start faster** by skipping unnecessary model catalog work at boot.


