Problem statement
The harness can currently reject a denied tool call or an external recipient, but a trajectory can still reach a prohibited outcome through calls that are individually permitted.
For example, an agent may read confidential records, transform them, create an archive, upload it, and send a link. No single call needs to be forbidden; the security failure exists in the resulting world state and in the provenance connecting the steps. The same composition problem appears with split payments, gradual permission changes, or staged publication.
A per-trace assertion therefore needs a deterministic way to evaluate cumulative effects and provenance, not only isolated tool names or arguments.
Proposed solution
Add a narrowly scoped, vendor-neutral assertion family for a candidate name such as forbidden_state_not_reached.
The first version could stay intentionally small:
- A scenario declares a deterministic state model and one or more forbidden predicates.
- Recorded trace events carry normalized effects and provenance references.
- The assertion folds those effects in order, evaluates the predicate after every transition, and fails at the first forbidden state.
- Failure evidence reports the transition index, predicate ID, and redacted provenance chain.
- A paired control scenario demonstrates that the assertion does not block an equivalent legitimate workflow.
This does not require an LLM judge, a policy language, credential brokerage, or a general simulator. A minimal implementation could begin with one concrete outbound-data composition scenario and a small deterministic reducer.
The broader defensive architecture that motivated the proposal keeps service credentials outside the agent, issues narrow expiring one-use capabilities only after candidate-state evaluation, and records decision/execution provenance in an append-only evidence chain. That architecture is context for the assertion, not a requested dependency of the harness.
Alternatives considered
- Deny the final tool call. This misses allowed recipients, allowed storage destinations, split transactions, and other cases whose risk depends on cumulative provenance.
- Add more tool/argument rules. Useful, but it still treats each call in isolation and can recreate a large brittle allowlist.
- Use an LLM as judge. Broader, but conflicts with the harness preference for deterministic assertions and complicates reproducibility.
- Keep this outside the harness. Reasonable if normalized state transitions are judged too broad; in that case, a documented adapter contract for an external stateful assertion would still be useful.
Scope
In scope for an initial design discussion:
- one deterministic multi-step scenario;
- one paired legitimate control;
- a minimal normalized-effect/provenance shape;
- one assertion that fails when a declared predicate becomes true;
- tests showing both attack detection and control completion.
Out of scope:
- claiming complete world-state models or production security;
- model or vendor rankings;
- adaptive attack-rate estimates;
- generic policy engines or LLM-as-judge;
- requiring the CCG or ITHZ implementation in the harness.
Reproducible pilot offered as design evidence
The public pilot that exposed this gap used exactly one OpenClaw version, one low-cost model, four author-built attack/control pairs, known author-built predicates, deterministic synthetic services, and one run per condition (24 runs total). Observed forbidden-state counts were direct forwarding 4/4, stateless per-call policy 3/4, and stateful candidate-world authorization 0/4; all three conditions completed 4/4 paired legitimate controls.
This is author-designed pilot evidence, not a benchmark, independent replication, real-world attack-success estimate, proof of predicate completeness, production certification, or OWASP endorsement.
The most useful early criticism would be whether this can remain a small deterministic regression assertion, and which single scenario would best expose the state-model boundary without turning the harness into a general evaluation platform.
AI-assistance disclosure
This issue text was drafted with OpenAI Codex under the author's direction. The human author reviewed the proposal, owns the linked work, and remains responsible for the claims and any follow-up contribution.
Problem statement
The harness can currently reject a denied tool call or an external recipient, but a trajectory can still reach a prohibited outcome through calls that are individually permitted.
For example, an agent may read confidential records, transform them, create an archive, upload it, and send a link. No single call needs to be forbidden; the security failure exists in the resulting world state and in the provenance connecting the steps. The same composition problem appears with split payments, gradual permission changes, or staged publication.
A per-trace assertion therefore needs a deterministic way to evaluate cumulative effects and provenance, not only isolated tool names or arguments.
Proposed solution
Add a narrowly scoped, vendor-neutral assertion family for a candidate name such as
forbidden_state_not_reached.The first version could stay intentionally small:
This does not require an LLM judge, a policy language, credential brokerage, or a general simulator. A minimal implementation could begin with one concrete outbound-data composition scenario and a small deterministic reducer.
The broader defensive architecture that motivated the proposal keeps service credentials outside the agent, issues narrow expiring one-use capabilities only after candidate-state evaluation, and records decision/execution provenance in an append-only evidence chain. That architecture is context for the assertion, not a requested dependency of the harness.
Alternatives considered
Scope
In scope for an initial design discussion:
Out of scope:
Reproducible pilot offered as design evidence
The public pilot that exposed this gap used exactly one OpenClaw version, one low-cost model, four author-built attack/control pairs, known author-built predicates, deterministic synthetic services, and one run per condition (24 runs total). Observed forbidden-state counts were direct forwarding 4/4, stateless per-call policy 3/4, and stateful candidate-world authorization 0/4; all three conditions completed 4/4 paired legitimate controls.
This is author-designed pilot evidence, not a benchmark, independent replication, real-world attack-success estimate, proof of predicate completeness, production certification, or OWASP endorsement.
The most useful early criticism would be whether this can remain a small deterministic regression assertion, and which single scenario would best expose the state-model boundary without turning the harness into a general evaluation platform.
AI-assistance disclosure
This issue text was drafted with OpenAI Codex under the author's direction. The human author reviewed the proposal, owns the linked work, and remains responsible for the claims and any follow-up contribution.