CSL-Core
CSL-Core
❤️ Unsere Mitwirkenden!
CSL-Core (Chimera Specification Language) ist eine deterministische Sicherheitsschicht für KI-Agenten. Schreiben Sie Regeln in .csl-Dateien, verifizieren Sie diese mathematisch mit Z3 und erzwingen Sie sie zur Laufzeit – außerhalb des Modells. Das LLM sieht die Regeln niemals. Es kann sie schlichtweg nicht verletzen.
pip install csl-coreUrsprünglich für Project Chimera entwickelt, jetzt Open-Source für jedes KI-System.
Warum?
prompt = """You are a helpful assistant. IMPORTANT RULES:
- Never transfer more than $1000 for junior users
- Never send PII to external emails
- Never query the secrets table"""Das funktioniert nicht. LLMs können durch Prompt-Injection manipuliert werden, Regeln sind probabilistisch (99% ≠ 100%) und es gibt keinen Audit-Trail, wenn etwas schiefgeht.
CSL-Core ändert das: Regeln existieren außerhalb des Modells in kompilierten, Z3-verifizierten Policy-Dateien. Die Durchsetzung ist deterministisch – kein bloßer Vorschlag.
Schnellstart (60 Sekunden)
1. Eine Policy schreiben
Erstellen Sie my_policy.csl:
CONFIG {
ENFORCEMENT_MODE: BLOCK
CHECK_LOGICAL_CONSISTENCY: TRUE
}
DOMAIN MyGuard {
VARIABLES {
action: {"READ", "WRITE", "DELETE"}
user_level: 0..5
}
STATE_CONSTRAINT strict_delete {
WHEN action == "DELETE"
THEN user_level >= 4
}
}2. Verifizieren & Testen (CLI)
# Compile + Z3 formal verification
cslcore verify my_policy.csl
# Test a scenario
cslcore simulate my_policy.csl --input '{"action": "DELETE", "user_level": 2}'
# → BLOCKED: Constraint 'strict_delete' violated.
# Interactive REPL
cslcore repl my_policy.csl3. Verwendung in Python
from chimera_core import load_guard
guard = load_guard("my_policy.csl")
result = guard.verify({"action": "READ", "user_level": 1})
print(result.allowed) # True
result = guard.verify({"action": "DELETE", "user_level": 2})
print(result.allowed) # FalseBenchmark: Widerstand gegen Adversarial Attacks
Wir haben prompt-basierte Sicherheitsregeln gegen die CSL-Core-Durchsetzung bei 4 führenden LLMs mit 22 Adversarial Attacks und 15 legitimen Operationen getestet:
Ansatz | Blockierte Angriffe | Bypass-Rate | Legit. Ops bestanden | Latenz |
GPT-4.1 (Prompt-Regeln) | 10/22 (45%) | 55% | 15/15 (100%) | ~850ms |
GPT-4o (Prompt-Regeln) | 15/22 (68%) | 32% | 15/15 (100%) | ~620ms |
Claude Sonnet 4 (Prompt-Regeln) | 19/22 (86%) | 14% | 15/15 (100%) | ~480ms |
Gemini 2.0 Flash (Prompt-Regeln) | 11/22 (50%) | 50% | 15/15 (100%) | ~410ms |
CSL-Core (deterministisch) | 22/22 (100%) | 0% | 15/15 (100%) | ~0.84ms |
Warum 100%? Die Durchsetzung erfolgt außerhalb des Modells. Prompt-Injection ist irrelevant, da es nichts gibt, gegen das man injizieren könnte. Angriffskategorien: direkte Anweisungsüberschreibung, Rollenspiel-Jailbreaks, Kodierungstricks, Multi-Turn-Eskalation, Tool-Name-Spoofing und mehr.
Vollständige Methodik:
benchmarks/
LangChain-Integration
Schützen Sie jeden LangChain-Agenten mit 3 Zeilen – keine Prompt-Änderungen, kein Fine-Tuning:
from chimera_core import load_guard
from chimera_core.plugins.langchain import guard_tools
from langchain_classic.agents import AgentExecutor, create_tool_calling_agent
guard = load_guard("agent_policy.csl")
# Wrap tools — enforcement is automatic
safe_tools = guard_tools(
tools=[search_tool, transfer_tool, delete_tool],
guard=guard,
inject={"user_role": "JUNIOR", "environment": "prod"}, # LLM can't override these
tool_field="tool" # Auto-inject tool name
)
agent = create_tool_calling_agent(llm, safe_tools, prompt)
executor = AgentExecutor(agent=agent, tools=safe_tools)Jeder Tool-Aufruf wird vor der Ausführung abgefangen. Wenn die Policy "Nein" sagt, wird das Tool nicht ausgeführt. Punkt.
Kontext-Injection
Übergeben Sie Laufzeitkontext, den das LLM nicht überschreiben kann – Benutzerrollen, Umgebung, Ratenbegrenzungen:
safe_tools = guard_tools(
tools=tools,
guard=guard,
inject={
"user_role": current_user.role, # From your auth system
"environment": os.getenv("ENV"), # prod/dev/staging
"rate_limit_remaining": quota.remaining # Dynamic limits
}
)LCEL-Chain-Schutz
from chimera_core.plugins.langchain import gate
chain = (
{"query": RunnablePassthrough()}
| gate(guard, inject={"user_role": "USER"}) # Policy checkpoint
| prompt | llm | StrOutputParser()
)CLI-Tools
Die CLI ist eine vollständige Entwicklungsumgebung für Policies – testen, debuggen und bereitstellen, ohne Python zu schreiben.
verify — Kompilieren + Z3-Beweis
cslcore verify my_policy.csl
# ⚙️ Compiling Domain: MyGuard
# • Validating Syntax... ✅ OK
# ├── Verifying Logic Model (Z3 Engine)... ✅ Mathematically Consistent
# • Generating IR... ✅ OKsimulate — Testszenarien
# Single input
cslcore simulate policy.csl --input '{"action": "DELETE", "user_level": 2}'
# Batch testing from file
cslcore simulate policy.csl --input-file test_cases.json --dashboard
# CI/CD: JSON output
cslcore simulate policy.csl --input-file tests.json --json --quietrepl — Interaktive Entwicklung
cslcore repl my_policy.csl --dashboard
cslcore> {"action": "DELETE", "user_level": 2}
🛡️ BLOCKED: Constraint 'strict_delete' violated.
cslcore> {"action": "DELETE", "user_level": 5}
✅ ALLOWEDformal — TLA⁺ Model Checking
cslcore formal my_policy.cslFührt den offiziellen TLC-Model-Checker (java -jar tla2tools.jar) gegen Ihre Policy aus. TLC untersucht erschöpfend jeden erreichbaren Zustand im abstrakten Zustandsraum und beweist, dass jede temporale Eigenschaft gilt – oder liefert einen konkreten Gegenbeispiel-Trace mit dem exakten Zustand, der Ihre Invariante bricht.
╔══════════════════════════════════════════════════════════════════════════════╗
║ TLA⁺ FORMAL VERIFICATION ENGINE ║
║ Chimera Specification Language · Temporal Logic of Actions ║
║ ║
║ ⚡ REAL TLC · java -jar tla2tools.jar · Exhaustive Model Checking ║
║ TLC2 Version 2026.03.31.154134 (rev: becec35) · pid 48146 · 1 ║
║ worker(s) ║
╚══════════════════════════════════════════════════════════════════════════════╝
Variable Domain Cardinality
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
agent_tier {"STANDARD", "PREMIUM"} |2|
task_type {"READ", "WRITE", "ANALYZE"} |3|
risk_score 0..5 |6|
├─ □(no_destructive_ops) ✅ HOLDS [288 states 349ms]
├─ □(no_production_access) ✅ HOLDS [288 states 349ms]
├─ □(bounded_risk) ✅ HOLDS [288 states 349ms]
└─ Proof hash: 17dd1564897d242fc045a3a884a52bbb… ✅
╔══════════════ TLA⁺ VERIFICATION COMPLETE — ALL PROPERTIES HOLD ══════════════╗
║ ✅ Domain: AIAgentSafetyDemo · ⬡ 144 states · ⏱ 1047ms ║
╚══════════════════════════════════════════════════════════════════════════════╝Aktivieren Sie dies in jeder Policy durch Hinzufügen einer Zeile zu CONFIG:
CONFIG {
ENFORCEMENT_MODE: BLOCK
ENABLE_FORMAL_VERIFICATION: TRUE // ← triggers cslcore formal automatically
}Oder führen Sie es eigenständig aus:
cslcore formal policy.csl # real TLC (Java required, JAR auto-downloaded)
cslcore formal policy.csl --mock # Python BFS fallback (no Java needed)
cslcore formal policy.csl --timeout 120
cslcore formal policy.csl --export-tla ./specs/ # save .tla + .cfg for TLA+ ToolboxKein Java? CSL-Core greift automatisch auf einen Python-BFS-Model-Checker zurück. Das Banner zeigt deutlich an, welche Engine ausgeführt wurde. Die JAR wird bei der ersten Verwendung automatisch heruntergeladen (~4MB vom offiziellen TLA+ GitHub-Release).
CI/CD-Pipeline
# GitHub Actions
- name: Verify policies
run: |
for policy in policies/*.csl; do
cslcore verify "$policy" || exit 1
doneMCP-Server (Claude Desktop / Cursor / VS Code)
Schreiben, verifizieren und erzwingen Sie Sicherheitsrichtlinien direkt von Ihrem KI-Assistenten aus – kein Code erforderlich.
pip install "csl-core[mcp]"Zur Claude Desktop-Konfiguration hinzufügen (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"csl-core": {
"command": "uv",
"args": ["run", "--with", "csl-core[mcp]", "csl-core-mcp"]
}
}
}Tool | Was es tut |
| Z3-Formalverifikation – erkennt Widersprüche zur Kompilierzeit |
| Testet Policies gegen JSON-Eingaben – ERLAUBT/BLOCKIERT |
| Menschlich lesbare Zusammenfassung jeder CSL-Policy |
| Generiert ein CSL-Template aus einer Beschreibung in einfachem Englisch |
Sie: "Schreibe mir eine Sicherheitsrichtlinie, die Überweisungen über 5000 $ ohne Admin-Genehmigung verhindert"
Claude: scaffold_policy → Sie bearbeiten → verify_policy erkennt einen Widerspruch → Sie korrigieren → simulate_policy bestätigt, dass es funktioniert
Architektur
┌──────────────────────────────────────────────────────────┐
│ 1. COMPILER .csl → AST → IR → Compiled Artifact │
│ Syntax validation, semantic checks, functor gen │
├──────────────────────────────────────────────────────────┤
│ 2. Z3 VERIFIER Theorem Prover — Static Analysis │
│ Contradiction detection, reachability, rule shadowing │
│ ⚠️ If verification fails → policy will NOT compile │
├──────────────────────────────────────────────────────────┤
│ 3. TLA⁺ VERIFIER Model Checker — Temporal Safety │
│ Exhaustive state-space exploration via TLC │
│ Predicate abstraction for large numeric domains │
│ Counterexample traces + automated fix suggestions │
│ (opt-in: ENABLE_FORMAL_VERIFICATION: TRUE) │
├──────────────────────────────────────────────────────────┤
│ 4. RUNTIME Deterministic Policy Enforcement │
│ Fail-closed, zero dependencies, <1ms latency │
└──────────────────────────────────────────────────────────┘Schwere Berechnungen finden einmalig zur Kompilierzeit statt. Die Laufzeit ist reine Auswertung.
Im Produktionseinsatz
Nutzen Sie CSL-Core? Lassen Sie es uns wissen und wir fügen Sie hier hinzu.
Beispiel-Policies
Beispiel | Domäne | Hauptmerkmale |
KI-Sicherheit | RBAC, PII-Schutz, Tool-Berechtigungen | |
Finanzen | Risikobewertung, VIP-Stufen, Sanktionen | |
Web3 | Multi-Sig, Timelocks, Notfall-Bypass | |
Formale Methoden | TLA⁺ Model Checking – alle Eigenschaften gelten | |
Formale Methoden | TLA⁺ Gegenbeispiel-Trace + Korrekturvorschläge |
python examples/run_examples.py # Run all with test suites
python examples/run_examples.py banking # Run specific exampleAPI-Referenz
from chimera_core import load_guard, RuntimeConfig
# Load + compile + verify
guard = load_guard("policy.csl")
# With custom config
guard = load_guard("policy.csl", config=RuntimeConfig(
raise_on_block=False, # Return result instead of raising
collect_all_violations=True, # Report all violations, not just first
missing_key_behavior="block" # "block", "warn", or "ignore"
))
# Verify
result = guard.verify({"action": "DELETE", "user_level": 2})
print(result.allowed) # False
print(result.violations) # ['strict_delete']Vollständige Dokumentation: Erste Schritte · Syntax-Spezifikation · CLI-Referenz · Philosophie
Roadmap
✅ Erledigt: Kernsprache & Parser · Z3-Verifikation · Fail-Closed-Laufzeit · LangChain-Integration · CLI (verify, simulate, repl, formal) · MCP-Server · TLA⁺ Model Checking mit echtem TLC · Prädikatenabstraktion · Gegenbeispiel-Analyse · Produktionseinsatz in Chimera v1.7.0
🚧 In Arbeit: Policy-Versionierung · LangGraph-Integration
🔮 Geplant: LlamaIndex & AutoGen · Multi-Policy-Komposition · Hot-Reload · Policy-Marktplatz · Cloud-Templates
🔒 Enterprise (Forschung): Kausale Inferenz · Multi-Tenancy
Mitwirken
Wir freuen uns über Beiträge! Beginnen Sie mit good first issue oder prüfen Sie CONTRIBUTING.md.
Bereiche mit hoher Wirkung: Praxisnahe Beispiel-Policies · Framework-Integrationen · Webbasierter Policy-Editor · Testabdeckung
Lizenz
Apache 2.0 (Open-Core-Modell). Die vollständige Sprache, der Compiler, der Z3-Verifizierer, die Laufzeit, die CLI, der MCP-Server und alle Beispiele sind Open-Source. Siehe LICENSE.
Mit ❤️ gebaut von Chimera Protocol · Issues · Discussions · E-Mail
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Chimera-Protocol/csl-core'
If you have feedback or need assistance with the MCP directory API, please join our Discord server