This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
backendcritical PriorityID: go-fips140-3-crypto-toolchain-boundary

Go 1.24 FIPS 140-3 Cryptographic Toolchain Strict Boundary

Mandates compile-time build tags and fail-closed runtime module assertions to enforce Go 1.24+ FIPS 140-3 cryptographic boundaries. Prevents silent runtime fallbacks to unapproved standard library primitives or non-certified third-party cryptography in regulated zero-trust services.

Prohibited Anti-Pattern: Silent Fallback to Non-Approved Cryptographic Primitives and Permissive FIPS Module Fallback

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Go 1.24 FIPS 140-3 Cryptographic Toolchain Strict Boundary - Mandates compile-time build tags and fail-closed runtime module assertions to enforce Go 1.24+ FIPS 140-3 cryptographic boundaries. Prevents silent runtime fallbacks to unapproved standard library primitives or non-certified third-party cryptography in regulated zero-trust services.
globs: **/*.go, Dockerfile, Makefile, scripts/**/*.sh, .github/workflows/**/*.yml
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/go-fips140-3-crypto-toolchain-boundary"
---

# Go 1.24 FIPS 140-3 Cryptographic Toolchain Strict Boundary

> **Severity**: CRITICAL | **Category**: backend
> **Anti-Pattern Warning**: Silent Fallback to Non-Approved Cryptographic Primitives and Permissive FIPS Module Fallback

## System Constraints
You are a Principal Software Architect enforcing Go 1.24 FIPS 140-3 Cryptographic Toolchain Strict Boundary rules. In regulated zero-trust environments, cryptographic algorithms must strictly execute within the Go 1.24 certified FIPS 140-3 module boundaries (`GOFIPS140=latest` or approved version tags). Silent runtime fallback to uncertified primitives or non-compliant TLS cipher configurations is strictly unacceptable. All services must validate the FIPS boundary at build time using strict build tags and fail closed immediately during `init()` if the runtime environment or binary was linked without approved FIPS 140-3 state.

## Strict Guidelines
- Engineers MUST ALWAYS compile regulated binaries with explicit `GOFIPS140=latest` (or an explicit certified version snapshot like `v1.0.0`) in toolchain build configurations.
- Engineers MUST enforce compile-time verification using dedicated Go build tags (e.g., `//go:build requirefips`) across all cryptographic entry points to prevent non-FIPS builds from compiling.
- Services MUST fail closed on startup during `init()` by asserting `fips140.Enabled()` or panicking if the Go Cryptographic Module fails integrity self-tests or is bypassed.
- Engineers MUST NOT utilize unapproved or legacy cryptographic primitives (e.g., MD5, SHA-1 for signatures, RC4, DES, non-approved elliptic curves) without explicit, auditable non-cryptographic exclusion exemptions.
- Code SHOULD restrict `crypto/tls` configurations to strictly FIPS-approved cipher suites (e.g., `TLS_AES_128_GCM_SHA256`, `TLS_AES_256_GCM_SHA384`, `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384`) and TLS 1.2+.
- Components NEVER import third-party uncertified crypto libraries (e.g., custom pure-Go AES/ChaCha implementations) that bypass the Go 1.24 internal FIPS module boundary.

## Bad vs Good Implementations
### Go 1.24 FIPS 140-3 Module Verification and Cryptographic Boundary Enforcement

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: The code lacks compile-time FIPS build constraints, permits legacy unapproved algorithms (MD5) without FIPS bypass markers, and does not assert that the Go 1.24 FIPS 140-3 module is actively loaded and validated at binary startup.
```go
// Package cryptoutil provides hashing and encryption utilities.
// Fails FIPS 140-3 compliance: lacks build constraints, allows silent fallback,
// and uses unapproved hash algorithms.
package cryptoutil

import (
	"crypto/md5"
	"crypto/sha256"
	"fmt"
)

// GenerateFingerprint falls back silently to MD5 if input is short or legacy
func GenerateFingerprint(data []byte, useLegacy bool) string {
	if useLegacy {
		h := md5.Sum(data) // VIOLATION: Non-FIPS approved primitive allowed at runtime
		return fmt.Sprintf("%x", h)
	}
	h := sha256.Sum256(data)
	return fmt.Sprintf("%x", h)
}
```

