rea.run

2026-10-15

What changed in rea-agents 6.5.0 (operator guide)

Upstream published rea-agents 6.5.0 on 2026-10-14 (release tag; GitHub published_at 2026-10-14T12:32:45Z, 20:32 UTC+8). The release body is dated 2026-10-13. Footer of that note: 893 commits and 529 merged PRs. This is an operator-length guide — capability matrix, pinned tool versions, checklists, and compliance — not a changelog paste. Version index stays on /changelog/. Field-level breaks stay on /docs/breaking/. Pin the version you intend; run doctor before trusting social screenshots.

Why operators should care

6.4.0 made Android device work, compact MCP schemas, and right-sized Evidence views pin-able (operator guide). 6.5.0 is the release where you can select exact JavaScript paths without expanding imports, page retained Evidence across binary / managed / Android / Dart / WASM / network workflows, and inspect offline artifacts (SQLite snapshots, packet and signal recordings, WASM, Rust dependency metadata, Electron fuses) without launching the target. Completed Evidence and partial observations stay available when analysis or cleanup fails. Those are the five decisions this page is organized around.

No community tool-count or startup-timing table is cited here. Discussion #1998 measured 6.3.0 / 6.4.0 (139 → 170 tools). It does not publish a 6.5.0 catalog size or list latency. Do not invent one. Replay on your box before you put a number in a ticket.

Capability matrix: 6.4.0 → 6.5.0

