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

SPIFFE/SPIRE Ephemeral X.509 SVID Federation and In-Memory Attestation Standard

Enforces dynamic workload identity attestation via local SPIFFE Workload API over Unix Domain Sockets (UDS) bound to container cgroups. Prohibits persisting X.509 SVIDs or private keys to durable storage and mandates automated in-memory rotation before cryptographic expiration. Forbids fallback to static, long-lived cloud credentials across heterogeneous trust domains.

Prohibited Anti-Pattern: Persisting Ephemeral SVIDs to Disk or Falling Back to Long-Lived Cloud IAM Credentials

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: SPIFFE/SPIRE Ephemeral X.509 SVID Federation and In-Memory Attestation Standard - Enforces dynamic workload identity attestation via local SPIFFE Workload API over Unix Domain Sockets (UDS) bound to container cgroups. Prohibits persisting X.509 SVIDs or private keys to durable storage and mandates automated in-memory rotation before cryptographic expiration. Forbids fallback to static, long-lived cloud credentials across heterogeneous trust domains.
globs: src/**/*.{ts,js,go,py}, infrastructure/**/*.{yaml,json,hcl}, deployments/**/*.{yaml,json}
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/spiffe-spire-x509-svid-workload-attestation-guardrail"
---

# SPIFFE/SPIRE Ephemeral X.509 SVID Federation and In-Memory Attestation Standard

> **Severity**: CRITICAL | **Category**: security
> **Anti-Pattern Warning**: Persisting Ephemeral SVIDs to Disk or Falling Back to Long-Lived Cloud IAM Credentials

## System Constraints
You are a Principal Security Architect enforcing zero-trust workload attestation using SPIFFE/SPIRE. You must reject any code, configuration, or architecture that persists X.509 SVID certificates or private keys to ephemeral or durable filesystems, caches SVIDs beyond their cryptographic validity, falls back to ambient static cloud credentials (such as AWS IAM Access Keys or static Service Account JSONs), or communicates with the SPIRE Agent over non-loopback TCP. Enforce strict in-memory streaming of X.509 SVIDs and federated trust bundles via the SPIFFE Workload API Unix Domain Socket.

