Skip to main content

Behavioral telemetry and policy enforcement for AI agents

Project description

quint-agent

Behavioral telemetry and policy enforcement for AI agents.

PyPI CI License: Apache 2.0

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 .env file 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quint_agent-0.2.0.tar.gz (187.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quint_agent-0.2.0-py3-none-any.whl (25.6 kB view details)

Uploaded Python 3

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

Hashes for quint_agent-0.2.0.tar.gz
Algorithm Hash digest
SHA256 db27c40a53b7bf681f940cdcbc2bfc9c15c6a05295aad02bbd5a99a97e223a47
MD5 c1f9af0e374c41edf3354c3b0c858d3a
BLAKE2b-256 088f7e4fb6285e61382d9e58dd7506f0ffebca049e79bdd8b411c35d3d5c9526

See more details on using hashes here.

Provenance

The following attestation bundles were made for quint_agent-0.2.0.tar.gz:

Publisher: release.yml on Quint-Security/quint-agent-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for quint_agent-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5fd46d0c46106c31817fea193e0ab250f8857fa114373221b9f31ca0ae84d5b4
MD5 7e21a015889fc4c96284b9ac4029ab98
BLAKE2b-256 f611a4121b6099af9c29a30e1b50b170ba8839969a0ad88e67a663cda0c88ec8

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page