Area6.4.0 (2026-10-11)6.5.0 (body 2026-10-13; published 2026-10-14)Operator note
JS source selectionOwned process; heap/timeout; retain facts/unknownsExact application paths; unselected files keep identity and explicit unknown coverage (#1944, issue #1848)Selection ≠ summary delivery
Code-split / cross-bundleNot the headlineRecover related bundles from multiple selected inputs; per-file provenance + downstream cross-chunk imports (#1686, issue #1605)Recorded CLI/MCP coverage: Linux x64, Wakaru 1.14.0, source-owned esbuild/webpack fixtures
Package importsPrior resolutionExact aliases via the selected loader and package ancestry — no sibling-file guessing (#1862, issue #1838)Missing package metadata stays unavailable
Retained EvidenceDiscovery; summaries and selected viewsOpt-in compact summaries, then page retained Evidence without rerunning analysis (#2122, #2193, #2413, #2438, #2455, #2634, #2308)Complete recorded result + original coverage kept
Offline lanesNot the headlineSQLite snapshots, pcap/TShark, sigrok, WABT, cargo-auditable, Electron fusesOfficial tool pins in the table below
ClientsCompact schema; prior setup rowsScoped setup adds Qoder, Trae, ZCode, DeepSeek Harness, Kimi Code, Factory Droid, WorkBuddyMatrix: /docs/clients/. Live Trae and DeepSeek API integration unverified
Breaking contractsPrior 6.0–6.4 field changesNull attached, null source-map names, --filter-output emits null, call-graph { graph, limitations }, MCP catalog no longer repeated on binary_sessionChecklist: /docs/breaking/

Pinned tool versions named in the 6.5.0 release

These strings are copied from the release highlights and change bullets. They are recorded coverage pins, not a promise that every host matches.

LaneVersion named upstreamRecorded coverage (release wording)Still unverified (release wording)
JS code-split recoveryWakaru 1.14.0Linux x64 CLI/MCP; source-owned esbuild/webpack fixturesOther hosts, other releases, arbitrary application equivalence
Packet capturesWireshark 4.6.6 (TShark)Linux, real engineNative Windows/macOS and Bun
Recorded signalssigrok-cli 0.7.2Linux; needs util-linux prlimit; acquires no hardware samplesNot a capture appliance
QUIC / qlogaioquic 1.5.0, JSON qlog 0.3Retained objects; page traces/streams/observationsOther qlog layouts. Overlap/loss declarations ≠ retransmission or network loss
SQLite snapshotsNode 24.x ≥24.15 or 26+ with DatabaseSync.limitsExplicitly selected offline databaseNode 22 and earlier 24 cannot use this lane. A live DB/WAL copy is not an atomic snapshot
WASMBring-your-own WABT 1.0.42Real-tool inspection recorded on macOS arm64; modules are not executedImport/export compare of two complete core-module Evidence records does not need a live WABT install and does not prove runtime compatibility
Ghidra file-offset decompile (fix lane)Ghidra 12.1.4Linux x64Simulated startup/progress/compiler failures are not real-engine verification
Attached native IDAIDA Free 9.4 (Linux) and IDA Pro 9.3 (Windows)Linux: navigation correction. Windows Pro: loopback-listener change. Databases stay read-only; never saved or closedStock native switching, native macOS, Windows IDA Free
Frida instrumentationCaller-supplied scriptsLinux local Node marker workflowmacOS, Windows, remote devices/servers. Destructive, not read-only
Flutter APK structureNo external engineDocumented Flutter Gallery fixturemacOS/Windows; complete pool semantics; pool coverage stays partial
Fiddler SAZPinned public encoding corpusNative SAZ, retained HTTP provenance, bounded decodingCurrent Fiddler Everywhere variants; Bun-native execution

Install those companions from their vendors (Wireshark, sigrok, WABT, Node, Ghidra, IDA). REA does not ship them. A version string in a release note is not a download link on rea.run.

1. JavaScript: precise paths, then code-split

Release highlight: analyze selected JavaScript files and recover cross-bundle relationships without expanding the selected source scope.

  1. Pin npx -y [email protected]. Run doctor --json and keep the JSON on the ticket.
  2. Choose exact application paths you are allowed to read. Unselected files keep identity and explicit unknown coverage. Do not treat “unknown” as “empty” or as “safe.”
  3. Summary delivery stays separate from source selection. Asking for a summary does not silently widen the file set.
  4. Package imports resolve through the selected loader and package ancestry. Sibling-file guessing is the behavior this release removes (#1862).
  5. For code-split apps, pass the multiple selected inputs you actually have. Recovery keeps per-file provenance and downstream cross-chunk imports (#1686). Recorded coverage is Linux x64 + Wakaru 1.14.0 + source-owned fixtures — label other hosts unverified until you replay.
  6. attached may now be null on JS, browser, and Electron discovery. Null means unknown. Do not coerce it to false. Contract: /docs/breaking/.
  7. Targets: source you own, debug builds you shipped, or fixtures under a license that allows inspection. Not “any production bundle you can fetch.”
npx -y [email protected] doctor --json
# reconnect the MCP client after a pin change

Loader and trace fixes in the same release (import/require conditions, export identity, nested bridge calls, source-map file: URLs kept out of operator-relative paths) are listed in the release Fixes section. They do not change the selection rule above.

2. Retained Evidence: compact summary, then page

Opt into compact inventory/WASM, managed metadata, Android manifest, Dart AOT, Mach-O, and EVM summaries, then page retained Evidence without rerunning analysis. Summary delivery keeps the complete recorded result and its original coverage.

WorkflowWhat 6.5.0 retains (release)What it does not prove
Binary / Mach-OCompact Mach-O summaries; Go embedded build metadata including file-backed unmapped Mach-O debug segments (#1363); universal Mach-O needs a selected thin slice for cargo-auditableA summary is not a full disassembly
Managed (.NET)Select declaring types; decode inspected ldstr with independent coverage; page member summaries; target_declaring_type and field_declaring_type including supported generic method targets (#1706, #2125, #3061, #2163)Unresolved metadata stays unknown
AndroidManifest summaries; DEX exact method descriptors and individual direct-invoke observations (source method, DEX entry, opcode, code-unit offset) (#2439)Static references ≠ runtime call counts. Device work stays on your device — /docs/android-adb/
Dart / FlutterAOT structure without an external engine; snapshot/engine build identification (#1582)Pool coverage partial; Gallery fixture is the recorded real APK
WASMCompact inventory; BYO WABT inspection (next section)Inspection ≠ execution
NetworkHAR-derived method/origin/path-template surface, including observed query-parameter names; unknowns retained (#1891, #2982)Query values, headers, and bodies stay excluded
EVMBounded lossless facts from plausible terminal Solidity CBOR root-map candidates (#2790)Candidates ≠ Solidity origin, source, or compiler identity. Linked metadata is not fetched

Operator loop (same shape as the 6.4.0 Evidence section): identity → compact summary → page retained Evidence → disk if you must → slices into the model. Pair with /faq/token-efficient-rea/. If analysis or cleanup fails, keep completed Evidence and partial observations; do not invent a summary to fill the gap.

Reference-source graphs: CLI import-reference-source --detail summary prints a compact manifest, count, state, and path outline (#2768, issue #2442). The complete graph remains available and is still the default. Hidden outline entries keep separate coverage counts.

3. Offline lanes — nothing is launched

These operations read files you already have. They are not a warrant to capture someone else’s traffic, attach to a process you do not own, or modify an application.

3.1 SQLite snapshots

Inspect an explicitly selected offline database with table/column selection and bounded Evidence (#2271).

  1. Confirm Node: 24.x ≥ 24.15 or 26+, with DatabaseSync.limits. Supported Node 22 and earlier 24 runtimes cannot use this lane. The rest of 6.5.0 can still run; this operation refuses.
  2. Point at a database file you are allowed to copy offline. A live database plus a WAL copy does not establish an atomic snapshot — say so in the ticket.
  3. Select tables and columns. Keep Evidence bounded.
  4. Record the Node version next to doctor --json.

3.2 Packet captures (pcap / TShark)

Inspect saved packets with bounded TShark output, compact capture summaries, and retained pages. Discover installed protocol/field definitions (#2318, #2340, #2496).

  1. Install Wireshark / TShark from the Wireshark project. Recorded real-engine coverage is Linux and Wireshark 4.6.6. Native Windows, macOS, and Bun remain unverified.
  2. Feed an existing capture you are authorized to hold (your lab, your app, a fixture shipped for analysis). This guide does not describe how to capture another party’s traffic.
  3. Read compact summaries and page retained Evidence. Bounded output is the point — do not disable bounds to “see everything” in a model context.
  4. QUIC: only retained aioquic 1.5.0 JSON qlog 0.3 objects (#2277). Other layouts are unsupported. Overlap and loss declarations do not prove retransmission or network loss.
  5. Fiddler: native SAZ archives, retained HTTP provenance, bounded decoding (#2409). Recorded producer coverage is the pinned public encoding corpus. Current Fiddler Everywhere variants and Bun-native execution are unverified.

HAR already in Evidence: the derived API surface is method, origin, and path template, plus names of observed query parameters. Values, headers, and bodies stay out (#2982, issue #2913).

3.3 Recorded signals (sigrok)

Decode existing recordings and discover installed decoders/options through caller-supplied sigrok-cli 0.7.2 (#2339, #2487).

  1. Linux only. Install sigrok-cli from the sigrok project and confirm 0.7.2 if you want to match the recorded pin.
  2. The lane requires util-linux prlimit.
  3. It acquires no hardware samples. Bring a recording you already made on equipment you are allowed to use.
  4. Discover decoders; do not treat a decoder list as a measurement.

3.4 WASM — bring your own WABT

Inspect local modules with WABT 1.0.42 without executing them (#1533, issue #884). Compare imports/exports from two complete core-module inspection Evidence records without a live WABT install (#2464, issue #2356).

  1. Install WABT from the upstream project. Pin 1.0.42 when you need the recorded lane. Real-tool inspection coverage in the note is macOS arm64.
  2. Modules are not executed. Do not add a runtime “to see if it works” as part of this lane.
  3. Unsupported signatures and duplicate identities stay unknown.
  4. A comparison does not establish runtime compatibility.

3.5 Rust dependency metadata (cargo-auditable)

Inspect embedded cargo-auditable package and dependency records in ELF, PE, and thin Mach-O without executing the file (#2456).

  1. Select a binary you are allowed to read. Nothing is executed.
  2. Missing metadata and inferred compiler hashes keep explicit limitations — print those limitations in the ticket.
  3. Universal Mach-O requires a selected thin slice. Do not ask the tool to guess a slice.

3.6 Electron fuses

Read packaged fuse bytes and per-slice runtime implications without launching or modifying the app (#2399).

  1. Point at a package you own or are licensed to inspect.
  2. Missing, truncated, and unknown wires stay explicit.
  3. Fuse observations do not prove other Inspector-enablement paths. A fuse bit is not a full security verdict.
  4. attached may be null on Electron discovery — same null rule as JavaScript (/docs/breaking/).

4. Breaking changes — read the runbook, do not re-derive it

The 6.5.0 BREAKING CHANGES section is operator-load-bearing. This page does not restate every field. Use /docs/breaking/ (Chinese: /zh/docs/breaking/) before you upgrade a consumer. Jumping 6.1 → 6.5.0 still includes the 6.2, 6.3, and 6.4 contracts.

Break (release)What to change in your readerAnchor
attached may be null (JS, browser, Electron)Treat null as unknown; never coerce to falsee55ef72
Source-map rows may have a null source nameHandle null; do not invent an “unknown source” string. New index fields are optional on older Evidenceee50ed1
--filter-output emits JSON null instead of {} when the value is nullDistinguish present null from a missing selection. --full-output when you need an object envelope#2333
get_call_graph.normalized_result is { graph, limitations }Read depth groups under graph; keep relationship caveats5dfb9d0
binary_session no longer repeats server_identity.catalog.toolsUse the connected tool list, grouped tool_availability, and provider capabilities#1988
MIPS with unresolved GNU ABI attributes refused; macOS Hopper saved databases unavailableSupply supported ABI declarations. Select an executable, not a saved Hopper database, on macOSd4bd65c
binary_overview segment length may be null (Hopper)Preserve unknown; do not coerce to 036db19c
server.command_path may be null; doctor/setup status may be unknownEstablish the real invocation before calling a registration aligned187f113
ADB replaced is nullable; replace_requested records adb install -r intentReinstall intent ≠ proof of replacement864314a
Unresolved P/Invoke may still carry matched_native when module identity is unknownRead status, basis, limitations. Unknown module ≠ empty3f6b575

SQLite’s Node gate (24.x ≥24.15 or 26+) is a capability refusal, not listed under BREAKING CHANGES, but it will fail closed on Node 22 and earlier 24. Say which Node you run.

5. New clients — use the matrix

Scoped setup in 6.5.0 registers Qoder, Trae, ZCode, DeepSeek Harness, Kimi Code, Factory Droid, and WorkBuddy (#1564, #1572, #1573, #1929, #2744, #2309, #3041). DeepSeek is included from 6.5.0; the historical npm 6.4 check did not cover it. Live Trae and DeepSeek API integration remain unverified.

The ID table, dry-run commands, and doctor checks live on /docs/clients/ (Chinese: /zh/docs/clients/). Do not copy that matrix into a second changelog. Compact schema (REA_MCP_INPUT_SCHEMA_PROFILE=compact) from 6.4.0 still applies to size-capped hosts — see /faq/mcp-schema-size/ and the 6.4.0 guide.

npx -y [email protected] setup --client dsh --dry-run --json
npx -y [email protected] doctor --client dsh --json

Replace dsh with the client id from the matrix. Reconnect the client after setup. A green doctor line is the registration check; it is not a live-API certification for Trae or DeepSeek.

6. Other lanes worth a ticket line (not a second changelog)

Mention these when the target matches. Verification limits are part of the sentence, not a footnote you drop.

LaneRelease factLimit to keep
Ghidra raw / referencesLinux/macOS profiles accept caller-selected raw architecture/entry; typed incoming references at exact addresses (#1868, #1715)Windows P0 admits the raw NMOS 6502 profile only; other raw targets and the incoming-reference facet are outside Windows P0
Ghidra MIPSBounded MIPS32r2/o32 objects, soft-float integer-register storage, admitted MIPS16 shared ELF, narrow legacy MIPS32 executable (#1949, #1950, #1991, #1898)Admission follows each documented ABI/flag/relocation boundary
Ghidra RISC-VLittle-endian RV32/RV64 ET_EXEC with the supported double-float ABI (#2151)Relocatable/shared, big-endian, other ABIs refused
Ghidra PowerPCELF32 big-endian ET_EXEC on Linux/macOS (#1747)PPC64, DOL, and other variants out of lane
Ghidra PSP ELFLinux x64, bounded little-endian ELF32 ET_EXEC, compatible caller-installed Allegrex (#1599)PRX, shared/relocatable, PBP/ISO/CSO, emulation out. Real public Ghidra PSP coverage unverified
Raw NMOS 6502Headerless images, caller-selected entry, source mapping in the 16-bit space, including Windows P0 (#2079)No cartridge parsing, no reset-vector inference, no 65C02/65816
HarmonyOS HAP/HSP/App PackInventory without executing code (#1447)Recorded workflow: one pinned HAP. Installed-package and real HSP/App Pack coverage unverified
FridaExplicit local/remote target, caller-supplied scripts, retained messages (#1359)Executes foreign code. Destructive, not read-only. Recorded real coverage: Linux local Node marker only
Passive browser attachSix existing passive tools accept an explicit-port loopback WebSocket when HTTP discovery is down (#2346)Consent and target/origin checks remain. Does not launch a browser or enable runtime instrumentation
AArch64 core notes34 ABI register values per thread from supported Linux ELF64 little-endian core notes (#2505)Recorded facts, not proof of current process or library identity

Ghidra, IDA, Hopper, JEB, Frida, Wireshark, sigrok, and WABT stay bring-your-own. Setup does not install them. See /faq/setup-vs-providers/.

Compliance

  • Authorized targets only. Own code, your device or emulator, fixtures under a license that allows inspection, clean-room exercises. /compliance/ · /faq/legal-boundary/.
  • Official install sources. Pin rea-agents from npm (npx -y [email protected]). Install Wireshark, sigrok, WABT, Node, Ghidra, and IDA from their vendors. No repacks, cracks, or “patched” engines.
  • Offline lanes read files you already hold. They are not instructions to capture, hook, or modify a system you do not operate.
  • Frida instrumentation executes caller-supplied scripts and is destructive. Do not point it at a process you are not allowed to instrument.
  • ADB replaced: null is uncertainty, not a green light to reinstall packages you do not own. Device lane: /docs/android-adb/.
  • Primary CTAs stay on rea.run. The GitHub release is a footnote for version pins.

Operator FAQ for 6.5.0

QuestionShort answerWhere
Does precise JS selection pull in imports?No. Unselected files stay explicit unknownsThis page §1; #1944
Which Node runs SQLite snapshots?24.x ≥24.15 or 26+ onlyRelease; /docs/breaking/
Does WABT comparison need WABT installed?No, if both Evidence records are complete core-module inspections. It still does not prove runtime compatibility#2464
Do Electron fuse bits prove Inspector is off?No. Missing/unknown wires stay explicit; other enablement paths are out of scope#2399
Which new clients can setup register?Qoder, Trae, ZCode, DeepSeek Harness, Kimi Code, Factory Droid, WorkBuddy/docs/clients/
Is live Trae or DeepSeek API verified?No — release says unverified/docs/clients/
Where are the field breaks?6.0 through 6.5.0 runbook/docs/breaking/
Did tools/list get slower?Not measured for 6.5.0 on this page. #1998 stops at 6.4.0/blog/rea-linux-startup-benchmarks/

Suggested pin policy

EnvironmentSuggestion
Teaching lab / CI smokePin 6.5.0 explicitly (npx -y [email protected])
Daily driver still on 6.4.0Read /docs/breaking/ first; attach doctor --json from both pins
SQLite snapshot jobsAlso pin Node 24.x ≥24.15 or 26+; do not schedule them on Node 22
Tracking mainRecord the commit SHA you actually ran. The 6.5.0 note does not publish a post-tag bench SHA

When you tell a team to upgrade, attach four things: the release URL, doctor --json, the Node version (because of the SQLite gate), and whether any new client id was registered. That set prevents “it works on my agent” threads.

Change log vs operator guide

The GitHub release body is long (893 commits, 529 merged PRs, a large Fixes section). Operators usually need six decisions: (1) pin 6.5.0 or stay on 6.4.0, (2) narrow JS selection or not, (3) page retained Evidence or not, (4) enable which offline lane and which official tool pin, (5) update readers for the null/call-graph/MCP breaks, (6) register any new client. This page is those decisions. Every merged PR stays in the release. Version index: /changelog/.

Sources