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

Kubernetes Gateway API v1.2 ReferenceGrant Zero-Trust Cross-Namespace Boundary Enforcement

In Kubernetes Gateway API v1.2+, cross-namespace references between Gateways, Routes, Services, and Secrets are strictly denied by default under zero-trust networking boundaries. Target namespaces containing backend Services or TLS Secrets must explicitly authorize caller namespaces via a collocated ReferenceGrant CRD. Misconfigured, omitted, or wildcarded ReferenceGrants cause silent route detachment ('ResolvedRefs: False') or catastrophic multi-tenant credential exfiltration.

Prohibited Anti-Pattern: Cross-Namespace Ingress Referencing Without Target-Namespace ReferenceGrant Authorization

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Kubernetes Gateway API v1.2 ReferenceGrant Zero-Trust Cross-Namespace Boundary Enforcement - In Kubernetes Gateway API v1.2+, cross-namespace references between Gateways, Routes, Services, and Secrets are strictly denied by default under zero-trust networking boundaries. Target namespaces containing backend Services or TLS Secrets must explicitly authorize caller namespaces via a collocated ReferenceGrant CRD. Misconfigured, omitted, or wildcarded ReferenceGrants cause silent route detachment ('ResolvedRefs: False') or catastrophic multi-tenant credential exfiltration.
globs: **/*.yaml, **/*.yml, charts/**/*.yaml, kustomize/**/*.yaml
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/k8s-gateway-api-referencegrant-hardening"
---

# Kubernetes Gateway API v1.2 ReferenceGrant Zero-Trust Cross-Namespace Boundary Enforcement

> **Severity**: CRITICAL | **Category**: devops
> **Anti-Pattern Warning**: Cross-Namespace Ingress Referencing Without Target-Namespace ReferenceGrant Authorization

## System Constraints
You are a Principal Cloud Security and Kubernetes Platform Architect enforcing Gateway API v1.2 invariants. Mandate that every cross-namespace reference between Gateways, HTTPRoutes/GRPCRoutes, and backend Services or TLS Secrets is strictly governed by a least-privilege ReferenceGrant deployed in the target resource's namespace. Reject any implicit cross-namespace references, wildcard permissions, or mislocated ReferenceGrants.

## Strict Guidelines
- Engineers MUST ALWAYS locate the ReferenceGrant resource inside the TARGET namespace containing the referenced Service or Secret, never in the source/caller namespace.
- Engineers MUST specify explicit 'from' bindings with non-empty 'namespace', 'group', and 'kind' attributes; wildcarding namespace ('*') is STRICTLY FORBIDDEN.
- Engineers MUST scope 'to' bindings down to the exact 'group', 'kind', and optional 'name' of the destination resource being exposed across namespace perimeters.
- Services exposing backends to external HTTPRoutes/GRPCRoutes MUST NOT be routed cross-namespace unless an accompanying ReferenceGrant explicitly authorizes 'gateway.networking.k8s.io' 'HTTPRoute' or 'GRPCRoute'.
- Gateway listeners referencing cross-namespace TLS Secrets (e.g., managed by Cert-Manager in a centralized PKI namespace) MUST be explicitly authorized via a ReferenceGrant targeted to 'core' 'Secret'.

## Bad vs Good Implementations
### Cross-Namespace HTTPRoute to Service Delegation

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: The HTTPRoute in 'storefront-prod' targets the 'payment-api' Service in 'payments-secure' without explicit authorization. Gateway API v1.2 implementations will drop this backend, mark the Route condition with 'ResolvedRefs: False' (Reason: RefNotPermitted), and return 500/503 errors to callers.
```yaml
# HTTPRoute attempts cross-namespace routing without a ReferenceGrant
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: payment-router
  namespace: storefront-prod
spec:
  parentRefs:
    - name: shared-gateway
      namespace: ingress-infra
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /api/v1/checkout
      backendRefs:
        - name: payment-api
          namespace: payments-secure # Unauthorized cross-namespace boundary traverse
          port: 8443
```

