Evidence-constrained travel planning agent that verifies real-world facts before they enter an itinerary.
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution in Hugin-Z/trip-decider
- HIGH code analysis flagged dynamic code execution in Hugin-Z/trip-decider
transport — counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 28b6719 · analyzer v33 · 2w ago
danger signals1
- dynamic code execution __import__ sink Hugin-Z-trip-decider-28b6719/src/trip_decider/runtime_owner.py :68
if __import__("os").name == "nt":
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 104
filesystem 61
- fs (weak) Hugin-Z-trip-decider-28b6719/scripts/smoke_action_loop.py :25
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/scripts/smoke_live.py :18
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/scripts/soak_full_loop.py :41
from pathlib import Path - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/adapters/contracts.py :13
from pathlib import Path - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/agent_actions.py :17
from pathlib import Path - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/amap_parsers.py :18
from pathlib import Path - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/destination_pool.py :21
from pathlib import Path - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/evidence_broker.py :18
from pathlib import Path - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/intercity_rail.py :162
with self._opener.open( - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/mcp_server.py :11
from pathlib import Path - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/product_web.py :14
from pathlib import Path - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/runtime_owner.py :10
from pathlib import Path
show 28 more
- fs Hugin-Z-trip-decider-28b6719/src/trip_decider/simple_live.py :16
import shutil - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/travel_agent.py :18
from pathlib import Path - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/trip_application.py :17
from pathlib import Path - fs Hugin-Z-trip-decider-28b6719/src/trip_decider/trip_services.py :11
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/__init__.py :6
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/characterization_support.py :24
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/invariant_support.py :20
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_action_loop_crash_recovery.py :18
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_action_watchdog_threshold.py :33
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_capability_a_v0.py :14
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_degradation_chain_is_at_the_entry.py :25
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_every_error_carries_a_next_call.py :28
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_evidence_broker.py :8
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_evidence_core.py :11
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_guided_discovery_recovery.py :27
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_host_call_protocol_relief.py :22
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i11_import_has_no_disk_side_effect.py :17
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i12_all_domains.py :29
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i12_validated_evidence_never_crashes_planner.py :26
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i13_mcp_calls_are_bounded.py :21
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i14_no_sync_collection_in_tools.py :27
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i15_shared_state_declares_concurrency.py :36
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i1_no_persisted_display_status.py :9
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i2_token_matches_support.py :12
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i3a_next_action_required.py :9
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i5_freshness_is_read_time.py :15
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i6_single_token_implementation.py :10
from pathlib import Path - fs (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_ledger.py :20
from pathlib import Path
21 more not shown — this panel samples each group; the count above is the real total.
shell / exec 3
- shell (weak) Hugin-Z-trip-decider-28b6719/tests/test_guided_discovery_recovery.py :28
import subprocess - shell (weak) Hugin-Z-trip-decider-28b6719/tests/test_invariant_i11_import_has_no_disk_side_effect.py :13
import subprocess - shell (weak) Hugin-Z-trip-decider-28b6719/tests/test_mcp_app_views.py :8
import subprocess
network 5
- net Hugin-Z-trip-decider-28b6719/src/trip_decider/intercity_rail.py :8
import socket - net Hugin-Z-trip-decider-28b6719/src/trip_decider/product_web.py :16
from urllib.parse import parse_qs, unquote, urlparse - net Hugin-Z-trip-decider-28b6719/src/trip_decider/simple_live.py :21
import urllib.error - net (weak) Hugin-Z-trip-decider-28b6719/tests/test_mcp_adapter.py :10
from urllib.request import Request, urlopen - net (weak) Hugin-Z-trip-decider-28b6719/tests/test_product_web.py :410
self.assertNotIn("urllib.request", source)
secrets 5
- secrets (weak) Hugin-Z-trip-decider-28b6719/scripts/smoke_action_loop.py :107
if not os.environ.get("AMAP_WEB_SERVICE_KEY"): - secrets (weak) Hugin-Z-trip-decider-28b6719/scripts/smoke_live.py :90
if not os.environ.get("AMAP_WEB_SERVICE_KEY"): - secrets (weak) Hugin-Z-trip-decider-28b6719/scripts/soak_full_loop.py :430
if not os.environ.get("AMAP_WEB_SERVICE_KEY"): - secrets Hugin-Z-trip-decider-28b6719/src/trip_decider/product_web.py :130
js_key = os.environ.get("AMAP_JS_API_KEY", "").strip() - secrets Hugin-Z-trip-decider-28b6719/src/trip_decider/simple_live.py :334
credential = os.environ.get("AMAP_WEB_SERVICE_KEY")
declared dependencies 6
- mcp@==2.0.0
- PyYAML@==6.0.3
- jsonschema@==4.26.0
- pyright@==1.1.411
- pytest@==9.0.2
- ruff@==0.16.1