Summary
Read endpoints such as compose.one (and git-provider read endpoints) return GitHub App credentials — githubPrivateKey, githubClientSecret, githubWebhookSecret — in plaintext in their responses. The same applies to other secret-bearing fields (env vars, database passwords, tokens) on their respective read endpoints.
Originally reported against the MCP server in Dokploy/mcp#65 (and Dokploy/mcp#26): any consumer of these endpoints — the MCP server, custom scripts, third-party integrations — receives the secrets even when it only needs metadata.
Mitigation in place
The MCP server now redacts these fields client-side before responses reach LLM context (Dokploy/mcp#66, Dokploy/mcp#69). But that only protects MCP users — every other API consumer still receives the secrets.
Request
Omit (or return masked placeholders for) write-only secret fields in read endpoint responses, unless explicitly requested by an authorized flow that needs them. Secrets that the UI never needs to display back are the clearest candidates: private keys, client secrets, webhook secrets.
Defense in depth: server-side omission protects all consumers at the source, rather than relying on each client to redact.
🤖 Generated with Claude Code
Summary
Read endpoints such as
compose.one(and git-provider read endpoints) return GitHub App credentials —githubPrivateKey,githubClientSecret,githubWebhookSecret— in plaintext in their responses. The same applies to other secret-bearing fields (env vars, database passwords, tokens) on their respective read endpoints.Originally reported against the MCP server in Dokploy/mcp#65 (and Dokploy/mcp#26): any consumer of these endpoints — the MCP server, custom scripts, third-party integrations — receives the secrets even when it only needs metadata.
Mitigation in place
The MCP server now redacts these fields client-side before responses reach LLM context (Dokploy/mcp#66, Dokploy/mcp#69). But that only protects MCP users — every other API consumer still receives the secrets.
Request
Omit (or return masked placeholders for) write-only secret fields in read endpoint responses, unless explicitly requested by an authorized flow that needs them. Secrets that the UI never needs to display back are the clearest candidates: private keys, client secrets, webhook secrets.
Defense in depth: server-side omission protects all consumers at the source, rather than relying on each client to redact.
🤖 Generated with Claude Code