NawGate is the selected TechJam middleware track: backend-enforced identity and authorization for registered protected actions.
The control plane owns the human-to-Agent relationship. Each Run receives a
short-lived runtime identity containing the backend-owned human, Agent, and Run
binding. agentctl sends registered actions to RuntimeGateway, which loads
protected-resource metadata, evaluates PolicyEngine, and is the only path
that can execute a protected side effect.
project-a.project-b, even if an approval identifier is
supplied.bouncer-v5, deterministic risk version risk-v1, a safe
risk-facts digest, explanation, and RuntimeGateway as the enforcement point.verified, broken, or not_yet_verified; live persisted-file tampering
blocks new writes and protected actions without rewriting the damaged file.asset-user-a-video-2 publish/export path is critical and
requires User A’s owner authority plus the distinct Org A reviewer authority
held by User C. User B is not eligible for that Org A reviewer slot.content.moderate is a
processing-only action that returns an aggregate result without raw content;
content.disclose requires an exact backend-approved account/asset scope.
content.publish and content.export require owner approval and preserve
exact asset, destination, purpose, content-version, payload, and one-use
capability bindings.safety_moderation,
creator_requested_publish, approved_analytics, and
compliance_archive. Missing, unknown, mismatched, cross-business,
cross-asset, cross-user, and unregistered-destination inputs fail closed.tiktok-account:brand-sg,
tiktok-account:creator-demo, analytics:approved-dashboard, and
archive:compliance-store; each record binds the owning organisation,
business centre, account, allowed action/purpose, local HTTPS method/host/path
pattern, classification, enabled/disabled/revoked status, revision, and a credential
reference. Requests carry only the destination ID. The persisted catalogue
is authoritative; there is no arbitrary URL or static fallback path.The Delegation Receipt in the Web UI is a safe summary of the human, Agent, team membership role, persistent grant role/bundle, Run, temporary JIT scope, action, resource, risk tier/version, approval count/roles, safe approver identifiers, reason, policy version, enforcement point, timestamps, expiry, uses, and status. It never displays a runtime credential, API key, payload, or protected resource content.
The Audit timeline also shows the backend integrity status. Legacy events from before the v8 migration remain visible but are explicitly counted as unverified; they are never retroactively treated as part of the trusted chain.
When enabled for the local POC, the Security Lab in the side panel runs redacted scenarios through the real RuntimeGateway: own/cross-user resources, team files, a complete JIT approval/retry/cleanup lifecycle, capability replay, forged attributes, Run revocation, grant revocation, and a deterministic queued initial-allow → revoke → final-recheck denial. Opaque scenario references keep the Runtime credential server-side. It is disabled by default outside the local demo configuration.
NawGate protects registered actions routed through agentctl. It does not
intercept every internal Codex shell command or file operation inside a Run.
The disposable Runtime container is the demo boundary; this is not a claim of
hardened multi-tenant isolation.
The standards lineage and deliberate production limits are documented in
standards.md. Team-file authorization is a focused extension
of the Bouncer story, not a claim that the POC is a complete enterprise IAM
system.
npm run check
npm run test:container # optional; requires a built local Runtime image
The deterministic end-to-end test always runs as part of npm run test.
The real-container test is explicitly gated so ordinary CI does not need a
local Docker or Podman daemon.