AI Agents

  • Changed

    Full Changelog: https://github.com/giantswarm/klausctl/compare/v0.2.34...v0.2.35

  • Changed

    Full Changelog: https://github.com/giantswarm/klaus-oci/compare/v0.0.63...v0.0.64

  • Fixed

    Full Changelog: https://github.com/giantswarm/muster/compare/v1.3.2...v1.3.3

  • Fixed

    Full Changelog: https://github.com/giantswarm/klausctl/compare/v0.2.33...v0.2.34

  • Fixed

    • oauth.mcpClient.cimd settings now reach the OAuth proxy: operator-configured cimd.scopes are advertised in the served CIMD document (previously always the defaults), and a custom cimd.path no longer breaks CIMD self-hosting (the client ID was derived with the configured path while the OAuth manager recomputed it with the dropped, defaulted one, so the document could be skipped or mounted at the wrong path). The CIMD block was lost in the same config conversions as the postLoginRedirectAllowlist fix below; that duplication is now collapsed — the aggregator carries the merged OAuthMCPClientConfig unconverted (the aggregator.OAuthProxyConfig mirror struct is removed), so future oauth.mcpClient fields reach the OAuth manager without per-field plumbing.
  • Fixed

    • oauth.mcpClient.postLoginRedirectAllowlist is now honored in deployments. The parsed value was dropped in the two field-by-field config conversions between the YAML config and the OAuth manager (internal/app → aggregator.OAuthProxyConfig → oauth.NewManager), so the handler’s allowlist was always empty and every redirect request on the start URL was rejected with Rejecting post-login redirect target not in allowlist, degrading connector logins to the static success page. A configured allowlist now reaches the handler; the Post-login redirect allowlist enabled with N entries startup log confirms it.
  • Added

    • /connectors/complete added to the klausgateway-obo HTTPRoute (connectivity chart), routing straight to the klaus-gateway Service on the OBO public hostname alongside /auth/slack/. This is the connector-login completion landing: after a connector sign-in muster redirects the browser here (klaus-gateway#175), so it must bypass the agentgateway JWT policy that guards the channel paths (the browser carries no JWT at that point). Only rendered when klausGateway.obo.enabled and ingress.parentRefs are set. Without it a postLoginRedirectAllowlist entry pointing at this path would 404 at the data plane and the flow would degrade to muster’s static success page.
  • Fixed

    • oauth.mcpClient.postLoginRedirectAllowlist: a list of absolute http(s) URL prefixes. A caller may append a redirect query parameter to the start URL; when the target matches an allowlist entry (exact scheme and host, path extended at a segment boundary; targets with dot segments are rejected), a successful callback redirects the browser there (with the connected server’s name appended as a server query parameter) instead of rendering the static success page. Lets a front-end observe connector login completion for the flows it initiated, without affecting other clients of the same muster. Empty (default) rejects all redirect requests; a rejected target is dropped and the login still proceeds. Failed callbacks always render the error page. The Helm chart renders this from muster.oauth.mcpClient.postLoginRedirectAllowlist (default empty).
  • Changed

    • klausGateway.* forwarded sub-blocks in both values.schema.json (umbrella + connectivity) relaxed to additionalProperties: true: crd, observability, slack, cli, agentgatewayRoute, obo, obo.persistence, obo.connectors. These mirror klaus-gateway subchart config forwarded via forwardAllValues, so the subchart’s own schema is the source of truth; the umbrella no longer re-validates them. New klaus-gateway keys stop failing the meta-package HelmRelease schema check before they can be mirrored by hand (the recurring Additional property ... is not allowed break, e.g. #209/#210/#211). This aligns klausGateway with the other forwarded components (kagent, muster, mcps, agentgateway), which are already permissive or undeclared. Meta-package-owned blocks (postgres, gateway, ingress, networkPolicy, global) stay additionalProperties: false.

    Fixed

    • Removed duplicate channelMode / channelAllowlist / dmMode entries in the umbrella values.schema.json klausGateway.slack block (each was declared twice).
  • Fixed

    Full Changelog: https://github.com/giantswarm/muster/compare/v1.2.0...v1.2.1