家に住み込む自律エージェント HAOS アドオン。Claude が家の様子を観察・探索・会話します
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
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 de78165 · analyzer v33 · 3w ago
skills & prompt files 1
- agent-rules Khronos31-embodied-ha-de78165/AGENTS.md
danger signals14
- dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_agent_setup_e2e_step3.py :41
exec(compile(source, str(path), "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_daemon_anomaly_gate.py :19
exec(compile(source, str(path), "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_daemon_body_location_publish.py :27
exec(compile(source, str(path), "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_daemon_child_watchdog.py :21
exec(compile(source, str(path), "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_daemon_loop_failure_alert.py :31
exec(compile(source, str(path), "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_daemon_maintenance.py :21
exec(compile(source, str(path), "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_daemon_trigger_kind.py :23
exec(compile(source, str(path), "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_daybook_empty_request_and_loop_recovery.py :40
exec(compile(source, module.__file__, "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_daybook_hollow_and_liveness_grace.py :36
exec(compile(source, module.__file__, "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_daybook_marker.py :36
exec(compile(source, module.__file__, "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_harness_setup_step3.py :27
exec(compile(source, str(path), "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_harness_status_step4.py :34
exec(compile(source, module.__file__, "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_instance_identity.py :68
exec(compile(source, module.__file__, "exec"), module.__dict__) - dynamic code execution eval()/exec() Khronos31-embodied-ha-de78165/tests/test_wake_routing.py :29
exec(compile(source, module.__file__, "exec"), module.__dict__)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 213
filesystem 178
- fs (weak) Khronos31-embodied-ha-de78165/docs/render_flowchart.py :16
from pathlib import Path - fs Khronos31-embodied-ha-de78165/embodied_ha/agent_prefs.py :58
with open(prefs_path(), encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/agy_update_freeze.py :47
self._fd = os.open(self._path, os.O_CREAT | os.O_RDWR, 0o600) - fs Khronos31-embodied-ha-de78165/embodied_ha/ambient_speech_context.py :13
from pathlib import Path - fs Khronos31-embodied-ha-de78165/embodied_ha/anomaly_state.py :393
with open(path, encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/antigravity_setup.py :65
os.remove(path) - fs Khronos31-embodied-ha-de78165/embodied_ha/audio-mcp.py :11
import shutil - fs Khronos31-embodied-ha-de78165/embodied_ha/audio_stt.py :42
with open(path, "rb") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/auditory_context.py :56
with open(path, encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/body-mcp.py :161
with open(path, "a", encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/body_state.py :174
with open(path, encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/boundary.py :203
with open(path, encoding="utf-8") as f:
show 28 more
- fs Khronos31-embodied-ha-de78165/embodied_ha/camera-mcp.py :152
with open(_body_location_path(), encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/camera_history.py :16
import shutil - fs Khronos31-embodied-ha-de78165/embodied_ha/chat.py :77
with open(character_file, encoding="utf-8") as fh: - fs Khronos31-embodied-ha-de78165/embodied_ha/chat_context.py :29
with open(path, encoding="utf-8") as fh: - fs Khronos31-embodied-ha-de78165/embodied_ha/chat_invoke.py :16
from pathlib import Path - fs Khronos31-embodied-ha-de78165/embodied_ha/chat_postprocess.py :54
os.remove(pending_file) - fs Khronos31-embodied-ha-de78165/embodied_ha/claude_setup.py :9
import shutil - fs Khronos31-embodied-ha-de78165/embodied_ha/codex_setup.py :9
import shutil - fs Khronos31-embodied-ha-de78165/embodied_ha/concentrate_hearing_files.py :6
from pathlib import Path - fs Khronos31-embodied-ha-de78165/embodied_ha/content_blocks.py :11
import shutil - fs Khronos31-embodied-ha-de78165/embodied_ha/counterfactual_state.py :40
with open(path, "a", encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/daemon.py :380
with open(prefs_file, encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/daybook_rollup.py :60
with open(path, encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/desire_state.py :223
with open(tmp, "w", encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/discover.py :102
with open(os.environ.get("EHA_PREFS_FILE", ""), encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/eha_config.py :52
with open(conf_path, encoding="utf-8") as fh: - fs Khronos31-embodied-ha-de78165/embodied_ha/feature-flags.py :24
with open(FLAGS_FILE, encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/files-mcp.py :62
fd = os.open( - fs Khronos31-embodied-ha-de78165/embodied_ha/game-mcp.py :352
with open(_cpu_session_path(cpu_session_id), encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/ha-control-mcp.py :48
with open(ACTIONS_LOG, "a", encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/harness_binary_update.py :63
import shutil - fs Khronos31-embodied-ha-de78165/embodied_ha/harness_pin.py :69
with open(path, "rb") as handle: - fs Khronos31-embodied-ha-de78165/embodied_ha/harness_state.py :32
with open(flag_path(), encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/http-mcp.py :110
with _OPENER.open(request, timeout=TIMEOUT_SECONDS) as response: - fs Khronos31-embodied-ha-de78165/embodied_ha/init_fts.py :22
with open(path, encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/introspection_facts.py :128
os.unlink(tmp) - fs Khronos31-embodied-ha-de78165/embodied_ha/invoke_failure.py :88
with open(path, encoding="utf-8") as f: - fs Khronos31-embodied-ha-de78165/embodied_ha/loop.py :19
from pathlib import Path
138 more not shown — this panel samples each group; the count above is the real total.
shell / exec 46
- shell (weak) Khronos31-embodied-ha-de78165/docs/render_flowchart.py :15
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/audio-mcp.py :12
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/body-mcp.py :12
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/camera-mcp.py :13
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/chat.py :16
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/chat_invoke.py :13
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/chat_postprocess.py :27
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/daemon.py :15
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/daybook_rollup.py :14
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/discover.py :26
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/eha_config.py :12
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/game-mcp.py :17
import subprocess
show 28 more
- shell Khronos31-embodied-ha-de78165/embodied_ha/ha-control-mcp.py :14
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/ha-mcp.py :15
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/harness_binary_update.py :68
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/loop.py :14
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/lounge-mcp.py :12
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/mcp-schema-manifest.py :15
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/media_capture.py :5
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/memory-mcp.py :28
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/migrate_antigravity_structured_output.py :18
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/render-sensors.py :65
r = subprocess.run( - shell Khronos31-embodied-ha-de78165/embodied_ha/sensors-mcp.py :13
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/speak.py :13
import subprocess - shell Khronos31-embodied-ha-de78165/embodied_ha/web/server.py :266
r = subprocess.run( - shell (weak) Khronos31-embodied-ha-de78165/scripts/check_release_invariants.py :24
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/scripts/check_repo_hygiene.py :30
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/claude_allowedtools_canary.py :20
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/loop_shadow_harness.py :13
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/test_agent_prefs_step4.py :10
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/test_daybook_marker.py :12
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/test_fault_injection.py :19
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/test_game_mcp_cpu.py :4
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/test_harness_status_step4.py :12
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/test_http_mcp.py :3
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/test_instance_identity.py :5
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/test_invoke_agent.py :4
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/test_loop_shadow_harness.py :4
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/test_mcp_config.py :16
import subprocess - shell (weak) Khronos31-embodied-ha-de78165/tests/test_mcp_config_body_env.py :10
import subprocess
6 more not shown — this panel samples each group; the count above is the real total.
network 35
- net Khronos31-embodied-ha-de78165/embodied_ha/antigravity_setup.py :6
from urllib.request import urlopen - net Khronos31-embodied-ha-de78165/embodied_ha/audio_stt.py :5
import urllib.error - net Khronos31-embodied-ha-de78165/embodied_ha/claude_setup.py :11
from urllib.request import urlopen - net Khronos31-embodied-ha-de78165/embodied_ha/codex_setup.py :14
from urllib.request import urlopen - net Khronos31-embodied-ha-de78165/embodied_ha/daemon.py :18
import urllib.request - net Khronos31-embodied-ha-de78165/embodied_ha/game-mcp.py :22
from urllib.error import HTTPError, URLError - net Khronos31-embodied-ha-de78165/embodied_ha/ha_api_path.py :18
from urllib.parse import unquote - net Khronos31-embodied-ha-de78165/embodied_ha/harness_binary_update.py :64
import socket - net Khronos31-embodied-ha-de78165/embodied_ha/http-mcp.py :18
from urllib.error import HTTPError, URLError - net Khronos31-embodied-ha-de78165/embodied_ha/lounge-mcp.py :19
from urllib.error import HTTPError, URLError - net Khronos31-embodied-ha-de78165/embodied_ha/migrate_antigravity_structured_output.py :22
from urllib.request import urlopen - net Khronos31-embodied-ha-de78165/embodied_ha/motion-history.py :18
import urllib.error
show 23 more
- net Khronos31-embodied-ha-de78165/embodied_ha/spatial_context.py :7
import urllib.error - net Khronos31-embodied-ha-de78165/embodied_ha/speak.py :17
from urllib.parse import urlencode - net Khronos31-embodied-ha-de78165/embodied_ha/tts_discovery.py :7
from urllib.parse import urlsplit, urlunsplit - net Khronos31-embodied-ha-de78165/embodied_ha/web/server.py :6
import urllib.request - net (weak) Khronos31-embodied-ha-de78165/tests/test_agent_setup_e2e_step3.py :109
with mock.patch.object(daemon.urllib.request, "urlopen", return_value=_mock_response()) as urlopen: - net (weak) Khronos31-embodied-ha-de78165/tests/test_claude_setup.py :10
import urllib.request - net (weak) Khronos31-embodied-ha-de78165/tests/test_codex_setup.py :12
import urllib.error - net (weak) Khronos31-embodied-ha-de78165/tests/test_daemon_child_watchdog.py :56
with mock.patch.object(self.daemon.urllib.request, "urlopen", return_value=response) as urlopen: - net (weak) Khronos31-embodied-ha-de78165/tests/test_daemon_loop_failure_alert.py :117
with mock.patch.object(self.daemon.urllib.request, "urlopen") as urlopen: - net (weak) Khronos31-embodied-ha-de78165/tests/test_daemon_maintenance.py :87
with mock.patch.object(self.daemon.urllib.request, "urlopen", return_value=response) as urlopen: - net (weak) Khronos31-embodied-ha-de78165/tests/test_daybook_empty_request_and_loop_recovery.py :165
with mock.patch.object(self.daemon.urllib.request, "urlopen", return_value=response) as urlopen: - net (weak) Khronos31-embodied-ha-de78165/tests/test_files_mcp.py :156
import socket - net (weak) Khronos31-embodied-ha-de78165/tests/test_ha_speaker_output.py :10
from urllib.parse import parse_qs, urlparse - net (weak) Khronos31-embodied-ha-de78165/tests/test_harness_binary_update.py :7
import socket - net (weak) Khronos31-embodied-ha-de78165/tests/test_harness_setup_step3.py :295
mock.patch.object(daemon.urllib.request, "urlopen", return_value=response) as urlopen, \ - net (weak) Khronos31-embodied-ha-de78165/tests/test_logout_step3.py :6
import urllib.request - net (weak) Khronos31-embodied-ha-de78165/tests/test_motion_history.py :28
with mock.patch.object(self.module.urllib.request, "urlopen", return_value=response) as urlopen: - net (weak) Khronos31-embodied-ha-de78165/tests/test_sensory_origin.py :119
with mock.patch.object(self.sensory_origin.urllib.request, "urlopen", return_value=mocked) as run_mock: - net (weak) Khronos31-embodied-ha-de78165/tests/test_setup_guard.py :9
import urllib.error - net (weak) Khronos31-embodied-ha-de78165/tests/test_setup_mutation_locks.py :8
import urllib.error - net (weak) Khronos31-embodied-ha-de78165/tests/test_setup_terms.py :8
import urllib.error - net (weak) Khronos31-embodied-ha-de78165/tests/test_speak.py :8
from urllib.parse import parse_qs, urlparse - net (weak) Khronos31-embodied-ha-de78165/tests/test_web_home_policy_api.py :8
import urllib.request
secrets 13
- secrets Khronos31-embodied-ha-de78165/embodied_ha/audio_stt.py :38
token = clean(os.environ.get("SUPERVISOR_TOKEN")) - secrets Khronos31-embodied-ha-de78165/embodied_ha/camera-mcp.py :110
return os.environ.get("SUPERVISOR_TOKEN", "") - secrets Khronos31-embodied-ha-de78165/embodied_ha/camera_history.py :705
token=os.environ.get("SUPERVISOR_TOKEN", ""), - secrets Khronos31-embodied-ha-de78165/embodied_ha/claude_setup.py :118
if os.environ.get("ANTHROPIC_API_KEY"): - secrets Khronos31-embodied-ha-de78165/embodied_ha/daemon.py :165
return os.environ.get("SUPERVISOR_TOKEN", "") - secrets Khronos31-embodied-ha-de78165/embodied_ha/discover.py :34
return os.environ.get("SUPERVISOR_TOKEN", "") - secrets Khronos31-embodied-ha-de78165/embodied_ha/ha-control-mcp.py :33
return os.environ.get("SUPERVISOR_TOKEN", "") - secrets Khronos31-embodied-ha-de78165/embodied_ha/ha-mcp.py :24
return os.environ.get("SUPERVISOR_TOKEN", "") - secrets Khronos31-embodied-ha-de78165/embodied_ha/motion-history.py :25
return os.environ.get("SUPERVISOR_TOKEN", "") - secrets Khronos31-embodied-ha-de78165/embodied_ha/render-sensors.py :33
return os.environ.get("SUPERVISOR_TOKEN", "") - secrets Khronos31-embodied-ha-de78165/embodied_ha/spatial_context.py :32
return clean(os.environ.get("SUPERVISOR_TOKEN")) or clean(os.environ.get("HASSIO_TOKEN")) - secrets Khronos31-embodied-ha-de78165/embodied_ha/speak.py :32
return os.environ.get("SUPERVISOR_TOKEN", "")
show 1 more
- secrets Khronos31-embodied-ha-de78165/embodied_ha/web/server.py :491
HA_TOKEN = os.environ.get("SUPERVISOR_TOKEN", "")
database 1
- db Khronos31-embodied-ha-de78165/embodied_ha/memory_state.py :16
import sqlite3