mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[GH-ISSUE #5400] [Feature] Avoid repeated Ghidra startup logs in input-error replies #3270
Open
opened 2026-10-31 00:38:36 +00:00 by bsakaguchi
·
7 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#3270
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 @cpruijsen on GitHub (Oct 20, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/5400
Area
MCP or agent integration.
Current limitation
Two consecutive invalid-input replies each include 32,429 bytes of identical Ghidra startup stdout. Each complete text reply is 35,460 UTF-8 bytes. The provider was already ready, and both failed operations produced no stdout or stderr.
Reproduction and observed evidence
Historical stdio MCP run on 19 October 2026:
Both replies correctly return
invalid_request:Baseline 8-bit trace request/result pairs are 74/75 and 76/77. In both replies,
error.details.diagnostics.failure_outputhas empty stdout/stderr andcomplete:true. Their cumulativediagnostics.stdout.textvalues are byte-identical. The repeated stdout has SHA-2561568b8e9182ed02c5f231231774caaa72aee1c2e35f4a4e74195166b3d06feaf. Full startup logs remain private.Desired outcome and success criteria
Proposed: deliver the typed argument error and operation-specific diagnostics without repeating the complete startup transcript in every ordinary input-error reply. Keep complete session diagnostics accessible. Preserve startup, crash, cleanup, and memory-failure evidence when relevant. This requires a compatible delivery choice, not silent truncation or removal of canonical diagnostic data.
Scope and attribution
The model supplied the wrong document identity. REA correctly rejected it. The separate harness clipped each text reply at 12,000 bytes. That client policy is not REA truncation. Generation-limit failures in the benchmark are also separate.
Verification available so far
Actual MCP results at source revision
3613fb11bd9d6b876822056a6d7ec2c18e3bfc9d, macOS arm64, Ghidra 12.1.4, Temurin 21.0.12.1+1-LTS. Node and exact macOS versions:NOT_ENOUGH_INFO, not recorded in the inspected traces.Source review at
d532b18123916a9e88f98c7880ba4f984e23d715still shows cumulative stdout/stderr projection. No fresh runtime reproduction at that revision occurred.Alternatives and references
Correcting or omitting
documentavoids the input error, but does not address diagnostic delivery. Related #723 preserves complete contracts while discussing response repetition. No before/after token or latency improvement is claimed.@dark13b commented on GitHub (Oct 20, 2026):
I'd like to take this one as well.
I have Ghidra 12.1.4 on Windows 11, so I can check this against the real provider instead of from source only. I'll reproduce the repeated startup stdout in consecutive input-error replies first, then work on keeping the full session diagnostics accessible without repeating them in every ordinary input-error reply. Startup, crash, cleanup, and memory-failure evidence will stay where it is relevant. A draft PR will follow.
@matbrgz commented on GitHub (Oct 20, 2026):
Cross-referencing with canonical issue #5340 (
[Feature] Optional per-function Ghidra decompile deadline that fails one request instead of closing the session) and sibling #5342. Addresses Ghidra session resilience, log suppression on input errors, and per-operation boundary controls. Cataloged under Cluster BX in consolidation tracker #4330.@morluto commented on GitHub (Oct 26, 2026):
Thank you for preserving the real MCP evidence and distinguishing client clipping from REA output. #7140 now scopes expected rejected-input diagnostics to the active request after a verified handshake, while retaining request output and keeping full diagnostics for startup, process, protocol and other failures. I am leaving this issue open for the requested caller-accessible complete session diagnostics: the merged change retains the bounded streams in the client and names ephemeral log paths, but that does not by itself establish a public retrieval path. No Ghidra run was performed in this triage.
@cpruijsen commented on GitHub (Oct 30, 2026):
Re-ran the two calls from the report against real Ghidra on main (
cd878ad57, includes #7140): macOS 27.0.1 arm64, Ghidra 12.1.4, Node 24.22.1, stdio MCP, the arm64 slice of Elgato Control Center (main still refuses the universal file without #6392).Both replies are still
invalid_requestwithremote_message"Unknown Ghidra Program identity: Elgato Control Center; active program: target-d3703d6687a0.bin". Each is now 2,355 bytes, down from 35,460, withdiagnostic_scope: "request", emptyfailure_output(complete: true) and no cumulative stdout/stderr. So the rejected-input part is fixed.On the part you kept open: the replies name
ghidra_log_pathandscript_log_path, but both were gone once the session ended, so there is no way to get the full session output afterwards.@dark13b commented on GitHub (Oct 30, 2026):
Thanks for re-running this on current main and confirming the split: the rejected-input replies are now request-scoped (2,355 bytes, empty
failure_output, no cumulative stdout/stderr), and the remaining gap is thatghidra_log_path/script_log_pathno longer exist once the session ends.I opened a draft for that gap: https://github.com/morluto/rea/pull/8199 (refs this issue, does not close it). It is a draft proposal; it may change or not land in this form.
What it does:
REA_GHIDRA_DIAGNOSTICS_DIRset to an existing absolute directory, each Ghidra run writes its own subdirectory withstdout.log,stderr.log,ghidra.log,script.logand amanifest.json(run ID, target SHA-256, profile digest, per-file status). Error diagnostics then includediagnostics_export_path.ghidra.logandscript.logare copied after the process stops.close_binaryreports adiagnostic_exportfailure instead ofcleanup_incomplete.What is not verified:
EBUSYon an endpoint rename. The same fixture already fails 69 other tests on the PR's parent commit, so those two rely on Linux CI.No action is needed from you. If you ever try it on macOS arm64 and want to share what you see, that would be useful, but nothing is expected.
@morluto commented on GitHub (Oct 31, 2026):
Real-provider macOS control for exact PR #8199 head
43592896eb9469a19af0144da1007546ac8dd6ed, Node 24.22.1, Ghidra 12.1.4 and JDK 21. The target was a self-built Mach-O; it was not executed and its SHA-256 was unchanged.invalid_requestfor two wrong document selectors, listed procedures again, and closed. No diagnostic export directory was created and the private runtime was removed.complete, both copied Ghidra filescaptured, and producer log completenessunknown.manifest.json.tmpin a new export directory before close. Close returnedexecution_failurefordiagnostic_export; the private runtime was gone,binary_sessionreported closed with no cleanup pending, and a second close succeeded. The pre-existing marker was preserved and no final manifest was written.These are macOS controls on one target and the exact PR head, complementing the PR's Windows evidence. The collision was injected deliberately; it is not a measured natural failure rate. This run did not verify credential redaction, startup failure, CLI, other platforms, or real cleanup failures alongside an export failure.
@morluto commented on GitHub (Oct 31, 2026):
Controlled real-Ghidra redaction follow-up to the earlier diagnostic-export check: on macOS arm64 with Ghidra 12.1.4 and JDK 21, I used a disposable checkout of PR #8199 head
43592896with two deliberate test-only changes: the client used a known synthetic transport token, and the real bridge emitted that value with marked ordinary text to stdout, stderr, the Ghidra script logger, and aninvalid_requestresponse. No live generated credential was read or recovered.Through public MCP, the injected response retained its marker and a caller-like
/tmp/password-fixture?token=public-valuestring, replaced the synthetic transport token with[REDACTED], and the same session answered a normal query afterward. After close, all four exported logs (stdout,stderr,ghidra, andscript) contained the injected marker, the redaction marker and the ordinary value, but none contained the synthetic credential. The manifest matched the target digest, the POSIX descriptor was absent after handshake, the runtime was removed, and the unexecuted target was unchanged. The owned test export was removed after inspection.This corrects my earlier implication that a real-session redaction check necessarily required recovering the live descriptor: controlled injection can exercise the real bridge and export pipeline safely. The result is for the modified test build, one error path, macOS arm64, and a synthetic credential; it does not establish behavior for arbitrary log boundaries, startup failures, Windows or other releases. The existing focused tests separately cover synthetic split-chunk redaction. No production change or new security mechanism is proposed.