Repository navigation
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.0Manual 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 reportedstatus: ok. Setclaude_setting_sources(for example["user"]) to load chosen layers again, such as when~/.claude/settings.jsonprovides your authentication.claude-agent-sdknow 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.jsonfiles keep the provider they already store; switch with/settingsor"agent_provider": "auto"for Playwright MCP with HAR recording. - Headed chrome-mcp runs check Chrome auto-connect (
DevToolsActivePortplus an open port) before launching and fail with setup steps anderror_kind: config_invalidinstead of starting the agent.agent --dry-runreports 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 anderror_kind: misusewith exit code 2, other runs name the missing HAR path.- Pin
chrome-devtools-mcpto the 1.12 line and update the chrome-mcp prompt for itspageIdtool arguments; the agent now opens its own tab. /resumereplays 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/newfirst./settingsopens 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./helpsays 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-streamtool_startevents of Claude runs carry the tool call'scall_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
escstops while keeping the capture. Stopping an OpenCode run aborts its OpenCode session and its subagents, which kept working before.
Removed
/messages:/resumeshows a past run's whole conversation, also for a run that saved no session and so cannot continue, and/historyits 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
npxlauncher, which could leaveopencode servelistening. - 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 --urlreaches 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.
/efforton a Claude model without the setting (Haiku 4.5) says that model has none, instead of calling effort a Claude setting.- A second
escwhile 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'smcpwrapper…) 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
TaskCreateandTaskUpdate(which the session showed as separate steps, never as a list),TodoWrite, OpenCode'stodowrite, Cursor'supdateTodos,write_todos,update_todosandupdate_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./docsfor documentation, which also gets a line of its own), instead of the plain terminal's "decoding complete" lines repeating the client card. agent --jsonandengineer --jsonreportstatus: error(engine_failure) when the run ends without writing its client, instead ofokwith ascript_paththat does not exist.- Playwright MCP prompt:
browser_run_codeis nowbrowser_run_code_unsafe, and the nonexistentbrowser_scrolltool is no longer listed. - The Claude SDK message buffer is raised to 32 MB, so a large screenshot no longer aborts a run.
listandshowreport the cost of Claude, Copilot and Cursor runs. They used to read onlytotal_costorcost, while those engines recordestimated_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 asopusare priced as the model they map to. - OpenCode runs report their cost and cache writes in
--jsonusage (total_cost_usd,cache_write_tokens) and their cost in/historyand/resume. - README: the
agent --jsonusage fields aretotal_cost_usdand the cache token counts, nottotal_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.
showreports the cache token counts of Copilot, Cursor and OpenCode runs, which name them differently from Claude./historyshows 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 chromiumfor the Chromium it falls back to. - Agent runs start
rae-playwright-mcp@0.0.9instead of whatever@latestresolves 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-featuresflag 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/sdk1.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-engineeropens 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,engineerandcollectoropen the session too;agentandengineerstay plain with--jsonor--no-interactive. The line-by-line prompt is gone;/quitand/commandsstill work as aliases of/exitand/help. /resumereopens 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, orclaude_effortin 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-engineerteaches Claude Code, Codex, Cursor, OpenCode and other agents to drive the scripted CLI (preflight, capture, verify, iterate). Install withnpx skills add kalil0321/reverse-api-engineer.