Skip to content

v0.15.0 - Full-screen session, /resume and Claude 5.5 models

Latest

Choose a tag to compare

@kalil0321 kalil0321 released this 09 Nov 18:46
· 33 commits to main since this release
276e376

A full-screen interactive session for every mode and SDK (agent, engineer, manual capture, collector; Claude, OpenCode, Copilot, Cursor) with /resume and /settings inside it, Claude 5.5 models with configurable effort, Claude sessions isolated from your Claude Code setup, OpenCode cost and subagent fixes, and security updates (Playwright 1.64.1 with Chromium 156, a pinned Playwright MCP).

Published on PyPI. The attached wheel and source distribution are byte-for-byte identical to the PyPI files; SHA-256 checksums are attached.

pip install --upgrade reverse-api-engineer==0.15.0

Manual capture users: after upgrading, run playwright install chromium.

Changed

  • Claude sessions are isolated from your Claude Code setup (#141): they no longer load your settings files, CLAUDE.md, hooks, plugins, permission rules or MCP servers, which could derail a run while it still reported status: ok. Set claude_setting_sources (for example ["user"]) to load chosen layers again, such as when ~/.claude/settings.json provides your authentication. claude-agent-sdk now needs 0.2.174 or later.
  • The Copilot SDK is now 1.0.
  • chrome-mcp is the default agent provider for new configurations. Existing ~/.reverse-api/config.json files keep the provider they already store; switch with /settings or "agent_provider": "auto" for Playwright MCP with HAR recording.
  • Headed chrome-mcp runs check Chrome auto-connect (DevToolsActivePort plus an open port) before launching and fail with setup steps and error_kind: config_invalid instead of starting the agent. agent --dry-run reports the same check as an error.
  • engineer <run_id> on a run without a HAR stops before starting a model session: chrome-mcp runs get an explanation and error_kind: misuse with exit code 2, other runs name the missing HAR path.
  • Pin chrome-devtools-mcp to the 1.12 line and update the chrome-mcp prompt for its pageId tool arguments; the agent now opens its own tab.
  • /resume replays the run's conversation the way it looked live (prompts, steps, the agent's messages, the client card) before it waits for the follow-up, and switches from a conversation that only waits for one instead of asking for /new first.
  • /settings opens inside the session: one list with the settings rae offers there (SDK, agent provider, models, output and sync) and their values, enter flips a toggle or opens its choices, long lists filter as you type, and each change shows as ◇ setting old → new. OpenCode's providers and models load behind a list that keeps keystrokes from starting a run. The classic settings screen is gone.
  • /help says what rae does and lists the modes (the current one marked), every command and every key.
  • Lists and the command menu go around: down on the last item moves to the first, up on the first to the last.
  • A blank line parts the conversation from the input bar.
  • --json-stream tool_start events of Claude runs carry the tool call's call_id, as Cursor runs' already did.
  • Manual capture, the collector and OpenCode runs stay in the full-screen session instead of switching to the plain terminal. During a manual capture, closing the browser starts the engineering and esc stops while keeping the capture. Stopping an OpenCode run aborts its OpenCode session and its subagents, which kept working before.

Removed

  • /messages: /resume shows a past run's whole conversation, also for a run that saved no session and so cannot continue, and /history its details.

