JetBrains ThinkRail 0.2.0: Agentic IDE Adds Per-Turn Receipts and MCP Permission Gates
JetBrains shipped ThinkRail 0.2.0 on October 18, 2026, adding two features that address the core friction in agentic coding workflows: knowing what the agent actually did, and knowing what it is allowed to do next. The release landed on Hacker News on October 24 with 56 points and 81 comments.
ThinkRail is an open-source agentic IDE for JetBrains’ Pi Coding Agent. Every workspace is a git worktree — its own branch, its own working directory. Multiple agents can run in parallel across isolated workspaces. The repo is Apache 2.0 and sits at 1,658 stars as of this writing, with 0.3.0 nightlies already active on October 25.
Per-Turn Receipts
The centerpiece of 0.2.0 is what the team calls a turn receipt. When an agent run changes something, the session ends with a line like 3 files changed · +27 −4 and a Review turn button.
The numbers are not sourced from the agent’s own tool calls. ThinkRail snapshots the worktree at run start and again at settlement, so shell commands that rewrote files, formatters, and renames all appear in the count. Git HEAD, the index, and the reflog are untouched.
Review turn opens a Changes tab with every file from that run stacked for one-scroll inspection. Markdown renders as text; code shows as a standard diff. On the branch diff view, each hunk gets three actions: Keep, Revert, and Ask agent about this hunk. Completing the last hunk in a file marks it viewed; J jumps to the next unreviewed file. Keep is keyed to the hunk’s content rather than line number, so it survives subsequent edits in the same session.
Large diffs (over 400 changed lines, lock files, generated files) start collapsed by default. Past 50 files, the UI suggests switching to the single-file view.
MCP Servers
ThinkRail now runs MCP servers from mcp.json in any chat. Settings includes presets for Context7, DeepWiki, Linear (read-only), Sentry, and Playwright. Secrets must be passed as environment variables or command substitutions — credentials in plain URLs are rejected.
Repositories that ship their own .pi/mcp.json do not auto-approve. When a tool call may change data, the permission prompt appears inline on the tool card itself, showing the call arguments. The four choices are: Deny, Allow once, Allow in this chat, and Always allow. Always allow trusts that specific tool for all chats in the project, stored on the project record rather than in .pi/mcp.json, so a repo cannot ship itself pre-approved. The grant resets if the server’s command or URL changes.
Other Changes
The Cmd/Ctrl+K switcher surfaces only chats that need input or are still running, grouped by project, with needs-input items listed first. It covers workspaces not currently open in the active window.
The per-chat TODO plan moved from a chat popover to a side rail with Up next, Now, and Done columns. Completed steps show their summary and verification inline. The plan summary is formatted as a PR body (## Summary / ## Changes / ## Testing), and ThinkRail’s PR skill reads it directly.
Workspaces now move to a Settled shelf automatically when their PR merges, closes, or after seven idle days. The setting is adjustable in preferences.
Architecture
Pi runs embedded inside ThinkRail’s own process and shares the ~/.pi folder with any standalone Pi CLI installation. Provider configuration, model selection, and chat history are shared between the two. Sessions started in the CLI can continue in ThinkRail and vice versa. ThinkRail is intentionally a thin layer: it does not change how Pi reasons, manages context, or enforces boundaries.
The 0.3.0 nightly series is already publishing pre-releases as of October 25. ThinkRail is available via a curl-based launcher that opens the browser UI: curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | sh.