Skip to content

feat(config): make oauth clientId optional for remote MCP toolsets#3796

Merged
dgageot merged 1 commit into
docker:mainfrom
dgageot:worktree-board-1483d82f3b5b86c7
Jul 23, 2026
Merged

feat(config): make oauth clientId optional for remote MCP toolsets#3796
dgageot merged 1 commit into
docker:mainfrom
dgageot:worktree-board-1483d82f3b5b86c7

Conversation

@dgageot

@dgageot dgageot commented Jul 23, 2026

Copy link
Copy Markdown
Member

Some OAuth providers support Dynamic Client Registration (RFC 7591) or an interactive credential prompt, so hard-requiring clientId in the remote MCP oauth block prevents users from using those flows even though the runtime already handles them. It also blocked a common pattern where you want to pin the callback port or supply a custom redirect URL without pre-registering a client.

This change drops clientId from the required list in both the JSON schema and the latest config package. When clientId is absent, the runtime falls back to dynamic registration or prompts interactively; callbackPort, scopes, and callbackRedirectURL continue to be honored as before. As a guard-rail, specifying clientSecret without a clientId is now rejected with a clear validation error, since a secret is meaningless without a corresponding client identity. Frozen older config versions (v0, v1, …) are untouched.

The docs and the atlassian-expert example have been updated to reflect the new optionality.

When clientId is omitted, docker-agent falls back to Dynamic Client
Registration (RFC 7591) or an interactive prompt, while still
honoring callbackPort, scopes, and callbackRedirectURL.

Assisted-By: docker-agent
@dgageot
dgageot requested a review from a team as a code owner July 23, 2026 09:34

@docker-agent docker-agent left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Assessment: 🟢 APPROVE

The validation logic is correct and well-tested. Making clientId optional is a clean, backward-compatible change: the guard-rail (rejecting clientSecret without clientId) is logically sound, the JSON schema update aligns with the Go validation, and the three new test cases cover the meaningful new branches.

@dgageot
dgageot merged commit d7dd354 into docker:main Jul 23, 2026
16 of 17 checks passed
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.

3 participants