Skip to content

fix(connectivity): the muster RemoteMCPServer opts out of controller-side tool discovery (kagent.dev/discovery=disabled) while muster runs OAuth - #304

Merged
teemow merged 1 commit into
mainfrom
teemow/kagent-muster-rms-discovery-optout
Sep 8, 2026
Merged

teemow merged 1 commit into
mainfrom
teemow/kagent-muster-rms-discovery-optout

Conversation

@teemow

@teemow teemow commented Sep 8, 2026

Copy link
Copy Markdown
Member

Part of #299.

What

While muster runs with OAuth on (muster.muster.oauth.server.enabled, the default), the connectivity chart labels the shared RemoteMCPServer agent-platform/muster with kagent.dev/discovery: disabled — the opt-out from controller-side tool discovery contributed upstream in kagent-dev/kagent#2752 (main) and kagent-dev/kagent#2753 (release/v0.10.x). A kagent controller that knows the label reports Accepted=True (DiscoveryDisabled, empty inventory) instead of Accepted=False (ReconcileFailed … Unauthorized); an older controller ignores the label and behaves as before. With OAuth off (dev installs) the controller lists tools anonymously and no label is rendered. Derived from the existing toggle: no new value, no schema change, no omitKeys change.

Why not a controller credential (option 1 of #299)

spec.headersFrom is the only way a RemoteMCPServer carries a header, it reads a Secret/ConfigMap literal only, and it is not discovery-only: the kagent translator resolves every headersFrom value into each agent's rendered config, and the Go ADK runtime applies static headers last, after the propagated caller token (headerRoundTripper.RoundTrip in go/adk/pkg/mcp/registry.go at v0.10.0: "static headers … take precedence over all dynamic sources"). A controller token on the shared server would make every agent call muster as system:serviceaccount:kagent:kagent-controller, copy the token into every agent's config Secret, and roll every agent on each rotation. The template comment, docs/authentication.md ("Tool discovery by the kagent controller: no identity, opted out") and UPGRADE.md say so, so nobody adds it as a shortcut.

Verification

Operator action

None (UPGRADE.md). CHANGELOG entry under Unreleased / Fixed.

…side tool discovery (kagent.dev/discovery=disabled) while muster runs OAuth — a controller credential via headersFrom would override every agent's caller token
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.

1 participant