Repository navigation
Trustabl rules v0.7.0
What's Changed
42 new rules, 298 → 340. Pack schema 18 → 23. Nothing was removed.
Requires engine v0.1.14 or later. These packs use predicates added across schemas 19–23, all of which first ship in v0.1.14. Older binaries load them leniently: they skip every rule whose predicate they lack and warn about it (META-005), so a v0.1.13 scanner runs only part of this set.
What is new, by pack
| Pack | New | Rules |
|---|---|---|
| Agent config (new pack) | 5 | AGCFG-004 AGCFG-005 AGCFG-006 AGCFG-007 MCPCFG-002 |
| LangChain / LangGraph | 7 | LC-026 LC-027 LC-113 LC-114 LC-115 LC-116 LC-117 |
| Google ADK | 5 | ADK-020 ADK-021 ADK-022 ADK-023 ADK-113 |
| Claude Agent SDK | 4 | CSDK-023 CSDK-024 CSDK-025 CSDK-114 |
| AutoGen | 3 | AG2-020 AG2-021 AG2-022 |
| CrewAI | 3 | CREW-014 CREW-015 CREW-111 |
| OpenAI Agents SDK | 3 | OAI-032 OAI-033 OAI-120 |
| Vercel AI | 3 | VAI-019 VAI-020 VAI-021 |
| Observability | 3 | OBS-006 OBS-007 OBS-008 |
| MCP | 2 | MCP-031 MCP-032 |
| Pydantic AI | 2 | PYD-015 PYD-108 |
| Raw LLM SDK (new pack) | 2 | RAW-001 RAW-002 |
Pre-trust agent config
A new agent_config/ pack, loaded for every repo regardless of SDK, flags project files that make a coding agent run repo-controlled code before the user has decided to trust the repo:
AGCFG-004(critical) project settings auto-enable the repo's own MCP serversAGCFG-005(critical) project hooks execute repo-controlled commandsAGCFG-006(critical) a workspace env file overrides the sandbox, proxy, endpoint or trust settingsAGCFG-007(high) editor settings turn on agent auto-approveMCPCFG-002(high) project MCP config launches a local command
The scanner now looks inside .gemini/, .vscode/, .cursor/ and .codex/. Env files are read for key names only; no value is stored, logged or printed.
HTTPS-only fetches
Fourteen rules, one for each existing SSRF rule: CSDK-024/025, OAI-032/033, MCP-031/032, ADK-022/023, LC-026/027, CREW-015, PYD-015, AG2-022, VAI-021. Each fires only where its SSRF sibling credits a host allow-list but the URL scheme is neither pinned to a literal https:// nor checked. An allow-listed host reached over plain HTTP can still be intercepted.
Run deadlines and spend caps
A run with no deadline can hang a worker indefinitely. Wall-clock timeout checks on the run call: OAI-120, PYD-108, ADK-113, AG2-021. Limits declared on the agent: CREW-111 (max_execution_time), LC-113 (AgentExecutor max_execution_time) and VAI-020 (abortSignal or timeout). CSDK-114 flags a TypeScript query() main agent with no maxBudgetUsd. All of these are low severity.
LangGraph state
LC-114aStateGraphcompiled with no checkpointer. Silent when the repo ships alanggraph.json, because LangGraph Platform supplies one.LC-115a node function that performs a side effect with nointerrupt()gate.LC-116(high) a graph usingMemorySaver/InMemorySaverthat is run from a FastAPI, Flask, Celery or Dramatiq entrypoint, where state is lost on restart and not shared across workers.LC-117(high) a LangChain v1create_agentwith a Python REPL or shell tool but no middleware or no checkpointer, so there is no interrupt-and-resume point for human approval. It checks only that these pieces are present, not that the middleware actually requires approval.
Side-effect bounds, batch 2
ADK-020/021, AG2-020, CREW-014, CSDK-023 and VAI-019 extend v0.6.0's side-effect bounds check (a side-effecting tool that lets the model choose the recipient or amount with no visible bound) to the remaining SDKs. CrewAI, AutoGen and Claude TS have no tool-level approval gate to credit, and each rule's explanation says so.
Observability
OBS-006–OBS-008 cover agents that are already instrumented and check whether they use agent-reliability-otel-labels. They form a ladder, so at most one fires per repo: the library is not installed, it is installed but no run is ever started, or a run is started but its spans are never labelled.
Raw LLM SDK
A new raw_llm_sdk/ pack. RAW-001 (Anthropic) and RAW-002 (OpenAI) flag a hand-written tool loop that builds tool output into a dynamic system prompt. This is a narrow heuristic within a single function, not full taint tracking.
Changed
- The 14 SSRF rules now credit a visible host allow-list, so a tool that checks its host against a fixed set no longer fires them. The new HTTPS-only rules above take over in that case.
PYD-103's fix text gained a caveat aboutallowed_domains.
Schema
18 → 23, five steps, each adding predicates:
- 19: run-call wall-clock timeout,
langgraph_node, LangGraph Platform config, raw-SDK tool loops - 20:
has_unpinned_scheme_url_call - 21:
repo_otel_labels_installed/_initialized/_implemented - 22:
agent_checkpointer_in_memory,agent_server_reachable - 23: the five project-config predicates behind
agent_config/
Id changes
None. Every id in v0.6.0 keeps its meaning.