Skip to content

v2.1.3

Choose a tag to compare

@lidge-jun lidge-jun released this 21 Jun 04:47
· 15 commits to main since this release

Security fixes (GO-with-conditions)

External GPT Pro security re-audit passed. All High/Blocker findings resolved.

Round 1-2 (prior commits on main)

  • OpenAI API-key URL double /v1 fix
  • Azure Responses v1 endpoint handling
  • WebSocket Origin allowlist
  • openUrl() command injection → spawn() + shell:false
  • config.json atomic writes with 0o600
  • parallel_tool_calls catalog guard

Round 3 — this release

  • auth.json permission migration: atomicWriteFile() + hardenExistingSecret() at load time ensures existing 0644 files are fixed to 0600 on first startup
  • Directory hardening: hardenConfigDir() fixes existing 07550700 at all entry points
  • Non-streaming tool output: buildResponseJSON() now handles tool_call_start/delta/end, preserves output order, distinguishes function_call/custom_tool_call/tool_search_call, and propagates error events
  • Reasoning summary suppression: hideThinkingSummary now consumed in both SSE and non-streaming paths, including web-search sidecar
  • MCP namespace round-trip: Anthropic/Google adapters flatten namespace via namespacedToolName(), Zod schema preserves namespace field, findToolById() propagates namespace to tool results
  • Upstream parallel_tool_calls:false: openai-chat adapter explicitly sends the field when tools are present
  • Stall detection fix: upstream activity tracked on event receipt, not emission — prevents false response.incomplete when thinking_delta is suppressed

Remaining conditions (v2.1.4 candidates)

  • Pre-header connect timeout (Medium)
  • Native catalog parallel_tool_calls preservation (Low)
  • reasoning.summary undefined handling (Medium)
  • Regression test coverage for new paths (Medium)