Skip to main content

Sqube Agent Control

Open-source infrastructure for controlling AI agent actions.

v0.1 is an experiment. SDK wrapping is bypassable. This is not a replacement for IAM, gateways, or security controls. It exists to learn whether execution-decision tooling has pull in real teams.

Sqube Execution Guard (v0.1) wraps a consequential action, deterministically decides ALLOW / BLOCK / REQUIRE_APPROVAL, optionally pauses for a human via CLI, and writes an append-only SQLite execution record.

Do not use messaging like “secure your agents,” “enterprise control plane,” or “prevent all unauthorized actions.”

Status

Experimental — API may change.

SDKs

Language Package Path
Python sqube-agent-guard (PyPI) src/sqube_agent_guard/
Node.js @sqube/agent-guard (npm) nodejs/
Rust sqube-agent-guard (build from rust/) rust/

All three implement the same v0.1 contract documented on GitHub Pages (source: website/docs/v0.1-spec.md).

Quick start (Python)

from sqube_agent_guard import ExecutionGuard, Decision


def policy(action, resource, agent_id, **ctx):
    if action == "delete_file":
        return Decision.REQUIRE_APPROVAL
    return Decision.ALLOW


guard = ExecutionGuard(policy=policy)


@guard.wrap_action(action="delete_file", resource=lambda path: f"file:{path}")
def delete_file(path):
    ...


delete_file("/tmp/example.txt")

Quick start (Node.js)

import { Decision, ExecutionGuard } from "@sqube/agent-guard";

const guard = new ExecutionGuard({
  policy: (action) =>
    action === "delete_file" ? Decision.REQUIRE_APPROVAL : Decision.ALLOW,
});

const deleteFile = guard.wrapAction(
  { action: "delete_file", resource: (path: string) => `file:${path}` },
  (path: string) => { /* ... */ }
);

await deleteFile("/tmp/example.txt");

Quick start (Rust)

use sqube_agent_guard::{Decision, ExecutionGuard, WrapOptions};

let guard = ExecutionGuard::with_default_policy().with_ledger_path("sqube_ledger.sqlite3");

guard.wrap_action(
    WrapOptions {
        action: "delete_file".into(),
        resource: Some("file:/tmp/x".into()),
        agent_id: "default".into(),
    },
    || Ok(()),
    "path=/tmp/x",
    r#"{"path":"/tmp/x"}"#,
)?;

Decisions

ALLOW
BLOCK
REQUIRE_APPROVAL

Policies are application-defined callables. No LLM in the decision path for v0.1.

Installation

Python and Node.js (published registries):

pip install sqube-agent-guard
npm install @sqube/agent-guard

Rust — crates.io is not published yet. Clone this repository and build from rust/:

git clone https://github.com/Sqube-Groups/sqube-agent-control.git
cd sqube-agent-control/rust
cargo build
cargo test

To depend on the crate from another Rust project before crates.io publish, use a path or git dependency in Cargo.toml (see rust/README.md).

Packaging and releases for Python and Node.js are wired via GitHub Actions on version tags (v*.*.*). Configure repository secrets: PYPI_API_TOKEN, NPM_TOKEN.

Optional LLM probes

v0.1 guard decisions are deterministic — no LLM in the policy path. For manual experiments only (not CI, not ExecutionGuard), see examples/nvidia_kimi_vision_probe.py and Optional LLM probes on the docs site.

pip install requests   # or: pip install -e ".[probes]"
export NVIDIA_API_KEY="your-key"
python examples/nvidia_kimi_vision_probe.py
python examples/nvidia_kimi_vision_probe.py --no-stream

Development

# Python
pip install -e ".[dev]"
pytest

# Node
cd nodejs && npm ci && npm test

# Rust
cd rust && cargo test

Documentation

CI runs on pull requests and pushes targeting main; GitHub Pages deploys only on pushes to main; PyPI/npm releases run only for v*.*.* tags whose commit is on main.

Published docs (Docusaurus) deploy to GitHub Pages on pushes to main:

https://sqube-groups.github.io/sqube-agent-control/

Maintainers: Enable GitHub Pages (GitHub Actions source), docs deploy behavior, and release tag commands — see website/docs/deploy-pages.md.

Run locally:

cd website && npm ci && npm start

Keep private notes outside the repo under docs_internal_never_commit/ (gitignored). Other common local-only folder names (docs-never-commit/, .local-docs/, **/never-commit/) are ignored as well.

Project structure

src/sqube_agent_guard/     # Python SDK
nodejs/              # TypeScript / npm SDK
rust/                # Rust crate
tests/               # Python tests
examples/            # Python examples
website/             # Docusaurus docs site (GitHub Pages)

Contributing

Contributions and feedback are welcome. For larger changes, open an issue first.

License

Copyright © 2026 Sqube Groups — Apache-2.0

Sqube

Metadata

Release files for sqube-agent-guard 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sqube-agent-guard 0.1.0
File Size Uploaded Provenance Actions
sqube_agent_guard-0.1.0.tar.gz 185.1 kB Without provenance Details for sqube_agent_guard-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for sqube-agent-guard 0.1.0
File Interpreter ABI Platform Actions
sqube_agent_guard-0.1.0-py3-none-any.whl Python 3 none any Details for sqube_agent_guard-0.1.0-py3-none-any.whl

Total release size: 192.9 kB

Release files / sqube_agent_guard-0.1.0.tar.gz

Download URL sqube_agent_guard-0.1.0.tar.gz
Size 185.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9b736f604e45cb178cc770a8140cb880bdaa219a94ee7df7e4b63206bbf7a4e4
BLAKE2b-256 checksum
How to use checksums
2a73c3e975c12e52a96e67ca0af5a6fd57ec5568d97834c2c1c053fda18ecf47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / sqube_agent_guard-0.1.0-py3-none-any.whl

Download URL sqube_agent_guard-0.1.0-py3-none-any.whl
Size 7.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ff0dba5ce78b07dd6584aae377db16aafae89103647ad1170c278c9d0ae21967
BLAKE2b-256 checksum
How to use checksums
f37b34209adbb9747098fd09aefac832972f398a15aa4841553d3bb7e20d178c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for sqube-agent-guard 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page