v2.1.3
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
/v1fix - Azure Responses v1 endpoint handling
- WebSocket Origin allowlist
openUrl()command injection →spawn()+shell:falseconfig.jsonatomic writes with0o600parallel_tool_callscatalog guard
Round 3 — this release
- auth.json permission migration:
atomicWriteFile()+hardenExistingSecret()at load time ensures existing0644files are fixed to0600on first startup - Directory hardening:
hardenConfigDir()fixes existing0755→0700at all entry points - Non-streaming tool output:
buildResponseJSON()now handlestool_call_start/delta/end, preserves output order, distinguishesfunction_call/custom_tool_call/tool_search_call, and propagateserrorevents - Reasoning summary suppression:
hideThinkingSummarynow 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 preservesnamespacefield,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.incompletewhen thinking_delta is suppressed
Remaining conditions (v2.1.4 candidates)
- Pre-header connect timeout (Medium)
- Native catalog
parallel_tool_callspreservation (Low) reasoning.summaryundefined handling (Medium)- Regression test coverage for new paths (Medium)