Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/cognitx-leyton/codegraph/arch-checkgit clone --depth 1 https://github.com/cognitx-leyton/codegraphWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00016 | $0.01038 |
| Opus 5 | $0.00008 | $0.00519 |
| Sonnet 5 | $0.00003 | $0.00208 |
| Haiku 4.5 | $0.00002 | $0.00104 |
Grade A, and why
arch-check scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 83 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Usage
/arch-check
No args. Runs three built-in policies and reports violations. Zero violations = architecture still holds. Non-zero = investigate.
| Policy | What it detects |
|---|---|
| Import cycles | File IMPORTS paths of length 2-6 that loop back to the start |
| Cross-package imports | twenty-front importing from twenty-server (front/back boundary) |
| Controller → Repository bypass | Controllers that call Repository methods within 3 hops without going through a *Service class — skips the service layer |
Each policy is an independent Cypher block. To extend the default policy set, edit this file and add a new block following the pattern.
What this does
echo "=== Policy 1: file-level IMPORTS cycles ==="
codegraph query "
MATCH path = (a:File)-[:IMPORTS*2..6]->(a)
RETURN [n IN nodes(path) | n.path] AS cycle,
length(path) AS hops
ORDER BY hops ASC
LIMIT 10
"
echo ""
echo "=== Policy 2: cross-package boundary (twenty-front -> twenty-server) ==="
codegraph query "
MATCH (a:File)-[:IMPORTS]->(b:File)
WHERE a.package = 'twenty-front' AND b.package = 'twenty-server'
RETURN a.path AS importer, b.path AS importee
LIMIT 10
"
echo ""
echo "=== Policy 3: Controller -> Repository bypass (skips *Service) ==="
codegraph query "
MATCH (ctrl:Controller)-[:HAS_METHOD]->(m:Method)-[:CALLS*1..3]->(target:Method)
MATCH (repo:Class)-[:HAS_METHOD]->(target)
WHERE repo.name ENDS WITH 'Repository'
AND NOT EXISTS {
MATCH (ctrl)-[:HAS_METHOD]->(:Method)-[:CALLS*1..3]->(:Method)<-[:HAS_METHOD]-(svc:Class)
WHERE svc.name ENDS WITH 'Service'
}
RETURN ctrl.name AS controller, repo.name AS repository, target.name AS method
LIMIT 10
"
Caveats
- Policies are project-specific. The default set is tuned for this repo (codegraph) + Twenty. A fresh repo with different conventions will see either false positives or zero coverage. Rewrite the policies in this file — it's designed to be forked.
- Cycle bound is
*2..6. Very long cycles (depth > 6) won't be detected. If you suspect one, raise the upper bound (slower query). - The Controller→Repository check is a heuristic. It relies on naming convention (
*Service,*Repository). Projects that use different names need to edit theENDS WITHclauses. - Python coverage is limited. No
:Controllerlabel for Python yet (NestJS-only in Stage 1). Policy 3 is effectively TS-only.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 83 lines · 16 tokens per session scan A 9231fd4f40fe
arch-check is a command published in the GitHub repository cognitx-leyton/codegraph (11 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 16 tokens to every session and 1,038 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
feedback
Security Design Review — PRD/기획서 기반 보안 의견서·검토 의견서 생성.
compliance
이전 보안 진단 보고서의 Finding들이 패치되었는지 확인하고, 변경된 코드에서 신규 취약점을 탐색합니다.
va
Vulnerability Assessment — 8차원 아키텍처 진단 + Self-Verify + Evidence Verification.
pentest
Penetration Testing — 시나리오 기반 모의해킹 + POC + 라이브 검증 (State Delta 기반).
redteam
Red Team Operations — 인프라 설정 보안 리뷰 + MITRE ATT&CK + Detection Engineering.
run
CH015 CISO에게 보안 진단을 지시합니다. 자연어로 요청하면 적절한 Division과 에이전트를 자동 할당합니다.