Typed, reproducible high-content microscopy workflows across GUI, Python, CellProfiler, Napari/Fiji, GPU, and local MCP agents.
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution ×5 in OpenHCSDev/openhcs
transport stdio · streamable-http · http
verified
reported
listed in the official MCP registry counts 2 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
openhcs_bootstrap_failure
-
openhcs_health_check
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit e867013 · analyzer v33 · 1w ago
skills & prompt files 1
danger signals40
- dynamic code execution pickle.loads() OpenHCSDev-openhcs-e867013/openhcs/agent/services/viewer_window_service.py :1113
response = pickle.loads(socket.recv(flags=zmq.DONTWAIT)) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/openhcs/core/config_document.py :54
exec(code, namespace) # noqa: S102 - executable Python is the document format - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/openhcs/core/function_step_document.py :58
exec(code, namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/openhcs/core/pipeline_document.py :82
exec(code, namespace) - dynamic code execution __import__ sink OpenHCSDev-openhcs-e867013/openhcs/core/progress/types.py :802
pid=__import__("os").getpid(), - dynamic code execution pickle.loads() OpenHCSDev-openhcs-e867013/openhcs/omero/plugin/omero_openhcs/views.py :44
response_data = pickle.loads(response) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/openhcs/processing/custom_functions/manager.py :476
exec(code, namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/openhcs/pyqt_gui/services/ui_agent_bridge.py :547
exec(executable, namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/openhcs/pyqt_gui/widgets/shared/services/pipeline_editor_workflows.py :532
exec(code, namespace) - dynamic code execution pickle.loads() OpenHCSDev-openhcs-e867013/openhcs/runtime/napari_viewer_server.py :4858
message = pickle.loads(request_payload) - dynamic code execution pickle.loads() OpenHCSDev-openhcs-e867013/openhcs/runtime/viewer_protocol.py :1117
payload = pickle.loads(socket.recv()) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/openhcs/runtime/zmq_execution_server.py :501
exec( - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/openhcs/runtime/zmq_execution_server_launcher.py :119
exec(args.config_source, namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/openhcs/ui/shared/plate_manager_code_document.py :168
exec(compile(source, "<openhcs-plate-manager-document>", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/scripts/mcp_thesis_demo_live.py :1134
exec(compile(source, "<live-ui-config>", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/integration/test_generated_source_relative_paths.py :118
exec(source, namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/integration/test_main.py :994
exec(global_config_code, global_config_namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/integration/test_source_store_code_mode_zmq.py :335
exec(source, namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/pyqt_gui/test_synthetic_plate_pipeline_document.py :56
exec(compile(source, "<synthetic-plate-pipeline>", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/pyqt_gui/test_ui_agent_bridge.py :2706
exec(source, namespace) - dynamic code execution pickle.loads() OpenHCSDev-openhcs-e867013/tests/unit/pyqt_gui/test_ui_bridge_lifecycle_config.py :451
response = pickle.loads(socket.recv()) - dynamic code execution pickle.loads() OpenHCSDev-openhcs-e867013/tests/unit/test_artifact_plan_view.py :214
assert pickle.loads(pickle.dumps(inspection)) == inspection - dynamic code execution pickle.loads() OpenHCSDev-openhcs-e867013/tests/unit/test_callable_contract.py :411
restored = pickle.loads( - dynamic code execution pickle.loads() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_backend_public_api.py :103
assert pickle.loads(pickle.dumps(crop)) is crop - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_display_manual_projection_declarations.py :419
exec(compile(source, "<assigned-cellprofiler-steps>", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_export_to_database.py :398
exec(compile(config_source, "<config>", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_generated_pipeline_execution.py :114
exec(compile(source, "<cellprofiler-pipeline>", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_image_math_public_roundtrip.py :53
exec(compile(source, "3d_monolayer_final.py", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_morphology_public_contracts.py :178
exec(compile(source, "<morphology-public-contract>", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_neighbors_contract.py :91
exec(compile(source, "<neighbors-pipeline>", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_pipeline_import.py :199
exec(compile(source, "direct.py", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_trackobjects.py :105
exec(compile(source, "<track-objects-public>", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_uncovered_image_measurement_contracts.py :306
exec(compile(source, "<uncovered-image-measurements>", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_uncovered_object_output_contracts.py :443
exec(compile(source, "<uncovered-object-leaves>", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_worm_external_resources.py :167
exec(compile(source, f"{pipeline_name}_transport.py", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_cppipe_corpus.py :178
exec(compile(source, f"{case.name}_pipeline.py", "exec"), namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_function_step_transport.py :107
exec(compile(source, "<pipeline>", "exec"), namespace) - dynamic code execution pickle.loads() OpenHCSDev-openhcs-e867013/tests/unit/test_function_step_transport.py :416
restored_step = pickle.loads( - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_mcp_assay_showcase.py :117
exec(pipeline_code, namespace) - dynamic code execution eval()/exec() OpenHCSDev-openhcs-e867013/tests/unit/test_mcp_thesis_demo_live.py :1193
exec(compile(source, str(context.source_path), "exec"), namespace)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 1329
filesystem 375
- fs (weak) OpenHCSDev-openhcs-e867013/benchmark/adapters/cellprofiler.py :8
import shutil - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/adapters/cellprofiler_installation.py :6
import shutil - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/adapters/cppipe_source.py :7
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/adapters/openhcs.py :17
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/bioformats_hcs_validation.py :10
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/cellprofiler_benchmark_cli.py :10
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/cellprofiler_comparison.py :8
import shutil - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/cellprofiler_export_equivalence.py :7
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/contracts/comparison_manifest.py :9
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/contracts/dataset.py :5
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/contracts/manifest_acquisition.py :6
import shutil - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/contracts/tool_adapter.py :7
from pathlib import Path
show 28 more
- fs (weak) OpenHCSDev-openhcs-e867013/benchmark/contracts/values.py :6
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/converter/compatibility_matrix.py :8
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/converter/convert.py :9
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/converter/cppipe_corpus.py :9
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/datasets/acquire.py :6
import shutil - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/datasets/cache.py :7
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/datasets/manifest.py :7
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/datasets/registry.py :7
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/datasets/visible_source.py :7
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/demos/official30_lab_meeting.py :13
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/progress.py :9
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/reports/cppipe_figures.py :12
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/reports/cppipe_scaling_figures.py :9
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/runner.py :6
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/throughput_scaling.py :8
import shutil - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/timing.py :12
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/benchmark/well_throughput_scaling.py :16
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/docs/source/_ext/openhcs_gallery.py :6
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/docs/source/conf.py :17
from pathlib import Path - fs (weak) OpenHCSDev-openhcs-e867013/examples/benchmark_example.py :3
from pathlib import Path - fs OpenHCSDev-openhcs-e867013/openhcs/_source_dependencies.py :8
from pathlib import Path - fs OpenHCSDev-openhcs-e867013/openhcs/agent/knowledge_manifest.py :7
from pathlib import Path - fs OpenHCSDev-openhcs-e867013/openhcs/agent/knowledge_manifest_schema.py :6
from pathlib import Path - fs OpenHCSDev-openhcs-e867013/openhcs/agent/path_policy.py :7
from pathlib import Path - fs OpenHCSDev-openhcs-e867013/openhcs/agent/runtime_platform.py :11
from pathlib import Path - fs OpenHCSDev-openhcs-e867013/openhcs/agent/services/architecture_projection_service.py :10
from pathlib import Path - fs OpenHCSDev-openhcs-e867013/openhcs/agent/services/config_service.py :13
from pathlib import Path - fs OpenHCSDev-openhcs-e867013/openhcs/agent/services/execution_session_service.py :13
from pathlib import Path
335 more not shown — this panel samples each group; the count above is the real total.
shell / exec 63
- shell (weak) OpenHCSDev-openhcs-e867013/benchmark/adapters/cellprofiler.py :9
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/benchmark/contracts/manifest_acquisition.py :7
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/benchmark/datasets/acquire.py :5
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/build_utils/zeroc_ice_installer.py :20
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/desktop_deployment.py :13
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/gui_startup.py :14
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/mcp/client_registration.py :14
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/omero/plugin/omero_openhcs/views.py :281
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/processing/backends/lib_registry/registry_service.py :10
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/pyqt_gui/services/desktop_restart.py :8
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/pyqt_gui/services/desktop_restart_worker.py :8
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/pyqt_gui/services/desktop_update.py :10
import subprocess
show 28 more
- shell OpenHCSDev-openhcs-e867013/openhcs/pyqt_gui/services/desktop_update_worker.py :12
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/pyqt_gui/widgets/image_browser.py :9
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/runtime/omero_instance_manager.py :4
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/runtime/viewer_protocol.py :9
import subprocess - shell OpenHCSDev-openhcs-e867013/openhcs/runtime/zmq_execution_client.py :7
import subprocess - shell OpenHCSDev-openhcs-e867013/paper/build_docx_from_markdown.py :6
import subprocess - shell OpenHCSDev-openhcs-e867013/paper/figures/render_diagrams.py :5
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/scripts/capture_media_gallery.py :18
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/scripts/dev_install.py :18
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/scripts/figures/orthogonal_projections/io_handler.py :338
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/scripts/install_ci_candidate.py :7
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/scripts/mcp_thesis_demo_live.py :15
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/scripts/release.py :6
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/scripts/release_readiness.py :11
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/scripts/resolve_successful_job_baseline.py :8
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/scripts/smoke_installed_desktop.py :10
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/scripts/validate_local_release_floors.py :18
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/tests/installer/test_installed_desktop_smoke.py :7
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/tests/installer/test_macos_dmg_lifecycle.py :9
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/tests/installer/test_macos_simple_installer.py :8
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/tests/unit/agent/test_mcp_client_registration.py :5
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/tests/unit/agent/test_mcp_distribution_runtime.py :5
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/tests/unit/agent/test_mcp_stdio_transport.py :3
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/tests/unit/pyqt_gui/test_application_cleanup.py :5
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/tests/unit/pyqt_gui/test_desktop_restart.py :5
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/tests/unit/pyqt_gui/test_desktop_restart_worker.py :5
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/tests/unit/pyqt_gui/test_desktop_update.py :3
import subprocess - shell (weak) OpenHCSDev-openhcs-e867013/tests/unit/pyqt_gui/test_desktop_update_worker.py :8
import subprocess
23 more not shown — this panel samples each group; the count above is the real total.
network 23
- net (weak) OpenHCSDev-openhcs-e867013/benchmark/adapters/cellprofiler.py :17
from urllib.parse import quote - net (weak) OpenHCSDev-openhcs-e867013/benchmark/adapters/cppipe_source.py :9
from urllib.parse import urlparse - net (weak) OpenHCSDev-openhcs-e867013/benchmark/datasets/acquire.py :11
from urllib.parse import unquote, urlparse - net OpenHCSDev-openhcs-e867013/openhcs/build_utils/zeroc_ice_installer.py :18
import urllib.request - net OpenHCSDev-openhcs-e867013/openhcs/core/source_bindings.py :9
import urllib.request - net OpenHCSDev-openhcs-e867013/openhcs/core/source_projection.py :12
from urllib.parse import quote - net OpenHCSDev-openhcs-e867013/openhcs/desktop_installation.py :10
from urllib.parse import urlparse - net OpenHCSDev-openhcs-e867013/openhcs/mcp/http_auth.py :11
from urllib.parse import urlparse - net OpenHCSDev-openhcs-e867013/openhcs/processing/backends/cellprofiler/save_images.py :9
from urllib.parse import quote - net OpenHCSDev-openhcs-e867013/openhcs/pyqt_gui/services/desktop_update.py :18
from urllib.parse import urlparse - net OpenHCSDev-openhcs-e867013/openhcs/runtime/omero_instance_manager.py :189
import urllib.error - net OpenHCSDev-openhcs-e867013/openhcs/ui/shared/plate_scope_identity.py :8
from urllib.parse import quote, unquote
show 11 more
- net (weak) OpenHCSDev-openhcs-e867013/scripts/build_hosted_mcp_plugin.py :14
from urllib.parse import urlparse - net (weak) OpenHCSDev-openhcs-e867013/scripts/build_website.py :15
from urllib.parse import unquote, urlsplit - net (weak) OpenHCSDev-openhcs-e867013/scripts/release_readiness.py :17
from urllib.parse import urlparse - net (weak) OpenHCSDev-openhcs-e867013/scripts/wait_for_pypi_release.py :16
from urllib.error import HTTPError - net (weak) OpenHCSDev-openhcs-e867013/tests/unit/agent/test_mcp_http.py :7
import httpx - net (weak) OpenHCSDev-openhcs-e867013/tests/unit/agent/test_mcp_http_auth.py :5
import httpx - net (weak) OpenHCSDev-openhcs-e867013/tests/unit/test_debug_runtime.py :5
import socket - net (weak) OpenHCSDev-openhcs-e867013/tests/unit/test_library_registry_discovery.py :635
import socket - net (weak) OpenHCSDev-openhcs-e867013/tests/unit/test_source_bindings.py :244
monkeypatch.setattr(source_bindings_module.urllib.request, "urlopen", urlopen) - net (weak) OpenHCSDev-openhcs-e867013/tests/unit/test_wait_for_pypi_release.py :7
from urllib.error import HTTPError - net (weak) OpenHCSDev-openhcs-e867013/tests/unit/test_zmq_port_pair_authority.py :3
import socket
database 7
- db (weak) OpenHCSDev-openhcs-e867013/benchmark/cellprofiler_export_equivalence.py :5
import sqlite3 - db OpenHCSDev-openhcs-e867013/openhcs/interop/cellprofiler/analyst_export.py :18
import sqlite3 - db (weak) OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_analyst_export.py :7
import sqlite3 - db (weak) OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_export_equivalence.py :3
import sqlite3 - db (weak) OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_export_measurement_outputs.py :5
import sqlite3 - db (weak) OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_export_to_database.py :4
import sqlite3 - db (weak) OpenHCSDev-openhcs-e867013/tests/unit/test_cellprofiler_module_execution.py :2
import sqlite3
tool registrations 2
- openhcs_health_check OpenHCSDev-openhcs-e867013/openhcs/mcp/bootstrap.py :133
- openhcs_bootstrap_failure OpenHCSDev-openhcs-e867013/openhcs/mcp/bootstrap.py :138
install hooks 1
- setup.py OpenHCSDev-openhcs-e867013/setup.py :53
cmdclass={
declared dependencies 54
- mcp@>=1.28,<2
- numpy@>=1.26.4
- scikit-image@>=0.25.2
- scikit-learn@>=1.7.1
- scipy@>=1.12.0
- PyWavelets@>=1.6.0
- pandas@>=2.3.1
- openpyxl@>=3.1.0
- xlsxwriter@>=3.2.0
- numba@>=0.61.0,<0.63; platform_system ==
- and@platform_machine ==
- Darwin@*
show 28 more
- x86_64@*
- cryptography@>=48,<49; platform_system ==
- pytest@>=7.4.0
- pytest-cov@>=4.1.0
- coverage@>=7.3.2
- genbadge@*
- pytest-asyncio@>=0.21.0
- pytest-xdist@>=3.5.0
- requests@>=2.31.0
- pyzmq@>=26.0.0
- pytest-qt@>=4.2.0
- centrosome@>=1.3.3
- mahotas@>=1.4.18
- matplotlib@>=3.10.0
- PyQt6@>=6.9.1
- PyQt6-QScintilla@>=2.14.1
- pyqtgraph@>=0.13.7
- PyOpenGL@>=3.1.7
- GPUtil@>=1.4.0
- distinctipy@>=1.2.2
- wcag-contrast-ratio@>=0.9
- napari@>=0.7.1
- napari-crop@>=0.1.12
- polystore@*
- httpx@>=0.28,<1
- omero-py@>=5.19.0
- sphinx@>=4.0.0
- sphinx-rtd-theme@>=1.0.0
14 more not shown — this panel samples each group; the count above is the real total.