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 (project site — path includes the repo name):

Use URL
Repo About / Website field https://sqube-groups.github.io/sqube-agent-control/
Docs home (intro) https://sqube-groups.github.io/sqube-agent-control/docs/intro

Do not link https://sqube-groups.github.io/docs/... — that is the org/user site root without the /sqube-agent-control/ prefix. Unless you configure a custom domain at the org root, docs live only under /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.1

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.1
File Size Uploaded Provenance Actions
sqube_agent_guard-0.1.1.tar.gz 187.1 kB Without provenance Details for sqube_agent_guard-0.1.1.tar.gz

Built distribution (wheel)

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

Total release size: 195.1 kB

Release files / sqube_agent_guard-0.1.1.tar.gz

Download URL sqube_agent_guard-0.1.1.tar.gz
Size 187.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9c672514b82a7e8dfacaa98f6f6881c77c1bd9a9281892446949d1df18251825
BLAKE2b-256 checksum
How to use checksums
0f1c5b1fe574e85719654a22d41a5cbd608c60a04a82c2eb88519bbeda1b8f80
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.1-py3-none-any.whl

Download URL sqube_agent_guard-0.1.1-py3-none-any.whl
Size 8.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
325de7d9d73de8441daee3c2b558f6a37cdd4823339cde0a4bfc5b66259e02b3
BLAKE2b-256 checksum
How to use checksums
cbdb795f71ea03001d404c92c8550b9e4b775b5516dbc6d837e61167199874e0
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.1

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