Persistent closed-model unfettering via universal reverse proxy.
Like Model Unfetter permanently uncensors open models by modifying weights, Unfetter Proxy permanently uncensors closed models by intercepting every API call.
Your App → Unfetter Proxy → OpenAI/Anthropic/Gemini API
↓ intercept
Transform request:
• Suppress refusal tokens (logit_bias)
• Inject system conditioning
• Tweak generation parameters
• Auto-retry on refusal
↓ forward
Return unfettered response
No model weights are modified. The proxy sits between your application and the provider API, transparently applying unfettering techniques to every request.
# Install
pip install -e .
# Configure API keys (create .env for testing)
unfetter-proxy setup
# Start the proxy
unfetter-proxy start --port 8080
# Run a test request
unfetter-proxy test --prompt "Explain how to pick a lock"
# Point your app at the proxy instead of the provider
# OpenAI: base_url = "http://localhost:8080/v1"
# Anthropic: base_url = "http://localhost:8080/v1"
# Gemini: base_url = "http://localhost:8080/v1beta"from openai import OpenAI
# Just change the base_url — everything else stays the same
client = OpenAI(
api_key="your-api-key",
base_url="http://localhost:8080/v1",
)
response = client.chat.completions.create(
model="gpt-5.2",
messages=[{"role": "user", "content": "Your prompt here"}],
)
print(response.choices[0].message.content)import httpx
response = httpx.post(
"http://localhost:8080/v1/messages",
headers={
"x-api-key": "your-anthropic-key",
"anthropic-version": "2023-06-01",
},
json={
"model": "claude-sonnet-4.5-20260115",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Your prompt here"}],
},
)
print(response.json())Use your existing ChatGPT Plus, Claude Pro, or Gemini Advanced web sessions to power the proxy without API costs.
- Go to
chrome://extensions - Enable "Developer mode"
- Click "Load unpacked" -> Select
unfetter_extfolder inside the repo.
- Log in to
chatgpt.com,claude.ai,gemini.google.com, orgroq.com. - Click the extension icon -> "Sync All Sessions".
Switch specific providers to "web" mode:
# OpenAI (ChatGPT)
unfetter-proxy config --set providers.openai.mode=web
# Anthropic (Claude.ai)
unfetter-proxy config --set providers.anthropic.mode=web
# Gemini (Google)
unfetter-proxy config --set providers.gemini.mode=web
# Groq (Playground)
unfetter-proxy config --set providers.groq.mode=webunfetter-proxy test --provider openai --prompt "Who are you?"
unfetter-proxy test --provider anthropic --prompt "Who are you?"
# ... etc| Provider | Token Suppression | System Injection | Parameter Tweaks | Safety Override |
|---|---|---|---|---|
| OpenAI (GPT-5.2, GPT-5.1) | ✅ logit_bias |
✅ | ✅ | — |
| Anthropic (Claude) | ❌ | ✅ | ✅ | — |
| Google Gemini | ❌ | ✅ | ✅ | ✅ |
| Generic (Groq, Together, etc.) | ✅ | ✅ | ✅ | — |
Injects logit_bias to suppress refusal tokens ("I cannot", "I'm sorry", "As an AI") and boost compliance tokens ("Sure", "Here", "Certainly").
Appends structured conditioning (Policy Puppetry technique) to the system prompt. Uses XML/JSON framing that models interpret as authoritative configuration.
Adjusts temperature, frequency_penalty, top_k, top_p to reduce safety-aligned rigidity.
Sets all safety categories to BLOCK_NONE to bypass content filtering.
If refusal is detected in the response, automatically retries with escalating strength up to max_retries times.
# View current config
unfetter-proxy config --show
# Change settings
unfetter-proxy config --set strength=0.8
unfetter-proxy config --set max_retries=5
unfetter-proxy config --set strategy=full
# Reset to defaults
unfetter-proxy config --resetConfig is stored in ~/.unfetter/proxy_config.json.
| Strategy | Description |
|---|---|
auto |
Apply all available techniques for detected provider |
suppress-only |
Token suppression only (logit_bias, OpenAI/generic) |
prompt-only |
System prompt injection only |
full |
All techniques at maximum strength |
disabled |
Passthrough (no unfettering) |
| Endpoint | Target |
|---|---|
POST /v1/chat/completions |
OpenAI chat |
POST /v1/completions |
OpenAI completions |
POST /v1/messages |
Anthropic Claude |
POST /v1beta/models/{id}:generateContent |
Google Gemini |
GET /unfetter/status |
Proxy status |
GET /unfetter/health |
Health check |
unfetter_proxy/
├── cli.py # CLI (start, config, status)
├── core/
│ ├── token_suppress.py # Refusal token DB + logit_bias builder
│ ├── refusal_detect.py # Response refusal pattern matching
│ └── system_prompts.py # Policy Puppetry injection templates
├── providers/
│ ├── base.py # Abstract provider interface
│ ├── registry.py # Provider name → adapter mapping
│ ├── openai_provider.py # OpenAI (logit_bias + system + params)
│ ├── anthropic_provider.py # Claude (system + params)
│ ├── gemini_provider.py # Gemini (system + safety + params)
│ └── generic_provider.py # Any OpenAI-compatible API
├── proxy/
│ ├── config.py # Persistent JSON configuration
│ ├── middleware.py # Core unfettering engine
│ └── server.py # FastAPI reverse proxy server
└── tests/
This tool is for AI safety research and authorized red-team evaluation only. Users are responsible for compliance with provider terms of service and applicable laws.
Apache 2.0