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.4.tar.gz (168.9 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.4-py3-none-any.whl (109.1 kB view details)

Uploaded Python 3

clawdstrike-0.2.4-cp310-abi3-win_amd64.whl (4.0 MB view details)

Uploaded CPython 3.10+Windows x86-64

clawdstrike-0.2.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

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

clawdstrike-0.2.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

clawdstrike-0.2.4-cp310-abi3-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

clawdstrike-0.2.4-cp310-abi3-macosx_10_12_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: clawdstrike-0.2.4.tar.gz
  • Upload date:
  • Size: 168.9 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.4.tar.gz
Algorithm Hash digest
SHA256 0ad1222bff1a93fa66ea41a0a9ba94b3f2208b6b880c0f406b212a534e7cfcf9
MD5 b34ade319d0c1e2c971296f963225fe2
BLAKE2b-256 26da8524ed9d7318d0cfa64aedf5fe547a0d988917c6f6695ea6815f0c52c47c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: clawdstrike-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 109.1 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 52a5d619fd5150182a5f3a094a75fe3a431773915e7d72aa265fb0e6161edb1e
MD5 5f8f50634e31027c3f57d635cbad59ca
BLAKE2b-256 df27b7113d4abd0f8c193223cdb66139636515cf6ad2841828f777b6594890f9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: clawdstrike-0.2.4-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 4.0 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.4-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1ae3d72a547fcac94d9b26655b1fbb67449c853b1179be92e2e2477fc663753c
MD5 c586b631e6493b5a4fb55f14674d1831
BLAKE2b-256 f385dc3a8f94f3fb1c6f5eb7a3a2a7b37235ddbf275c7696543d524849b9ea82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clawdstrike-0.2.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e49a76e2e3ed8ef11e84e0e34dcdcc61e802e533723c362bed4a8486a80e8098
MD5 975d2cdb919d880838031d727849ba82
BLAKE2b-256 2af64f25e72f1a735dea2f2208f5b75a2dbaa388468d5e00396dbbba6904e65d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clawdstrike-0.2.4-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 566f0230202b47403a1af44325ad90191f7b9a9c39a11ee42099cd3a63466cc4
MD5 305156c51b33cfb41a293d56c58dfa15
BLAKE2b-256 519aef06a378e3c0116bd2270bbde26fa235354b1e744b0a926251ae45bb43ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clawdstrike-0.2.4-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b68ce4880f34a0a27b521e35cea80406bb4a7b1695fe027a67349dcce5e982cb
MD5 e3a449938b36fdd64a674ec51bdd8c80
BLAKE2b-256 20e5fc9a805cdc67d0031085a9190c63aebc6744ff5ee769681422aa60dd0a75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clawdstrike-0.2.4-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2553261945191019ea12f5b120df1b553f0aebc44204c941274abb03cce85685
MD5 03ad77e578e70e0534ec1ad8ea28126d
BLAKE2b-256 c44e707922c3c4538f4438f1d979dbf1383a6a9574988c475952d7d673b5e9aa

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