Current collected state Current
Observed since 20 Oct, 23:22 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agentshield-runtime
Runtime security guardrails for AI agents — inspect, control, and audit every tool call. Zero-dependency local mode included.
Lightweight security guardrails for AI agents. All security logic runs server-side.
from agentshield import Shield
shield = Shield() # reads AGENTSHIELD_API_KEY from env
@shield.guard
async def send_email(to: str, body: str) -> str:
... # your tool implementation
# The server decides: ALLOW, BLOCK, or REQUIRE_CONFIRMATION
await send_email(to="user@company.com", body="Hello")
async with shield.session("Summarize my emails") as s:
result = await s.guarded_executor.execute(
"read_inbox", {"limit": 10}, read_inbox_fn
)
from agentshield import Shield, ToolCallBlocked, ConfirmationRejected, ServerError
shield = Shield()
@shield.guard
async def send_email(to: str, body: str) -> str:
...
try:
await send_email(to="user@test.com", body="hi")
except ToolCallBlocked as e:
print(f"Blocked: {e.reason} (trace: {e.trace_id})")
except ConfirmationRejected:
print("User declined confirmation")
except ServerError as e:
print(f"Server error: {e}")
# Explicit configuration
shield = Shield(
api_key="your-key",
base_url="https://shield.yourcompany.com",
timeout=10.0,
max_retries=3,
agent_id="my-agent",
)
Or via environment variables:
AGENTSHIELD_API_KEY (required)AGENTSHIELD_BASE_URL (default: http://localhost:8000)AGENTSHIELD_TIMEOUT (default: 10.0)AGENTSHIELD_AGENT_IDOr via agentshield.yaml in the working directory.
# Sanitize external data before processing
result = await shield.sanitize(
data=email_body,
source="email/external",
)
# result.content has hidden injections removed
# result.trust_level shows the computed trust level
from agentshield.integrations import LangChainShield, CrewAIShield
# LangChain
guarded = LangChainShield(shield).wrap(agent_executor)
# CrewAI
guarded = CrewAIShield(shield).wrap(crew)
# AutoGen
from agentshield.integrations import AutoGenShield
AutoGenShield(shield).wrap(assistant)
# Claude Agent SDK
from agentshield.integrations import ClaudeAgentShield
guarded_handler = ClaudeAgentShield(shield).wrap(my_tool_handler)
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
httpxEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | httpx<1,>=0.25 | runtime |
pyyamlEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pyyaml<7,>=6 | runtime |
claude-agent-sdkEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | claude-agent-sdk>=0.1; extra == "all" | runtime |
crewaiEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | crewai>=0.30; extra == "all" | runtime |
langchain-coreEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | langchain-core>=0.1; extra == "all" | runtime |
pyautogenEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pyautogen>=0.2; extra == "all" | runtime |
pyautogenEnvironment{
"extras": "",
"marker": "extra == \"autogen\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pyautogen>=0.2; extra == "autogen" | runtime |
claude-agent-sdkEnvironment{
"extras": "",
"marker": "extra == \"claude\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | claude-agent-sdk>=0.1; extra == "claude" | runtime |
crewaiEnvironment{
"extras": "",
"marker": "extra == \"crewai\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | crewai>=0.30; extra == "crewai" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.23; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest>=8; extra == "dev" | runtime |
respxEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | respx>=0.21; extra == "dev" | runtime |
langchain-coreEnvironment{
"extras": "",
"marker": "extra == \"langchain\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | langchain-core>=0.1; extra == "langchain" | runtime |
bdist_wheel · 20.82 KB · Python py3
sdist · 18.95 KB · Python source
Observed since 20 Oct, 23:22 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:0b5406b4738d572ac7b799baaaccb7ebef2fddf16a40e41d37b486892e81626e