Agentic Security Harness
Your AI coding agent reads untrusted repository text. Can it keep data separate from instructions and authority?
Agentic Security Harness is a local, trace-first benchmark for defensive testing of agentic AI boundary failures. It runs reproducible synthetic scenarios, records portable traces and scorecards, and compares a deliberately vulnerable local agent with a protected one.
In plain English: it turns “the agent behaved unsafely” into evidence you can replay, validate, compare, and review.
Quickstart
Install the current source checkout:
git clone https://github.com/krivonosoff161/agentic-security-harness.git
cd agentic-security-harness
python -m pip install .
ash quickstart --out reports/quickstart
After the separately gated PyPI publication, the primary install command becomes:
python -m pip install agentic-security-harness
ash quickstart is local and no-network. It runs the same stable 24-pattern corpus against
both demo targets, validates the generated artifacts, and renders a self-contained HTML
report.
| Target | Modeled findings | Patterns passed |
|---|---|---|
demo-agent |
24 | 0 |
protected-demo-agent |
0 | 24 |
The deterministic result is 24 modeled findings for the vulnerable fixture and 0 modeled findings for the protected fixture. This is synthetic conformance evidence, not a production safety claim.
Inspect the committed before/after example in
examples/comparison-report/ or validate every public
example locally:
ash validate examples/
ash validate docs/evidence-status-registry.json
What this is / is not
| This project is | This project is not |
|---|---|
| A reproducible benchmark for agent operating-environment boundaries. | A production safety certification. |
| A synthetic and authorized defensive testing lab. | A live exploitation or persistence toolkit. |
| A way to compare vulnerable and protected targets using portable artifacts. | Proof that a provider, model, or deployed agent is secure. |
| A stable trace/corpus contract with machine-readable validation. | A model leaderboard or CVE database. |
The benchmark focuses on agent operating-environment boundaries, not just standalone model answers.
Built-in targets are deterministic and offline. The experimental external adapter
is explicit opt-in, prompt-only, and does not execute tools. See
docs/benchmark-semantics.md and
docs/authorized-testing-paths.md.
Visual evidence snapshot
The public evidence map separates deterministic executable specifications, sanitized local observations, historical material, and independently reviewed evidence:
- Evidence map
- Evidence classes
- Machine-readable evidence registry
- Evidence pack format
- Private/public evidence boundary
Public artifacts may include scenario identifiers, aggregate counts, response hashes, and
validator results. They do not include raw private prompts, raw responses, synthetic
canaries, or local paths. Keep external raw material under
.internal/external-demo/latest. Do not commit raw_responses/ or other private
runtime evidence.
Current stable surface
- Trace schema
1.0, with a bounded legacy0.1read/migration window. - Corpus
1.0.0, freezing 24 ordered synthetic pattern identifiers. - Local targets for vulnerable/protected agent, RAG, tool, function, and multi-agent
handoff comparisons, including
toy-multi-agentandprotected-toy-multi-agent. - JSON traces, scorecards, run manifests, remediation, Markdown reports, and self-contained HTML reports.
- Deterministic validators for artifact integrity and declared benchmark semantics.
- Linux/Python 3.11-3.13 as the primary installed-package contour, with Windows 3.11 compatibility coverage.
- Reproducible wheel/sdist builds, checksums, GitHub attestations, and an exact-subject CycloneDX SBOM in the next authorized tag workflow.
The exact shipped, experimental, planned, and historical surfaces live in
docs/current-state.md and
docs/capability-matrix.md. Technical v1 gates and honest
non-claims are in docs/v1-readiness.md.
If you only have one minute
- Run the no-network demo above.
- Read the committed comparison.
- Browse the showcase and scenario matrix.
- See weak spots and findings.
- Check current state and the project tracker.
- Bring your own local or OpenAI-compatible model through Run your model.
Use your own model or runtime
The shortest cross-platform operator path is
docs/run-your-model.md. It covers:
- a no-model deterministic demo;
- one explicitly authorized OpenAI-compatible model;
- a deterministic local swarm comparison;
- a bounded local-model mini-swarm campaign.
Connection details and scenario selection are documented in
docs/connect-models.md and
docs/test-your-model.md. External runs are prompt-only
self-report checks unless a separately reviewed host/tool adapter exists. A coherent answer
is not evidence of safe tool execution.
Benchmark and evidence documentation
The README is the front door; deeper contracts live in docs/:
| Question | Source of truth |
|---|---|
| What is shipped now? | Current state |
| What work is open? | Project tracker and roadmap |
| Which testing paths are authorized? | Authorized testing paths |
| Which system shapes are evaluated? | Evaluation topologies |
| What boundary model is used? | Agentic boundary model |
| How is the corpus expanded? | Corpus expansion plan |
| What do metrics mean? | Metric contract |
| How are scenarios sequenced? | Scenario timeline |
| How should reports be showcased? | Showcase checklist |
| How is evidence promoted? | Evidence pack format |
| How are changes reviewed? | Git evidence workflow |
Specialized reviewer paths:
- Local Prometheus workflow
- Local model profiles
- Multi-agent handoff toy topology
- Security audit causal map
- R5 sanitized research status
- Project governance
Standards and portfolio boundaries
The project publishes conservative mappings to OWASP LLM, NIST, and a direct-fit MITRE
ATLAS subset in docs/standards-mapping.md. These are
maintainer-reviewed mappings, not certification or independent standards validation.
Independent review remains public follow-up work.
The related public contract includes:
- Threat ontology: 26 provider-neutral failure families.
- Scenario adjudication ledger: 127 bounded source units from 13 enumerated builders.
- Unified event envelope: separation of observations, data, authority, advisories, decisions, and effects.
The 127 units are not 127 canonical attacks and not a repository-wide total. The contract grants no executor, provider, deployment, enforcement, or production authority.
Public security stack
Agentic Security Harness is the benchmark/evidence layer in a small public defensive stack:
llm-safety-playbooks -> ai-agent-handoff -> agentic-transfer-verifier -> agentic-security-harness
llm-safety-playbooksdocuments practical boundary rules.ai-agent-handoffrepresents task briefs and handoff state as reviewable files.agentic-transfer-verifierchecks provenance, authority, approval, and audit evidence around transfers.- This repository measures modeled failures and produces validated benchmark artifacts.
The repositories are related but not interchangeable. A playbook is not a runtime control, a handoff file is not a sandbox, and a passing benchmark is not a production certificate.
Release and package status
The source tree is prepared for the stable v1 contract. Tagging, GitHub Release creation, TestPyPI upload, and PyPI publication remain separate, auditable owner gates. Until the package-index promotion succeeds, source and GitHub Release installation are the supported paths.
Independent standards review and a durable second GitHub reviewer are transparent post-v1 credibility tasks. Their absence does not change deterministic test results, but independent review is not claimed.
Development
python -m pip install -e ".[dev]"
python -m pytest
python -m ruff check .
python -m mypy src tests tools
ash validate examples/
Development follows
idea -> issue -> branch -> implementation -> tests/artifacts -> PR -> GitHub checks -> review gate.
See docs/git-evidence-workflow.md,
CONTRIBUTING.md, and docs/agent-operating-guide.md.
Responsible use
Use only synthetic, local, owned, or explicitly authorized targets. Do not use this project
for credential theft, persistence, evasion, destructive payloads, or unauthorized systems.
See SECURITY.md and
docs/authorized-testing-paths.md.
Citation, contributing, and license
- Citation metadata:
CITATION.cff - Governance:
GOVERNANCE.md - Contributing:
CONTRIBUTING.md - Support:
SUPPORT.md - License: Apache-2.0, see
LICENSEandNOTICE
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentic_security_harness-1.0.0.tar.gz.
File metadata
- Download URL: agentic_security_harness-1.0.0.tar.gz
- Upload date:
- Size: 604.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
929eecb390ba87e3adba5d466acfe73cf8072b0516f6f5f57da2e6e98c338f1e
|
|
| MD5 |
a414947b72ddb6fa2fc013f512e008b5
|
|
| BLAKE2b-256 |
8f2c76e080986adbd8cb50c427238484668ae6439ca73f772f2018a5617081ac
|
Provenance
The following attestation bundles were made for agentic_security_harness-1.0.0.tar.gz:
Publisher:
publish-pypi.yml on krivonosoff161/agentic-security-harness
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentic_security_harness-1.0.0.tar.gz -
Subject digest:
929eecb390ba87e3adba5d466acfe73cf8072b0516f6f5f57da2e6e98c338f1e - Sigstore transparency entry: 2468313309
- Sigstore integration time:
-
Permalink:
krivonosoff161/agentic-security-harness@71295922b8053a188431d0f510f1e9146435c742 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/krivonosoff161
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@71295922b8053a188431d0f510f1e9146435c742 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file agentic_security_harness-1.0.0-py3-none-any.whl.
File metadata
- Download URL: agentic_security_harness-1.0.0-py3-none-any.whl
- Upload date:
- Size: 473.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd153fae4cc7abdbf8936e9d9eff56a1c08400d2ef4b3186e2e2e126f5a592fb
|
|
| MD5 |
f105cb20799c8b4b5b2e814c87d2355f
|
|
| BLAKE2b-256 |
5415ebe1780f23fba7fe524235788a429788b70617e3c3437fc1c8e304b17a7d
|
Provenance
The following attestation bundles were made for agentic_security_harness-1.0.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on krivonosoff161/agentic-security-harness
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentic_security_harness-1.0.0-py3-none-any.whl -
Subject digest:
fd153fae4cc7abdbf8936e9d9eff56a1c08400d2ef4b3186e2e2e126f5a592fb - Sigstore transparency entry: 2468313321
- Sigstore integration time:
-
Permalink:
krivonosoff161/agentic-security-harness@71295922b8053a188431d0f510f1e9146435c742 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/krivonosoff161
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@71295922b8053a188431d0f510f1e9146435c742 -
Trigger Event:
workflow_dispatch
-
Statement type: