Repository navigation
Releases: massiveits/opencode-go-cliproxyapi
Release list
v0.2.2
What's Changed
Bug Fixes
- Preserve Claude image tool results when routing to Chat Completions: retain images in an associated user message after tool replies, preserve text, tool references and error markers, and include images in session derivation. The selected upstream model must support image input.
Special thanks to @c0mm4nd in #16.
Upgrade Notes
- Replace the old plugin binary with the new release binary.
- Restart CLIProxyAPI after replacing the plugin.
Full Changelog: v0.2.1...v0.2.2
v0.2.1
What's Changed
Bug Fixes
- Fix
tool_resulttranslation when receivingtool_referencecontent blocks from Claude clients (such as ToolSearch, web search, or web fetch in Claude Code), preventing 500 errors and conversation lockouts on Chat Completions and Responses models like DeepSeek.
Special thanks to @SpiGAndromeda in #14.
Upgrade Notes
- Replace the old plugin binary with the new release binary.
- Restart CLIProxyAPI after replacing the plugin.
Full Changelog: v0.2.0...v0.2.1
v0.2.0
CLIProxyAPI v8
Features
- Support CLIProxyAPI v8 and its generic plugin quota API.
- Return rolling, weekly, and monthly quotas for the credential selected by CLIProxyAPI.
- Advertise the quota provider as OpenCode Go.
- Remove the separate quota page and custom management routes.
- Accept an optional
namefor each API key. - Use readable account labels and filenames instead of key digests.
- Preserve existing auth IDs, custom labels, filenames, and host metadata.
- Prevent duplicate auth records at cold start when readable filenames exist.
- Reject invalid quota values and redact provider request errors.
Upgrade
- Upgrade CLIProxyAPI to v8.0.0 or later.
- Replace the plugin binary with the new build.
- Restart CLIProxyAPI.
The generic endpoints are GET /v0/management/quota/providers and POST /v0/management/quota/fetch.
Both require the management key. Quota reset is unsupported.
The management dashboard must support the generic quota API to show plugin refresh controls.
Older dashboard builds do not show these controls.
Existing credential files keep their names and stable IDs.
Set name: on an API key to choose its display label.
New files use readable names.
Special thanks to @darfink in #10.
What's Changed
Full OpenAI Codex CLI support across all models: multi-agent namespaces, custom programmatic tools (exec), tool call results, and reasoning efforts are fully functional.
Bug Fixes
- Fix missing Responses stream item lifecycle completion events (output_text.done, content_part.done, function_call_arguments.done, output_item.done) prior to response.completed, resolving dropped assistant output and tool calls in OpenAI Codex CLI and strict Responses clients.
- Fix handling of in-history messages with role: "system" across protocol adapters without rejecting them as unsupported roles or forwarding invalid turn roles to upstream providers that require alternating user/assistant turns.
- Fix handling of multi-part content arrays in function_call_output.output under /v1/responses decoding.
- Fix upstream HTTP >= 400 error propagation in streaming and non-streaming requests by reading and extracting the upstream error payload instead of discarding it with generic fallback errors.
- Add two-way Responses tool namespace and additional_tools translation: merge dynamic declarations from input items (type: "additional_tools"), unroll client-side grouping tools (type: "namespace") into qualified wire names for upstream models, and restore original tool names and namespaces across non-streaming output and streaming SSE events for OpenAI Codex CLI and multi-agent harnesses.
- Add Codex custom tool normalization and hosted tool dropping: rewrite generic custom tools (
type: "custom", e.g.exec) into function tools with default object schemas, and drop client-only/hosted tools (apply_patch,web_search,web_search_preview,tool_search,image_generation) when routing to Chat Completions or Messages endpoints, resolving Codex CLI failures on models likespace-bunny-free. - Add bidirectional support for
custom_tool_callandcustom_tool_call_outputconversation items and outbound custom tool events: translate inbound custom tool calls and results across Chat Completions and Messages protocols, unwrap arguments into clean raw input, and restorecustom_tool_callandresponse.custom_tool_call_input.doneon outbound non-streaming and streaming responses, resolving Codex tool dispatch aborts on programmatic tools likeexec. - Remove local reasoning effort validation across request translators: allow client-declared reasoning effort levels (e.g.
xhigh,max, and unlisted levels) to pass through transparently to upstream endpoints without local gatekeeping inchatcompletions,responses, andmessagesadapters. - Normalize tools for non-GPT native Responses models: unroll namespaces, convert custom tools (
exec) into function tools, and sanitizeweb_searchdefinitions when targeting non-GPT Responses endpoints (e.g.muse-spark,grok), while preserving transparent passthrough for native GPT models (e.g.gpt-6-luna). - Restore custom tool calls across native Responses-to-Responses streaming and non-streaming adapters, ensure historical function_call arguments default to valid JSON via
shared.DefaultArgsto resolve Muse Spark errors, drop compaction input items to fix Grok compaction blob decode failures, and expandUnwrapCustomToolInputto unwrap arguments, code, cmd, and command fields. - Drop historical
reasoninginput items for non-GPT Responses upstreams: resolve Grok HTTP 400 "Could not decode the compaction blob" decryption errors on multi-turn conversations caused by pooled account credential mismatches on encrypted reasoning blobs.
Upgrade Notes
- Replace the old plugin binary with the new release binary.
- Restart CLIProxyAPI after replacing the plugin.
- Hard-refresh Management Center if the plugin page looks stale.
Full Changelog: v0.1.9...v0.1.10
v0.1.10
What's Changed
Full OpenAI Codex CLI support across all models: multi-agent namespaces, custom programmatic tools (exec), tool call results, and reasoning efforts are fully functional.
Bug Fixes
- Fix missing Responses stream item lifecycle completion events (output_text.done, content_part.done, function_call_arguments.done, output_item.done) prior to response.completed, resolving dropped assistant output and tool calls in OpenAI Codex CLI and strict Responses clients.
- Fix handling of in-history messages with role: "system" across protocol adapters without rejecting them as unsupported roles or forwarding invalid turn roles to upstream providers that require alternating user/assistant turns.
- Fix handling of multi-part content arrays in function_call_output.output under /v1/responses decoding.
- Fix upstream HTTP >= 400 error propagation in streaming and non-streaming requests by reading and extracting the upstream error payload instead of discarding it with generic fallback errors.
- Add two-way Responses tool namespace and additional_tools translation: merge dynamic declarations from input items (type: "additional_tools"), unroll client-side grouping tools (type: "namespace") into qualified wire names for upstream models, and restore original tool names and namespaces across non-streaming output and streaming SSE events for OpenAI Codex CLI and multi-agent harnesses.
- Add Codex custom tool normalization and hosted tool dropping: rewrite generic custom tools (
type: "custom", e.g.exec) into function tools with default object schemas, and drop client-only/hosted tools (apply_patch,web_search,web_search_preview,tool_search,image_generation) when routing to Chat Completions or Messages endpoints, resolving Codex CLI failures on models likespace-bunny-free. - Add bidirectional support for
custom_tool_callandcustom_tool_call_outputconversation items and outbound custom tool events: translate inbound custom tool calls and results across Chat Completions and Messages protocols, unwrap arguments into clean raw input, and restorecustom_tool_callandresponse.custom_tool_call_input.doneon outbound non-streaming and streaming responses, resolving Codex tool dispatch aborts on programmatic tools likeexec. - Remove local reasoning effort validation across request translators: allow client-declared reasoning effort levels (e.g.
xhigh,max, and unlisted levels) to pass through transparently to upstream endpoints without local gatekeeping inchatcompletions,responses, andmessagesadapters. - Normalize tools for non-GPT native Responses models: unroll namespaces, convert custom tools (
exec) into function tools, and sanitizeweb_searchdefinitions when targeting non-GPT Responses endpoints (e.g.muse-spark,grok), while preserving transparent passthrough for native GPT models (e.g.gpt-6-luna). - Restore custom tool calls across native Responses-to-Responses streaming and non-streaming adapters, ensure historical function_call arguments default to valid JSON via
shared.DefaultArgsto resolve Muse Spark errors, drop compaction input items to fix Grok compaction blob decode failures, and expandUnwrapCustomToolInputto unwrap arguments, code, cmd, and command fields. - Drop historical
reasoninginput items for non-GPT Responses upstreams: resolve Grok HTTP 400 "Could not decode the compaction blob" decryption errors on multi-turn conversations caused by pooled account credential mismatches on encrypted reasoning blobs.
Upgrade Notes
- Replace the old plugin binary with the new release binary.
- Restart CLIProxyAPI after replacing the plugin.
- Hard-refresh Management Center if the plugin page looks stale.
Full Changelog: v0.1.9...v0.1.10
v0.1.9
What's Changed
Features
- Expose
ConfigFieldsin plugin registration metadata, enabling interactive configuration editing in CLIProxyAPI Management Center for all plugin settings (api-keys,base-url,catalog-url,model-prefix,catalog,protocols,route-overrides,request-timeout,max-response-bytes,allow-http). - Add "Refresh All" button in quota page.
Bug Fixes
- Normalize
role: "developer"torole: "system"in the chat-completions adapter, preventing DeepSeek-backed models from rejecting valid client requests with HTTP 400 (#5). Thanks to @zlwu.
Upgrade Notes
- Replace the old plugin binary with the new release binary.
- Restart CLIProxyAPI after replacing the plugin.
- Hard-refresh Management Center if the plugin page looks stale.
Full Changelog: v0.1.8...v0.1.9
v0.1.8
What's Changed
Bug Fixes
- Infer
type: "message"for role-bearing Responses input items whentypeis omitted or empty, preventing valid client requests from failing with HTTP 500 (#1). Thanks to @tangxijin. - Return HTTP 400 Bad Request instead of status 0 for client-fault errors (
ClassUnsupportedandClassTranslation) in envelope error responses, preventing CLIProxyAPI from misclassifying caller input errors as credential faults and placing the provider in cooldown (#2). Thanks to @tangxijin.
Upgrade Notes
- Replace the old plugin binary with the new release binary.
- Restart CLIProxyAPI after replacing the plugin.
- Hard-refresh Management Center if the plugin page looks stale.
Full Changelog: v0.1.7...v0.1.8
v0.1.7
What's Changed
- Fix the OpenCode Go quota page on CLIProxyAPI v7.2.159+ where the new native
POST /v0/management/plugins/:id/quotaroute intercepted the plugin's quota request before it reached the plugin. The plugin's quota data route is now/plugins/opencode-go-cliproxyapi/quota-usage; the Management Center menu and page URL are unchanged. - Thanks to @turnercore for the fix in #3.
Upgrade Notes
- Replace the old plugin binary with the new release binary.
- Restart CLIProxyAPI after replacing the plugin.
- Hard-refresh Management Center if the plugin page looks stale.
Full Changelog: v0.1.6...v0.1.7
v0.1.6
What's Changed
- Fix HTTP 400 errors on DeepSeek models (
deepseek-flash,deepseek-v4.1-flash, etc.) caused by OpenCode Go's backend rejecting untyped client reasoning metadata (such asthinking: { levels: [...] }sent by some OpenAI-compatible clients). Incoming/v1/chat/completionsrequests are now sanitized to strip untypedthinkingmetadata while preserving nativereasoning_effortand valid Anthropic-style thinking objects.
Upgrade Notes
- Replace the old plugin binary with the new release binary.
- Restart CLIProxyAPI after replacing the plugin.
- Hard-refresh Management Center if the plugin page looks stale.
Full Changelog: v0.1.5...v0.1.6
v0.1.5
What's Changed
- Use CPA canonical session ID (
canonical_session_id) when present. - Fallback to inbound session headers or content-based hashing if the canonical session ID is missing.
Upgrade Notes
- Replace the old plugin binary with the new release binary.
- Restart CLIProxyAPI after replacing the plugin.
- Hard-refresh Management Center if the plugin page looks stale.
Full Changelog: v0.1.4...v0.1.5