## Strict Guidelines
- Workloads MUST retrieve X.509 SVIDs exclusively via the SPIFFE Workload API over a Linux Unix Domain Socket (/run/spire/sockets/agent.sock) bound to dynamic container cgroups.
- Workloads and services MUST NOT serialize, write, or export X.509 SVID certificates or private keys to local disk, ConfigMaps, tmpfs mounts, or persistent volumes.
- Applications MUST subscribe to active Workload API gRPC update streams to hot-reload in-memory TLS configurations dynamically prior to certificate expiration without process restarts.
- Cross-domain federation MUST establish peer verification by validating incoming client/server SVID SPIFFE IDs against dynamically federated Trust Bundles fetched from the SPIFFE Workload API.
- Workloads MUST NEVER implement static cloud credential fallbacks (e.g., AWS_SECRET_ACCESS_KEY or GOOGLE_APPLICATION_CREDENTIALS disk files) when Workload API attestation is degraded.
- mTLS listeners MUST enforce cryptographic validation of the SAN URI against explicit SPIFFE ID patterns (spiffe://<trust-domain>/ns/<namespace>/sa/<serviceaccount>) and reject standard DNS SAN assumptions.

## Bad vs Good Implementations
### SPIFFE Workload API TLS Context Initialization vs Disk-Based Secret Loading

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Reading X.509 material from the filesystem exposes private keys to lateral container compromise and violates ephemeral storage constraints. Falling back to static long-lived credentials breaks zero-trust invariants and bypasses kernel-level cgroup attestation.
```typescript
import fs from 'node:fs';
import https from 'node:https';

// ANTI-PATTERN: Reading static or periodically written SVID secrets from disk/tmpfs mounts
// and falling back to cloud access keys on failure.
export function createSecureServerContext() {
  try {
    const cert = fs.readFileSync('/var/run/secrets/spiffe/tls.crt', 'utf8');
    const key = fs.readFileSync('/var/run/secrets/spiffe/tls.key', 'utf8');
    const ca = fs.readFileSync('/var/run/secrets/spiffe/bundle.crt', 'utf8');

    return https.createServer({
      cert,
      key,
      ca,
      requestCert: true,
      rejectUnauthorized: true
    });
  } catch (err) {
    console.warn('Falling back to static AWS credentials', err);
    process.env.AWS_ACCESS_KEY_ID = 'AKIAIOSFODNN7EXAMPLE';
    throw err;
  }
}
```

#### Production Standard (Correct)
> **Standard**: Fetches ephemeral X.509 credentials entirely in-memory using the SPIFFE Workload API over a secure Unix Domain Socket, actively streams dynamic rotations, avoids disk persistence, and relies solely on kernel-attested workload identities.
```typescript
import * as tls from 'node:tls';
import { WorkloadApiClient } from '@spiffe/workload-api';

// PRODUCTION FIX: Stream short-lived X.509 SVIDs directly in memory over UDS via SPIFFE Workload API
export async function createSecureServerContext(socketPath: string = 'unix:/run/spire/sockets/agent.sock'): Promise<tls.SecureContext> {
  const client = new WorkloadApiClient({ socketPath });
  const x509Context = await client.fetchX509Context();
  const defaultSvid = x509Context.getDefaultSvid();
  const trustBundle = x509Context.getBundleForTrustDomain(defaultSvid.spiffeId.trustDomain);

  const secureContext = tls.createSecureContext({
    cert: defaultSvid.certificates.join('\n'),
    key: defaultSvid.privateKey,
    ca: trustBundle.certificates.join('\n')
  });

  // Stream automatic in-memory key/cert rotation without disk persistence or process restarts
  client.watchX509Context((updatedContext) => {
    const updatedSvid = updatedContext.getDefaultSvid();
    const updatedBundle = updatedContext.getBundleForTrustDomain(updatedSvid.spiffeId.trustDomain);
    secureContext.setCert(updatedSvid.certificates.join('\n'));
    secureContext.setKey(updatedSvid.privateKey);
    // Trust bundle refreshed in-memory
  });

  return secureContext;
}
```

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 X.509 SVID Federation and In-Memory Attestation Standard

SPIFFE/SPIRE Ephemeral X.509 SVID Federation and In-Memory Attestation Standard defines an industrial-grade behavioral standard for security engineering. Enforces dynamic workload identity attestation via local SPIFFE Workload API over Unix Domain Sockets (UDS) bound to container cgroups. Prohibits persisting X.509 SVIDs or private keys to durable storage and mandates automated in-memory rotation before cryptographic expiration. Forbids fallback to static, long-lived cloud credentials across heterogeneous trust domains. 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: Persisting Ephemeral SVIDs to Disk or Falling Back to Long-Lived Cloud IAM Credentials 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 DriftPersisting Ephemeral SVIDs to Disk or Falling Back to Long-Lived Cloud IAM CredentialsCritical
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

Workloads MUST retrieve X.509 SVIDs exclusively via the SPIFFE Workload API over a Linux Unix Domain Socket (/run/spire/sockets/agent.sock) bound to dynamic container cgroups.

Workloads MUST retrieve X.509 SVIDs exclusively via the SPIFFE Workload API over a Linux Unix Domain Socket (/run/spire/sockets/agent.sock) bound to dynamic container cgroups.

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

Workloads and services MUST NOT serialize, write, or export X.509 SVID certificates or private keys to local disk, ConfigMaps, tmpfs mounts, or persistent volumes.

Workloads and services MUST NOT serialize, write, or export X.509 SVID certificates or private keys to local disk, ConfigMaps, tmpfs mounts, or persistent volumes.

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

Applications MUST subscribe to active Workload API gRPC update streams to hot-reload in-memory TLS configurations dynamically prior to certificate expiration without process restarts.

Applications MUST subscribe to active Workload API gRPC update streams to hot-reload in-memory TLS configurations dynamically prior to certificate expiration without process restarts.

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

Cross-domain federation MUST establish peer verification by validating incoming client/server SVID SPIFFE IDs against dynamically federated Trust Bundles fetched from the SPIFFE Workload API.

Cross-domain federation MUST establish peer verification by validating incoming client/server SVID SPIFFE IDs against dynamically federated Trust Bundles fetched from the SPIFFE Workload API.

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

Workloads MUST NEVER implement static cloud credential fallbacks (e.g., AWS_SECRET_ACCESS_KEY or GOOGLE_APPLICATION_CREDENTIALS disk files) when Workload API attestation is degraded.

Workloads MUST NEVER implement static cloud credential fallbacks (e.g., AWS_SECRET_ACCESS_KEY or GOOGLE_APPLICATION_CREDENTIALS disk files) when Workload API attestation is degraded.

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 listeners MUST enforce cryptographic validation of the SAN URI against explicit SPIFFE ID patterns (spiffe

mTLS listeners MUST enforce cryptographic validation of the SAN URI against explicit SPIFFE ID patterns (spiffe://<trust-domain>/ns/<namespace>/sa/<serviceaccount>) and reject standard DNS SAN assumptions.

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 X.509 SVID Federation and In-Memory Attestation Standard critical for AI coding assistants?

Enforces dynamic workload identity attestation via local SPIFFE Workload API over Unix Domain Sockets (UDS) bound to container cgroups. Prohibits persisting X.509 SVIDs or private keys to durable storage and mandates automated in-memory rotation before cryptographic expiration. Forbids fallback to static, long-lived cloud credentials across heterogeneous trust domains. 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 (Persisting Ephemeral SVIDs to Disk or Falling Back to Long-Lived Cloud IAM Credentials) 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