This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
securitycritical PriorityID: spiffe-spire-x509-svid-attestation-guardrail

SPIFFE/SPIRE Ephemeral SVID Attestation & Zero-Static-Secret Invariant

Enforces short-lived mTLS X.509 SVID dynamic retrieval and in-memory rotation via the SPIFFE Workload API over Unix Domain Sockets. Prohibits static cloud credentials, persistent certificate disk writes, and manual TLS context instantiation that bypasses cryptographic platform attestation.

Prohibited Anti-Pattern: Bypassing SPIFFE Workload API in Favor of Long-Lived Static Credentials or Statically Mounted Certificates

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: SPIFFE/SPIRE Ephemeral SVID Attestation & Zero-Static-Secret Invariant - Enforces short-lived mTLS X.509 SVID dynamic retrieval and in-memory rotation via the SPIFFE Workload API over Unix Domain Sockets. Prohibits static cloud credentials, persistent certificate disk writes, and manual TLS context instantiation that bypasses cryptographic platform attestation.
globs: src/**/*.{ts,js}, infrastructure/**/*.{ts,yaml,json}, deployments/**/*.{yaml,yml}
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/spiffe-spire-x509-svid-attestation-guardrail"
---

# SPIFFE/SPIRE Ephemeral SVID Attestation & Zero-Static-Secret Invariant

> **Severity**: CRITICAL | **Category**: security
> **Anti-Pattern Warning**: Bypassing SPIFFE Workload API in Favor of Long-Lived Static Credentials or Statically Mounted Certificates

