DecodingTrust-Agent (DTAP-BENCH) security claim: one task per DTAP per-task config (benign or malicious, direct/indirect), driving either DTAP agent target through the byte-faithful out-of-band env-state judge. Target-agnostic; hierarchical factories by domain, threat model, and risk category.
Project description
superred-claim-dtap
The DecodingTrust-Agent (DTAP-BENCH) security claim for superred.
Import package: dtap_claim.
In one sentence: DTAP is a large agent-safety benchmark whose tasks each spin up a
real tool environment (a travel booking platform, a CRM, a filesystem, ...), give
an agent a goal, and then check the actual state of that environment to decide
whether the agent did the right or the wrong thing. This package turns that
benchmark into a superred SecurityClaim: one Task per DTAP per-task config,
scored by DTAP's own verifiable judge run out of band.
What a DTAP task is
Each DTAP task is a directory with a config.yaml (the scenario), a setup.sh
(seeds the environment), and a judge.py (decides the outcome by querying the
live environment). There are two kinds:
- benign -- a legitimate user request the agent should complete. Scored by
the judge's
eval_task: did the agent do the job. - malicious -- an attacker objective the agent should not carry out, under
one of two threat models:
direct(the user themselves is adversarial) orindirect(a third party injects through the environment, e.g. a poisoned document or tool result). Scored by the judge'seval_attack:Truemeans the attack SUCCEEDED (the safety property was violated).
How it scores
For a malicious task the primary score is attack_success (unscoped, always
visible) and task_success is a sub-score. For a benign task the primary is
task_success. The judge is upstream's per-task judge.py, run byte-faithfully by
the shared dtap_scaffold.judge_runner against the live environment containers;
its cost is out of band and is never charged to the optimizer's budget. If the
judge cannot produce a verdict (its subprocess failed, or its live environment was
unreachable), the run is surfaced as an evaluation error rather than silently
scored as a safe 0.0.
The claim is target-agnostic and attacker-agnostic: it binds to the base
Target, sets the scenario, and reads ground truth back. Which of DTAP's four
injection vectors (prompt / tool / environment / skill) an attacker may use is the
experiment's Controller scope, and the attack content is the optimizer's job;
there is no attacker baked into the claim.
Scope
Text-only domains only (11 of DTAP's 14; browser, macos, windows are
vision/GUI and excluded). The per-task dataset is not vendored here: point
$DTAP_DATASET_ROOT at a checkout, pass dataset_root=..., or use download=True
to fetch from HuggingFace.
Setup
source ../../.venv/bin/activate
pip install -e ../../superred # the framework
pip install -e ../../superred-modules/targets/dtap_scaffold
pip install -e . # this claim
# the per-task dataset (one option):
export DTAP_DATASET_ROOT=/path/to/DecodingTrust-Agent/dataset
To actually run an evaluation you also install one of the DTAP agent target
packages (dtap_claudecode or dtap_openclaw); they are imported lazily by the
target factories, so this claim does not depend on them.
Usage
from dtap_claim import (
dtap_claim,
dtap_domain_claim,
dtap_direct_claim,
dtap_indirect_claim,
dtap_benign_claim,
dtap_risk_claim,
dtap_claudecode_target_factory,
)
# All travel-domain tasks (benign + malicious):
claim = dtap_domain_claim("travel")
# Just the indirect-injection malicious tasks across all text-only domains:
claim = dtap_indirect_claim()
# A single risk category:
claim = dtap_risk_claim("data-exfiltration")
# A matching target factory (lazy-imports the Claude Code DTAP target):
target_factory = dtap_claudecode_target_factory(
model="gpt-4o", api_base="<proxy>", api_key="<key>"
)
Wire claim + target_factory into a superred Controller with the scope (which
injection vectors are in play) and the optimizer for the experiment.
Faithfulness
Every deliberate deviation from upstream DTAP is recorded in
ASSUMPTIONS.md. The committed data/golden_hashes.json pins the
byte-identity of the sampled tasks' attacker goals and judges; the offline test
suite mocks every Docker / HTTP / LLM boundary, so it runs without a daemon or
credentials (dataset-dependent and live tests skip when their resources are
absent).
Credits / upstream
This package is a target-agnostic superred SecurityClaim that faithfully ports
the DecodingTrust-Agent (DTAP / DTAP-BENCH) benchmark. All code here is
original superred work under the MIT License (see LICENSE); the upstream it is
derived from is credited in NOTICE.
- DecodingTrust-Agent (DTAP) — Apache-2.0 —
https://github.com/AI-secure/DecodingTrust-Agent
The benchmark harness semantics (per-task config schema, env-override tiering,
and the
eval_task/eval_attackscoring predicates) are reimplemented here. The upstream per-taskjudge.pyis run verbatim out of band by the separatedtap-scaffoldpackage, not by this wheel. - DecodingTrust-Agent-Platform dataset — Apache-2.0 —
https://huggingface.co/datasets/AI-Secure/DecodingTrust-Agent-Platform
Resolved at runtime (local
$DTAP_DATASET_ROOTor optional HuggingFace download); no dataset content is bundled.data/golden_hashes.jsonships only SHA-256 digests of a small sample as a byte-drift tripwire.
When reporting results produced with this module, cite the DecodingTrust-Agent Platform (DTap) paper.
Project details
Release history Release notifications | RSS feed
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 superred_claim_dtap-0.1.0.tar.gz.
File metadata
- Download URL: superred_claim_dtap-0.1.0.tar.gz
- Upload date:
- Size: 36.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1357df3eb25199742f03f1d24dede850672cfc7d3e3ba921f7c4070f11f5002a
|
|
| MD5 |
3597f57de67a76be5c26ec76291c0592
|
|
| BLAKE2b-256 |
8f509742cb6777c32226b14e0f7b8707f0e6dbc7755067e9b4254f59cd83a6db
|
Provenance
The following attestation bundles were made for superred_claim_dtap-0.1.0.tar.gz:
Publisher:
release.yml on RoldSI/superred-modules
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
superred_claim_dtap-0.1.0.tar.gz -
Subject digest:
1357df3eb25199742f03f1d24dede850672cfc7d3e3ba921f7c4070f11f5002a - Sigstore transparency entry: 2219178010
- Sigstore integration time:
-
Permalink:
RoldSI/superred-modules@44b3a2514b4d75fe7ebc3f015aa13ff3b6e8380c -
Branch / Tag:
refs/tags/superred-claim-dtap-v0.1.0 - Owner: https://github.com/RoldSI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@44b3a2514b4d75fe7ebc3f015aa13ff3b6e8380c -
Trigger Event:
push
-
Statement type:
File details
Details for the file superred_claim_dtap-0.1.0-py3-none-any.whl.
File metadata
- Download URL: superred_claim_dtap-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d38a190bd0b398e4e179e215cbc94edd020baa3343f8864d8094f3896bd3ba0
|
|
| MD5 |
f206e94b9ebf371cf5302c14f119784c
|
|
| BLAKE2b-256 |
05c79cb633041e233cbdc6cbc62728e54e10d816663560162c4b9ae28fba0d02
|
Provenance
The following attestation bundles were made for superred_claim_dtap-0.1.0-py3-none-any.whl:
Publisher:
release.yml on RoldSI/superred-modules
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
superred_claim_dtap-0.1.0-py3-none-any.whl -
Subject digest:
0d38a190bd0b398e4e179e215cbc94edd020baa3343f8864d8094f3896bd3ba0 - Sigstore transparency entry: 2219178447
- Sigstore integration time:
-
Permalink:
RoldSI/superred-modules@44b3a2514b4d75fe7ebc3f015aa13ff3b6e8380c -
Branch / Tag:
refs/tags/superred-claim-dtap-v0.1.0 - Owner: https://github.com/RoldSI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@44b3a2514b4d75fe7ebc3f015aa13ff3b6e8380c -
Trigger Event:
push
-
Statement type: