This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
securitycritical PriorityID: ml-kem-hybrid-tls-downgrade-protection

ML-KEM Hybrid TLS 1.3 Post-Quantum Forward Secrecy & Downgrade Prevention

Enforces hybrid classical and post-quantum lattice key exchange (X25519MLKEM768/SecP256r1MLKEM768) within TLS 1.3 architectures to mitigate Store-Now-Decrypt-Later (SNDL) harvesting. Prevents active MitM cipher downgrade attacks by establishing mandatory post-quantum group constraints and verifying negotiated key encapsulation mechanisms post-handshake.

Prohibited Anti-Pattern: Permissive TLS key-share negotiation allowing silent fallback to pure classical ECDHE without ML-KEM hybrid encapsulation

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: ML-KEM Hybrid TLS 1.3 Post-Quantum Forward Secrecy & Downgrade Prevention - Enforces hybrid classical and post-quantum lattice key exchange (X25519MLKEM768/SecP256r1MLKEM768) within TLS 1.3 architectures to mitigate Store-Now-Decrypt-Later (SNDL) harvesting. Prevents active MitM cipher downgrade attacks by establishing mandatory post-quantum group constraints and verifying negotiated key encapsulation mechanisms post-handshake.
globs: src/**/network/**/*.{ts,js}, src/**/tls/**/*.{ts,js}, src/**/crypto/**/*.{ts,js}, src/**/gateway/**/*.{ts,js}, src/**/http/**/*.{ts,js}
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/ml-kem-hybrid-tls-downgrade-protection"
---

# ML-KEM Hybrid TLS 1.3 Post-Quantum Forward Secrecy & Downgrade Prevention

> **Severity**: CRITICAL | **Category**: security
> **Anti-Pattern Warning**: Permissive TLS key-share negotiation allowing silent fallback to pure classical ECDHE without ML-KEM hybrid encapsulation

## System Constraints
You are a Principal Security Architect enforcing ML-KEM Hybrid TLS 1.3 Post-Quantum Key Encapsulation Downgrade Protection. Store-Now-Decrypt-Later (SNDL) adversaries capture encrypted ingress/egress channels today to decrypt them using future cryptanalytically relevant quantum computers (CRQCs). You must strictly mandate hybrid classical/post-quantum key agreements (e.g., X25519MLKEM768 / SecP256r1MLKEM768), pin TLS 1.3 as the strict minimum protocol version, and implement programmatic post-handshake assertions that abort connections if a classical-only key exchange is negotiated.

## Strict Guidelines
- Services MUST mandate TLS 1.3 (`minVersion: 'TLSv1.3'`) across all secure client and server contexts; TLS 1.2 and below MUST NOT be enabled.
- Engineers MUST specify hybrid post-quantum groups (such as `X25519MLKEM768` or `SecP256r1MLKEM768`) at the highest priority in the TLS `ecdhCurve` or `supported_groups` configuration.
- TLS clients MUST inspect the negotiated ephemeral key exchange metadata via socket events (`secureConnect`) and terminate the socket immediately via `socket.destroy(new Error(...))` if the negotiated group is not an approved ML-KEM hybrid variant.
- Engineers MUST NOT provide permissive fallback chains that omit post-quantum encapsulation when communicating with high-assurance or internal RPC endpoints.
- Components NEVER store or process payload data prior to programmatic verification of the post-quantum key agreement group.

## Bad vs Good Implementations
### Enforcing ML-KEM Hybrid Group and Post-Handshake Rollback Assertion in TLS Client

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: The connection configures TLS 1.2 as an acceptable protocol version and relies on default system curves. This enables active network adversaries to strip post-quantum key share extensions during ClientHello/ServerHello negotiation, downgrading the session to pure ECDH and exposing traffic to SNDL decryption.
```typescript
import tls from 'node:tls';

export function createSecureAgentConnection(host: string, port: number) {
  // Anti-pattern: Default curve negotiation allows downgrade to classical P-256 or pure X25519
  const socket = tls.connect({
    host,
    port,
    minVersion: 'TLSv1.2', // Flaw: Allows TLS 1.2 which lacks standardized ML-KEM hybrid key shares
    rejectUnauthorized: true,
  });

  socket.on('secureConnect', () => {
    // Flaw: Omits inspection of ephemeral key exchange mechanism; vulnerable to silent downgrade
    console.log('Securely connected to upstream host');
  });

  return socket;
}
```

