Skip to content

[Conformance] Reference host adapter cannot honor valid MODIFY with modified_content #181

Open

Description

@shivang-sec

What you ran

Reference implementation: reference-implementations/agt

Branch: integration

Commit: 27799c2

Host-adapter test:

bun test packages/host-adapter/test/validate-decision.test.ts -t "modified_content"

Environment:

  • Bun 1.4.2
  • AGT reference implementation at 27799c2

The filtered test run exercises the host-adapter validation path for ACS MODIFY decisions containing modified_content, including both the arguments gate and result gate.

What you expected

The ACS v0.1.0 specification defines MODIFY in §6.3 as having two mutually exclusive forms:

  1. wholesale replacement using modifications.modified_content; or
  2. structured edits using redactions and/or parameter_overrides.

In §6.3, the specification states that modified_content replaces the entire payload and is the wholesale-replacement form of MODIFY.

Section §6.4 further states that when a decision arrives within the negotiated timeout, the Observed Agent MUST honor the decision. For MODIFY, the agent MUST proceed with the modified payload according to §6.3.

Therefore, when the reference host adapter receives a valid MODIFY decision containing only modified_content, the expected behavior is that the Observed Agent can apply the wholesale replacement where the governed payload supports such a replacement, rather than treating the modified_content form itself as an invalid or unsupported decision.

What happened

The reference host adapter currently rejects the modified_content form and fails closed instead.

The implementation in:

packages/host-adapter/src/modifications.ts

does not provide a target for an opaque modified_content replacement and therefore fails closed instead of applying the wholesale replacement.

The repository already contains tests that pin this behavior:

  • denies a modify carrying only modified_content, for want of a target in an arguments object
  • denies a modified_content result modification, naming the outputs as well as the arguments

I ran:

bun test packages/host-adapter/test/validate-decision.test.ts -t "modified_content"

at commit 27799c2.

Result:

✓ validateDecision — malformed modifications fail closed (§6.3) > denies when modified_content is combined with parameter_overrides
✓ validateDecision — malformed modifications fail closed (§6.3) > denies a modify carrying only modified_content, for want of a target in an arguments object
✓ validateDecision — the result gate projects the applied document onto the host's output > denies a modified_content result modification, naming the outputs as well as the arguments

3 pass
48 filtered out
0 fail
12 expect() calls
Ran 3 tests across 1 file.

What's missing

Host-side support for applying modifications.modified_content when the governed payload can represent a complete replacement.

What needs to change

Either:

  1. implement a host/payload-aware path that can apply modified_content at supported MODIFY control points; or
  2. explicitly define the reference implementation's MODIFY capability as restricted to structured edits and make that restriction part of its conformance/profile claim.

Tests should cover the valid modified_content form at each host/gate where wholesale replacement is representable.

Why

modified_content is explicitly defined as one of the two normative MODIFY forms in §6.3, while §6.4 requires an Observed Agent to apply an arriving MODIFY decision.

The current reference implementation therefore cannot honor this valid ACS MODIFY form.

AGT capability assessment

The current AGT reference implementation does not implement the host-side path required to honor this valid ACS MODIFY form; this is a conformance gap, not merely a documentation gap..

Current Priority Scope

Feeds the runnable Guardian reference implementation

Activity

  1. added
    scope:in-focusFeeds the ninety-day committed outcome. Maintainers only
    status:acceptedIn the backlog. Maintainers only
    and removed
    status:needs-triageNot yet triaged. Applied by the issue forms
    on Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    scope:in-focusFeeds the ninety-day committed outcome. Maintainers onlystatus:acceptedIn the backlog. Maintainers onlytype:conformanceConformance or dogfooding report

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions