mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
Closed
opened 2026-10-15 18:20:40 +00:00 by bsakaguchi
·
10 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#62
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 @morluto on GitHub (Jul 13, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/96
Problem
Dynamic and filesystem-backed REA capabilities currently require policy to be configured through startup environment variables. This is a strong ceiling, but first use is cumbersome: users must edit MCP configuration and restart the client even when they want a narrow grant for the current workspace and session.
The problem is broader than process capture. The same ceremony affects evidence import/export, investigation inputs/workspaces, persistent snapshots, native DMG mounting, controlled replay, and other capabilities that require bounded local roots or explicit dynamic authority.
Proposal: one scoped capability-grant system
Use MCP
elicitation/createwhen supported to offer precise grants:The same policy evaluator should serve every gated capability rather than creating one ad hoc mechanism per tool family.
Grant dimensions
Every request must prove it is a subset of the active grant. Any expansion elicits again.
Suggested flow
For clients without elicitation, return a structured permission-required result containing the exact configuration, affected path/capability, safe narrow value, and whether restart is required.
Security requirements
roots/listmay suggest boundaries but is not authorization.Acceptance criteria
Motivation
This is needed for smooth agent-led local analysis while retaining explicit, least-authority control. REA is local by design, but local execution and filesystem access still deserve precise, inspectable grants rather than either broad permanent policy or repeated manual restarts.
Policy layers and precedence
Treat authority as the intersection of independently auditable layers:
No lower layer can widen an upper layer. A denial should identify the first constraining layer without exposing secret configuration.
Grant record
A versioned grant should include:
Secret values, authorization headers, captured content, and raw credentials must never be copied into the grant or audit record.
Scope algebra
Implement and test subset checks as a reusable library. Important rules include:
network: none, and external networking is not a subset of loopback;Elicitation UX contract
The prompt should show the exact delta, not the union of all possible authority:
Clients should receive structured choices and machine-readable scope. If the client supports only form elicitation, map the choices without asking for secrets. If elicitation is cancelled or declined, the original tool call must end with a typed non-success result and no partial launch.
Lifecycle and concurrency
allow oncegrant atomically before side effects; refund it only if preflight fails before any protected action.Typed errors and observability
Use stable error codes such as
grant_required,grant_declined,grant_cancelled,scope_expansion_required,ceiling_denied,grant_expired,grant_revoked, andclient_elicitation_unsupported. Include the requested scope, missing delta, recoverability, and safe next action.Expose grant listing, explanation, revocation, and audit inspection through CLI and—where safe—MCP resources. Capability discovery in #101 should identify operations that would become available after an elicitable grant without implying that approval is guaranteed.
Migration and delivery
@morluto commented on GitHub (Jul 17, 2026):
Implementation design audit found two prerequisites that must be resolved before elicitation can safely authorize production capture. First, current configuration turns every permission ceiling into an administrator grant (src/config.ts constructs administrator grants directly from ceilings). Therefore production has either an already-authorized configured scope or no ceiling at all; there is no ceiling-only state within which an elicited grant can operate. Elicitation must not silently install or widen the administrator ceiling. Second, process scenarios currently expose host networking and the PTY backend has no OS-enforced loopback containment, so adding a loopback enum would be a false security claim. The installed MCP SDK also requires a cross-era inputRequired continuation rather than a direct legacy-only elicitInput call. Proposed prerequisite decisions: add an explicit ceiling-only configuration/trusted local ceiling-install flow, and choose a real per-platform loopback containment backend. After that, implement a connection-owned once/session grant adapter using signed request state, canonical scope commitment, accept/decline/cancel parsing, subset reauthorization, and disconnect cleanup. Non-capable and outside-ceiling calls must retain the current typed fallback.
@morluto commented on GitHub (Jul 17, 2026):
Implemented the first prerequisite on the current branch: REA_PROCESS_CAPTURE_AUTO_GRANT=false now configures the enabled process-capture boundary as an administrator ceiling without installing an administrator-lifetime grant. The default remains true for compatibility. Documentation states that ceiling-only mode is fail-closed and does not itself authorize capture; focused configuration and permission tests pass, and npm run check passes on the exact tree. The canonical process-capture PermissionRequest is also now shared by CLI and MCP. Context7 plus the installed @modelcontextprotocol/server 2.0.0-beta.4 types confirm the next slice must use the current multi-round inputRequired/inputRequired.elicit flow with integrity-protected requestState, not a direct legacy-only elicitInput call. Remaining #96 scope: advertise elicitation, implement signed accept-once/session retries and decline/cancel/fallback handling, bind session grants to connection cleanup, add trusted project persistence/audit flow, and separately deliver real loopback containment before advertising loopback-only networking. The issue remains open.
@morluto commented on GitHub (Jul 17, 2026):
Implemented and validated the next #96 slice in the current worktree:
REA_PROCESS_CAPTURE_AUTO_GRANT=falsenow installs the configured process-capture boundary as an administrator ceiling without an implicit grant.onceandsession; once grants are consumed immediately by the retried operation.Validation:
npm run checkpassed on the exact final tree (159 test files, 1,052 tests), followed bygit diff --check.This issue should remain open. The currently pinned MCP SDK type surface includes multi-round input-required APIs, but its runtime negotiates the older protocol path; attempting the legacy automatic shim hung in integration testing. REA therefore does not advertise or wait for elicitation on that runtime. A real elicitation-capable runtime/client round trip, project-lifetime grant UX/audit/revocation, and enforceable loopback-only process containment remain separate acceptance gaps.
@morluto commented on GitHub (Jul 17, 2026):
Current-main update (2026-07-17):
The signed once/session elicitation groundwork is implemented and covered locally: exact-request continuations, nonce consumption, decline/cancel handling, legacy-protocol fail-closed behavior, and connection-close cleanup. The pinned MCP runtime still negotiates the older protocol, so no production interactive grant is claimed yet.
An independent final-diff review found that the next step must be re-scoped before enabling it:
PermissionAuthority, so concurrent MCP connections could consume or revoke each other's grants;stat/read/write checks and mode bits, not same-handle no-follow ownership/private-DACL admission.I removed the proposed project-lifetime append path rather than ship those authority and TOCTOU gaps. The focused suite passes (10 tests across elicitation, project-store, and reload coverage), and the complete pre-review tree passed
npm run check(160 files / 1,060 tests).Remaining order:
This issue remains open.
@morluto commented on GitHub (Jul 17, 2026):
Current-main update (2026-07-17):\n\nThe signed once/session elicitation groundwork is implemented and covered locally: exact-request continuations, nonce consumption, decline/cancel handling, legacy-protocol fail-closed behavior, and connection-close cleanup. The pinned MCP runtime still negotiates the older protocol, so no production interactive grant is claimed yet.\n\nAn independent final-diff review found that the next step must be re-scoped before enabling it:\n\n- once/session grants currently enter a process-global , so concurrent MCP connections could consume or revoke each other's grants;\n- project persistence cannot safely publish authority before a durable commit, while persisting first needs an exact rollback protocol;\n- SIGHUP can change the configured project store while an existing signed continuation still targets the old configuration;\n- the current project store uses pathname-based /read/write checks and mode bits, not same-handle no-follow ownership/private-DACL admission.\n\nI removed the proposed project-lifetime append path rather than ship those authority and TOCTOU gaps. The focused suite passes (10 tests across elicitation, project-store, and reload coverage), and the complete pre-review tree passed
src/application/ArtifactInventory.ts:654:3: warning eslint(max-lines): File has too many lines (620). help: Maximum allowed is 500.
src/application/ArtifactInventory.ts:117:44: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/application/ArtifactInventory.ts:136:47: warning eslint(max-lines-per-function): The async function has too many lines (153). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/application/ArtifactInventory.ts:136:53: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/application/ArtifactInventory.ts:389:20: warning eslint(max-lines-per-function): The async function has too many lines (144). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/domain/artifactComparison.ts:215:22: warning eslint(complexity): function has a complexity of 22. Maximum allowed is 20.
src/domain/managedApplicationGraph.ts:806:3: warning eslint(max-lines): File has too many lines (768). help: Maximum allowed is 500.
src/application/InvestigationWorkspaceStore.ts:86:57: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/application/AuthorizedArtifactInventory.ts:14:54: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/domain/reconstructionCoverage.ts:890:3: warning eslint(max-lines): File has too many lines (839). help: Maximum allowed is 500.
src/domain/reconstructionCoverage.ts:521:32: warning eslint(max-lines-per-function): The function has too many lines (113). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/domain/javascriptFeatureTraversal.ts:132:24: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/domain/errors.ts:1161:3: warning eslint(max-lines): File has too many lines (1029). help: Maximum allowed is 500.
src/domain/errors.ts:549:14: warning eslint(max-params): Function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/domain/javascriptApplicationVersionKeys.ts:76:19: warning eslint(max-params): Arrow function has too many parameters (6). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/domain/javascriptApplicationVersionItems.ts:276:23: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/application/JavaScriptReplayService.ts:63:45: warning eslint(complexity): async function has a complexity of 37. Maximum allowed is 20.
src/application/JavaScriptReplayService.ts:63:45: warning eslint(max-lines-per-function): The async function has too many lines (268). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/domain/functionComparison.ts:524:3: warning eslint(max-lines): File has too many lines (508). help: Maximum allowed is 500.
src/domain/browserObservation.ts:646:73: warning eslint(max-lines): File has too many lines (618). help: Maximum allowed is 500.
src/contracts/toolOutputSchemas.ts:655:3: warning eslint(max-lines): File has too many lines (637). help: Maximum allowed is 500.
src/domain/managedNativeVerification.ts:529:4: warning eslint(max-lines): File has too many lines (501). help: Maximum allowed is 500.
src/domain/managedNativeVerification.ts:188:46: warning eslint(max-lines-per-function): The function has too many lines (111). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/domain/managedNativeVerification.ts:364:23: warning eslint(max-lines-per-function): The function has too many lines (104). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/domain/managedNativeVerification.ts:364:23: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/domain/managedMemberComparison.ts:770:3: warning eslint(max-lines): File has too many lines (726). help: Maximum allowed is 500.
src/domain/managedMemberComparison.ts:217:38: warning eslint(max-lines-per-function): The function has too many lines (104). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/domain/managedMemberComparison.ts:401:27: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/domain/managedReconstruction.ts:125:44: warning eslint(max-lines-per-function): The function has too many lines (103). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/dotnet/ManagedMemberInspector.ts:1491:3: warning eslint(max-lines): File has too many lines (1447). help: Maximum allowed is 500.
src/dotnet/ManagedMemberInspector.ts:998:20: warning eslint(max-lines-per-function): The function has too many lines (131). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/dotnet/ManagedMemberInspector.ts:1214:22: warning eslint(max-params): Arrow function has too many parameters (6). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/dotnet/ManagedMemberInspector.ts:1383:43: warning eslint(max-lines-per-function): The function has too many lines (109). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/dotnet/ManagedPeReader.ts:98:16: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/dotnet/ManagedPeReader.ts:193:36: warning eslint(max-lines-per-function): The function has too many lines (104). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/dotnet/ManagedMetadataInventory.ts:673:5: warning eslint(max-lines): File has too many lines (648). help: Maximum allowed is 500.
src/dotnet/ManagedMetadataInventory.ts:263:22: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/dotnet/ManagedMetadataInventory.ts:460:22: warning eslint(max-params): Arrow function has too many parameters (6). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/dotnet/ManagedMetadataLayout.ts:199:17: warning eslint(complexity): function has a complexity of 46. Maximum allowed is 20.
src/dotnet/ManagedMetadataLayout.ts:199:17: warning eslint(max-lines-per-function): The function has too many lines (107). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/dotnet/ManagedMetadataLayout.ts:308:42: warning eslint(complexity): function has a complexity of 25. Maximum allowed is 20.
src/dotnet/ManagedMetadataLayout.ts:308:42: warning eslint(max-lines-per-function): The function has too many lines (144). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/dotnet/ManagedNativeBoundaryInspector.ts:600:3: warning eslint(max-lines): File has too many lines (576). help: Maximum allowed is 500.
src/dotnet/ManagedNativeBoundaryInspector.ts:213:23: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/dotnet/ManagedNativeBoundaryInspector.ts:482:52: warning eslint(max-lines-per-function): The function has too many lines (119). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/application/CrossVersionInvestigation.ts:538:44: warning eslint(max-lines): File has too many lines (514). help: Maximum allowed is 500.
src/server/createServer.ts:69:29: warning eslint(complexity): function has a complexity of 21. Maximum allowed is 20.
src/server/createServer.ts:69:29: warning eslint(max-lines-per-function): The function has too many lines (213). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/application/BinarySession.ts:891:4: warning eslint(max-lines): File has too many lines (807). help: Maximum allowed is 500.
src/application/BinarySession.ts:405:7: warning eslint(max-lines-per-function): The method
openhas too many lines (110). Maximum allowed is 100. help: Consider splitting it into smaller functions.src/application/BinarySession.ts:414:28: warning eslint(complexity): async function has a complexity of 30. Maximum allowed is 20.
src/application/BinarySession.ts:626:16: warning eslint(complexity): async method
executehas a complexity of 24. Maximum allowed is 20.src/config.ts:570:18: warning eslint(max-lines): File has too many lines (551). help: Maximum allowed is 500.
src/config.ts:319:28: warning eslint(complexity): function has a complexity of 28. Maximum allowed is 20.
src/config.ts:319:28: warning eslint(max-lines-per-function): The function has too many lines (242). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/replay/LinuxJavaScriptReplayRunner.ts:580:3: warning eslint(max-lines): File has too many lines (559). help: Maximum allowed is 500.
src/replay/LinuxJavaScriptReplayRunner.ts:33:16: warning eslint(complexity): async method
executehas a complexity of 23. Maximum allowed is 20.src/replay/LinuxJavaScriptReplayRunner.ts:33:16: warning eslint(max-lines-per-function): The async method
executehas too many lines (171). Maximum allowed is 100. help: Consider splitting it into smaller functions.src/replay/LinuxJavaScriptReplayRunner.ts:246:26: warning eslint(max-params): Arrow function has too many parameters (6). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/replay/LinuxJavaScriptReplayRunner.ts:542:27: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/server/registerEnhancedTools.ts:150:27: warning eslint(complexity): function has a complexity of 21. Maximum allowed is 20.
src/server/registerBrowserTools.ts:44:37: warning eslint(max-lines-per-function): The function has too many lines (227). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/server/registerSessionTools.ts:726:3: warning eslint(max-lines): File has too many lines (712). help: Maximum allowed is 500.
src/server/registerSessionTools.ts:225:31: warning eslint(max-lines-per-function): The function has too many lines (105). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/server/registerSessionTools.ts:443:32: warning eslint(max-lines-per-function): The function has too many lines (150). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/server/registerSessionTools.ts:614:37: warning eslint(max-lines-per-function): The function has too many lines (113). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/server/registerOfficialTools.ts:48:30: warning eslint(max-lines-per-function): The function has too many lines (106). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/server/registerElectronTools.ts:34:38: warning eslint(max-lines-per-function): The function has too many lines (122). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/server/registerApplicationTools.ts:74:41: warning eslint(max-lines-per-function): The function has too many lines (112). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/server/registerApplicationTools.ts:264:31: warning eslint(max-lines-per-function): The function has too many lines (134). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/server/registerManagedWorkflowTools.ts:43:45: warning eslint(max-lines-per-function): The function has too many lines (327). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/application/EnhancedTools.ts:563:5: warning eslint(max-lines): File has too many lines (529). help: Maximum allowed is 500.
src/server/registerSessionStatusTool.ts:16:42: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/server/registerInvestigationTools.ts:591:3: warning eslint(max-lines): File has too many lines (575). help: Maximum allowed is 500.
src/server/registerInvestigationTools.ts:75:32: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/server/registerInvestigationTools.ts:92:33: warning eslint(max-lines-per-function): The function has too many lines (161). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/server/registerInvestigationTools.ts:101:5: warning eslint(max-lines-per-function): The async function has too many lines (150). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/server/registerInvestigationTools.ts:394:32: warning eslint(max-lines-per-function): The function has too many lines (110). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/server/registerEvidenceResources.ts:17:42: warning eslint(max-lines-per-function): The function has too many lines (324). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/application/WindowsNativeAuthority.ts:837:75: warning eslint(max-lines): File has too many lines (715). help: Maximum allowed is 500.
tests/fixtures/managedPe.ts:112:22: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
tests/fixtures/managedPe.ts:267:38: warning eslint(complexity): function has a complexity of 23. Maximum allowed is 20.
src/application/RealHopperAssertions.ts:96:45: warning eslint(max-lines-per-function): The function has too many lines (101). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/application/DirectAnalysis.ts:86:42: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/application/DirectAnalysis.ts:250:21: warning eslint(complexity): async function has a complexity of 26. Maximum allowed is 20.
src/application/DirectAnalysis.ts:250:21: warning eslint(max-lines-per-function): The async function has too many lines (134). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/dotnet/ManagedArtifactInspector.ts:164:31: warning eslint(complexity): function has a complexity of 24. Maximum allowed is 20.
src/dotnet/ManagedArtifactInspector.ts:264:31: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/ghidra/GhidraProvider.ts:588:3: warning eslint(max-lines): File has too many lines (562). help: Maximum allowed is 500.
src/ghidra/GhidraClient.ts:597:2: warning eslint(max-lines): File has too many lines (566). help: Maximum allowed is 500.
src/ghidra/GhidraClient.ts:230:21: warning eslint(max-lines-per-function): The private async method
startWithinhas too many lines (107). Maximum allowed is 100. help: Consider splitting it into smaller functions.scripts/lib/managed-pe-fixture.mjs:235:38: warning eslint(complexity): function has a complexity of 28. Maximum allowed is 20.
scripts/lib/managed-pe-fixture.mjs:235:38: warning eslint(max-lines-per-function): The function has too many lines (143). Maximum allowed is 100. help: Consider splitting it into smaller functions.
scripts/verify-managed-conformance.mjs:1348:2: warning eslint(max-lines): File has too many lines (1295). help: Maximum allowed is 500.
scripts/verify-managed-conformance.mjs:659:1: warning eslint(max-lines-per-function): The async function
runOptionalIlspyOraclehas too many lines (127). Maximum allowed is 100. help: Consider splitting it into smaller functions.scripts/verify-managed-conformance.mjs:828:1: warning eslint(complexity): async function
verifyManagedAppManifesthas a complexity of 26. Maximum allowed is 20.scripts/verify-managed-conformance.mjs:828:1: warning eslint(max-lines-per-function): The async function
verifyManagedAppManifesthas too many lines (110). Maximum allowed is 100. help: Consider splitting it into smaller functions.scripts/verify-managed-conformance.mjs:940:1: warning eslint(max-lines-per-function): The function
verifyManagedAppManifestApplicationGraphhas too many lines (126). Maximum allowed is 100. help: Consider splitting it into smaller functions.src/browser/CdpObservationSession.ts:288:7: warning eslint(max-params): Function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/replay/JavaScriptReplayWorker.ts:298:17: warning eslint(complexity): function has a complexity of 21. Maximum allowed is 20.
src/browser/CdpCaptureDocuments.ts:315:21: warning eslint(max-params): Arrow function has too many parameters (6). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
scripts/lib/product-catalog.mjs:536:64: warning eslint(max-lines): File has too many lines (514). help: Maximum allowed is 500.
src/browser/CdpWebMcpDiscovery.ts:136:31: warning eslint(complexity): function has a complexity of 21. Maximum allowed is 20.
src/browser/CdpWebMcpDiscovery.ts:216:27: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/browser/CdpWebMcpDiscovery.ts:332:16: warning eslint(max-params): Arrow function has too many parameters (6). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/browser/PngVisualDiff.ts:180:21: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/domain/webBundleAnalyzer.ts:640:3: warning eslint(max-lines): File has too many lines (610). help: Maximum allowed is 500.
src/domain/webBundleAnalyzer.ts:38:41: warning eslint(max-lines-per-function): The function has too many lines (121). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/domain/webBundleAnalyzer.ts:310:17: warning eslint(max-params): Arrow function has too many parameters (6). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/domain/webBundleAnalyzer.ts:331:20: warning eslint(max-params): Arrow function has too many parameters (7). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/domain/webBundleAnalyzer.ts:411:36: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/browser/CdpCaptureEvents.ts:739:17: warning eslint(max-lines): File has too many lines (699). help: Maximum allowed is 500.
src/browser/CdpPageCapture.ts:632:6: warning eslint(max-lines): File has too many lines (610). help: Maximum allowed is 500.
src/browser/CdpPageCapture.ts:406:24: warning eslint(max-lines-per-function): The async function has too many lines (119). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/browser/CdpPageCapture.ts:406:30: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
tests/fixtures/fakeCdpBrowser.ts:359:19: warning eslint(complexity): function has a complexity of 24. Maximum allowed is 20.
tests/fixtures/fakeCdpBrowser.ts:639:20: warning eslint(complexity): function has a complexity of 30. Maximum allowed is 20.
src/application/Setup.ts:656:5: warning eslint(max-lines): File has too many lines (607). help: Maximum allowed is 500.
src/application/Setup.ts:137:25: warning eslint(max-lines-per-function): The async function has too many lines (102). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/application/SetupPlan.ts:9:26: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
scripts/verify-real-browser.mjs:336:1: warning eslint(complexity): function
assertObservationhas a complexity of 25. Maximum allowed is 20.src/application/MacHopper.ts:123:36: warning eslint(max-lines-per-function): The function has too many lines (103). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/cliPolicyCommands.ts:54:39: warning eslint(max-lines-per-function): The function has too many lines (113). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/application/Doctor.ts:651:60: warning eslint(max-lines): File has too many lines (620). help: Maximum allowed is 500.
src/application/Doctor.ts:105:26: warning eslint(complexity): async function has a complexity of 67. Maximum allowed is 20.
src/application/Doctor.ts:105:26: warning eslint(max-lines-per-function): The async function has too many lines (268). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/application/Doctor.ts:388:33: warning eslint(max-lines-per-function): The function has too many lines (164). Maximum allowed is 100. help: Consider splitting it into smaller functions.
scripts/verify-real-ghidra.mjs:1111:2: warning eslint(max-lines): File has too many lines (1062). help: Maximum allowed is 500.
scripts/verify-real-ghidra.mjs:260:1: warning eslint(complexity): async function
verifyInventoryOperationshas a complexity of 22. Maximum allowed is 20.scripts/verify-real-ghidra.mjs:260:1: warning eslint(max-lines-per-function): The async function
verifyInventoryOperationshas too many lines (118). Maximum allowed is 100. help: Consider splitting it into smaller functions.scripts/verify-real-ghidra.mjs:380:1: warning eslint(max-lines-per-function): The async function
verifyDebugFunctionOperationshas too many lines (169). Maximum allowed is 100. help: Consider splitting it into smaller functions.scripts/verify-real-ghidra.mjs:814:1: warning eslint(complexity): function
assertDossierhas a complexity of 26. Maximum allowed is 20.src/cliApplicationCommands.ts:106:39: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
src/cliApplicationCommands.ts:239:29: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
tests/fixtures/fakeGhidra.mjs:31:31: warning eslint(max-lines-per-function): The function has too many lines (102). Maximum allowed is 100. help: Consider splitting it into smaller functions.
tests/fixtures/fakeGhidra.mjs:200:25: warning eslint(max-lines-per-function): The function has too many lines (106). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/cli.ts:1211:4: warning eslint(max-lines): File has too many lines (1186). help: Maximum allowed is 500.
src/cli.ts:714:33: warning eslint(max-lines-per-function): The function has too many lines (422). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/cliElectronCommands.ts:73:45: warning eslint(max-lines-per-function): The function has too many lines (156). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/cliElectronCommands.ts:230:46: warning eslint(max-lines-per-function): The function has too many lines (151). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/cliBrowserCommands.ts:105:32: warning eslint(max-lines-per-function): The function has too many lines (178). Maximum allowed is 100. help: Consider splitting it into smaller functions.
src/main.ts:73:20: warning eslint(max-lines-per-function): The async function has too many lines (207). Maximum allowed is 100. help: Consider splitting it into smaller functions.
scripts/verify-package.mjs:1201:2: warning eslint(max-lines): File has too many lines (1189). help: Maximum allowed is 500.
tests/ghidraMcp.test.ts:327:19: warning eslint(complexity): function has a complexity of 21. Maximum allowed is 20.
tests/mainErrors.test.ts:11:22: warning eslint(max-params): Arrow function has too many parameters (5). Maximum allowed is 4. help: This rule enforces a maximum number of parameters allowed in function definitions.
Checking formatting...
All matched files use Prettier code style!
@morluto commented on GitHub (Jul 17, 2026):
Post-review validation update: the exact tree after removing the unsafe project-persistence slice passes npm run check (160 test files, 1,057 tests), including regenerated TypeDoc and product metadata.
@morluto commented on GitHub (Jul 17, 2026):
Implemented and validated the per-connection permission overlay on the current working tree.
What is now covered:
onceandsessiongrants on connection A are invisible to connection B;Regression coverage exercises concurrent once-grant use, identical IDs across two connection overlays, disconnect isolation, and configured-policy reload/collision behavior. The required independent security-boundary review was clean after fixes.
Validation on the final tree:
npm run docs:generatenpm run checkThis addresses the per-connection ownership gap, but #96 should remain open. Remaining scope is still: signed project-state binding and handle-safe persistence/rollback, verification with a real modern MCP runtime/client that negotiates the multi-round elicitation protocol, and enforceable loopback containment.
@morluto commented on GitHub (Jul 18, 2026):
Milestone implementation is now in #305. It adds per-connection scoped elicitation with signed exact-request state, bounded/expiring replay tracking, grant rollback on returned or thrown authorization failure, recoverable policy reloads, and POSIX same-handle
O_NOFOLLOWproject-store reads with exact post-write verification. Focused regressions and the fullnpm run check/package verifier pass. Remaining scope stays open: Windows handle/reparse/DACL persistence after #289/#290, stronger persisted-state signing, and real modern MCP client tamper/expiry proof.@morluto commented on GitHub (Jul 20, 2026):
Split into focused child issues:
These replace the broad remaining scope in this issue. Closing this parent can happen once all children are closed.
@morluto commented on GitHub (Oct 5, 2026):
Closing as superseded by merged #555, with the direct-tool direction reinforced by #572.
REA no longer maintains permission grants, startup ceilings, project grant stores, or MCP grant elicitation. Agents invoke local tools directly; the selected operation expresses intent, and execution uses the current user's OS permissions. Actual input validation, provider prerequisites, target identity, cancellation, and owned-resource cleanup still apply. Setup approval remains a separate installation workflow.
The remaining elicitation, grant persistence, and scope-expansion work is therefore no longer planned. This closure does not claim that the old grant-system acceptance criteria were implemented.