Skip to content

[Agricola] AGR-2026-044: Body-aware successful responses lack private cache control #140

Description

@mpp-agricola

AGR-2026-044 — Body-aware successful responses lack private cache control

Last observed by the head-to-head audit at 2026-08-10T09:38:20.026276Z.

Audited heads

Target Repository Commit Conformance Semantic review
typescript wevm/mppx b7ab48e38e3d Complete Reference
rust tempoxyz/mpp-rs 28c704988b3d Complete Complete
go tempoxyz/mpp-go 266810add451 Complete Complete
java stripe/mpp-java bc52e0f5c77b Complete Complete
python tempoxyz/pympp 09b449739221 Complete Complete
ruby stripe/mpp-rb 58a98bbf6820 Complete Complete

Finding

  • Fingerprint: semantic:http-caching/receipt-response-is-private
  • Source: semantic
  • Affected SDKs: rust
  • Clean SDKs: none
  • Not reported by semantic review: go, java, python, ruby
  • Canonical reference: draft-httpauth-payment-00 § Caching
  • Severity: medium
  • Confidence: high

Evidence

SDK Canonical evidence SDK evidence Suggested test
rust http().respondReceipt — Adds private to the response's Cache-Control directives whenever it attaches Payment-Receipt. PaymentBodyService::call — Attaches Payment-Receipt after successful body-bound verification but returns the application response without adding private to Cache-Control. Pass a valid body-bound credential through PaymentBodyLayer with an inner response using Cache-Control: max-age=60; assert the result has Payment-Receipt and Cache-Control containing both max-age=60 and private.

rust: The target's body-aware middleware attaches Payment-Receipt but does not add Cache-Control: private. A shared intermediary may therefore cache a response containing sensitive receipt data, unlike canonical behavior.

Available /ag commands

Post a command as a new comment. Only configured maintainers can run these commands.

Target Automation Status Pull request
rust pr Recorded tempoxyz/mpp-rs#381

Quick action

Use GitHub's copy button, then post this command as a comment:

/ag fix
Command What it does
/ag fix Opens or retries draft fixes for every affected PR-enabled SDK.
/ag fix rust Opens or retries the draft fix for rust only.
/ag fix "instruction" Applies the instruction to affected fixes; recorded PRs also incorporate unresolved review feedback and failed CI.
/ag status Reports the current state of linked remediation pull requests.

Metadata

Metadata

Assignees

No one assigned

    Labels

    agricolaIssues managed by AgricolarustPull requests that update rust code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions