Skip to main content

Python SDK for clawdstrike security verification

Project description

clawdstrike

Python SDK for Clawdstrike security verification.

Installation

pip install clawdstrike

Quick Start

from clawdstrike import Clawdstrike

cs = Clawdstrike.with_defaults("strict")

# Check file access
decision = cs.check_file("/etc/shadow")
if decision.denied:
    print(f"Blocked: {decision.message}")

# Check network egress
decision = cs.check_network("api.openai.com")
print(f"Allowed: {decision.allowed}")

Usage

Facade API (recommended)

from clawdstrike import Clawdstrike, Decision, DecisionStatus

# Built-in rulesets: "permissive", "default", "strict", "ai-agent", "cicd"
cs = Clawdstrike.with_defaults("strict")

# All check methods return a Decision
decision = cs.check_file("/etc/passwd")
decision = cs.check_command("rm -rf /")
decision = cs.check_network("evil.com", 443)
decision = cs.check_patch("/app/main.py", diff_str)
decision = cs.check_mcp_tool("shell_exec", {"cmd": "ls"})

# Decision properties
print(decision.status)    # DecisionStatus.DENY
print(decision.denied)    # True
print(decision.allowed)   # False
print(decision.message)   # "Access to forbidden path: ..."
print(decision.guard)     # "forbidden_path"
print(decision.per_guard) # List of individual GuardResult objects

Sessions

cs = Clawdstrike.with_defaults("default")
session = cs.session(agent_id="my-agent")

session.check_file("/app/src/main.py")
session.check_network("api.openai.com")
session.check_file("/home/user/.ssh/id_rsa")

summary = session.get_summary()
print(f"Checks: {summary.check_count}")
print(f"Allowed: {summary.allow_count}")
print(f"Denied: {summary.deny_count}")
print(f"Blocked: {summary.blocked_actions}")

Loading from YAML

from clawdstrike import Clawdstrike

# From file
cs = Clawdstrike.from_policy("policy.yaml")

# From YAML string
cs = Clawdstrike.from_policy('''
version: "1.1.0"
name: my-policy
extends: strict
guards:
  egress_allowlist:
    allow:
      - "api.myservice.com"
''')

Low-level API

from clawdstrike import Policy, PolicyEngine, FileAccessAction, GuardContext

policy = Policy.from_yaml_file("policy.yaml")
engine = PolicyEngine(policy)
context = GuardContext(cwd="/app")

results = engine.check(FileAccessAction(path="/app/src/main.py"), context)
print(all(r.allowed for r in results))

Native Engine (Recommended)

The SDK automatically uses the bundled native engine when available. All 12 guards run in Rust with full detection capabilities.

On unsupported platforms, the SDK falls back to pure Python with 9 guards and heuristic-only detection.

Native wheels are published for:

  • Linux: manylinux (x86_64, aarch64)
  • macOS: x86_64, arm64
  • Windows: x86_64
from clawdstrike import Clawdstrike, NATIVE_AVAILABLE, init_native

# Check if native engine is available
print(f"Native available: {NATIVE_AVAILABLE}")
print(f"Native engine: {init_native()}")

# The facade auto-selects the best backend
cs = Clawdstrike.with_defaults("strict")
print(f"Backend: {cs._backend.name}")  # "native" or "pure_python"

Explicit Backend Selection

from clawdstrike import Clawdstrike
from clawdstrike.backend import NativeEngineBackend, PurePythonBackend
from clawdstrike.policy import Policy, PolicyEngine

# Force pure Python backend
yaml = 'version: "1.1.0"\nname: test\nextends: strict\n'
policy = Policy.from_yaml_with_extends(yaml)
cs = Clawdstrike(PurePythonBackend(PolicyEngine(policy)))

# Force native backend (raises if unavailable)
backend = NativeEngineBackend.from_ruleset("strict")
cs = Clawdstrike(backend)

