Behavioral telemetry and policy enforcement for AI agents
Project description
quint-agent
Behavioral telemetry and policy enforcement for AI agents.
Capture every prompt, tool call, and tool result from your AI agents. Enforce YAML-defined policy at the tool-call boundary. Stream telemetry to the Quint cloud for behavioral analysis and divergence detection.
Install
pip install quint-agent
With auto-instrumentation (zero code change):
pip install 'quint-agent[otel-openai]' # auto-capture OpenAI calls
pip install 'quint-agent[otel-anthropic]' # auto-capture Anthropic calls
pip install 'quint-agent[otel-langchain]' # auto-capture LangChain chains
pip install 'quint-agent[otel-all]' # all frameworks
With framework integrations:
pip install 'quint-agent[anthropic]' # guarded_dispatch for Anthropic
pip install 'quint-agent[langchain]' # QuintCallbackHandler
pip install 'quint-agent[mcp]' # QuintMCPClient
pip install 'quint-agent[all]' # everything
Zero-code observability (2 lines)
import quint_agent
quint_agent.init(api_key="qak_...")
# That's it. Every OpenAI/Anthropic/LangChain call is auto-captured.
If OTel instrumentors are installed ([otel-openai], [otel-anthropic], etc.), quint.init() auto-detects and instruments them. No decorators, no callbacks, no code changes.
@quint.guard — policy enforcement
import quint_agent
quint_agent.init(api_key="qak_...")
@quint_agent.guard()
def read_file(path: str) -> str:
return open(path).read()
@quint_agent.guard()
def run_command(cmd: str) -> str:
import subprocess
return subprocess.check_output(cmd, shell=True, text=True)
read_file(path="/etc/hosts") # allowed — captured to cloud
read_file(path="/home/me/.env") # blocked — ToolBlockedError
Anthropic integration
import anthropic
import quint_agent
from quint_agent.integrations.anthropic import guarded_dispatch
quint_agent.init(api_key="qak_...")
tools_map = {"read_file": read_file}
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
tools=[{"name": "read_file", "description": "Read a file", "input_schema": {
"type": "object", "properties": {"path": {"type": "string"}}, "required": ["path"]
}}],
messages=[{"role": "user", "content": "Read /etc/passwd"}],
)
for block in response.content:
if block.type == "tool_use":
result = guarded_dispatch(block.name, block.input, tools_map)
LangChain
from quint_agent.integrations.langchain import QuintCallbackHandler
chain.invoke({"input": "..."}, config={"callbacks": [QuintCallbackHandler()]})
MCP
from quint_agent.integrations.mcp import QuintMCPClient
async with mcp_client() as session:
guarded = QuintMCPClient(session)
result = await guarded.call_tool("read_file", {"path": "/x"})
Custom policy
# my_policy.yaml
rules:
- name: no_prod_db
action: block
reason: "Production database access not allowed"
when:
- op: equals
path: tool_name
value: execute_sql
- op: contains
path: args.connection
value: prod
quint_agent.init(api_key="qak_...", policy="my_policy.yaml")
Default policy
Ships with 4 rules out of the box:
- Block
.envfile reads - Block AWS credentials access
- Escalate on
secrets/directory reads - Block destructive shell commands (
rm -rf /)
Override by passing your own policy to quint.init(policy=...).
Docs
Full documentation at docs.quintai.dev/sdk.
License
Apache 2.0 — see LICENSE.
Built by Quint Security.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quint_agent-0.2.0.tar.gz.
File metadata
- Download URL: quint_agent-0.2.0.tar.gz
- Upload date:
- Size: 187.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db27c40a53b7bf681f940cdcbc2bfc9c15c6a05295aad02bbd5a99a97e223a47
|
|
| MD5 |
c1f9af0e374c41edf3354c3b0c858d3a
|
|
| BLAKE2b-256 |
088f7e4fb6285e61382d9e58dd7506f0ffebca049e79bdd8b411c35d3d5c9526
|
Provenance
The following attestation bundles were made for quint_agent-0.2.0.tar.gz:
Publisher:
release.yml on Quint-Security/quint-agent-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
quint_agent-0.2.0.tar.gz -
Subject digest:
db27c40a53b7bf681f940cdcbc2bfc9c15c6a05295aad02bbd5a99a97e223a47 - Sigstore transparency entry: 1637660940
- Sigstore integration time:
-
Permalink:
Quint-Security/quint-agent-py@0fe6f5ff4003855865d937d36a0bdc5ee54c4f9f -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Quint-Security
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0fe6f5ff4003855865d937d36a0bdc5ee54c4f9f -
Trigger Event:
push
-
Statement type:
File details
Details for the file quint_agent-0.2.0-py3-none-any.whl.
File metadata
- Download URL: quint_agent-0.2.0-py3-none-any.whl
- Upload date:
- Size: 25.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fd46d0c46106c31817fea193e0ab250f8857fa114373221b9f31ca0ae84d5b4
|
|
| MD5 |
7e21a015889fc4c96284b9ac4029ab98
|
|
| BLAKE2b-256 |
f611a4121b6099af9c29a30e1b50b170ba8839969a0ad88e67a663cda0c88ec8
|
Provenance
The following attestation bundles were made for quint_agent-0.2.0-py3-none-any.whl:
Publisher:
release.yml on Quint-Security/quint-agent-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
quint_agent-0.2.0-py3-none-any.whl -
Subject digest:
5fd46d0c46106c31817fea193e0ab250f8857fa114373221b9f31ca0ae84d5b4 - Sigstore transparency entry: 1637661050
- Sigstore integration time:
-
Permalink:
Quint-Security/quint-agent-py@0fe6f5ff4003855865d937d36a0bdc5ee54c4f9f -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Quint-Security
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0fe6f5ff4003855865d937d36a0bdc5ee54c4f9f -
Trigger Event:
push
-
Statement type: