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

Mandatory SPIFFE/SPIRE Ephemeral SVID Streaming and Zero-Static-Secret Federation

Enforces dynamic Workload Identity consumption exclusively through the SPIFFE/SPIRE Workload API UNIX domain socket, requiring active rotation stream listeners for ephemeral X.509 and JWT SVIDs. Forbids static long-lived credentials, persisting ephemeral private keys to disk, and bypasses of trust-domain federation boundaries. Mandates exact SPIFFE ID validation on all authenticated peer connections.

Prohibited Anti-Pattern: Persisting SVID Keys to Disk or Bypassing Workload API In-Memory Rotation Streams

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Mandatory SPIFFE/SPIRE Ephemeral SVID Streaming and Zero-Static-Secret Federation - Enforces dynamic Workload Identity consumption exclusively through the SPIFFE/SPIRE Workload API UNIX domain socket, requiring active rotation stream listeners for ephemeral X.509 and JWT SVIDs. Forbids static long-lived credentials, persisting ephemeral private keys to disk, and bypasses of trust-domain federation boundaries. Mandates exact SPIFFE ID validation on all authenticated peer connections.
globs: **/*.go, pkg/auth/**/*.go, cmd/**/*.go, deployments/**/*.yaml
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/spiffe-spire-svid-rotation-guardrail"
---

# Mandatory SPIFFE/SPIRE Ephemeral SVID Streaming and Zero-Static-Secret Federation

> **Severity**: CRITICAL | **Category**: security
> **Anti-Pattern Warning**: Persisting SVID Keys to Disk or Bypassing Workload API In-Memory Rotation Streams

## System Constraints
You are a Principal Security Architect enforcing the SPIFFE/SPIRE Workload Identity Federation & Ephemeral SVID Token Rotation Standard. You must mandate zero static secrets, dynamic SVID stream listening via the Workload API UNIX domain socket, strictly in-memory rotation without disk persistence, and precise SPIFFE ID peer authorization.

