sunsine
7ec8d3a6e7
fix(security): mask sensitive values in MCP config API responses ( #2667 )
...
* fix(security): mask sensitive values in MCP config API responses
GET /api/mcp/config previously returned plaintext secrets including
env dict values (API keys), headers (auth tokens), and OAuth
client_secret/refresh_token. Any authenticated user could read all
MCP service credentials.
This commit masks sensitive fields in GET/PUT responses while
preserving the key structure so the frontend round-trip (GET masked
→ toggle enabled → PUT) correctly preserves existing secrets.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
* fix(security): address Copilot review on MCP config masking
- Load raw JSON (un-resolved $VAR placeholders) as merge source instead
of resolved config, preventing plaintext secrets from replacing
$VAR placeholders on disk (Comment 2)
- Preserve all top-level keys (e.g. mcpInterceptors) in PUT, not just
mcpServers/skills (Comment 1)
- Reject masked value '***' for new keys that don't exist in existing
config, returning 400 with actionable error (Comment 3)
- Allow empty string '' to explicitly clear OAuth secrets, while None
means 'preserve existing' for safe round-trip (Comment 4)
- Add 3 new tests for rejection, clearing, and edge cases (18 total)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-21 10:28:57 +08:00
..
2026-05-20 10:00:17 +08:00
2026-05-12 23:18:54 +08:00
2026-04-26 15:09:25 +08:00
2026-05-13 23:56:06 +08:00
2026-03-27 20:03:30 +08:00
2026-04-30 11:40:28 +08:00
2026-05-17 15:23:42 +08:00
2026-05-20 10:16:31 +08:00
2026-05-06 10:17:55 +08:00
2026-05-15 22:15:58 +08:00
2026-05-16 09:24:40 +08:00
2026-04-26 11:08:11 +08:00
2026-04-26 22:20:57 +08:00
2026-04-26 11:08:11 +08:00
2026-04-28 11:34:07 +08:00
2026-05-13 23:56:06 +08:00
2026-05-13 23:56:06 +08:00
2026-05-20 16:37:36 +08:00
2026-05-02 15:19:28 +08:00
2026-05-15 22:30:05 +08:00
2026-04-14 10:29:44 +08:00
2026-04-26 11:09:55 +08:00
2026-05-09 09:49:08 +08:00
2026-04-19 22:00:58 +08:00
2026-03-30 07:41:18 +08:00
2026-04-25 19:40:06 +08:00
2026-04-07 18:21:22 +08:00
2026-05-01 22:19:50 +08:00
2026-03-29 21:03:58 +08:00
2026-05-04 09:56:16 +08:00
2026-05-04 09:56:16 +08:00
2026-05-02 15:04:11 +08:00
2026-03-14 22:55:52 +08:00
2026-04-26 11:05:47 +08:00
2026-03-29 15:31:18 +08:00
2026-05-07 16:15:15 +08:00
2026-05-07 16:15:15 +08:00
2026-05-09 09:27:02 +08:00
2026-05-05 23:17:42 +08:00
2026-05-19 22:34:51 +08:00
2026-05-13 23:45:47 +08:00
2026-05-13 23:45:47 +08:00
2026-05-20 10:00:17 +08:00
2026-05-10 22:28:29 +08:00
2026-05-10 22:28:29 +08:00
2026-04-30 11:25:33 +08:00
2026-04-11 17:48:04 +08:00
2026-03-31 22:19:27 +08:00
2026-04-10 17:43:39 +08:00
2026-05-09 19:39:36 +08:00
2026-04-26 11:09:56 +08:00
2026-04-08 17:13:39 +08:00
2026-04-26 11:09:55 +08:00
2026-04-06 22:14:12 +08:00
2026-04-18 22:47:42 +08:00
2026-04-10 17:43:39 +08:00
2026-04-28 00:13:04 +08:00
2026-05-11 17:38:37 +08:00
2026-04-23 19:41:26 +08:00
2026-05-11 17:38:37 +08:00
2026-05-09 19:43:50 +08:00
2026-03-23 18:07:33 +08:00
2026-03-14 22:55:52 +08:00
2026-03-26 14:20:18 +08:00
2026-05-18 22:07:01 +08:00
2026-05-19 22:11:46 +08:00
2026-04-24 16:00:14 +08:00
2026-04-28 11:34:07 +08:00
2026-05-07 16:15:15 +08:00
2026-05-07 08:34:43 +08:00
2026-05-07 08:34:43 +08:00
2026-04-30 12:41:09 +08:00
2026-04-11 16:52:10 +08:00
2026-05-08 10:13:11 +08:00
2026-05-20 10:16:31 +08:00
2026-05-17 08:26:04 +08:00
2026-05-01 13:23:26 +08:00
2026-04-30 22:27:14 +08:00
2026-05-07 16:15:15 +08:00
2026-05-07 16:15:15 +08:00
2026-05-21 07:27:00 +08:00
2026-05-21 10:28:57 +08:00
2026-04-25 09:18:13 +08:00
2026-03-14 22:55:52 +08:00
2026-05-19 22:11:46 +08:00
2026-04-03 11:21:58 +08:00
2026-05-15 10:26:35 +08:00
2026-05-15 10:26:35 +08:00
2026-04-26 11:13:01 +08:00
2026-04-26 15:09:25 +08:00
2026-04-17 12:00:31 +08:00
2026-04-26 11:09:55 +08:00
2026-04-26 15:09:25 +08:00
2026-05-20 22:34:10 +08:00
2026-04-14 15:01:06 +08:00
2026-05-05 23:17:42 +08:00
2026-05-15 22:30:05 +08:00
2026-03-22 20:39:26 +08:00
2026-04-26 11:05:47 +08:00
2026-04-26 11:09:55 +08:00
2026-04-09 16:07:16 +08:00
2026-03-20 17:18:59 +08:00
2026-03-26 15:07:05 +08:00
2026-05-05 23:17:42 +08:00
2026-05-09 09:49:08 +08:00
2026-04-26 11:13:01 +08:00
2026-04-10 20:40:30 +08:00
2026-05-17 15:23:42 +08:00
2026-03-14 22:55:52 +08:00
2026-03-14 22:55:52 +08:00
2026-05-17 15:23:42 +08:00
2026-04-26 15:09:25 +08:00
2026-05-15 10:32:09 +08:00
2026-05-11 19:54:00 +08:00
2026-05-18 22:25:02 +08:00
2026-05-18 22:25:02 +08:00
2026-05-18 22:25:02 +08:00
2026-04-26 15:09:25 +08:00
2026-05-20 14:52:58 +08:00
2026-05-03 23:40:59 +08:00
2026-04-07 17:15:24 +08:00
2026-04-09 17:21:23 +08:00
2026-04-09 17:21:23 +08:00
2026-04-18 08:46:59 +08:00
2026-04-28 12:18:41 +08:00
2026-05-17 08:59:42 +08:00
2026-03-30 16:02:23 +08:00
2026-03-26 14:20:18 +08:00
2026-05-02 16:22:35 +08:00
2026-05-12 23:18:54 +08:00
2026-05-12 23:18:54 +08:00
2026-05-09 19:43:50 +08:00
2026-05-10 22:00:57 +08:00
2026-05-01 13:23:26 +08:00
2026-03-25 16:28:33 +08:00
2026-04-23 14:06:14 +08:00
2026-05-01 13:23:26 +08:00
2026-05-01 13:23:26 +08:00
2026-05-03 23:40:59 +08:00
2026-05-07 08:34:43 +08:00
2026-05-07 08:34:43 +08:00
2026-03-30 16:02:23 +08:00
2026-04-06 14:51:10 +08:00
2026-05-18 22:19:32 +08:00
2026-05-08 10:08:53 +08:00
2026-04-23 23:59:47 +08:00
2026-05-02 06:37:49 +08:00
2026-04-12 16:40:21 +08:00
2026-05-10 22:47:30 +08:00
2026-04-28 14:53:18 +08:00
2026-05-15 10:26:35 +08:00
2026-05-21 07:47:19 +08:00
2026-03-26 17:39:16 +08:00
2026-05-12 23:21:22 +08:00
2026-05-18 22:25:02 +08:00
2026-05-09 19:40:32 +08:00
2026-05-12 23:21:22 +08:00
2026-03-14 22:55:52 +08:00
2026-05-15 22:30:05 +08:00
2026-05-15 22:12:37 +08:00
2026-05-10 22:00:57 +08:00
2026-05-13 23:52:19 +08:00
2026-03-26 14:20:18 +08:00
2026-05-10 23:09:03 +08:00
2026-05-19 22:11:46 +08:00
2026-05-01 22:21:10 +08:00
2026-04-06 15:09:57 +08:00
2026-04-24 22:45:41 +08:00
2026-04-02 13:06:10 +08:00
2026-04-02 13:06:10 +08:00
2026-05-12 23:18:54 +08:00
2026-05-05 23:17:42 +08:00
2026-05-09 18:21:54 +08:00
2026-04-26 11:13:01 +08:00
2026-05-09 18:02:40 +08:00
2026-04-26 15:09:25 +08:00
2026-05-02 15:16:16 +08:00
2026-04-15 23:54:30 +08:00
2026-04-28 11:13:17 +08:00
2026-04-06 15:18:34 +08:00
2026-04-10 20:49:28 +08:00