mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[GH-ISSUE #6500] [Bug] redacted network bodies exceed the selected retained-byte limit #3897
Closed
opened 2026-10-31 00:45:02 +00:00 by bsakaguchi
·
0 comments
No Branch/Tag specified
main
codex/procedure-reference-stacked
release-please--branches--main--components--rea-agents
release-please--branches--main--components--rea-agents--release-notes
codex/kuna-independent-retry
codex/byte-search-overlay-coverage
codex/open-failure-target-receipt
codex/kuna-xref-evidence
codex/ghidra-ambiguous-procedure-recovery
codex/function-source-bundle
codex/trace-function-integration-prototype
codex/snapshot-source-closure
codex/recorded-evidence-array-pages
codex/evidence-recovery-redesign
codex/trace-feature-address-scope
codex/call-discovery-scope
codex/ghidra-literal-candidate-evidence
codex/decompile-directory-independent-retry
codex/retry-provenance-base
codex/value-flow-capability-experiment
codex/ghidra-containing-instruction
cursor/readme-discord-button-ef9f
dependabot/github_actions/actions/setup-node-7.1.0
dependabot/github_actions/actions/upload-artifact-7.0.2
dependabot/npm_and_yarn/npm-minor-and-patch-d8d97ce6df
codex/kuna-1989
fix/8559-native-ui-fixture-ownership
fix/8555-go-verifier-mcp-ownership
codex/provider-capability-recovery
fix/8642-rizin-target-stdin
codex/ghidra-memory-effect-scope
codex/ghidra-annotation-entry-selector
codex/ghidra-readonly-recovery
codex/ghidra-regex-verifier-recovery
codex/evidence-discovery-view-guidance
fix/8545-bulk-append-overflow
fix/8428-navigation-refusal-alternatives
codex/address-context-recovery
codex/matching-member-limitations
codex/unknown-scope-contract
codex/evidence-view-guidance
feat/8373-native-trace-views
codex/ghidra-snapshot-verifier-binding
codex/elf-export-visibility
codex/evidence-view-recovery
codex/native-reference-cli-help
codex/provider-candidate-observation-scope
codex/kuna-session-verification
codex/ghidra-switch-lifetime-guidance
codex/pseudocode-paging-discovery
codex/clarify-evidence-view-support
codex/kuna-xrefs-selector-recovery
codex/context-capacity-recovery
codex/evidence-closure-large-links
codex/same-function-evidence-identity
codex/ghidra-verifier-inspected-jdk
codex/audit-guided-workflows
codex/crash-prompt-retained-dossiers
codex/analysis-view-error-recovery
codex/kuna-verifier-target-selection
codex/ghidra-selected-project-call-coverage
codex/docs-native-analysis-scope
codex/ghidra-java-socket-boundary
codex/ghidra-retained-snapshot-verifier
codex/ghidra-search-inventory-facts
fix/8284-zero-argument-parameter-bindings
fix/8198-ui-action-handler-offset
fix/8257-elf-entry-label-identity
fix/8304-deferred-output-schema-projection
fix/8277-call-path-computed-target-uncertainty
fix/pr-8089-conflicts
fix/ci-static-duplicate-export
dependabot/npm_and_yarn/lint-staged-17.6.0
dependabot/github_actions/actions/download-artifact-8.0.2
dependabot/npm_and_yarn/write-file-atomic-8.0.0
dependabot/npm_and_yarn/canonicalize-5.1.0
dependabot/github_actions/actions/cache/restore-6.1.0
dependabot/npm_and_yarn/toon-format/toon-4.4.0
dependabot/github_actions/actions/deploy-pages-5.0.1
codex/review-fixes-pr-2403
codex/review-fixes-pr-2400
codex/process-terminal-width
codex/test-brittleness-cleanup
verify/7167-browser-connect-macos
fix/7167-browser-connect
feat/native-matching-allowance-setting
feat/browser-scenario-dry-run
test/managed-caller-parameters-20261024
codex/parser-fortythird-boundaries
fix/6926-pinvoke-platform-decorations-20261023
fix/6889-har-body-encoding-20261023
fix/6888-sqlite-schema-budget-20261023
fix/dependency-security-gates-6708
cursor/evidence-overwrite-rebase-b4ac
feat/4057-verify-native-exports
fix/windows-acl-observer-overhead-20261022
cursor/erlang-beam-restack-4476
cursor/pe-certificate-review-bf32
fix/6116-javascript-application-fs-errors
fix/6061-unmapped-runtime-script-unknown
feat/browser-scenario-summary
fix/pe-certificates
codex/verify-3407
cursor/rebase-5699
cursor/rebase-5352
cursor/rebase-5600
cursor/fix-cli-schema-omission-10a8
codex/audit-hopper-shutdown-reasons-20261021
fix/demangle-swift-omitted-record
fix/nib-boolean-value-types
cursor/cancellation-partial-observation-a5ac
fix/ib-object-limit-reasons
fix/electron-fuse-limit-advice
fix/kuna-doctor-dangling-cache
fix/fixed-budget-refusal-advice
fix/js-ipc-listener-dedup
fix/js-return-member-provenance
fix/dmg-integrity-retry-advice
fix/ida-doctor-readiness
fix/kuna-version-probe-output-drain
fix/legacy-swift-runtime-name-matching
fix/dylib-lazy-load-commands
fix/browser-scenario-startup-cancel
fix/swift-nested-punycode-classification
fix/compare-unselected-scopes
fix/objc-method-budget-coverage
fix/dmg-mounted-root-observations
audit/ci-tests-20261019-round2
release/6.7.0
fix/wabt-cleanup-retry-resolution
fix/electron-fuse-elf-pe-architecture
fix/native-plist-descriptor-ownership
fix/kuna-caller-cleanup-ownership
experiment/atomic-codemode-20261016
review/first-contributor-3776
fix/call-resolution-full-read-cycles
fix/member-mutation-selection-repeat
experiment/atomic-re-tools-20261015
perf/member-mutation-lazy-origins
perf/static-network-mutation-index
fix/hopper-startup-lifecycle
audit/3050-windows-proof-20261015
feat/windows-window-capture-2183
audit/3049-windows-proof-20261015
audit/3735-macos-fixtures-20261015
fix/batch-decompile-null-pseudocode
fix/kuna-inventory-honors-jobs
experiment/browser-codemode-tool-design-20261015
fix/hopper-clean-runtime-argv
codex/review-2049-27f1b367
review-fixes/pr-2787-routing
fix/3360-scoped-this-emitters
fix/3367-replaced-global-effects
fix/3838-compact-any-value-items
test/hopper-download-probe-20261015
codex/windows-runtime-creation-red-green-20261015
codex/windows-readonly-root-red-green-20261015
codex/windows-root-share-red-green-20261015
codex/exp-1685-win-mcp-startup
codex/bug-sweep-20261015
investigate/2190-windows-package-phases
investigate/3543-macos-cli-deadline
perf/3281-reverse-tools-feedback-quality
fix/3406-hopper-doctor-fixture
fix/3341-wrapper-require-test-context
fix/3301-owned-uninstall-fixtures
fix/3164-compiler-input-ownership
fix/pcap-cleanup-stdout-newline-20261014
perf/interface-builder-summary
codex/review-fixes-pr-1977
fix/ghidra-effective-jvm-platform
fix/docs-turkish-rust-link-20261013
fix/main-maintenance-ci-20261010
fix/recover-binary-session-process-effects
codex/review-fixes-pr-2457
codex/ci-required-cancellation-gate
fix/main-format-baseline-20261013
fix/setup-preserve-entry-fields
cursor/restore-main-checks-1ffc
fix/ghidra-bridge-hashmap-import
codex/shared-ci-jadx-json-default-20261013
codex/shared-ci-ghidra-test-groups-20261013
codex/shared-ci-java-fixture-format-20261013
codex/fix-intrinsic-invocation-boundaries
test/release-preflight-reusable-jobs
test/js-parameter-provenance-expectation
fix/linux-hopper-verification-current
test/2419-ghidra-elf-probe-size
followup/pr-1544-native-ida
codex/fold-pr-2230-contribution
docs/readme-responsible-use
fix/issue-2064
fix/issue-2050
fix/issue-2053
fix/issue-1968
fix/issue-1945
experiment/codemode-bridge-20261011
fix/tool-effects-negative-wording-1904-20261012
fix/1842-electron-interop-provenance
feat/recover-javascript-multi-input
refactor/website-i18n-prep
fix/nativeaot-pe-virtual-extent
fix/browser-verifier-ci-hang
fix/pe-resources-input-selection
docs/beginner-friendly-guides
docs/beginner-setup-guide
fix/javascript-analysis-worker-1563
fix/1649-ghidra-duplicate-names
fix/javascript-export-keys-integration-1369
test/maintenance-boundary-contracts-20261011
review/javascript-export-keys-1369
review/process-live-progress-1483
test/javascript-1495-growth-ratio
fix/ci-escape-timing
docs/normalized-terminal-geometry-1450
release/6.3.0
archive/release-6.3.0-pr1381
release/6.2.0
fix/electron-preload-dynamic-override
fix/javascript-self-referential-bundler-edges
release/6.1.0
cursor/grok-client-cherry-pick-0b56
feat/signature-posture
feat/dyld-shared-cache
feat/artifact-integrity-policy
feat/pkg-inventory
release/6.0.0
chore/sync-release-5.0.0
release/5.0.0
cursor/cloud-agent-node-787e
fix/javascript-xhr-open-endpoints
review/pr-711-realpath-fallback-wording
cleanup/replay-confinement
codex/test-suite-performance
codex/issue-foundations
codex/address-open-issues-2026-07-20
agent/javascript-vite-rollup-esbuild-adapters
agent/process-cleanup
agent/triage-integration
agent/unknown-commands-registry
feat/mcp-identity-metadata
morlvps/issue_cleanup
codex/installer-redesign
morl/roadmap-investigation-core
morl/roadmap-investigation-docs
release-please--branches--main--components--rea
rea-agents-6.8.0
rea-agents-6.7.0
rea-agents-6.6.0
experiment/atomic-codemode-wait-runtime-20261016
rea-agents-6.5.0
rea-agents-6.4.0
rea-agents-6.3.0
rea-agents-6.2.0
rea-agents-6.1.0
rea-agents-6.0.0
rea-agents-5.0.0
rea-agents-4.1.0
rea-agents-4.0.1
rea-agents-4.0.0
rea-agents-3.2.1
rea-agents-3.2.0
rea-agents-3.1.0
rea-agents-3.0.0
rea-agents-2.7.0
rea-agents-2.6.0
rea-agents-2.5.1
rea-agents-2.5.0
rea-agents-2.4.0
rea-agents-2.3.0
rea-agents-2.2.0
rea-agents-2.1.0
rea-agents-2.0.0
rea-agents-1.7.0
rea-agents-1.6.0
rea-agents-1.5.0
rea-agents-1.4.0
rea-agents-1.3.0
rea-agents-1.2.0
rea-agents-1.1.0
rea-agents-1.0.0
rea-agents-0.5.0
rea-agents-0.4.0
rea-agents-0.3.0
rea-0.2.1
rea-0.2.0
Labels
Clear labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
Mirrored from GitHub Pull Request
question
roadmap
triage
No labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
question
roadmap
triage
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
morluto/rea#3897
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @coygeek on GitHub (Oct 23, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/6500
Before submitting
Area
Process capture or runtime observation
Observed behavior
Real Chromium captures through both the public
capture-browser-scenarioCLI and stdio MCPcapture_browser_scenarioreturn a 40-byte retained POST request body and a 40-byte retained response body undermax_network_body_bytes: 4. The input body isaaaa; the scenario explicitly declares the synthetic environment valueaas sensitive. Both phases reportstate: "captured",bytes: 40,redacted: true, and decoded content[REDACTED][REDACTED][REDACTED][REDACTED]. The capture records the selected 4-byte limit. The byte count and digest correctly describe the retained content, but that content exceeds the selected retained-body bound.Reproduction
Executed one run of each of six cases through each adapter, exercising both body phases in every case: twelve captures in total. This uses an owned disposable browser launched by REA and an HTTP server on loopback. There is no provider substitution, existing browser profile, account, external site, or real secret. The driver constructs the child environment from scratch and keeps HOME, TMPDIR, XDG and DSH state under disposable storage.
From the source checkout at the revision below, with its locked dependencies and compiled runtime available, use the pinned Node.js version. Export
BROWSERas the absolute path to an existing Chromium executable. Save and run this complete driver; it writes the raw adapter replies and a reducedsummary.jsonintoWORK. The assertions characterize the current behavior, including the defect, rather than assert a repaired implementation.The fixture echoes the POST bytes, then the page waits for the response to finish before the scenario completes. The driver finds the POST request's
transaction_idand inspects its two content events. The navigation document is larger than the deliberately tiny body limit and has its own explicit unavailable response body; it is not the transaction used to establish this defect.Expected behavior
max_network_body_bytesmust bound the retained decoded body representation after declared-secret redaction. Retained body content must stay within the selected byte count, or the body must be explicitly unavailable with the appropriate size/allocation reason and observed and allowed values. Fitting bodies must remain capturable when the other selected budgets admit them.The owning capture contract distinguishes body bytes from the separate redaction/base64 allocation estimate and says the body-byte limit bounds retained copies after Playwright has materialized the input. The environment guide states that a scenario keeps at most
max_network_body_bytesof each body. Neither promise bounds the initial Playwright API materialization or exact process memory. The generic allocation-estimate wording for event budgets does not make 40 retained decoded body bytes fit a 4-byte body limit.Impact and scope
P2: callers can receive more retained body bytes than their selected per-phase limit permits. The verified scope is both request and response capture when replacement markers expand a declared value and the separate allocation/event budgets admit the result. The body contents remain correctly redacted and self-consistent, and the other budgets still apply. No crash, body corruption, data loss, real-secret exposure or security-boundary crossing was observed. Default-limit failure, downstream replay effects, other browsers/platforms and natural frequency were not established.
No preserving workaround was demonstrated. Raising the limit from 4 to 40 captures these bodies within the new bound, but changes the caller's original requirement. Lowering
max_network_body_allocation_bytesto 100 rejects the expanded body, but also rejects the otherwise fitting unredacted 4-byte body. Both inputs receive the same 864-byte allocation estimate, so this threshold cannot distinguish them. That setting is an option for callers willing to lose fitting body evidence, rather than preservation of the original selected capture.REA version
b395190e42(prepared source checkout; package manifest 6.7.0; its compiled runtime was executed).Runtime and platform
Node.js v24.18.0; macOS 27.0.1, Darwin 27.0.0 arm64; Google Chrome for Testing 145.0.7632.6; locked playwright-core 1.58.2 with its matching cached Chromium revision 1208.
Target and artifact context
Synthetic HTML page and echo endpoint on 127.0.0.1. The page sends one text/plain POST per capture, with network events and request/response body capture selected.
FIXTURE_SECRET=ais a declared synthetic value. The driver runs six independent owned launches through each adapter and compares the correlated POST content events.Interface
CLI
Earliest failure stage
Capture or observation
Relevant output or evidence
docs/browser-scenario-contract.md:246-255distinguishes body bytes from allocation estimates, limits subsequent retained copies and requires an explicit over-limit state;docs/agent-environments.md:45-54states the per-body maximum and separate allocation behavior.src/domain/browserNetworkEvidence.ts:63-105checks the byte count and digest against the decoded retained representation after redaction.src/browser/network/PlaywrightNetworkContent.ts:131-179compares the observed buffer length before redaction;:179-194then retains the redacted buffer and reports its length. Both phases use that owner throughsrc/browser/network/PlaywrightScenarioNetwork.ts:182-199and:578-595.All six CLI subprocesses exited 0 with empty stderr, and all six MCP calls returned successful tool results. For each adapter, request and response observations agreed:
Each offending POST body had this retained identity:
Both
browser-exposed-request-bytesandplaywright-response-body-bytesrepresentations were observed. Every capture reportedcleanup: "terminated-owned-process"and empty event-omission inventories. The fixture received twelve complete POSTs; the isolated temporary directory contained no remaining provider profile entries after completion. This was a public-adapter and real-browser reproduction, not only handler or fake-boundary evidence.Restoration check
Proposed acceptance check; no repair was applied. Repeat the 4-byte expanded-body case through both adapters. Neither POST phase may be
capturedwith retained decoded bytes above the recorded 4-byte bound. A fitting retained result or explicit unavailable size/allocation state with observed and allowed values must replace the overage. Preserve the plain 4-byte captured control, the redacted 40-byte captured control at limit 40, and the explicit plain 5-byte refusal at limit 4. Preserve declared-value redaction and content identity checks. Rejecting all selected bodies, weakening redaction or silently raising the selected limit would not restore this contract.Analysis or suspected cause
Source-derived explanation: admission compares the pre-redaction buffer length with the selected body-byte limit, while the retained count is measured after replacement. The separate allocation preflight accounts conservatively for potential expansion but does not enforce the selected retained-byte maximum. The production output schema verifies body content identity and transaction links without comparing a captured body's byte count with the capture's recorded limit. Runtime controls are consistent with this explanation.
Additional context
Searched the supplied issue inventory and live open/closed issues using body-limit, retained-body, redaction, allocation and browser terms. #6474 concerns discarded POST data overcharging the
observe-web-executionrequest-metadata budget. #5892 concerns phantom unfinished-event omissions under event admission pressure. Those have different failure/restoration signals; this reproduction has no event omissions.The repair linked from closed #3127 introduced caller-selectable capture budgets and the retained-copy contract; the baseline contains that repair, including its pre-redaction length comparison. Merged PR #1590 repairs secret spellings introduced by markers. Safe marker selection works here, while its retained bytes can expand beyond the selected bound. Neither repair restores this candidate's signal. No matching report was found in the bounded searches. The first affected release and a known-good build are unknown.
Triage assessment