Deterministic Security Standard

AGSSH-STD-001

The Air-Gapped Static Surface Hardening standard — 57 property-based, fail-closed conformance rules that prove a static or client-side surface talks only to its own origin.

AGSSH conformance badge for this site
v1.5.1  ·  57 rules · 9 families · Bronze / Silver / Gold · PDF · runner & source

A surface — a client-side tool, a docs site, a marketing page — should talk only to its own origin. AGSSH-STD-001 pins that property down as 57 testable rules, and agssh is the deterministic, fail-closed runner that enforces them against the live deployment.

Profiles
Bronze ⊂ Silver ⊂ Gold, cumulative
Levels
L0 strict · L1 scoped · L2 marketing
Posture
Fail-closed — nothing is green unless proven
Evidence
Externally derived, signed conformance record

This page eats its own dog food.

agssh.dev is a static surface published behind Cloudflare, and it passes AGSSH-STD-001 at its highest bar. The badge above is generated by agssh scanning this very site — a fail-closed claim that reproduces from the signed conformance record (and its SBOM). The standard that says "prove it" proves it.

The 57 rules

Nine families, three cumulative profiles (BronzeSilverGold), three strictness levels (L0 strict air-gap · L1 scoped egress · L2 marketing). Full normative text is in the PDF.

AG-NET — Egress & Air-Gap

RuleRequirementObl.SeverityProfileLevels
AG-NET-01Self-host every runtime dependencyMUSTCRITICALBronzeL0 L1 L2
AG-NET-02Override library default CDN loadersMUSTCRITICALBronzeL0 L1 L2
AG-NET-03Same-origin workers; constrain worker-srcMUSTHIGHSilverL0 L1 L2
AG-NET-04Constrain connect-srcMUSTCRITICALBronzeL0 L1 (conditional · L2)
AG-NET-05No third-party egress during loadMUSTHIGHSilverL0 (SHOULD · L1)
AG-NET-06No third-party connection primingMUSTMEDIUMSilverL0 L1 (SHOULD · L2)
AG-NET-07Service Worker hygieneMUSTHIGHSilverwhen a service worker is registered
AG-NET-08Violation/error reporting stays same-originMUSTMEDIUMSilverL0 L1
AG-NET-09External _blank links sever the opener; privacy surfaces sever the referrerMUSTMEDIUMBronzeL0 L1 L2

AG-CSP — Content Security Policy

RuleRequirementObl.SeverityProfileLevels
AG-CSP-01Ship a CSPMUSTHIGHBronzeL0 L1 L2
AG-CSP-02Deny by default; enumerate; forbid bypass primitivesMUSTHIGHBronzeL0 L1 L2
AG-CSP-03Clickjacking control must be header-deliveredMUSTHIGHBronzeL0 L1 L2
AG-CSP-04Stage report-only before enforcingSHOULDMEDIUMSilverall (mandatory before first enforcing deploy)
AG-CSP-05Force HTTPS subresourcesMUSTMEDIUMSilverL0 L1 L2
AG-CSP-06Trusted Types for DOM sinksMUSTHIGHSilverL0 L1 (SHOULD · L2)

AG-HDR — Transport & Response Headers

RuleRequirementObl.SeverityProfileLevels
AG-HDR-01HSTS with a real max-ageMUSTHIGHBronzeheader-capable backends
AG-HDR-01aHSTS scope is sticky — gate itMUSTHIGHSilverbefore enabling AG-HDR-01
AG-HDR-02Disable MIME sniffingMUSTHIGHBronzeheader-capable
AG-HDR-03X-Frame-OptionsMUSTHIGHBronzeheader-capable (pairs with AG-CSP-03)
AG-HDR-04Referrer-PolicyMUSTMEDIUMSilverheader-capable
AG-HDR-05Permissions-PolicyMUSTMEDIUMSilverheader-capable
AG-HDR-06Cross-origin isolation for threaded WASMMUSTMEDIUMGoldwhen SharedArrayBuffer / threaded WASM is used
AG-HDR-07Cache discipline for fingerprinted assetsSHOULDLOWSilverheader-capable
AG-HDR-08TLS floorMUSTHIGHSilverheader-capable

AG-DNS — DNS & Issuance Trust Anchors

