The right uncensored model for a coding agent is a large open-weight model with working tool calls, a long context window, and cheap cached input. On XField, that means deepseek-v4.1-flash-1017-uncensored for most runs and glm-5.3-uncensored when the work is hard security research. The rest of this post explains why, and how to set it up.
Why a refusal hurts more in an agent
A refusal in a chat window costs you one message. You rephrase and move on. In an agent, a refusal can end a long run. The job that was patching a deserialization bug stops at step 40, and you come back to a polite paragraph instead of a diff.
These refusals rarely come from anything dramatic. They come from ordinary work: fixing a security bug, writing a fuzzer, adding a test fixture that contains an injection string, building a scraper, reading a malware sample's strings during an incident. Mainstream models decline broadly, and an agent reads everything a task touches. Sooner or later it reads something that trips a filter.
What a coding agent needs from a model
Removing refusals is the start, not the whole answer. A model that never says no but cannot drive tools is no use to an agent. Look for four things.
- Tool calls that work. The agent lives on tool calls: read a file, run the tests, edit, run them again. Every XField model supports tools and streaming on all three protocols.
- Long context. Three of our four models take 1M tokens, so most of a repo, its test output and the conversation so far stay in view.
- Cache-friendly pricing. An agent resends its full context on every turn. What you pay for that repeated prefix matters more than the headline input price. More on this below.
- No stopping on security-adjacent tasks. The model should treat a proof-of-concept request, a detection rule or an exploit string in a test as normal engineering work.
Each agent also expects a particular API format. XField speaks all three, so you change a base URL and a key, not your tools.
| Agent | API format | Config |
|---|---|---|
| Claude Code | Anthropic Messages | ~/.claude/settings.json or env vars |
| Codex | OpenAI Responses | ~/.codex/config.toml |
| OpenCode | OpenAI Chat Completions | ~/.config/opencode/opencode.json |
Which model for which job
| Job | Use | Why |
|---|---|---|
| Long agent runs | deepseek-v4.1-flash-1017-uncensored | 1M context, 64K output, thinking on at high effort, and cheap when most input is cached |
| Large changes and long reports | glm-5.3-uncensored | 128K output, the longest we serve, and a second opinion from another model family |
| Subagents, short requests, batch jobs | glm-5.3-flash-uncensored | The lighter GLM, fine for small background calls |
| Chat, drafts, screenshots | qwen-3.8-27b-uncensored | Compact and quick. 128K context, so keep agent jobs small |
A sensible split for most teams: DeepSeek V4.1 Flash as the main agent model, GLM 5.3 Flash for the small background calls an agent makes, and GLM 5.3 when a change or report is too long for 64K of output. The full list, with context and output limits, is on /models.
What cached input does to the bill
An agent turn looks like this: a long, stable prefix (system prompt, tool definitions, files already read, earlier turns) followed by a small new piece (the latest tool result) and a short reply. The next turn sends the same prefix again, plus a little more.
That means almost all of the tokens you send are tokens you have sent before. XField caches them automatically, and cached input is billed well below fresh input. In a long run, cached input is most of the volume, fresh input is a sliver, and output is smaller still.
Two conclusions follow.
- Do not pick an agent model by its input price. Agents pay little of it. What matters over a long run is the price of cached input, and DeepSeek V4.1 Flash is built for exactly that.
- Keep the prefix stable. Caching works on the start of the request. Put the system prompt and tools first and do not reshuffle them between turns. You can check that it is working in
usage.prompt_tokens_details.cached_tokens.
Short, one-off requests are the exception. With nothing to reuse, the lighter GLM 5.3 Flash is a fine fit. Pricing is shared with your invitation.
Can you run one at home?
Only the small one. DeepSeek V4.1 Flash and GLM 5.3 are far too large for a laptop or a single gaming GPU, and their 1M-token context needs serious memory on top of the weights. A 27B model is within reach of a well-equipped workstation, but you would also need a local server that speaks the exact API format your agent expects, and you would give up the larger models for the work that needs them. For most people, an API key is less effort.
How to set it up
Request access at /request-access. Once invited, sign in and create a key in Settings › API keys. Then follow the guide for your agent; each has a paste-ready config.
/model.CodexOpenAI Responses. One provider block in config.toml.OpenCodeOpenAI Chat Completions. One provider entry in opencode.json.For Claude Code, four environment variables are enough:
export ANTHROPIC_BASE_URL="https://xfield.cloud.brutal.ai/api"
export ANTHROPIC_AUTH_TOKEN="$XFIELD_API_KEY"
export ANTHROPIC_MODEL=deepseek-v4.1-flash-1017-uncensored
export ANTHROPIC_DEFAULT_HAIKU_MODEL=glm-5.3-flash-uncensored
claudeThe small fast model handles Claude Code's background calls, such as titles and quick summaries, so it goes to the lighter GLM 5.3 Flash.
Tips for long agent runs
- Match effort to the step. DeepSeek V4.1 Flash thinks at high effort by default. Drop to low for routine edits and raise to xhigh or max for a hard bug.
- Try a small job first. An uncensored model is a different model, not the original minus its refusals. It can still decline now and then, and it has its own habits. Run a short task before a long one.
- Read the right bill. Claude Code's cost readout assumes Claude's prices, so it does not reflect what you pay here.
- Bring your own server tools. Anthropic's hosted server-side tools, such as web search, are not part of the model. Give the agent its own via MCP if it needs them.
Start with one long run on deepseek-v4.1-flash-1017-uncensored, keep the prefix stable, and see how far the agent gets before it stops. Usually, it doesn't.