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
| Area | 6.4.0 (2026-10-11) | 6.5.0 (body 2026-10-13; published 2026-10-14) | Operator note |
|---|---|---|---|
| JS source selection | Owned process; heap/timeout; retain facts/unknowns | Exact application paths; unselected files keep identity and explicit unknown coverage (#1944, issue #1848) | Selection ≠ summary delivery |
| Code-split / cross-bundle | Not the headline | Recover 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 imports | Prior resolution | Exact aliases via the selected loader and package ancestry — no sibling-file guessing (#1862, issue #1838) | Missing package metadata stays unavailable |
| Retained Evidence | Discovery; summaries and selected views | Opt-in compact summaries, then page retained Evidence without rerunning analysis (#2122, #2193, #2413, #2438, #2455, #2634, #2308) | Complete recorded result + original coverage kept |
| Offline lanes | Not the headline | SQLite snapshots, pcap/TShark, sigrok, WABT, cargo-auditable, Electron fuses | Official tool pins in the table below |
| Clients | Compact schema; prior setup rows | Scoped setup adds Qoder, Trae, ZCode, DeepSeek Harness, Kimi Code, Factory Droid, WorkBuddy | Matrix: /docs/clients/. Live Trae and DeepSeek API integration unverified |
| Breaking contracts | Prior 6.0–6.4 field changes | Null attached, null source-map names, --filter-output emits null, call-graph { graph, limitations }, MCP catalog no longer repeated on binary_session | Checklist: /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.
| Lane | Version named upstream | Recorded coverage (release wording) | Still unverified (release wording) |
|---|---|---|---|
| JS code-split recovery | Wakaru 1.14.0 | Linux x64 CLI/MCP; source-owned esbuild/webpack fixtures | Other hosts, other releases, arbitrary application equivalence |
| Packet captures | Wireshark 4.6.6 (TShark) | Linux, real engine | Native Windows/macOS and Bun |
| Recorded signals | sigrok-cli 0.7.2 | Linux; needs util-linux prlimit; acquires no hardware samples | Not a capture appliance |
| QUIC / qlog | aioquic 1.5.0, JSON qlog 0.3 | Retained objects; page traces/streams/observations | Other qlog layouts. Overlap/loss declarations ≠ retransmission or network loss |
| SQLite snapshots | Node 24.x ≥24.15 or 26+ with DatabaseSync.limits | Explicitly selected offline database | Node 22 and earlier 24 cannot use this lane. A live DB/WAL copy is not an atomic snapshot |
| WASM | Bring-your-own WABT 1.0.42 | Real-tool inspection recorded on macOS arm64; modules are not executed | Import/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.4 | Linux x64 | Simulated startup/progress/compiler failures are not real-engine verification |
| Attached native IDA | IDA 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 closed | Stock native switching, native macOS, Windows IDA Free |
| Frida instrumentation | Caller-supplied scripts | Linux local Node marker workflow | macOS, Windows, remote devices/servers. Destructive, not read-only |
| Flutter APK structure | No external engine | Documented Flutter Gallery fixture | macOS/Windows; complete pool semantics; pool coverage stays partial |
| Fiddler SAZ | Pinned public encoding corpus | Native SAZ, retained HTTP provenance, bounded decoding | Current 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.
- Pin
npx -y [email protected]. Rundoctor --jsonand keep the JSON on the ticket. - 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.”
- Summary delivery stays separate from source selection. Asking for a summary does not silently widen the file set.
- Package imports resolve through the selected loader and package ancestry. Sibling-file guessing is the behavior this release removes (#1862).
- 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.
attachedmay now benullon JS, browser, and Electron discovery. Null means unknown. Do not coerce it to false. Contract: /docs/breaking/.- 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.
| Workflow | What 6.5.0 retains (release) | What it does not prove |
|---|---|---|
| Binary / Mach-O | Compact 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-auditable | A 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 |
| Android | Manifest 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 / Flutter | AOT structure without an external engine; snapshot/engine build identification (#1582) | Pool coverage partial; Gallery fixture is the recorded real APK |
| WASM | Compact inventory; BYO WABT inspection (next section) | Inspection ≠ execution |
| Network | HAR-derived method/origin/path-template surface, including observed query-parameter names; unknowns retained (#1891, #2982) | Query values, headers, and bodies stay excluded |
| EVM | Bounded 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).
- 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. - 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.
- Select tables and columns. Keep Evidence bounded.
- 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).
- 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.
- 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.
- Read compact summaries and page retained Evidence. Bounded output is the point — do not disable bounds to “see everything” in a model context.
- 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.
- 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).
- Linux only. Install sigrok-cli from the sigrok project and confirm 0.7.2 if you want to match the recorded pin.
- The lane requires util-linux
prlimit. - It acquires no hardware samples. Bring a recording you already made on equipment you are allowed to use.
- 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).
- 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.
- Modules are not executed. Do not add a runtime “to see if it works” as part of this lane.
- Unsupported signatures and duplicate identities stay unknown.
- 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).
- Select a binary you are allowed to read. Nothing is executed.
- Missing metadata and inferred compiler hashes keep explicit limitations — print those limitations in the ticket.
- 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).
- Point at a package you own or are licensed to inspect.
- Missing, truncated, and unknown wires stay explicit.
- Fuse observations do not prove other Inspector-enablement paths. A fuse bit is not a full security verdict.
attachedmay 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 reader | Anchor |
|---|---|---|
attached may be null (JS, browser, Electron) | Treat null as unknown; never coerce to false | e55ef72 |
| Source-map rows may have a null source name | Handle null; do not invent an “unknown source” string. New index fields are optional on older Evidence | ee50ed1 |
--filter-output emits JSON null instead of {} when the value is null | Distinguish 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 caveats | 5dfb9d0 |
binary_session no longer repeats server_identity.catalog.tools | Use the connected tool list, grouped tool_availability, and provider capabilities | #1988 |
| MIPS with unresolved GNU ABI attributes refused; macOS Hopper saved databases unavailable | Supply supported ABI declarations. Select an executable, not a saved Hopper database, on macOS | d4bd65c |
binary_overview segment length may be null (Hopper) | Preserve unknown; do not coerce to 0 | 36db19c |
server.command_path may be null; doctor/setup status may be unknown | Establish the real invocation before calling a registration aligned | 187f113 |
ADB replaced is nullable; replace_requested records adb install -r intent | Reinstall intent ≠ proof of replacement | 864314a |
Unresolved P/Invoke may still carry matched_native when module identity is unknown | Read status, basis, limitations. Unknown module ≠ empty | 3f6b575 |
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.
| Lane | Release fact | Limit to keep |
|---|---|---|
| Ghidra raw / references | Linux/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 MIPS | Bounded 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-V | Little-endian RV32/RV64 ET_EXEC with the supported double-float ABI (#2151) | Relocatable/shared, big-endian, other ABIs refused |
| Ghidra PowerPC | ELF32 big-endian ET_EXEC on Linux/macOS (#1747) | PPC64, DOL, and other variants out of lane |
| Ghidra PSP ELF | Linux 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 6502 | Headerless 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 Pack | Inventory without executing code (#1447) | Recorded workflow: one pinned HAP. Installed-package and real HSP/App Pack coverage unverified |
| Frida | Explicit 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 attach | Six 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 notes | 34 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-agentsfrom 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: nullis 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
| Question | Short answer | Where |
|---|---|---|
| Does precise JS selection pull in imports? | No. Unselected files stay explicit unknowns | This page §1; #1944 |
| Which Node runs SQLite snapshots? | 24.x ≥24.15 or 26+ only | Release; /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
| Environment | Suggestion |
|---|---|
| Teaching lab / CI smoke | Pin 6.5.0 explicitly (npx -y [email protected]) |
| Daily driver still on 6.4.0 | Read /docs/breaking/ first; attach doctor --json from both pins |
| SQLite snapshot jobs | Also pin Node 24.x ≥24.15 or 26+; do not schedule them on Node 22 |
| Tracking main | Record 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
- rea-agents 6.5.0 release — body date 2026-10-13, published 2026-10-14T12:32:45Z; 893 commits, 529 merged PRs
- Prior operator guide: /blog/rea-agents-6-4-0/
- CTAs: /docs/breaking/ · /docs/clients/ · /changelog/ · /docs/android-adb/ · /faq/token-efficient-rea/ · /faq/mcp-schema-size/ · /faq/setup-vs-providers/ · /compliance/
- Chinese edition of this page: /zh/blog/rea-agents-6-5-0/