383 words
2 minutes
Bypassing AgentRouter AI Client Restriction

hi everyone! today I want to share a small trick I used to make AgentRouter work with OpenCode when the service only accepts a handful of official AI clients (Codex, Qwen Code, Claude Code, and so on).

If you log in with an older GitHub account, AgentRouter can give you a decent balance, but when you try to use it directly you’ll hit a client restriction error like this:

 opencode run "Who are you" --model=agentrouter/deepseek-v3.2

> build · deepseek-v3.2

Error: unauthorized client detected, contact support for assistance at https://discord.com/invite/V6kaP6Rg44

So I made a tiny reverse proxy that forwards requests to AgentRouter and spoofs the same headers used by the Codex CLI. After that, OpenCode works fine.

Steps#

1. Create the proxy#

Save this as main.go:

package main

import (
	"log"
	"net/http"
	"net/http/httputil"
	"net/url"
)

func main() {
	// The target API we are forwarding to
	targetURL := "https://agentrouter.org"
	target, err := url.Parse(targetURL)
	if err != nil {
		log.Fatal("Failed to parse target URL:", err)
	}

	// Create a built-in reverse proxy
	proxy := httputil.NewSingleHostReverseProxy(target)

	// Intercept and modify the request before it goes out
	originalDirector := proxy.Director
	proxy.Director = func(req *http.Request) {
		originalDirector(req)

		// Override Host header for proper SSL routing at the destination
		req.Host = target.Host

		// Inject the required Codex headers
		req.Header.Set("Originator", "codex_cli_rs")
		req.Header.Set("User-Agent", "codex_cli_rs/0.101.0 (Mac OS 26.0.1; arm64) Apple_Terminal/464")
		req.Header.Set("Version", "0.101.0")
	}

	// Start the server
	port := ":8318"
	log.Printf("🚀 Proxy running on http://localhost%s\n", port)
	log.Printf("➡️ Configure OpenCode Base URL to: http://localhost%s/v1\n", port)

	if err := http.ListenAndServe(port, proxy); err != nil {
		log.Fatal("Server error:", err)
	}
}

2. Build the binary#

go build -ldflags="-s -w" -o agentrouter-proxy main.go

3. Run and test#

Start the proxy, then point OpenCode to http://localhost:8318/v1. After that, you should be able to call the model without the client restriction:

 opencode run "Who are you" --model=agentrouter/deepseek-v3.2

> build · deepseek-v3.2

I'm opencode, an interactive CLI tool that helps with software engineering tasks.

Extra: systemd auto-start#

If you want the proxy to always run in the background, create a systemd user service like this:

[Unit]
Description=AgentRouter Proxy
After=network.target

[Service]
# systemd requires absolute paths. %h resolves to your home directory (e.g., /home/username)
ExecStart=/home/rei/Documents/Tools/AgentRouter/agentrouter-proxy
Restart=always
RestartSec=3

# Optional: Limits memory usage to 50MB just as a safety net
MemoryHigh=50M
MemoryMax=100M

[Install]
WantedBy=default.target

Save it to ~/.config/systemd/user/agentrouter-proxy.service, then enable it:

systemctl --user enable --now agentrouter-proxy.service

That’s it. Your proxy will now start automatically on every boot.

Bypassing AgentRouter AI Client Restriction
https://blog.rei.my.id/posts/118/bypassing-agentrouter-ai-client-restriction/
Author
Reidho Satria
Published at
2026-03-18
License
CC BY-NC-SA 4.0