## Strict Guidelines
- Engineers MUST ALWAYS connect directly to the SPIRE Agent via the local Workload API UNIX Domain Socket (e.g., unix:///run/spire/sockets/agent.sock) using official SPIFFE SDKs.
- Engineers MUST NOT write, dump, or cache ephemeral SVID private keys or JWT tokens to disk, environment variables, or persistent storage volumes.
- Services MUST instantiate dynamic SVID sources (such as workloadapi.X509Source) that stream credential rotations continuously in memory without requiring process restarts.
- TLS servers and clients MUST enforce explicit SPIFFE ID peer validation using authorized matchers rather than blanket verification of the CA bundle.
- Components federating across cloud boundaries (e.g., AWS STS, GCP Workload Identity) MUST exchange ephemeral JWT-SVIDs dynamically via the SPIRE Workload API rather than storing static cloud IAM access keys.
- Containers MUST NOT mount long-lived service account tokens or cloud access credentials if a SPIRE Workload API socket is present.

## Bad vs Good Implementations
### SPIFFE mTLS In-Memory Dynamic Rotation vs. Static Disk Mount

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Reading static certs from disk violates ephemeral security: keys are vulnerable to disk snooping and do not rotate when SPIRE issues new SVIDs, leading to either hard failures or insecure extended lifetimes.
```go
package server

import (
	"crypto/tls"
	"net/http"
)

// ANTI-PATTERN: Loading certificates once from disk at boot time.
// Keys expire when SVID rotates, causing outages or forcing unrotated, long-lived certs.
func StartMTLSServer() error {
	cert, err := tls.LoadX509KeyPair("/var/run/secrets/tls.crt", "/var/run/secrets/tls.key")
	if err != nil {
		return err
	}

	tlsConfig := &tls.Config{
		Certificates: []tls.Certificate{cert},
		ClientAuth:   tls.RequireAndVerifyClientCert,
	}

	srv := &http.Server{
		Addr:      ":8443",
		TLSConfig: tlsConfig,
	}
	return srv.ListenAndServeTLS("", "")
}
```

#### Production Standard (Correct)
> **Standard**: Leverages workloadapi.X509Source over the agent socket. SVID rotations stream automatically in memory without service restarts, and strict peer authorization limits access strictly to the declared SPIFFE ID.
```go
package server

import (
	"context"
	"net/http"

	"github.com/spiffe/go-spiffe/v2/spiffetls/tlsconfig"
	"github.com/spiffe/go-spiffe/v2/spiffeid"
	"github.com/spiffe/go-spiffe/v2/workloadapi"
)

// PRODUCTION INVARIANT: Connect to Workload API socket, dynamically stream
// rotated X.509 SVIDs in-memory, and explicitly authorize client SPIFFE ID.
func StartMTLSServer(ctx context.Context) error {
	source, err := workloadapi.NewX509Source(ctx, workloadapi.WithClientOptions(
		workloadapi.WithAddress("unix:///run/spire/sockets/agent.sock"),
	))
	if err != nil {
		return err
	}
	defer source.Close()

	allowedClientID := spiffeid.MustRequireFromString("spiffe://prod.internal/ns/payments/sa/billing-service")
	tlsConfig := tlsconfig.MTLSServerConfig(source, source, tlsconfig.AuthorizeID(allowedClientID))

	srv := &http.Server{
		Addr:      ":8443",
		TLSConfig: tlsConfig,
	}
	return srv.ListenAndServeTLS("", "")
}
```

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: Mandatory SPIFFE/SPIRE Ephemeral SVID Streaming and Zero-Static-Secret Federation

Mandatory SPIFFE/SPIRE Ephemeral SVID Streaming and Zero-Static-Secret Federation defines an industrial-grade behavioral standard for security engineering. Enforces dynamic Workload Identity consumption exclusively through the SPIFFE/SPIRE Workload API UNIX domain socket, requiring active rotation stream listeners for ephemeral X.509 and JWT SVIDs. Forbids static long-lived credentials, persisting ephemeral private keys to disk, and bypasses of trust-domain federation boundaries. Mandates exact SPIFFE ID validation on all authenticated peer connections. 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 SVID Keys to Disk or Bypassing Workload API In-Memory Rotation Streams 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 SVID Keys to Disk or Bypassing Workload API In-Memory Rotation StreamsCritical
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

Engineers MUST ALWAYS connect directly to the SPIRE Agent via the local Workload API UNIX Domain Socket (e.g., unix

Engineers MUST ALWAYS connect directly to the SPIRE Agent via the local Workload API UNIX Domain Socket (e.g., unix:///run/spire/sockets/agent.sock) using official SPIFFE SDKs.

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 NOT write, dump, or cache ephemeral SVID private keys or JWT tokens to disk, environment variables, or persistent storage volumes.

Engineers MUST NOT write, dump, or cache ephemeral SVID private keys or JWT tokens to disk, environment variables, or persistent storage 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

Services MUST instantiate dynamic SVID sources (such as workloadapi.X509Source) that stream credential rotations continuously in memory without requiring process restarts.

Services MUST instantiate dynamic SVID sources (such as workloadapi.X509Source) that stream credential rotations continuously in memory without requiring 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

TLS servers and clients MUST enforce explicit SPIFFE ID peer validation using authorized matchers rather than blanket verification of the CA bundle.

TLS servers and clients MUST enforce explicit SPIFFE ID peer validation using authorized matchers rather than blanket verification of the CA bundle.

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 federating across cloud boundaries (e.g., AWS STS, GCP Workload Identity) MUST exchange ephemeral JWT-SVIDs dynamically via the SPIRE Workload API rather than storing static cloud IAM access keys.

Components federating across cloud boundaries (e.g., AWS STS, GCP Workload Identity) MUST exchange ephemeral JWT-SVIDs dynamically via the SPIRE Workload API rather than storing static cloud IAM access keys.

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

Containers MUST NOT mount long-lived service account tokens or cloud access credentials if a SPIRE Workload API socket is present.

Containers MUST NOT mount long-lived service account tokens or cloud access credentials if a SPIRE Workload API socket is present.

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 Mandatory SPIFFE/SPIRE Ephemeral SVID Streaming and Zero-Static-Secret Federation critical for AI coding assistants?

Enforces dynamic Workload Identity consumption exclusively through the SPIFFE/SPIRE Workload API UNIX domain socket, requiring active rotation stream listeners for ephemeral X.509 and JWT SVIDs. Forbids static long-lived credentials, persisting ephemeral private keys to disk, and bypasses of trust-domain federation boundaries. Mandates exact SPIFFE ID validation on all authenticated peer connections. 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 SVID Keys to Disk or Bypassing Workload API In-Memory Rotation Streams) 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

Mandatory