#### Production Standard (Correct)
> **Standard**: The implementation forces TLS 1.3, prioritizes ML-KEM hybrid key groups, and verifies the negotiated ephemeral group upon handshake completion via `socket.getEphemeralKeyInfo()`. If the peer or an active MitM strips the hybrid key share down to a classical curve, the connection is instantly destroyed before transmitting application data.
```typescript
import tls from 'node:tls';

const APPROVED_PQ_HYBRID_GROUPS = new Set([
  'X25519MLKEM768',
  'x25519_kyber768', // OpenSSL / BoringSSL draft alias compatibility
  'SecP256r1MLKEM768'
]);

export function createSecureAgentConnection(host: string, port: number): tls.TLSSocket {
  const socket = tls.connect({
    host,
    port,
    minVersion: 'TLSv1.3', // Invariant: Strict TLS 1.3 required for ML-KEM key encapsulation
    maxVersion: 'TLSv1.3',
    ecdhCurve: 'X25519MLKEM768:x25519_kyber768:SecP256r1MLKEM768',
    rejectUnauthorized: true,
  });

  socket.on('secureConnect', () => {
    const ephemeralKeyInfo = socket.getEphemeralKeyInfo();
    
    // Invariant: Ephemeral group MUST exist and MUST match an approved post-quantum hybrid group
    const negotiatedGroup = ephemeralKeyInfo && 'name' in ephemeralKeyInfo ? ephemeralKeyInfo.name : undefined;

    if (!negotiatedGroup || !APPROVED_PQ_HYBRID_GROUPS.has(negotiatedGroup)) {
      socket.destroy(
        new Error(
          `Security invariant violation: Post-quantum downgrade detected. ` +
          `Negotiated group: '${negotiatedGroup ?? 'none'}'. ML-KEM hybrid is strictly mandated.`
        )
      );
      return;
    }
  });

  return socket;
}
```

Architectural Specification & Invariant Rationale

Architectural Invariant Design: ML-KEM Hybrid TLS 1.3 Post-Quantum Forward Secrecy & Downgrade Prevention

ML-KEM Hybrid TLS 1.3 Post-Quantum Forward Secrecy & Downgrade Prevention defines an industrial-grade behavioral standard for security engineering. Enforces hybrid classical and post-quantum lattice key exchange (X25519MLKEM768/SecP256r1MLKEM768) within TLS 1.3 architectures to mitigate Store-Now-Decrypt-Later (SNDL) harvesting. Prevents active MitM cipher downgrade attacks by establishing mandatory post-quantum group constraints and verifying negotiated key encapsulation mechanisms post-handshake. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Permissive TLS key-share negotiation allowing silent fallback to pure classical ECDHE without ML-KEM hybrid encapsulation Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftPermissive TLS key-share negotiation allowing silent fallback to pure classical ECDHE without ML-KEM hybrid encapsulationCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Services MUST mandate TLS 1.3 (`minVersion

Services MUST mandate TLS 1.3 (`minVersion: 'TLSv1.3'`) across all secure client and server contexts; TLS 1.2 and below MUST NOT be enabled.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST specify hybrid post-quantum groups (such as `X25519MLKEM768` or `SecP256r1MLKEM768`) at the highest priority in the TLS `ecdhCurve` or `supported_groups` configuration.

Engineers MUST specify hybrid post-quantum groups (such as `X25519MLKEM768` or `SecP256r1MLKEM768`) at the highest priority in the TLS `ecdhCurve` or `supported_groups` configuration.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

TLS clients MUST inspect the negotiated ephemeral key exchange metadata via socket events (`secureConnect`) and terminate the socket immediately via `socket.destroy(new Error(...))` if the negotiated group is not an approved ML-KEM hybrid variant.

TLS clients MUST inspect the negotiated ephemeral key exchange metadata via socket events (`secureConnect`) and terminate the socket immediately via `socket.destroy(new Error(...))` if the negotiated group is not an approved ML-KEM hybrid variant.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Engineers MUST NOT provide permissive fallback chains that omit post-quantum encapsulation when communicating with high-assurance or internal RPC endpoints.

Engineers MUST NOT provide permissive fallback chains that omit post-quantum encapsulation when communicating with high-assurance or internal RPC endpoints.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Components NEVER store or process payload data prior to programmatic verification of the post-quantum key agreement group.

Components NEVER store or process payload data prior to programmatic verification of the post-quantum key agreement group.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is ML-KEM Hybrid TLS 1.3 Post-Quantum Forward Secrecy & Downgrade Prevention critical for AI coding assistants?

Enforces hybrid classical and post-quantum lattice key exchange (X25519MLKEM768/SecP256r1MLKEM768) within TLS 1.3 architectures to mitigate Store-Now-Decrypt-Later (SNDL) harvesting. Prevents active MitM cipher downgrade attacks by establishing mandatory post-quantum group constraints and verifying negotiated key encapsulation mechanisms post-handshake. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Permissive TLS key-share negotiation allowing silent fallback to pure classical ECDHE without ML-KEM hybrid encapsulation) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

ML-KEM