Skip to content

Recent page reviews - #506

Merged
Rachael-Graham merged 1 commit into
mainfrom
rlg-page-reviews
Sep 23, 2026
Merged

Rachael-Graham merged 1 commit into
mainfrom
rlg-page-reviews

Conversation

@Rachael-Graham

Copy link
Copy Markdown
Contributor

Self-reviews and edits of pages I recently added i quickly to make sure they were in the 1.0.0-alpha1 release, but that I hadnt had the chance to test and review more closely.

Self-reviews and edits of pages I recently added i quickly to make sure they were in the 1.0.0-alpha1 release, but that I hadnt had the chance to test and review more closely.

Signed-off-by: Rachael Graham <rachael.graham@solo.io>
## Credential injection

An egress rule can declare that the gateway attach a credential to a matching request, so that an agent reaches a protected service without ever holding the secret itself. A `hostnames` rule carries the effect, which names the header to set, an optional prefix such as `Bearer `, and a `substrate-secret://` reference that a registered credential provider resolves.
An egress rule can declare that the gateway attach a credential to a matching request, so that an agent reaches a protected service without ever holding the secret itself. A `hostnames` rule carries the effect, which names the header to set, an optional prefix such as `Bearer `, and an `ate-secret://` reference that a registered credential provider resolves.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this really an ate secret?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. From the published chart (substrate 0.2.0-beta5), templates/k8s-credential-provider.yaml:17: "The credential provider: a gRPC service that resolves ate-secret:// URIs". substrate-secret:// appears nowhere in the chart.

@Nadine2016

Copy link
Copy Markdown
Collaborator

From Claude:

Blocking: substrate-runtime/networking-and-egress.md now states as default behavior that "the gateway terminates TLS, so hostname rules constrain encrypted traffic as well as cleartext" (top callout, "Traffic types", and "Policy generation"). From agent-substrate/substrate's own docs/egress-trust-bundle.md, this MITM/TLS-termination behavior is gated behind an experimental sdsmint install (--experimental-use-sdsmint) and explicitly not default — enabling it on a non-sdsmint install is documented as breaking the actor. Could you confirm whether kagent's bundled install turns this on by default? If not, I think this needs to go back to something closer to the old framing (opt-in gateway, deploy it if you need HTTPS enforcement), or at minimum name the prerequisite. Happy to push that revert myself once we agree on the right framing — let me know.

Related: the new "Credential injection" section's claim that kagent auto-generates injection rules from apiKeySecret/headersFrom — I couldn't find the generating code in kagent-dev/kagent (it may be enterprise-only or just not indexed for me), so flagging as a "please double-check" rather than a hard blocker, especially since it's downstream of the same TLS-termination question.

@Rachael-Graham

Copy link
Copy Markdown
Contributor Author

Checked against the chart kagent bundles — substrate 0.2.0-beta5, the version assets/kagent-docs/versions/agent-substrate.md pins for 1.x:

  • The internal listener in templates/atenet-egress.yaml is protocol: HTTPS with tls.mode: dynamicCa (cert /run/egress-mitm/tls.crt), and its route carries the substrateEgress policy.
  • That block is unconditional. The only Helm conditional in the file is imagePullSecrets.
  • sdsmint appears nowhere in the chart, values included.

docs/egress-trust-bundle.md describes the ate-setup kustomize path, which is a different install — it also defaults the dataplane to Envoy rather than agentgateway. Live confirmation on kind: an ordinary model call logged http.host=api.openai.com http.path=/v1/chat/completions http.status=200, which is only readable with TLS terminated. The old "hostname rules do not restrict HTTPS" framing came from a stale local checkout, so no revert needed.

Credential injection is OSS, not enterprise: go/core/internal/translator/credentials.go:21, CompileCredentials. It emits one binding per ModelConfig with an apiKeySecret and per RemoteMCPServer with a Secret-backed headersFrom. k8s-credential-provider logged the resolve on the first model call, and there is no 501 in the path.

@Rachael-Graham
Rachael-Graham merged commit 10124cd into main Sep 23, 2026
6 checks passed
@Rachael-Graham
Rachael-Graham deleted the rlg-page-reviews branch September 23, 2026 01:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants