The Agience developer SDK for Python. An environment adapter.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http counts 1 tools · 0 res
· 0 prompts
permission surface via README inference
tools
-
echo
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 101f1b3 · analyzer v33 · 5d ago
danger signals1
- dynamic code execution eval()/exec() Agience-agience-prism-py-101f1b3/src/prism/runner.py :561
exec(code, module.__dict__)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 93
filesystem 22
- fs Agience-agience-prism-py-101f1b3/src/prism/adaptive_cut.py :209
with open(path, "a", encoding="utf-8") as f: - fs Agience-agience-prism-py-101f1b3/src/prism/carriers.py :29
from pathlib import Path - fs Agience-agience-prism-py-101f1b3/src/prism/cli.py :53
from pathlib import Path - fs Agience-agience-prism-py-101f1b3/src/prism/envelope.py :44
v = open(path).read().strip() - fs Agience-agience-prism-py-101f1b3/src/prism/host/auth.py :32
from pathlib import Path - fs Agience-agience-prism-py-101f1b3/src/prism/reach.py :28
the sealed body too, so a forged cleartext link is caught on open (AEAD-authenticated). - fs Agience-agience-prism-py-101f1b3/src/prism/runner.py :85
from pathlib import Path - fs Agience-agience-prism-py-101f1b3/src/prism/trust/authority_trust.py :29
from pathlib import Path - fs Agience-agience-prism-py-101f1b3/src/prism/trust/key_manager.py :20
from pathlib import Path - fs Agience-agience-prism-py-101f1b3/src/prism/trust/opsign.py :42
from pathlib import Path - fs Agience-agience-prism-py-101f1b3/src/prism/trust/service_identity.py :26
from pathlib import Path - fs Agience-agience-prism-py-101f1b3/src/prism/vectors/__init__.py :65
Returns a `pathlib.Path` for an ordinary (unzipped) install, which is every install this - fs (weak) Agience-agience-prism-py-101f1b3/tests/host/test_auth.py :123
# Empty dir + no other creds → open (nothing enforced). - fs (weak) Agience-agience-prism-py-101f1b3/tests/test_contract_install_is_pure.py :25
import pathlib - fs (weak) Agience-agience-prism-py-101f1b3/tests/test_duplicate_basenames_cannot_shadow.py :31
import pathlib - fs (weak) Agience-agience-prism-py-101f1b3/tests/test_process_authors_single_home.py :28
import pathlib - fs (weak) Agience-agience-prism-py-101f1b3/tests/test_rounding.py :21
import pathlib - fs (weak) Agience-agience-prism-py-101f1b3/tests/test_runner_groups.py :27
from pathlib import Path - fs (weak) Agience-agience-prism-py-101f1b3/tests/test_vectors_package.py :22
import pathlib - fs (weak) Agience-agience-prism-py-101f1b3/tests/test_wire_extra.py :35
import pathlib - fs (weak) Agience-agience-prism-py-101f1b3/tests/trust/test_scopes.py :24
import pathlib - fs (weak) Agience-agience-prism-py-101f1b3/tests/trust/test_server_auth.py :440
import pathlib
shell / exec 3
- shell (weak) Agience-agience-prism-py-101f1b3/tests/test_contract_install_is_pure.py :26
import subprocess - shell (weak) Agience-agience-prism-py-101f1b3/tests/test_wire_extra.py :36
import subprocess - shell (weak) Agience-agience-prism-py-101f1b3/tests/trust/test_server_auth.py :466
import subprocess
network 7
- net Agience-agience-prism-py-101f1b3/src/prism/cli.py :84
import httpx - net Agience-agience-prism-py-101f1b3/src/prism/envelope.py :529
import socket - net Agience-agience-prism-py-101f1b3/src/prism/host/host.py :225
import httpx - net Agience-agience-prism-py-101f1b3/src/prism/server/client.py :17
import httpx - net Agience-agience-prism-py-101f1b3/src/prism/trust/server_auth.py :27
default is `urllib.request` on a worker thread, which is stdlib, so an install that asked only for - net (weak) Agience-agience-prism-py-101f1b3/tests/server/test_client_routing.py :4
Pure unit tests — httpx.AsyncClient is monkeypatched, no network.""" - net (weak) Agience-agience-prism-py-101f1b3/tests/trust/test_server_auth.py :435
the exchange is an injected seam whose default is `urllib.request`.
secrets 3
- secrets Agience-agience-prism-py-101f1b3/src/prism/cli.py :73
return os.getenv("AGIENCE_TOKEN") or os.getenv("AGIENCE_API_KEY") or None - secrets Agience-agience-prism-py-101f1b3/src/prism/host/host.py :12
host = Host("agience-prism", api_key=os.getenv("EMBEDDINGS_SERVER_API_KEY")) - secrets Agience-agience-prism-py-101f1b3/src/prism/server/server.py :42
api_key=api_key or os.getenv("AGIENCE_API_KEY"),
declared dependencies 12
- mcp@>=1.6.0
- python-jose@>=3.3
- cryptography@>=42
- fastapi@>=0.110
- uvicorn@>=0.27
- httpx@>=0.27
- pyjwt@>=2.8
- numpy@>=1.24
- agience-prism@*
- pytest@>=8.0
- pytest-asyncio@>=0.24
- ruff@>=0.4