RuleRequirementObl.SeverityProfileLevels
AG-DNS-01CAA pins certificate issuanceMUSTHIGHSilverL0 L1 L2
AG-DNS-02DNSSEC enabledSHOULDMEDIUMSilverL0 L1 L2
AG-DNS-03No danglable records (subdomain takeover)MUSTHIGHSilverL0 L1 L2

AG-SUP — Supply Chain & Build Integrity

RuleRequirementObl.SeverityProfileLevels
AG-SUP-01SRI on any unavoidable cross-origin subresourceMUSTHIGHSilverL0 L1 L2
AG-SUP-02Pin dependencies by integrity hashMUSTHIGHSilverL0 L1 L2
AG-SUP-03Reproducible build; pinned toolchainSHOULDMEDIUMSilverL0 L1 L2
AG-SUP-04No secrets in shipped outputMUSTHIGHBronzeL0 L1 L2
AG-SUP-05No unintended source mapsSHOULDLOWSilverL0 L1 L2
AG-SUP-06No known-vulnerable dependenciesMUSTHIGHBronzeL0 L1 L2
AG-SUP-07SBOM emitted and retainedSHOULDMEDIUMGoldL0 L1 L2
AG-SUP-08Signed releases / build provenanceSHOULDMEDIUMGoldL0 L1 L2

AG-CI — Build Pipeline / CI Hardening

RuleRequirementObl.SeverityProfileLevels
AG-CI-01Pin third-party Actions/steps to a full commit SHAMUSTHIGHSilverL0 L1 L2
AG-CI-02Least-privilege workflow tokensMUSTHIGHSilverL0 L1 L2
AG-CI-03No untrusted code in a privileged contextMUSTCRITICALSilverL0 L1 L2
AG-CI-04Secrets are not exposed to forks or echoedMUSTHIGHSilverL0 L1 L2
AG-CI-05Protected branch with the conformance gate requiredSHOULDMEDIUMSilverL0 L1 L2
AG-CI-06Automated contributors run under scoped identity and the same gateSHOULDMEDIUMGoldL0 L1 L2

AG-PRV — Privacy & Consent

RuleRequirementObl.SeverityProfileLevels
AG-PRV-01Zero telemetry on air-gapped surfacesMUSTCRITICALBronzeL0 L1 (privacy tools)
AG-PRV-02Prior blocking of non-essential third partiesMUSTCRITICALBronzeL2 (and anywhere a tracker exists)
AG-PRV-03Self-host fontsMUSTHIGHBronzeL0 L1 L2
AG-PRV-04Minimize storage & fingerprintingMUSTMEDIUMSilverL0 L1 (SHOULD · L2)
AG-PRV-05Cookie attributes where cookies existMUSTHIGHSilverwhen any cookie is set
AG-PRV-06Third-party embeds isolated and consent-gatedMUSTMEDIUMSilverL2 (forbidden · L0 L1)

AG-OUT — Output / Document Hygiene

RuleRequirementObl.SeverityProfileLevels
AG-OUT-01Neutralize output metadataMUSTMEDIUMSilverfile-generating tools
AG-OUT-02Deterministic outputSHOULDLOWGoldfile-generating tools
AG-OUT-03In-browser only, no server round-tripMUSTCRITICALBronzefile-generating tools

AG-GOV — Governance & Conformance Integrity

RuleRequirementObl.SeverityProfileLevels
AG-GOV-01Waivers can never cover a MUSTMUSTCRITICALBronzeall profiles
AG-GOV-02Waivers auto-expire; the runner enforces itMUSTHIGHSilverwhen deviations exist
AG-GOV-03Deviation budget / debt ceilingMUSTHIGHSilverL0 L1 L2
AG-GOV-04Segregation of duties on waiversMUSTHIGHGoldwhen deviations exist (Gold)
AG-GOV-05Conformance record is externally derived and signedMUSTHIGHGoldL0 L1 L2 (Gold)
AG-GOV-06Active egress canary - prove the wall, do not observe its silenceMUSTHIGHSilverL0 L1
AG-GOV-07Build environment is ephemeral and hermeticMUSTHIGHGoldL0 L1 L2 (Gold)

Run it yourself

Point the runner at any live URL and read the verdict — no build step:

go install github.com/fabriziosalmi/agssh/cmd/agssh@latest
agssh -config .airgap.yml -profile Gold

See the README for the GitHub Action and MCP-server entry points, and the PDF for the full normative text.