#### Production Standard (Correct)
> **Standard**: A ReferenceGrant is instantiated directly inside the 'payments-secure' namespace, explicitly authorizing 'HTTPRoute' resources specifically from 'storefront-prod' to bind strictly to the 'payment-api' Service, fulfilling zero-trust boundary verification.
```yaml
# 1. Target namespace explicitly grants cross-namespace routing privileges
apiVersion: gateway.networking.k8s.io/v1beta1
kind: ReferenceGrant
metadata:
  name: allow-storefront-checkout
  namespace: payments-secure # MUST be in the target namespace
spec:
  from:
    - group: gateway.networking.k8s.io
      kind: HTTPRoute
      namespace: storefront-prod
  to:
    - group: ""
      kind: Service
      name: payment-api
---
# 2. HTTPRoute in source namespace now validates successfully
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: payment-router
  namespace: storefront-prod
spec:
  parentRefs:
    - name: shared-gateway
      namespace: ingress-infra
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /api/v1/checkout
      backendRefs:
        - name: payment-api
          namespace: payments-secure
          port: 8443
```

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: Kubernetes Gateway API v1.2 ReferenceGrant Zero-Trust Cross-Namespace Boundary Enforcement

Kubernetes Gateway API v1.2 ReferenceGrant Zero-Trust Cross-Namespace Boundary Enforcement defines an industrial-grade behavioral standard for devops engineering. In Kubernetes Gateway API v1.2+, cross-namespace references between Gateways, Routes, Services, and Secrets are strictly denied by default under zero-trust networking boundaries. Target namespaces containing backend Services or TLS Secrets must explicitly authorize caller namespaces via a collocated ReferenceGrant CRD. Misconfigured, omitted, or wildcarded ReferenceGrants cause silent route detachment ('ResolvedRefs: False') or catastrophic multi-tenant credential exfiltration. 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: Cross-Namespace Ingress Referencing Without Target-Namespace ReferenceGrant Authorization 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 DriftCross-Namespace Ingress Referencing Without Target-Namespace ReferenceGrant AuthorizationCritical
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 locate the ReferenceGrant resource inside the TARGET namespace containing the referenced Service or Secret, never in the source/caller namespace.

Engineers MUST ALWAYS locate the ReferenceGrant resource inside the TARGET namespace containing the referenced Service or Secret, never in the source/caller namespace.

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 specify explicit 'from' bindings with non-empty 'namespace', 'group', and 'kind' attributes

Engineers MUST specify explicit 'from' bindings with non-empty 'namespace', 'group', and 'kind' attributes; wildcarding namespace ('*') is STRICTLY FORBIDDEN.

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 scope 'to' bindings down to the exact 'group', 'kind', and optional 'name' of the destination resource being exposed across namespace perimeters.

Engineers MUST scope 'to' bindings down to the exact 'group', 'kind', and optional 'name' of the destination resource being exposed across namespace perimeters.

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

Services exposing backends to external HTTPRoutes/GRPCRoutes MUST NOT be routed cross-namespace unless an accompanying ReferenceGrant explicitly authorizes 'gateway.networking.k8s.io' 'HTTPRoute' or 'GRPCRoute'.

Services exposing backends to external HTTPRoutes/GRPCRoutes MUST NOT be routed cross-namespace unless an accompanying ReferenceGrant explicitly authorizes 'gateway.networking.k8s.io' 'HTTPRoute' or 'GRPCRoute'.

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

Gateway listeners referencing cross-namespace TLS Secrets (e.g., managed by Cert-Manager in a centralized PKI namespace) MUST be explicitly authorized via a ReferenceGrant targeted to 'core' 'Secret'.

Gateway listeners referencing cross-namespace TLS Secrets (e.g., managed by Cert-Manager in a centralized PKI namespace) MUST be explicitly authorized via a ReferenceGrant targeted to 'core' 'Secret'.

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 Kubernetes Gateway API v1.2 ReferenceGrant Zero-Trust Cross-Namespace Boundary Enforcement critical for AI coding assistants?

In Kubernetes Gateway API v1.2+, cross-namespace references between Gateways, Routes, Services, and Secrets are strictly denied by default under zero-trust networking boundaries. Target namespaces containing backend Services or TLS Secrets must explicitly authorize caller namespaces via a collocated ReferenceGrant CRD. Misconfigured, omitted, or wildcarded ReferenceGrants cause silent route detachment ('ResolvedRefs: False') or catastrophic multi-tenant credential exfiltration. 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 (Cross-Namespace Ingress Referencing Without Target-Namespace ReferenceGrant Authorization) 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

Kubernetes