LibreControl — one universal /remote-control for every coding agent you run (Claude Code, Codex, Gemini, Cursor, Copilot, any MCP tool), across all your machines, centralized into the single chat app you choose: Telegram, WhatsApp, Slack, Signal, Discord. Self-hosted, with approvals and audit.
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution in Pher217/LibreControl
- HIGH code analysis flagged dynamic code execution in Pher217/LibreControl
transport — counts 4 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
ask_human
-
librecontrol
-
notify
-
request_approval
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 6fdf091 · analyzer v33 · 2w ago
skills & prompt files 2
- agent-rules Pher217-LibreControl-6fdf091/AGENTS.md
- agent-rules Pher217-LibreControl-6fdf091/CLAUDE.md
danger signals11
- dynamic code execution __import__ sink Pher217-LibreControl-6fdf091/host-agent/agent_host/cli.py :70
cwd = args.cwd or __import__("os").path.expanduser("~") - suspicious endpoint api.telegram.org Pher217-LibreControl-6fdf091/backend/apps/observe/tests/test_delivery.py :772
"POST", "https://api.telegram.org/botX/sendMessage" - suspicious endpoint api.telegram.org Pher217-LibreControl-6fdf091/backend/apps/setup/telegram_flow.py :14
API_BASE = "https://api.telegram.org" - suspicious endpoint api.telegram.org Pher217-LibreControl-6fdf091/backend/apps/setup/tests/test_telegram_flow.py :101
message = f"GET https://api.telegram.org/bot{RAW_TOKEN}/getMe timed out" - suspicious endpoint t.me Pher217-LibreControl-6fdf091/backend/apps/setup/tests/test_telegram_flow.py :463
assert body["bot_link"] == "https://t.me/orcbot" - suspicious endpoint t.me Pher217-LibreControl-6fdf091/backend/apps/setup/views.py :133
"bot_link": f"https://t.me/{username}", - suspicious endpoint t.me Pher217-LibreControl-6fdf091/backend/apps/slash/handlers/sessions.py :97
return f"https://t.me/c/{abs_id}/{topic_id}" - suspicious endpoint t.me Pher217-LibreControl-6fdf091/backend/apps/slash/tests/test_sessions.py :273
assert "https://t.me/c/" in result - suspicious endpoint api.telegram.org Pher217-LibreControl-6fdf091/backend/apps/telegram/telegram_api.py :19
return f"https://api.telegram.org/bot{settings.TELEGRAM_BOT_TOKEN}" - suspicious endpoint api.telegram.org Pher217-LibreControl-6fdf091/backend/apps/telegram/tests/test_telegram.py :15
msg = "Client error for url 'https://api.telegram.org/bot123456:SECRETtoken/getUpdates'" - suspicious endpoint api.telegram.org Pher217-LibreControl-6fdf091/backend/apps/telegram/tests/test_telegram_api_429.py :50
monkeypatch.setattr(telegram_api, "_base_url", lambda: "https://api.telegram.org/botX")
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 403
filesystem 14
- fs Pher217-LibreControl-6fdf091/backend/apps/setup/env_writer.py :34
from pathlib import Path - fs (weak) Pher217-LibreControl-6fdf091/backend/apps/setup/tests/test_models.py :619
return open(spec.origin, encoding="utf-8").read() - fs Pher217-LibreControl-6fdf091/backend/apps/setup/views.py :10
from pathlib import Path - fs Pher217-LibreControl-6fdf091/backend/config/settings/base.py :2
from pathlib import Path - fs Pher217-LibreControl-6fdf091/connectors/librecontrol-mcp/librecontrol_mcp/codex_discovery.py :60
with open(path, encoding="utf-8") as fh: - fs Pher217-LibreControl-6fdf091/connectors/librecontrol-mcp/librecontrol_mcp/signing.py :16
from pathlib import Path - fs Pher217-LibreControl-6fdf091/host-agent/agent_host/claude_headless.py :9
import shutil - fs Pher217-LibreControl-6fdf091/host-agent/agent_host/config.py :19
from pathlib import Path - fs Pher217-LibreControl-6fdf091/host-agent/agent_host/daemon.py :22
from pathlib import Path - fs Pher217-LibreControl-6fdf091/host-agent/agent_host/pty_session.py :37
from pathlib import Path - fs Pher217-LibreControl-6fdf091/host-agent/agent_host/queue.py :25
from pathlib import Path - fs Pher217-LibreControl-6fdf091/host-agent/agent_host/transcript_tail.py :217
with open(path, "rb") as f:
show 2 more
- fs (weak) Pher217-LibreControl-6fdf091/host-agent/tests/test_transcript_tail.py :256
with open(transcript_file, "ab") as f: - fs (weak) Pher217-LibreControl-6fdf091/host-agent/tests/test_wsclient_tail.py :96
with open(fake_transcript, "ab") as f:
shell / exec 5
- shell Pher217-LibreControl-6fdf091/host-agent/agent_host/claude_headless.py :10
import subprocess - shell Pher217-LibreControl-6fdf091/host-agent/agent_host/codex_engine.py :14
import subprocess - shell Pher217-LibreControl-6fdf091/host-agent/agent_host/interactive_engine.py :13
import subprocess - shell (weak) Pher217-LibreControl-6fdf091/host-agent/tests/test_cli.py :7
import subprocess - shell (weak) Pher217-LibreControl-6fdf091/host-agent/tests/test_headless.py :9
- Unexpected exception from subprocess.run → is_error=True, no raise.
network 23
- net Pher217-LibreControl-6fdf091/backend/apps/connectors/qr.py :16
from urllib.parse import urlparse - net Pher217-LibreControl-6fdf091/backend/apps/observe/delivery.py :8
import httpx - net (weak) Pher217-LibreControl-6fdf091/backend/apps/observe/tests/test_delivery.py :3
import httpx - net Pher217-LibreControl-6fdf091/backend/apps/setup/auth.py :25
from urllib.parse import urlparse - net Pher217-LibreControl-6fdf091/backend/apps/setup/serializers.py :10
#: with control characters can raise httpx.InvalidURL. Rejecting anything - net Pher217-LibreControl-6fdf091/backend/apps/setup/telegram_flow.py :12
import httpx - net (weak) Pher217-LibreControl-6fdf091/backend/apps/setup/tests/test_telegram_flow.py :8
import httpx - net Pher217-LibreControl-6fdf091/backend/apps/supervisor/brain.py :16
import httpx - net Pher217-LibreControl-6fdf091/backend/apps/telegram/telegram_api.py :9
import httpx - net (weak) Pher217-LibreControl-6fdf091/backend/apps/telegram/tests/test_fleet_context_injection.py :85
monkeypatch.setattr("apps.tier2.ollama.httpx.AsyncClient", _client_factory) - net (weak) Pher217-LibreControl-6fdf091/backend/apps/telegram/tests/test_telegram.py :69
monkeypatch.setattr("apps.tier2.ollama.httpx.AsyncClient", _FakeOllamaClient) - net (weak) Pher217-LibreControl-6fdf091/backend/apps/threads/tests/test_consumers.py :168
monkeypatch.setattr("apps.tier2.ollama.httpx.AsyncClient", _FakeOllamaClient)
show 11 more
- net (weak) Pher217-LibreControl-6fdf091/backend/apps/threads/tests/test_dispatch.py :75
monkeypatch.setattr("apps.tier2.ollama.httpx.AsyncClient", _FakeOllamaClient) - net (weak) Pher217-LibreControl-6fdf091/backend/apps/threads/tests/test_dispatch_fleet_context.py :119
monkeypatch.setattr("apps.tier2.ollama.httpx.AsyncClient", _client_factory) - net Pher217-LibreControl-6fdf091/backend/apps/tier2/ollama.py :9
import httpx - net Pher217-LibreControl-6fdf091/connectors/librecontrol-mcp/librecontrol_mcp/client.py :18
import socket - net Pher217-LibreControl-6fdf091/connectors/librecontrol-mcp/librecontrol_mcp/pair.py :6
import socket - net (weak) Pher217-LibreControl-6fdf091/connectors/librecontrol-mcp/tests/test_client.py :1
"""Unit tests for OrcBackendClient using httpx.MockTransport (no network, no mcp).""" - net (weak) Pher217-LibreControl-6fdf091/connectors/librecontrol-mcp/tests/test_pair.py :7
import httpx - net Pher217-LibreControl-6fdf091/host-agent/agent_host/enroll.py :7
The *http* parameter accepts an httpx.Client (or anything with a .post() - net Pher217-LibreControl-6fdf091/host-agent/agent_host/sdk_session.py :33
import httpx - net (weak) Pher217-LibreControl-6fdf091/host-agent/tests/test_enroll.py :11
import httpx - net (weak) Pher217-LibreControl-6fdf091/host-agent/tests/test_wsclient.py :12
from urllib.parse import parse_qs, urlparse
secrets 4
- secrets Pher217-LibreControl-6fdf091/backend/config/settings/base.py :18
SECRET_KEY = os.environ.get("SECRET_KEY", "dev-key-do-not-use-in-production") - secrets Pher217-LibreControl-6fdf091/backend/config/settings/local.py :7
SECRET_KEY = os.environ.get("SECRET_KEY", "local-dev-key-not-for-production") - secrets (weak) Pher217-LibreControl-6fdf091/backend/config/settings/test.py :14
"PASSWORD": os.environ.get("POSTGRES_PASSWORD", "acc_password"), - secrets Pher217-LibreControl-6fdf091/connectors/librecontrol-mcp/librecontrol_mcp/client.py :53
self.token = token if token is not None else os.environ.get("LCTL_CONNECTOR_TOKEN", "")
tool registrations 4
- librecontrol Pher217-LibreControl-6fdf091/connectors/librecontrol-mcp/librecontrol_mcp/server.py :32
- notify Pher217-LibreControl-6fdf091/connectors/librecontrol-mcp/librecontrol_mcp/server.py :86
- ask_human Pher217-LibreControl-6fdf091/connectors/librecontrol-mcp/librecontrol_mcp/server.py :91
- request_approval Pher217-LibreControl-6fdf091/connectors/librecontrol-mcp/librecontrol_mcp/server.py :96
declared dependencies 25
- Django@>=5.2,<7.0
- djangorestframework@>=3.15
- django-cors-headers@>=4.4
- channels@>=4.2
- channels-redis@>=4.2
- celery@>=5.4
- psycopg@>=3.2
- redis@>=5.0,<9
- django-redis@>=5.4
- cryptography@>=43.0
- python-dotenv@>=1.0
- structlog@>=24.4
show 13 more
- gunicorn@>=23.0
- httpx@>=0.27
- segno@>=1.6
- uvicorn@>=0.30
- whitenoise@>=6.7
- pytest@>=8.3,<9
- pytest-django@>=4.9
- pytest-asyncio@>=0.24,<1
- factory-boy@>=3.3
- ruff@>=0.15,<0.17
- mypy@>=1.11
- bandit@>=1.9,<2
- coverage@>=7.6