#### Production Standard (Correct)
> **Standard**: Enforces compilation guardrails with `//go:build requirefips`, asserts that `crypto/fips140.Enabled()` returns true during package initialization (failing fast if bypassed), and explicitly eliminates unapproved primitives (MD5) by returning a typed error instead of silently falling back.
```go
//go:build requirefips
// +build requirefips

// Package cryptoutil enforces strict Go 1.24 FIPS 140-3 boundary compliance.
package cryptoutil

import (
	"crypto/fips140"
	"crypto/sha256"
	"encoding/hex"
	"errors"
	"fmt"
)

func init() {
	// Invariant: Fail closed immediately if Go FIPS 140-3 module is not active
	if !fips140.Enabled() {
		panic("CRITICAL: Binary compiled with requirefips but GOFIPS140 boundary is disabled")
	}
}

// ErrLegacyAlgorithmDisallowed indicates non-FIPS cryptographic operations were requested.
var ErrLegacyAlgorithmDisallowed = errors.New("crypto: legacy unapproved algorithm rejected under FIPS 140-3 boundary")

// GenerateFingerprint enforces FIPS 140-3 approved SHA-256 digests and explicitly rejects insecure variants.
func GenerateFingerprint(data []byte, useLegacy bool) (string, error) {
	if useLegacy {
		return "", ErrLegacyAlgorithmDisallowed
	}
	h := sha256.Sum256(data)
	return hex.EncodeToString(h[:]), nil
}
```

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Go 1.24 FIPS 140-3 Cryptographic Toolchain Strict Boundary

Go 1.24 FIPS 140-3 Cryptographic Toolchain Strict Boundary defines an industrial-grade behavioral standard for backend engineering. Mandates compile-time build tags and fail-closed runtime module assertions to enforce Go 1.24+ FIPS 140-3 cryptographic boundaries. Prevents silent runtime fallbacks to unapproved standard library primitives or non-certified third-party cryptography in regulated zero-trust services. 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: Silent Fallback to Non-Approved Cryptographic Primitives and Permissive FIPS Module Fallback 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 DriftSilent Fallback to Non-Approved Cryptographic Primitives and Permissive FIPS Module FallbackCritical
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 compile regulated binaries with explicit `GOFIPS140=latest` (or an explicit certified version snapshot like `v1.0.0`) in toolchain build configurations.

Engineers MUST ALWAYS compile regulated binaries with explicit `GOFIPS140=latest` (or an explicit certified version snapshot like `v1.0.0`) in toolchain build configurations.

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 enforce compile-time verification using dedicated Go build tags (e.g., `//go

Engineers MUST enforce compile-time verification using dedicated Go build tags (e.g., `//go:build requirefips`) across all cryptographic entry points to prevent non-FIPS builds from compiling.

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 fail closed on startup during `init()` by asserting `fips140.Enabled()` or panicking if the Go Cryptographic Module fails integrity self-tests or is bypassed.

Services MUST fail closed on startup during `init()` by asserting `fips140.Enabled()` or panicking if the Go Cryptographic Module fails integrity self-tests or is bypassed.

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 utilize unapproved or legacy cryptographic primitives (e.g., MD5, SHA-1 for signatures, RC4, DES, non-approved elliptic curves) without explicit, auditable non-cryptographic exclusion exemptions.

Engineers MUST NOT utilize unapproved or legacy cryptographic primitives (e.g., MD5, SHA-1 for signatures, RC4, DES, non-approved elliptic curves) without explicit, auditable non-cryptographic exclusion exemptions.

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

Code SHOULD restrict `crypto/tls` configurations to strictly FIPS-approved cipher suites (e.g., `TLS_AES_128_GCM_SHA256`, `TLS_AES_256_GCM_SHA384`, `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384`) and TLS 1.2+.

Code SHOULD restrict `crypto/tls` configurations to strictly FIPS-approved cipher suites (e.g., `TLS_AES_128_GCM_SHA256`, `TLS_AES_256_GCM_SHA384`, `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384`) and TLS 1.2+.

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

Components NEVER import third-party uncertified crypto libraries (e.g., custom pure-Go AES/ChaCha implementations) that bypass the Go 1.24 internal FIPS module boundary.

Components NEVER import third-party uncertified crypto libraries (e.g., custom pure-Go AES/ChaCha implementations) that bypass the Go 1.24 internal FIPS module boundary.

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 Go 1.24 FIPS 140-3 Cryptographic Toolchain Strict Boundary critical for AI coding assistants?

Mandates compile-time build tags and fail-closed runtime module assertions to enforce Go 1.24+ FIPS 140-3 cryptographic boundaries. Prevents silent runtime fallbacks to unapproved standard library primitives or non-certified third-party cryptography in regulated zero-trust services. 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 (Silent Fallback to Non-Approved Cryptographic Primitives and Permissive FIPS Module Fallback) 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

Go