Skip to main content

CSC — Command Scope Contract

CSC — Command Scope Contract

Bounded shell and CLI execution for AI agents.
Structured contracts. Policy-gated execution. Signed receipts.

CI Hardened Tests PyPI Downloads Python 3.11+ License


CSC is a protocol for bounded shell and CLI execution by AI agents.

CSC is complementary to MCP, not a replacement for it.

It exists to remove ambient authority from agentic execution.

Instead of giving an agent raw shell access, CSC requires the agent to submit a structured command contract that declares:

  • what it wants to run
  • why it wants to run it
  • where it wants to run it
  • what it needs to read
  • what it may write
  • whether it needs network access
  • whether it needs secrets
  • what kind of effect it may cause
  • how long it may run

A trusted policy layer evaluates the contract. If allowed, a constrained executor runs it and emits a verifiable, signed receipt.

Why CSC exists

Shell is useful because it is universal, composable, and token-efficient.

Shell is dangerous because it often carries too much implicit power.

CSC keeps the flexibility of shell while making scope, policy, and execution evidence explicit.

Execution model

agent -> command contract -> policy gate -> constrained executor -> execution receipt

Status

v0.5.2 — bounded production-ready

The reference runner implements the full CSC v0.1 protocol:

  • Stage 1a — Protocol complete: spec frozen, conformance suite, policy schema with structured reason codes, receipt field semantics
  • Stage 1b — Hardened defaults: fail-closed executor, path enforcement, resource limits, capped output capture, adversarial test suite
  • Stage 2 — First hardened mode: Linux sandbox (bubblewrap + setpriv + prlimit), Ed25519 receipt signing, approval artifacts with replay prevention, end-to-end integration tests
  • Stage 3 — Production candidate: release infrastructure, CI gates, security process, pilot validation, internal red-team review

Bounded production claim

CSC hardened mode is safe enough for bounded production use in Linux-based, filesystem-bounded local/CI execution workflows without network access, under the documented trust assumptions and deployment constraints.

See docs/deployment-modes.md for security claims by mode and docs/production-readiness-gate.md for the formal release gate.

Deployment modes

Mode Platform Security boundary Receipt signing
Local Any Pre-launch validation only Optional
Hardened Linux only Kernel-enforced (bwrap namespaces) Mandatory

Local mode is for development, testing, and demos. Hardened mode is for CI/CD pipelines and production-like workflows where execution integrity matters.

See docs/deployment-modes.md for full details.

Design goals

  • Keep shell composability.
  • Remove raw arbitrary shell by default.
  • Make intent and scope explicit before execution.
  • Let trusted policy decide.
  • Emit signed receipts for audit and provenance.
  • Enforce boundaries with the kernel, not just Python.
  • Stay small enough to implement and adopt quickly.

Non-goals

CSC does not attempt to replace:

  • container isolation (CSC uses it as the enforcement layer)
  • IAM
  • workflow engines
  • semantic validation of task correctness
  • prompt injection defenses at every layer

CSC is an execution-boundary protocol. For a full statement of what CSC contributes and what it reuses, see RFC-0003.

Core objects

  • CommandContract — what the agent wants to run
  • PolicyDecision — whether it may run (with structured reason codes)
  • ExecutionReceipt — what actually happened (signed in hardened mode)
  • ApprovalArtifact — human authorization for sensitive operations

v0.1 rules

  • argv arrays only
  • no raw shell strings
  • no bash -lc, sh -c, eval, python -c, node -e by default
  • explicit read/write/network/env/secret scope
  • default deny on omitted capabilities
  • bounded runtime
  • signed receipts in hardened mode

Quickstart

# Install from PyPI
pip install csc-runner

# Or install from source with dev dependencies
pip install -e ".[dev]"

# Check a contract against a policy (no execution)
csc check examples/contracts/git-status.json examples/policies/dev-readonly.yaml

# Run a contract (local mode)
csc run examples/contracts/git-status.json examples/policies/dev-readonly.yaml

# Run in hardened mode (Linux, requires bwrap/setpriv/prlimit)
csc run contract.json policy.yaml \
  --mode hardened \
  --sign --signing-key key.pem --key-id prod-01

# Verify a signed receipt
csc verify-receipt receipt.json --public-key pub.pem --key-id prod-01

Documentation

RFCs

  • RFC-0001 — CSC core protocol
  • RFC-0002 — PIC alignment and mapping
  • RFC-0003 — CSC positioning, contribution, and boundaries

Contributing

Contributions welcome. See CONTRIBUTING.md and start with docs/spec-v0.1.md and schemas/.

License

Apache-2.0

Metadata

Release files for csc-runner 0.5.2

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

Source distribution (sdist)

Source distribution for csc-runner 0.5.2
File Size Uploaded
csc_runner-0.5.2.tar.gz 5.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for csc-runner 0.5.2
File Interpreter ABI Platform
csc_runner-0.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 5.8 MB

Release files / csc_runner-0.5.2.tar.gz

Download URL csc_runner-0.5.2.tar.gz
Size 5.8 MB
Tags Source
SHA-256 checksum
How to use checksums
dab1440072b811a960428d570c878b12676e81bc83fc152697ef22379f36592f
BLAKE2b-256 checksum
How to use checksums
8c511bd4a5dcc1b970bc7f445040a052d53bf0aeb7ca1aab6387f7f1f23c5d6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 25, 2026.

Transparency log

Release files / csc_runner-0.5.2-py3-none-any.whl

Download URL csc_runner-0.5.2-py3-none-any.whl
Size 38.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
09c1f69c2cceb4dd76515d70446314029680e5066c39f2ea0603461c6160cd56
BLAKE2b-256 checksum
How to use checksums
2b1e8b3d899e9b46b6f47f16593378a395cbaee0a8a952845b71723cfaa1d7dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.2 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

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