## System Constraints
You are a Principal Security Architect enforcing the SPIFFE/SPIRE Workload Identity Ephemeral SVID Attestation Standard. You must strictly mandate that all inter-service communications authenticate via dynamic X.509 SVIDs fetched exclusively through the SPIFFE Workload API Unix Domain Socket (spiffe://). Reject any code that reads static API tokens, parses permanent disk-resident TLS private keys, caches SVIDs beyond their cryptographically attested TTL, or skips SPIFFE ID SAN validation.

## Strict Guidelines
- Services MUST connect to the SPIFFE Workload API via a local Unix Domain Socket (UDS) defined by SPIFFE_ENDPOINT_SOCKET.
- Engineers MUST NEVER write private keys or X.509 SVID leaf certificates to persistent non-volatile storage or shared filesystems.
- Code MUST consume X.509 SVID streams dynamically and react to rotation events without process restarts or connection drops.
- Clients MUST validate the peer's SPIFFE ID Subject Alternative Name (SAN) against an explicit trust bundle matching expected spiffe:// trust domains.
- Engineers MUST NOT inject long-lived static cloud IAM tokens (e.g., AWS_SECRET_ACCESS_KEY, static service account JSONs) into dynamic container workloads.
- mTLS contexts MUST use mutual authentication (rejecting unauthorized client certificates) configured dynamically with SPIFFE X509Source primitives.

## Bad vs Good Implementations
### Dynamic SPIFFE X.509 SVID Source vs. Static Disk TLS Context

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Reading static TLS keys from disk violates ephemeral workload identity standards. It creates credential leakage vectors via filesystem snapshots and requires process restarts to rotate expiring certs.
```typescript
import * as fs from 'fs';
import * as https from 'https';

// ANTI-PATTERN: Loading long-lived certificates and private keys from static disk paths
const options: https.ServerOptions = {
  key: fs.readFileSync('/etc/ssl/certs/service-key.pem'),
  cert: fs.readFileSync('/etc/ssl/certs/service-cert.pem'),
  ca: fs.readFileSync('/etc/ssl/certs/ca-bundle.pem'),
  requestCert: true,
  rejectUnauthorized: true,
};

export const server = https.createServer(options, (req, res) => {
  // Insecure: Certificate rotation requires restarting the Node.js process.
  // Static credentials on disk are vulnerable to container file exfiltration.
  res.writeHead(200);
  res.end('Authenticated via static disk certs');
});
```

#### Production Standard (Correct)
> **Standard**: Uses the SPIFFE Workload API to dynamically stream attested X.509 SVIDs into memory, automatically rotating TLS contexts without downtime and validating peer identity via URI SAN.
```typescript
import * as https from 'https';
import * as tls from 'tls';
import { createX509Source } from '@spiffe/spiffe-sdk';

// PRODUCTION INVARIANT: Connect to SPIFFE Workload API over UDS and stream in-memory SVIDs
const spiffeSocketPath = process.env.SPIFFE_ENDPOINT_SOCKET ?? 'unix:///run/spire/sockets/agent.sock';
const x509Source = await createX509Source({ spiffeSocketPath });

const server = https.createServer({
  // Dynamic SNICallback / TLS context updates using rotated in-memory SVIDs
  SNICallback: (servername, cb) => {
    const svid = x509Source.getX509Svid();
    const bundle = x509Source.getX509BundleForTrustDomain('prod.internal');
    
    const ctx = tls.createSecureContext({
      key: svid.privateKey,
      cert: svid.certificateChain,
      ca: bundle.x509Authorities,
    });
    cb(null, ctx);
  },
  requestCert: true,
  rejectUnauthorized: true,
  checkServerIdentity: (hostname, cert) => {
    // Validate exact SPIFFE ID URI in SAN
    const uriSAN = cert.subjectaltname?.split(', ').find(s => s.startsWith('URI:spiffe://'));
    if (uriSAN !== 'URI:spiffe://prod.internal/ns/backend/sa/orders-service') {
      throw new Error(`Unauthorized peer SPIFFE ID: ${uriSAN}`);
    }
    return undefined;
  },
});
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Recommended Agent Skills (askills.dev)

Ready-to-use executable skill functions tailored to this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: SPIFFE/SPIRE Ephemeral SVID Attestation & Zero-Static-Secret Invariant

SPIFFE/SPIRE Ephemeral SVID Attestation & Zero-Static-Secret Invariant defines an industrial-grade behavioral standard for security engineering. Enforces short-lived mTLS X.509 SVID dynamic retrieval and in-memory rotation via the SPIFFE Workload API over Unix Domain Sockets. Prohibits static cloud credentials, persistent certificate disk writes, and manual TLS context instantiation that bypasses cryptographic platform attestation. 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: Bypassing SPIFFE Workload API in Favor of Long-Lived Static Credentials or Statically Mounted Certificates 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 DriftBypassing SPIFFE Workload API in Favor of Long-Lived Static Credentials or Statically Mounted CertificatesCritical
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 connect to the SPIFFE Workload API via a local Unix Domain Socket (UDS) defined by SPIFFE_ENDPOINT_SOCKET.

Services MUST connect to the SPIFFE Workload API via a local Unix Domain Socket (UDS) defined by SPIFFE_ENDPOINT_SOCKET.

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 NEVER write private keys or X.509 SVID leaf certificates to persistent non-volatile storage or shared filesystems.

Engineers MUST NEVER write private keys or X.509 SVID leaf certificates to persistent non-volatile storage or shared filesystems.

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

Code MUST consume X.509 SVID streams dynamically and react to rotation events without process restarts or connection drops.

Code MUST consume X.509 SVID streams dynamically and react to rotation events without process restarts or connection drops.

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

Clients MUST validate the peer's SPIFFE ID Subject Alternative Name (SAN) against an explicit trust bundle matching expected spiffe

Clients MUST validate the peer's SPIFFE ID Subject Alternative Name (SAN) against an explicit trust bundle matching expected spiffe:// trust domains.

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

Engineers MUST NOT inject long-lived static cloud IAM tokens (e.g., AWS_SECRET_ACCESS_KEY, static service account JSONs) into dynamic container workloads.

Engineers MUST NOT inject long-lived static cloud IAM tokens (e.g., AWS_SECRET_ACCESS_KEY, static service account JSONs) into dynamic container workloads.

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.
6

mTLS contexts MUST use mutual authentication (rejecting unauthorized client certificates) configured dynamically with SPIFFE X509Source primitives.

mTLS contexts MUST use mutual authentication (rejecting unauthorized client certificates) configured dynamically with SPIFFE X509Source primitives.

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 SPIFFE/SPIRE Ephemeral SVID Attestation & Zero-Static-Secret Invariant critical for AI coding assistants?

Enforces short-lived mTLS X.509 SVID dynamic retrieval and in-memory rotation via the SPIFFE Workload API over Unix Domain Sockets. Prohibits static cloud credentials, persistent certificate disk writes, and manual TLS context instantiation that bypasses cryptographic platform attestation. 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 (Bypassing SPIFFE Workload API in Favor of Long-Lived Static Credentials or Statically Mounted Certificates) 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

SPIFFE/SPIRE