Fixed

  • An OpenCode server started by rae stops with rae even when rae is killed or its terminal is closed, and its whole process tree stops, not only the npx launcher, which could leave opencode serve listening.
  • In tool output, a line of binary data (such as a compressed response body) shows as "(binary data)", and a long line in a diff is cut instead of wrapping to the left edge.
  • The update notice no longer offers an older release: it appeared whenever PyPI's version differed from the installed one, as with 0.15.0 before its publication.
  • agent --url reaches the agent: its first message names the start URL, instead of the URL being checked and then dropped (#140).
  • Usage is counted once per turn, with the SDK's own cost, and the agent's and tools' text is printed as is instead of being read as markup.
  • Files under a symlinked output folder sync again.
  • /effort on a Claude model without the setting (Haiku 4.5) says that model has none, instead of calling effort a Claude setting.
  • A second esc while a run wraps up no longer cuts its cleanup short, which left the Claude CLI behind with a "Loop … that handles pid … is closed" warning and a false "interrupted".
  • An OpenCode catalog request that times out names the error instead of ending its message on a colon.
  • Resuming a run whose Claude Code session is gone says so once, in plain words, instead of the SDK's "returned an error result … (exit code: 1)" followed by advice to install Claude Code. That advice now only appears when Claude Code is missing.
  • A Claude error such as "Not logged in" shows once, not as an agent message, then an error, then "Agent analysis produced no result."
  • Steps name the tools of OpenCode, Copilot and Cursor (bash, read, apply_patch, playwright-ses_…_browser_navigate, Cursor's mcp wrapper…) the way they name Claude Code's, and a tool without its own wording shows its name and main argument instead of raw JSON.
  • The agent's task list shows as one plan per batch of changes, whatever the SDK calls it: Claude Code's current TaskCreate and TaskUpdate (which the session showed as separate steps, never as a list), TodoWrite, OpenCode's todowrite, Cursor's updateTodos, write_todos, update_todos and update_plan.
  • Long errors, notices, prompts and folder paths wrap under their own text instead of at the left edge.
  • In the session, an engineer run ends with one line naming its local copy (./scripts, or ./docs for documentation, which also gets a line of its own), instead of the plain terminal's "decoding complete" lines repeating the client card.
  • agent --json and engineer --json report status: error (engine_failure) when the run ends without writing its client, instead of ok with a script_path that does not exist.
  • Playwright MCP prompt: browser_run_code is now browser_run_code_unsafe, and the nonexistent browser_scroll tool is no longer listed.
  • The Claude SDK message buffer is raised to 32 MB, so a large screenshot no longer aborts a run.
  • list and show report the cost of Claude, Copilot and Cursor runs. They used to read only total_cost or cost, while those engines record estimated_cost_usd, so the cost was always empty.
  • OpenCode runs on free or local models (opencode/big-pickle, Ollama) report a cost of $0. When OpenCode reported no cost, rae priced every unknown model as Claude Sonnet 4.6; it now estimates only for models with known prices, and short names such as opus are priced as the model they map to.
  • OpenCode runs report their cost and cache writes in --json usage (total_cost_usd, cache_write_tokens) and their cost in /history and /resume.
  • README: the agent --json usage fields are total_cost_usd and the cache token counts, not total_cost.
  • OpenCode runs follow their subagents: a subagent's tool calls show, its cost counts, and its permission requests are approved, so the run no longer waits forever on one.
  • An OpenCode step delivered twice counts its tokens and cost once.
  • An OpenCode run that its provider refuses for lack of credit or quota stops at once with the provider's message, instead of retrying until the request times out after 10 minutes.
  • show reports the cache token counts of Copilot, Cursor and OpenCode runs, which name them differently from Claude.
  • /history shows the cost of OpenCode runs recorded before this release.

Security

  • Manual capture requires Playwright 1.64.1 or later, which bundles Chromium 156, and the lockfile pins it. Playwright 1.58 bundled Chromium 145, which lacks the fixes for the Chrome vulnerabilities exploited in 2026. Manual capture uses your installed Chrome when it can, so keep Chrome up to date; after upgrading, run playwright install chromium for the Chromium it falls back to.
  • Agent runs start rae-playwright-mcp@0.0.9 instead of whatever @latest resolves to, so a new publish of the MCP reaches users only through a rae release.
  • Manual capture's stealth Chromium no longer asks Chrome to turn off Site Isolation (--disable-features=IsolateOrigins,site-per-process); a later --disable-features flag already overrode that request.
  • Raise security minimums to aiohttp >=3.14.4, certifi >=2026.10.19, multidict >=6.9.1, OpenTelemetry API >=1.45.1, PyJWT >=2.15.0 and urllib3 >=2.8.0, and lock the patched versions. certifi drops the emSign root CAs whose intermediate keys were compromised.
  • Upgrade the Cursor bridge to @cursor/sdk 1.0.40 with Zod 4.6.7, fixing a Zod memory-exhaustion issue and removing the vulnerable undici dependency.
  • Upgrade the website to Next.js 16.4.3 to fix remote code execution, server-side request forgery, cache poisoning and denial-of-service vulnerabilities, and refresh Sharp, brace-expansion, source-map-js, undici, Zod and minimatch (a denial of service in the website's lint tooling) to patched versions.

Added

  • Full-screen session: reverse-api-engineer opens a full-screen session where the conversation scrolls above an input bar. The agent's text and reasoning stream as they come, tool steps are numbered with their output folded (ctrl+o unfolds it), and a client card appears once the agent has verified the client. The status row shows the run id, and the verified step lists the run's folder and its synced copy as clickable paths. Type / for the commands; pickers set the model, effort and mode. In a terminal, agent, engineer and collector open the session too; agent and engineer stay plain with --json or --no-interactive. The line-by-line prompt is gone; /quit and /commands still work as aliases of /exit and /help.
  • /resume reopens a past run's conversation on the SDK it ran on (Claude, Cursor, Copilot or OpenCode); your next message continues it. Agent and engineer runs save their SDK session from this release on.
  • Claude 5.5 models: Sonnet 5.5, Opus 5.5 and Haiku 5.5, with a configurable effort (/effort, ctrl+e, or claude_effort in the config). Sonnet 4.6 stays the default, and the Sonnet 4.6 and Haiku 4.5 ids are still accepted by --model.
  • Agent skill: skills/reverse-api-engineer teaches Claude Code, Codex, Cursor, OpenCode and other agents to drive the scripted CLI (preflight, capture, verify, iterate). Install with npx skills add kalil0321/reverse-api-engineer.