UHP Client Threat Model

Trust boundaries, controls, residual risks, and operator review for UHP client transport

UHP client threat model

  • Scope: experimental AIWG client for UHP `2026-08-11`
  • Trust model: remote endpoint, harness output, events, errors, filenames, and

artifact bytes are untrusted

  • Out of scope: UHP server implementation and conformance
  • Release posture: any failing UHP security/conformance test blocks the normal

repository test gate

Trust boundaries

operator config ──secret reference──▶ request-time resolver
       │                                  │ bearer (memory only)
       ▼                                  ▼
AIWG routing ──pinned HTTPS request──▶ remote UHP server
       ▲                                  │
       └──untrusted JSON/SSE/artifacts─────┘
                     │
                     ▼
          approved artifact directory

Mission, Flow, Cockpit, activity, and audit receive normalized evidence plus namespaced native identifiers. They do not receive bearer values. A2A, MCP, provider deployment, and UHP remain separate routing domains.

Threats and controls

BoundaryThreatClient controlVerification
ConfigurationInline bearer copied into source or receiptsSchema and runtime validation accept only `{source:"env",name}` references; no bearer CLI flag exists`config-security.test.ts`, config schema
Credential resolutionToken leaks through messages, upstream detail, redirects, events, or logsResolve immediately before authenticated requests; structured redaction removes known values and bearer-like text; errors cap detail; discovery is unauthenticatedtyped-error and redaction tests
TransportDowngrade, plaintext interception, or lookalike endpointPin `UHP-Version: 2026-08-11` on every request and verify every response; require TLS except explicitly trusted loopback; validate discovery identity and class/capability consistencydiscovery/client tests
EndpointSSRF through profile, caller override, private literals, or redirectNo per-call endpoint override; reject URL credentials/fragments/non-HTTP schemes; private and loopback addresses require explicit policy; optional host allow-list; redirects default deny; authenticated cross-origin redirect always fails before forwardingendpoint/redirect tests
Principal scopeGuessed response/session/file identifiers reveal another principal's objectsValidate opaque prefixed identifiers; preserve server `404` typed failures without changing them to `403` or inferring existence; every operation authenticates independentlyerror mapping and identifier tests; two-principal live qualification remains required
Task submissionTimeout retry duplicates remote editsCanonical request digest binds `Idempotency-Key`; changed content cannot reuse a key; retryable ambiguous requests reuse the same key; unknown remote state remains explicitidempotency/retry tests
Session concurrencyBlind retry of `session_busy` starts duplicate workClassify as retryable but do not automatically resubmit; caller waits for authoritative terminal statetyped-error test
StreamingDropped/duplicated facts, malformed payload, multiple terminal resultsIncremental SSE parser requires first event, gapless sequence from zero, exactly one terminal event; unknown additive events remain compatibleSSE deterministic fixtures
DisconnectUI reports cancelled when remote work continuesDisconnect and inactivity timeout project `unknown`; stored-response read is authoritative; cancellation receipt alone is not terminal proofMission and reconciliation tests
Resource exhaustionUnbounded tasks, inactivity waits, uploads, downloads, or artifact setsPositive profile ceilings for task time, request/inactivity waits, uploads, artifact bytes/count, and retriesconfig/client/artifact tests
ArtifactsTraversal, encoded traversal, hostile filename, stored XSS, oversized bytes, symlink escapeStrict opaque ids, repeated percent-decoding and basename confinement, approved non-symlink destination, `nosniff`, byte/count caps, exclusive restrictive temporary files and atomic renamehostile artifact fixtures
RetentionClient overstates deletion or local persistence policyClient records remote identifiers and server result only; it does not claim server deletion, retention, or revocation guaranteesarchitecture review; live qualification
Error hygieneServer exposes token, internal path, host, or stackPreserve machine code but sanitize message/detail before surfacing; never serialize known bearerredaction tests

UHP security chapter client obligations

Credentials

The bearer is excluded from configuration, arguments, returned values, Mission evidence, errors, and activity payloads. AIWG cannot prove a server's provider credential isolation; server-side checks remain part of live qualification.

Object scope

The client never treats `403` as evidence that a guessed object exists and retains `404` object errors as terminal request failures. Full two-principal scope verification requires a live qualified endpoint and is not replaced by single-principal unit tests.

Hostile artifacts

Downloads require the normative `nosniff` header and an approved filesystem destination. Media type and transport ids remain in receipts/evidence; content is never executed or previewed by this client.

Prompt injection

The client exposes task budgets and preserves native event/tool facts. Harness selection and tool restriction are endpoint configuration concerns; the client does not claim that UHP makes untrusted content safe.

Resource exhaustion

All local waits and transfers are bounded. A task budget stop maps to `incomplete`, not success or failure. `session_busy` is never blindly retried.

Data handling and retention

AIWG retains only evidence required by Mission policy. Remote transcript, session, and artifact retention remain server policy and must be reported by the endpoint; the client does not invent a retention guarantee.

Transport and error hygiene

TLS and pinned version checks fail closed. Redirects are evaluated before any credential forwarding. Sanitized errors retain code, retryability, and unknown remote-state semantics without returning upstream secrets or raw bodies.

Residual risks and qualification gates

  • DNS rebinding and proxy behavior require deployment-level egress controls in

addition to application URL policy.

  • Two-principal object isolation and server retention need live endpoint tests.
  • A malicious but schema-valid server can lie about capabilities; qualification

must exercise behavior rather than trusting discovery alone.

  • Deterministic CI does not prove two-principal object isolation, remote

provider-key isolation, or server retention/deletion behavior. Those claims require an explicitly authorized live environment and endpoint-operator evidence.

  • Prompt injection remains possible through task input, repository content,

model output, tool output, events, errors, and downloaded files. Normalizing an object into Mission evidence does not make its content trusted and cannot authorize a policy, routing, tool, or filesystem change.

  • UHP remains experimental after its client qualification and documentation

gates. Graduation requires a separate release decision based on deployed endpoint evidence. This client implementation is not a server conformance claim.

Operator review checklist

Before enabling a profile, record and review:

  • the endpoint owner, allowed host, TLS termination, egress path, and whether

private-network or redirect exceptions are actually necessary;

  • the secret locator and its least-privilege principal, rotation process, and

revocation path without copying the bearer into the review record;

  • server-side harness tool restrictions, workspace isolation, provider-key

handling, object authorization, transcript/artifact retention, and deletion behavior;

  • local request/task/upload/download ceilings and the approved artifact

destination and scanning workflow;

  • the pinned UHP date and immutable live-qualification target, with skipped

and cost-bearing checks distinguished from executed checks; and

  • the response to unknown state, `session_busy`, substitution, incomplete work,

hostile output, and suspected prompt injection.

Re-run this review when the endpoint, credential principal, harness/tool policy, retention terms, UHP date, or AIWG client version changes.