Features

  • Native Rust engine (bundled in clawdstrike wheels on supported platforms) with all 12 guards
  • Pure Python fallback with 9 guards:
    • ForbiddenPathGuard - Blocks sensitive filesystem paths
    • PathAllowlistGuard - Allowlist-based path access control
    • EgressAllowlistGuard - Controls network egress by domain
    • SecretLeakGuard - Detects secrets in file writes
    • PatchIntegrityGuard - Validates patch safety
    • ShellCommandGuard - Blocks dangerous shell commands
    • McpToolGuard - Restricts MCP tool invocations
    • PromptInjectionGuard - Detects prompt injection
    • JailbreakGuard - Detects jailbreak attempts
  • Facade API with Clawdstrike class and Decision return type
  • Stateful sessions with ClawdstrikeSession
  • Custom exception hierarchy (ClawdstrikeError base)
  • Policy engine with YAML configuration and inheritance
  • Receipt signing and verification with Ed25519
  • Typed action variants (frozen dataclasses)

License

Apache-2.0

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

clawdstrike-0.2.5.tar.gz (193.4 kB view details)

Uploaded Source

Built Distributions

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

clawdstrike-0.2.5-py3-none-any.whl (130.4 kB view details)

Uploaded Python 3

clawdstrike-0.2.5-cp310-abi3-win_amd64.whl (4.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

clawdstrike-0.2.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

clawdstrike-0.2.5-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

clawdstrike-0.2.5-cp310-abi3-macosx_11_0_arm64.whl (4.1 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

clawdstrike-0.2.5-cp310-abi3-macosx_10_12_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file clawdstrike-0.2.5.tar.gz.

File metadata

  • Download URL: clawdstrike-0.2.5.tar.gz
  • Upload date:
  • Size: 193.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for clawdstrike-0.2.5.tar.gz
Algorithm Hash digest
SHA256 4db95a388c9e87f3d4c12e509ab3ace060aff38668ebe694ef22f3decba984b8
MD5 20e88b28104704efca67bae017f084db
BLAKE2b-256 df6ae2e761999644733c1b3018b040c32dcdd5ee71a9c2d591f314f32f652c4e

See more details on using hashes here.

File details

Details for the file clawdstrike-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: clawdstrike-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 130.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for clawdstrike-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e1e9971dc7479dc0b1abef4bdc2c7df502172fe9390ca82e6c2609a75ae3796b
MD5 8101fe548c7c2534878fb7d274acc18d
BLAKE2b-256 1fa869f7b80a52e8c20c52d4d22d3e9a836b326b914eec703e3d2baa903bea21

See more details on using hashes here.

File details

Details for the file clawdstrike-0.2.5-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: clawdstrike-0.2.5-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 4.2 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for clawdstrike-0.2.5-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 31c57df1e21b3569584ed262560933398cb1973145504425e3a91f3a26cd6932
MD5 ca81ed297bee91cf2481547d9a0baa38
BLAKE2b-256 5ddf05f1bc1925bf081376517a36f31e9f58ee8ec58affaa02009b8928ec0478

See more details on using hashes here.

File details

Details for the file clawdstrike-0.2.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for clawdstrike-0.2.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 78780380d9013c8c6cd8011586c5b81e9055aca359b0eccc8c13a8585a630448
MD5 ca4a8d1e58a85ef9bc8bfb2785b93e8b
BLAKE2b-256 43400bb6ed3f8b4899e6122dd81d118377f2ab547757aaf78fc83c2d27bd3f1a

See more details on using hashes here.

File details

Details for the file clawdstrike-0.2.5-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for clawdstrike-0.2.5-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d3938d113882ba97de2c2c953bd2e7e6851031f6f4266675a38224e1cf3332cd
MD5 b7220b7c963177a3eb7553bbf343b3b4
BLAKE2b-256 a26ee77c9d2243d8b3a1809fd03a5a6b0c36b73608130e3c95cf533bb1de8e11

See more details on using hashes here.

File details

Details for the file clawdstrike-0.2.5-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for clawdstrike-0.2.5-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d2560ae79c5b777de89e4d740212f6067297c76588c504558ef3adf720dcd42e
MD5 fcf50fee47f0c76dafaf458de971874f
BLAKE2b-256 2a12be8053e1ab296f15d86ce2187794b5bfc497bbb776d98a4d1567cd034683

See more details on using hashes here.

File details

Details for the file clawdstrike-0.2.5-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for clawdstrike-0.2.5-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bbe425dc2dfde0027c29eea9b561e7cf14541f31daeb1336a055454b7b8dd842
MD5 dbe0794bfcbf0af42a5bed2404468980
BLAKE2b-256 0c488842bc84016f62a43b790b47e74295fa9ff023bfcd93f0afb0fad261ec26

See more details on using hashes here.

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