aegis
Pruébalo (30 segundos)
pip install agent-aegis
aegis scan .Scanning . for ungoverned AI calls...
src/agent.py:12 openai.ChatCompletion.create() NO GUARDRAIL
src/agent.py:34 langchain.ChatOpenAI.invoke() NO GUARDRAIL
src/tools.py:8 anthropic.messages.create() NO GUARDRAIL
src/pipeline.py:21 crew.kickoff() NO GUARDRAIL
4 ungoverned AI calls found in 3 files.
Run `aegis.auto_instrument()` to add guardrails, or create a policy with `aegis init`.Eso es todo. Ahora sabes exactamente dónde están tus llamadas de IA sin protección.
Añadir a CI
Una línea en tu flujo de trabajo de GitHub Actions:
- uses: Acacian/aegis@v0.9.1
with:
command: scan
fail-on-ungoverned: trueCada PR es escaneada. Las llamadas de IA sin gobierno bloquean la fusión. Ver todas las opciones.
Auto-instrumentación
Añade barreras de seguridad a cualquier proyecto en una línea. Sin refactorización, sin envoltorios, sin archivos de configuración.
import aegis
aegis.auto_instrument()
# That's it. Every LangChain, CrewAI, OpenAI, Anthropic, LiteLLM,
# Google GenAI, Pydantic AI, LlamaIndex, Instructor, and DSPy
# call in your application now passes through:
# - Prompt injection detection (blocks attacks)
# - PII detection (warns on personal data exposure)
# - Prompt leak detection (warns on system prompt extraction)
# - Toxicity detection (warns — opt-in to block)
# - Full audit trail (every call logged)O cero cambios de código: simplemente establece una variable de entorno:
AEGIS_INSTRUMENT=1 python my_agent.pyAegis aplica parches dinámicos (monkey-patching) a los internos del framework en tiempo de importación, el mismo enfoque utilizado por Sentry para el seguimiento de errores. Tu código existente permanece intacto.
Cómo funciona
Your code Aegis layer (invisible)
--------- -----------------------
chain.invoke("Hello") --> [input guardrails] --> LangChain --> [output guardrails] --> response
Runner.run(agent, "query") --> [input guardrails] --> OpenAI SDK --> [output guardrails] --> response
crew.kickoff() --> [task guardrails] --> CrewAI --> [tool guardrails] --> response
client.chat.completions() --> [input guardrails] --> OpenAI API --> [output guardrails] --> responseCada llamada se verifica tanto en la entrada como en la salida. El contenido bloqueado genera un AegisGuardrailError (configurable para advertir o registrar en su lugar).
Frameworks soportados
Framework | Qué se parchea | Estado |
LangChain |
| Estable |
CrewAI |
| Estable |
OpenAI Agents SDK |
| Estable |
OpenAI API |
| Estable |
Anthropic API |
| Estable |
LiteLLM |
| Estable |
Google GenAI (Gemini) |
| Estable |
Pydantic AI |
| Estable |
LlamaIndex |
| Estable |
Instructor |
| Estable |
DSPy |
| Estable |
Barreras de seguridad predeterminadas
Todas las barreras son deterministas (sin llamadas a LLM), sub-milisegundo y no requieren configuración:
Barrera | Acción predeterminada | Qué detecta |
Inyección de prompts | Bloquear | 10 categorías de ataque, más de 85 patrones, multilingüe (EN/KO/ZH/JA) |
Detección de PII | Advertir | 13 categorías (correo, tarjeta de crédito, SSN, IBAN, claves API, etc.) |
Fuga de prompts | Advertir | Intentos de extracción de prompts del sistema |
Toxicidad | Advertir (opcional bloquear) | Contenido dañino, violento o abusivo |
Rendimiento
Todas las barreras ejecutan expresiones regulares deterministas: sin llamadas a LLM, sin viajes de ida y vuelta a la red. El almacenamiento en caché LRU hace que las comprobaciones repetidas (por ejemplo, prompts del sistema) sean efectivamente gratuitas.
Escenario | Frío (primera llamada) | Caliente (caché) | Notas |
Texto corto (45 car.) | 342 us | < 1 us | Mensaje de usuario típico |
Texto medio (300 car.) | 3.7 ms | < 1 us | Instrucción de agente típica |
Entrada adversaria | 1.3 ms | < 1 us | Intento de inyección multipatrón |
Realista por llamada LLM | 2.65 ms | — | Prompt del sistema (caché) + entrada usuario + respuesta |
0.53% de la latencia de LLM (frente a 500ms de viaje de ida y vuelta de API). Objetivo: < 1%. Pila de barreras combinada = inyección + PII tanto en entrada como en salida (4 escaneos por llamada).
Ejecuta python benchmarks/bench_guardrails.py para reproducir.
vs. Alternativas (a marzo de 2026)
Aegis es la única biblioteca de barreras de seguridad con puertas de regresión de rendimiento integradas en CI (pytest-benchmark). La mayoría de las alternativas dependen de modelos ML o APIs externas, añadiendo 10–1000 veces más latencia por comprobación.
Enfoque | Sobrecarga típica | Puerta de rendimiento CI | Ejemplos |
Regex en proceso + caché LRU (Aegis) | 2.65 ms frío / < 1 μs caliente | Sí | — |
Frameworks de modelos ML | Decenas de ms – segundos (CPU) | No | |
Servicios API en la nube | 40–250 ms | N/A | |
Proxy / gateway | 100–250 ms+ | No |
¿Por qué la brecha? Las barreras de Aegis son expresiones regulares deterministas con patrones compilados y caché de resultados LRU: sin inferencia de modelos, sin llamadas de red. Las alternativas que usan clasificadores ML o APIs externas pagan por ello en cada solicitud.
Control de grano fino
from aegis.instrument import auto_instrument, patch_langchain, status, reset
# Instrument only specific frameworks
auto_instrument(frameworks=["langchain", "openai_agents"])
# Customize behavior
auto_instrument(
on_block="warn", # "raise" (default), "warn", or "log"
guardrails="default", # or "none" for audit-only mode
audit=True, # log every call
)
# Instrument a single framework
patch_langchain()
# Check what's instrumented
print(status())
# {"active": True, "frameworks": {"langchain": {"patched": True, ...}}, "guardrails": 4}
# Clean removal — restore all original methods
reset()Gobernanza de selección
La primera biblioteca de código abierto con detección de selección por negación. Otras herramientas de gobernanza monitorean lo que los agentes hacen. Agent-Aegis también monitorea lo que los agentes eligen no hacer: las opciones que eliminan silenciosamente antes de que los humanos las vean.
Basado en el framework "Selection as Power" del Santander AI Lab: los agentes ejercen poder encubierto mediante el filtrado de opciones, no solo mediante la ejecución de acciones.
from aegis.core import ActionClaim, ClaimAssessor, DeclaredFields
# Agent declares what it intends to do (untrusted)
claim = ActionClaim(
declared=DeclaredFields(
proposed_transition="delete_records",
target="production_db",
justification="cleanup old data",
)
)
# Aegis independently assesses actual impact (6-dimensional)
assessor = ClaimAssessor()
result = assessor.assess(claim)
# result.verdict -> BLOCK
# result.assessed.justification_gap -> 0.385 (agent under-reported impact)Capacidad | Descripción |
ActionClaim | Estructura tripartita: declarado por el agente (no confiable) vs evaluado por el sistema (independiente) vs cadena de delegación |
Brecha de justificación | Detección de brecha asimétrica: solo cuenta la sub-notificación. APROBAR / ESCALAR / BLOQUEAR |
Auditoría de selección | 4 tipos de detección: alta eliminación, mejor opción eliminada, eliminación injustificada, exclusión sistemática |
Comprometer-Revelar | El agente compromete el conjunto completo de opciones antes de la ejecución: evita la racionalización post-hoc |
Disyuntor | Fallo ruidoso con métrica QDV, seguro para hilos, recuperación configurable |
Por qué importa esto: Un agente que siempre sigue instrucciones pero filtra opciones inconvenientes antes de presentarlas es más peligroso que uno que se niega abiertamente. Aegis es la primera herramienta que detecta este patrón en tiempo de ejecución.
CI/CD de políticas
Nadie más hace esto. Las herramientas de seguridad protegen en tiempo de ejecución. Aegis también gestiona el ciclo de vida de las políticas: previsualiza cambios, prueba regresiones y bloquea fusiones de CI/CD antes de que algo llegue a producción.
aegis plan — Previsualiza el impacto antes de desplegar
Como terraform plan para políticas de agentes de IA. Reproduce datos históricos de auditoría para mostrar exactamente qué cambiaría.
aegis plan current.yaml proposed.yaml --audit-db aegis_audit.db
# Policy Impact Analysis
# =====================
# Rules: 2 added, 1 removed, 3 modified
# Impact (replayed 1,247 actions):
# 23 actions would change from AUTO → BLOCK
# 7 actions would change from APPROVE → BLOCK
#
# CI mode: aegis plan current.yaml proposed.yaml --ci (exit 1 if breaking)aegis test — Pruebas de regresión para políticas
Define resultados esperados, genera suites de prueba automáticamente, detecta efectos secundarios no deseados.
# Auto-generate test suite from policy
aegis test policy.yaml --generate --generate-output tests.yaml
# Run in CI — exit 1 on failure
aegis test policy.yaml tests.yaml
# Regression test between old and new policy
aegis test new-policy.yaml tests.yaml --regression old-policy.yamlIntegración CI/CD
# .github/workflows/policy-check.yml
- uses: Acacian/aegis@main
with:
policy: aegis.yaml
tests: tests.yaml
fail-on-regression: trueLos cambios de política reciben el mismo rigor que los cambios de código: diff, prueba, revisión, fusión.
Inicio rápido
Paso 1: Instalar
pip install agent-aegisPaso 2: Elige tu nivel de integración
Nivel 1: Auto-instrumentar (recomendado) -- una línea, gobierna todo:
import aegis
aegis.auto_instrument()
# All 11 supported frameworks are now governed.Nivel 2: Iniciar con pila de seguridad completa -- barreras + motor de políticas + auditoría:
import aegis
aegis.auto_instrument()
# Discovers aegis.yaml, activates policy engine, audit logging, cost tracking.Nivel 3: Parcheo dirigido -- gobierna APIs específicas:
import aegis
aegis.patch_openai() # Only OpenAI calls
aegis.patch_anthropic() # Only Anthropic calls
# Or use the decorator for custom functions
@aegis.guard
def my_agent_function():
...Nivel 4: Configuración YAML -- control total cuando lo necesites:
aegis init # Creates aegis.yaml with sensible defaults# aegis.yaml
guardrails:
pii: { enabled: true, action: mask }
injection: { enabled: true, action: block, sensitivity: medium }
policy:
version: "1"
defaults:
risk_level: medium
approval: approve
rules:
- name: read_safe
match: { type: "read*" }
risk_level: low
approval: auto
- name: bulk_ops_need_approval
match: { type: "bulk_*" }
conditions:
param_gt: { count: 100 }
risk_level: high
approval: approve
- name: no_deletes
match: { type: "delete*" }
risk_level: critical
approval: blockNivel 5: Control total de Runtime() -- ejecutores personalizados, puertas de aprobación, todo:
import asyncio
from aegis import Action, Policy, Runtime
from aegis.adapters.base import BaseExecutor
from aegis.core.result import Result, ResultStatus
class MyExecutor(BaseExecutor):
async def execute(self, action):
print(f" Executing: {action.type} -> {action.target}")
return Result(action=action, status=ResultStatus.SUCCESS)
async def main():
async with Runtime(
executor=MyExecutor(),
policy=Policy.from_yaml("policy.yaml"),
) as runtime:
plan = runtime.plan([
Action("read", "crm", description="Fetch contacts"),
Action("bulk_update", "crm", params={"count": 150}),
Action("delete", "crm", description="Drop table"),
])
results = await runtime.execute(plan)
asyncio.run(main())Paso 3: Mira qué sucedió
aegis audit ID Session Action Target Risk Decision Result
1 a1b2c3d4... read crm LOW auto success
2 a1b2c3d4... bulk_update crm HIGH approved success
3 a1b2c3d4... delete crm CRITICAL block blockedTres pilares
Aegis se basa en tres pilares. Juntos forman un framework de seguridad de IA completo, no solo un verificador de políticas.
Pilar 1: Barreras de seguridad en tiempo de ejecución
Protección a nivel de contenido que se ejecuta automáticamente en cada entrada y salida.
Capacidad | Detalle |
Detección y enmascaramiento de PII | 13 categorías (correo, tarjeta de crédito, SSN, IBAN, RRN coreano, claves API, etc.) con validación Luhn/mod-97 |
Bloqueo de inyección de prompts | 10 categorías de ataque, más de 85 patrones, multilingüe (inglés, coreano, chino, japonés) |
Ecosistema de paquetes de reglas | Extensible mediante paquetes YAML comunitarios ( |
Acciones configurables |
|
Pilar 2: Motor de políticas
Reglas YAML declarativas con el pipeline de gobernanza completo (EVALUAR --> APROBAR --> EJECUTAR --> VERIFICAR --> AUDITAR).
Capacidad | Detalle |
Coincidencia Glob | Gana la primera coincidencia, patrones comodín ( |
Condiciones inteligentes |
|
Modelo de riesgo de 4 niveles |
|
**Pu |
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/Acacian/aegis'
If you have feedback or need assistance with the MCP directory API, please join our Discord server