feat(scan): add application data-boundary diagnostic mode#621
Conversation
feat(scan): add application data-boundary diagnostic mode
Drop the one-off apply patch helper, dedupe security user-guide copy, and add a CLI integration test ensuring scan --data-boundaries skips update checks.
Add integration test for scan --data-boundaries update-check suppression and replace duplicated three-layer section with a short link.
chore: data-boundary scan PR cleanup
feat(scan): add application data-boundary diagnostic mode
|
Pushed a small test-formatting cleanup and re-ran the targeted local checks. |
|
Follow-up: hardened _low_noise_config()\ in both data-boundary test modules so JarvisConfig defaults (absolute store paths under the real OPENJARVIS_HOME, MCP enabled, etc.) no longer leak warn findings into info-only scenarios. Targeted suite re-run: 54 passed, 2 skipped. Pushed to \origin/main\ as \37a4f692. |
|
The latest push includes the test cleanup and the _low_noise_config()\ hardening noted above. The targeted local suite is green: 54 passed, 2 skipped. |
|
Follow-up: preserved configured store paths for POSIX symlink detection while keeping resolved-path deduplication. Linux-targeted local-store permission tests pass, including |
|
Hey @fraware, thank you for the PR! I have a few fixes for you:
Verification Passed: OPENJARVIS_HOME=/tmp/openjarvis-test-home-621 PYTHONPATH=src python3 -m pytest tests/security/test_data_boundary_audit.py tests/cli/test_scan_data_boundaries.py -q
# 56 passed
python3 -m ruff check src/openjarvis/security/data_boundary_audit.py src/openjarvis/cli/scan_cmd.py src/openjarvis/cli/__init__.py tests/security/test_data_boundary_audit.py tests/cli/test_scan_data_boundaries.py
python3 -m compileall -q src/openjarvis/security/data_boundary_audit.py src/openjarvis/cli/scan_cmd.py src/openjarvis/cli/__init__.pyFailed: python3 -m ruff format --check ...
# 3 files would be reformatted |
|
Thank you, Elliot — this was very helpful. I addressed all five items:
I also added focused tests for each case and re-ran the same validation commands from your review:
The fixes are in commit 12fa4e7. Thank you again for the detailed review. |
Summary
This PR extends
jarvis scanwith a new application data-boundary mode:The new mode reports configured OpenJarvis data surfaces such as cloud-capable
inference settings, memory-to-cloud composition, traces, learning/training,
web search, MCP, browser/local tools, server/A2A exposure, messaging channels,
connector credential files, local runtime stores, and API-key environment
variables.
The scanner inspects configuration values, environment-variable presence, and file existence.
It does not read connector-token contents, memory databases, trace databases, prompts,
logs, OAuth scopes, browser localStorage, Tauri storage, or provider policies.
Why
OpenJarvis is local-first while also supporting optional cloud engines,
connectors, tools, channels, traces, memory, learning, and optimization. Users
need a simple way to verify whether a configuration is local-only, cloud-capable,
or a mixed setup where local memory may be injected into cloud-bound prompts.
The existing
jarvis scancommand audits host/environment posture. This PR addsan application-level counterpart without creating a competing top-level command.
What changed
openjarvis.security.data_boundary_auditwith structured findings andredacted JSON output.
jarvis scan --data-boundarieswith table and JSON output.--show-pathsfor local debugging while keeping paths redacted bydefault.
--strictto fail on eitherfailorwarnfindings.OPENJARVIS_CONFIGso the scan audits the same explicit config fileused by the runtime.
crashing.
jarvis scan --data-boundaries, sothis diagnostic mode does not trigger the normal update-check thread.
messaging credential-directory checks.
stores on POSIX systems.
tools, MCP, channels, env credentials, strict mode, config/root-load failures, and
normal
jarvis scanregression coverage.Non-goals
provider retention policies, or live network traffic.
Review follow-up validation
Addressed the five items from Elliot's review in
12fa4e79:channel.default_channelis presence-only and redacted in all output modes.whatsapp_baileys_bridge/auth.GEMINI_API_KEYdetection added with redaction coverage.98f4df1f).ruff check: passed.ruff format --check: passed.compileall: passed.mkdocs build --strict: not passed locally (18 pre-existing doc warnings under strict mode; left to upstream CI).