mateclaw/mateclaw-server/src/main/java/vip/mate/tool
倪程伟 91a7842393
fix(mcp): fail-closed on unknown channel + signing-key self-heal (#471)
Adversarial review of PR #464 found that classify() promoted an absent
channelType to the 'authenticated' trust branch, stamping an untrusted
ThreadLocal username (e.g. stale value on a reused thread, or internal
tasks like SkillConsolidation/Reflection that carry no channel) with
authenticated trust — contradicting the fail-closed contract the service
documents.

- classify(): channel==null/blank now resolves to NONE (no injection);
  only the explicit 'web' channel may yield authenticated. Unrecognised
  non-web channels downgrade to external, never authenticated.
- signingKey(): replace the one-shot keyParseAttempted latch with
  lastAttemptedPem so a corrected/hot-reloaded PEM re-parses on the next
  call without an app restart. Still fail-closed when PEM is unchanged.
- Tests: 4 new cases lock the regression (null+dirty-ThreadLocal->NONE,
  blank->NONE, novel channel->external, self-heal after config fix).
- .gitignore: exclude local .codebase-memory/ agent index.

MCP+identity suite: 93/93 green.
2026-07-02 11:13:27 +08:00
..
browser fix(browser): actually block redirect targets in SSRF interceptor 2026-07-02 10:31:35 +08:00
builtin feat(browser): 放开内网服务访问限制,新增局域网部署模式开关 (#472) 2026-07-02 09:25:16 +08:00
controller feat(tool,skill,ui): progressive tool/skill disclosure (load_skill + enable_tool + tier UI) 2026-05-23 09:07:45 +08:00
disclosure feat(tool,skill,ui): progressive tool/skill disclosure (load_skill + enable_tool + tier UI) 2026-05-23 09:07:45 +08:00
document feat(tool): surface execute_shell_command artifacts; fix download filename 2026-06-30 14:01:48 +08:00
guard fix(tool-guard): enforce workspace boundary for execute_code and trust spill roots (#403) 2026-06-23 10:11:54 +08:00
image feat(tool): configurable SSRF allowlist for outbound HTTP guards 2026-06-29 10:33:38 +08:00
local feat(tool): desktop local file/shell tools via WebSocket tunnel 2026-06-26 18:24:25 +08:00
mcp fix(mcp): fail-closed on unknown channel + signing-key self-heal (#471) 2026-07-02 11:13:27 +08:00
model fix(tool): show runtime names in tools admin 2026-05-23 22:54:57 +08:00
model3d feat(workspace): chat-uploads 上传目录工作空间/Agent 感知化 (#422) 2026-06-26 14:20:54 +08:00
music feat(workspace): chat-uploads 上传目录工作空间/Agent 感知化 (#422) 2026-06-26 14:20:54 +08:00
repository Initial commit: MateClaw — Java + Vue 3 AI Assistant System 2026-04-04 19:03:49 +08:00
search fix(search): bundled SearXNG sidecar actually works out of the box 2026-04-24 22:08:42 +08:00
service fix(tool): show runtime names in tools admin 2026-05-23 22:54:57 +08:00
video feat(workspace): chat-uploads 上传目录工作空间/Agent 感知化 (#422) 2026-06-26 14:20:54 +08:00
ConcurrencyUnsafe.java feat(agent): runtime efficiency — spill oversized tool results, add tool concurrency registry, collect cache metrics 2026-04-19 08:28:45 +08:00
ToolConcurrencyRegistry.java feat(agent): runtime efficiency — spill oversized tool results, add tool concurrency registry, collect cache metrics 2026-04-19 08:28:45 +08:00
ToolRegistry.java fix(tool): show runtime names in tools admin 2026-05-23 22:54:57 +08:00