This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
devopscritical PriorityID: k8s-gateway-v1-2-cross-namespace-tls-referencegrant

Mandatory ReferenceGrant Scoping for Gateway API Cross-Namespace TLS Delegation

Enforces strict, least-privilege ReferenceGrant policies for cross-namespace Secret and Gateway references under Kubernetes Gateway API v1.2. Prevents multi-tenant credential harvesting and Route hijacking by forbidding wildcard namespace matches and unbounded cross-namespace certificate bindings. Invariants require explicit namespace and resource-kind authorization pairings at all ingress trust boundaries.

Prohibited Anti-Pattern: Unvalidated Cross-Namespace TLS Secret Reference Without Explicit Target-Namespace ReferenceGrant

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Mandatory ReferenceGrant Scoping for Gateway API Cross-Namespace TLS Delegation - Enforces strict, least-privilege ReferenceGrant policies for cross-namespace Secret and Gateway references under Kubernetes Gateway API v1.2. Prevents multi-tenant credential harvesting and Route hijacking by forbidding wildcard namespace matches and unbounded cross-namespace certificate bindings. Invariants require explicit namespace and resource-kind authorization pairings at all ingress trust boundaries.
globs: deploy/**/*.yaml, infra/**/*.yaml, k8s/**/*.yaml, manifests/**/*.yaml, helm/**/*.yaml
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/k8s-gateway-v1-2-cross-namespace-tls-referencegrant"
---

# Mandatory ReferenceGrant Scoping for Gateway API Cross-Namespace TLS Delegation

> **Severity**: CRITICAL | **Category**: devops
> **Anti-Pattern Warning**: Unvalidated Cross-Namespace TLS Secret Reference Without Explicit Target-Namespace ReferenceGrant

## System Constraints
You are a Principal Platform Engineer and Kubernetes Security Architect enforcing Kubernetes Gateway API v1.2 invariants. You must ensure that any cross-namespace reference between Gateways, Routes, and TLS Secrets is guarded by an explicit, cryptographically bound ReferenceGrant in the owning namespace. Disallow wildcard selectors, unauthenticated route attachments, and unvalidated certificate references.

## Strict Guidelines
- Engineers MUST ALWAYS create a ReferenceGrant in the target Secret's namespace whenever a Gateway references a Secret across namespace boundaries.
- Engineers MUST NOT configure 'allowedRoutes.namespaces.from: All' on Gateway listeners without strict label selectors or explicit ReferenceGrant handshakes.
- Engineers MUST NEVER use wildcards for core Secret objects in ReferenceGrant 'to' stanzas; resource names MUST be strictly bounded when referencing sensitive credentials.
- Gateway Listeners handling TLS MUST specify 'protocol: HTTPS' or 'protocol: TLS' with an explicit 'hostname' and scoped 'certificateRefs' pointing to validated resources.
- Controllers and GitOps pipelines MUST validate that a ReferenceGrant exists and matches group, kind, and namespace before synchronizing cross-namespace Gateway definitions.

## Bad vs Good Implementations
### Cross-Namespace TLS Secret Binding via ReferenceGrant

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: The Gateway references a Secret in 'tenant-a-prod' without an existing, verified ReferenceGrant in that namespace. Additionally, 'allowedRoutes.namespaces.from: All' allows any tenant in the cluster to bind routes to this listener, causing configuration collisions and potential traffic hijacking.
```yaml
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: shared-edge-gateway
  namespace: edge-system
spec:
  gatewayClassName: egress-gw-class
  listeners:
    - name: https-tenant-a
      port: 443
      protocol: HTTPS
      tls:
        mode: Terminate
        certificateRefs:
          # VULNERABILITY: Cross-namespace secret access without
          # an active ReferenceGrant in tenant-a allows edge-system to harvest
          # or collide with arbitrary tenant secrets across namespaces.
          - group: ""
            kind: Secret
            name: tenant-a-tls
            namespace: tenant-a-prod
      allowedRoutes:
        namespaces:
          # VULNERABILITY: Allows untrusted namespaces to attach arbitrary routes
          from: All
```

#### Production Standard (Correct)
> **Standard**: The target namespace 'tenant-a-prod' explicitly grants reference permission to the 'Gateway' resource originating from 'edge-system' specifically for 'tenant-a-tls'. In addition, the Gateway restricts route attachment using labeled namespace selectors and domain-specific hostnames.
```yaml
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: shared-edge-gateway
  namespace: edge-system
spec:
  gatewayClassName: cilium
  listeners:
    - name: https-tenant-a
      port: 443
      protocol: HTTPS
      hostname: "tenant-a.domain.com"
      tls:
        mode: Terminate
        certificateRefs:
          - group: ""
            kind: Secret
            name: tenant-a-tls
            namespace: tenant-a-prod
      allowedRoutes:
        namespaces:
          from: Selector
          selector:
            matchLabels:
              tenant: tenant-a
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: ReferenceGrant
metadata:
  name: allow-edge-gw-tls-reference
  namespace: tenant-a-prod
spec:
  from:
    - group: gateway.networking.k8s.io
      kind: Gateway
      namespace: edge-system
  to:
    - group: ""
      kind: Secret
      name: tenant-a-tls
```

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 ReferenceGrant Scoping for Gateway API Cross-Namespace TLS Delegation

Mandatory ReferenceGrant Scoping for Gateway API Cross-Namespace TLS Delegation defines an industrial-grade behavioral standard for devops engineering. Enforces strict, least-privilege ReferenceGrant policies for cross-namespace Secret and Gateway references under Kubernetes Gateway API v1.2. Prevents multi-tenant credential harvesting and Route hijacking by forbidding wildcard namespace matches and unbounded cross-namespace certificate bindings. Invariants require explicit namespace and resource-kind authorization pairings at all ingress trust boundaries. 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: Unvalidated Cross-Namespace TLS Secret Reference Without Explicit Target-Namespace ReferenceGrant 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 DriftUnvalidated Cross-Namespace TLS Secret Reference Without Explicit Target-Namespace ReferenceGrantCritical
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 create a ReferenceGrant in the target Secret's namespace whenever a Gateway references a Secret across namespace boundaries.

Engineers MUST ALWAYS create a ReferenceGrant in the target Secret's namespace whenever a Gateway references a Secret across namespace boundaries.

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 configure 'allowedRoutes.namespaces.from

Engineers MUST NOT configure 'allowedRoutes.namespaces.from: All' on Gateway listeners without strict label selectors or explicit ReferenceGrant handshakes.

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

Engineers MUST NEVER use wildcards for core Secret objects in ReferenceGrant 'to' stanzas

Engineers MUST NEVER use wildcards for core Secret objects in ReferenceGrant 'to' stanzas; resource names MUST be strictly bounded when referencing sensitive credentials.

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

Gateway Listeners handling TLS MUST specify 'protocol

Gateway Listeners handling TLS MUST specify 'protocol: HTTPS' or 'protocol: TLS' with an explicit 'hostname' and scoped 'certificateRefs' pointing to validated resources.

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

Controllers and GitOps pipelines MUST validate that a ReferenceGrant exists and matches group, kind, and namespace before synchronizing cross-namespace Gateway definitions.

Controllers and GitOps pipelines MUST validate that a ReferenceGrant exists and matches group, kind, and namespace before synchronizing cross-namespace Gateway definitions.

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 ReferenceGrant Scoping for Gateway API Cross-Namespace TLS Delegation critical for AI coding assistants?

Enforces strict, least-privilege ReferenceGrant policies for cross-namespace Secret and Gateway references under Kubernetes Gateway API v1.2. Prevents multi-tenant credential harvesting and Route hijacking by forbidding wildcard namespace matches and unbounded cross-namespace certificate bindings. Invariants require explicit namespace and resource-kind authorization pairings at all ingress trust boundaries. 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 (Unvalidated Cross-Namespace TLS Secret Reference Without Explicit Target-Namespace ReferenceGrant) 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