Apertaram o cerco: os novos limites dos modelos free (Zen) do OpenCode/OpenWork a partir de 23/10/2026
Em 26/10/2026, duas sessões novas no OpenWork pararam no mesmo aviso:
The free starter model is busy right now. Retrying... To keep working now, connect your own model provider.
A impressão era de sobrecarga temporária — e, principalmente, de injustiça: nenhum modelo gratuito tinha sido usado naquele dia. O log do motor, porém, mostrava outra coisa:
level=ERROR message="stream error" providerID=opencode modelID=deepseek-v4.1-flash-free
error.error="AI_APICallError: Free usage limit reached. Free models work in OpenCode
(https://opencode.ai); subscribe to OpenCode Go to keep going: https://opencode.ai/go"
Eram dois HTTP 429 (FreeUsageLimitError) disfarçados de "modelo ocupado". Mas a parte importante não é o disfarce: é que, a partir de 23/10/2026, o regime gratuito do Zen mudou — e a mudança não veio com anúncio, número novo na documentação nem contador na interface.
1. Quatro erros que parecem o mesmo erro
Antes de falar de cota, vale separar o que chega com mensagem parecida e causa completamente diferente:
| O que aparece | Causa real | O que resolve |
|---|---|---|
The free starter model is busy right now. Retrying... |
429 FreeUsageLimitError: cota free do IP esgotada no dia UTC |
Esperar o balde virar; usar modelo pago |
403 FreeTierError · "OpenCode's free tier can only be used from within OpenCode" |
Chamada ao free tier vinda de fora do cliente OpenCode (proxy, gateway, curl) |
Não insistir: o portão exige o cliente |
Provider opencode some da UI e todo *-free dá 403 |
A versão do app (a partir da 0.18.60) injeta bloqueio de provider |
Reverter a versão — análise completa no outro artigo |
OpenWork Connect: Needs attention — provider/model not found |
Falso positivo do probe de saúde enquanto logado no Cloud | Ignorar; não tem relação com cota |
Só a primeira linha é sobre cota. As outras três continuam existindo, e são a razão de tanta gente trocar de chave, reinstalar o app e concluir que "nada funciona" quando o problema é outro.
2. O balde diário não vira à meia-noite da sua cidade
A cota gratuita do Zen é um balde por IP e por dia UTC, com a chave ip:<ip>:<AAAA-MM-DD>. O dia UTC começa à meia-noite em UTC+0; no Brasil (UTC−3), isso é 21h da véspera. Quem está em outro fuso precisa converter: o corte é sempre 00:00 UTC.
A consequência prática vale para qualquer usuário, em qualquer fuso: o consumo feito depois do horário local em que o dia UTC vira já pertence ao balde seguinte. Quem usa o gratuito às 22h de uma terça está gastando a cota de quarta. E quem abre o app na manhã seguinte e vê "cota esgotada" não necessariamente usou alguma coisa naquele dia local.
Um caso concreto, para dimensionar: em 25/10, três sessões de agente rodaram em paralelo entre 22h20 e 22h42 e consumiram 167 chamadas free, 166 concluídas. A primeira recusa veio às 22h42. Às 00h02 e 00h03 de 26/10 — já no dia local seguinte — beam-free e nemotron-3.5-super-vl-free devolviam o mesmo 429. Às 18h44 de 26/10, ainda antes das 21h, duas sessões novas nasceram bloqueadas. Para o calendário local, "hoje não usei nada"; para o contador, o dia tinha começado na véspera às 21h.
É por isso que "a cota não voltou" é quase sempre uma leitura de fuso, não um defeito.
3. Como o mecanismo funciona por dentro
O código do gateway (handler.ts, ipRateLimiter.ts e trialLimiter.ts) fecha o desenho:
- Quem escolhe o balde: modelos marcados como
allowAnonymous— todo gratuito é — usam oipRateLimiter. Modelos comrateLimitpróprio trocam a data por um balde do modelo (os 2 primeiros caracteres do id no lugar do dia cheio). É por isso que dois gratuitos podem responder de forma oposta no mesmo segundo. - Cota dobrada para IP novo: enquanto o contador vitalício daquele IP estiver abaixo de
7 × limite diário, o limite do dia é o dobro. - Recusa não conta: o
check()roda antes da chamada ao provedor e lança ali; otrack()só incrementa depois da resposta. Retentar no banner é inócuo — não consome cota, mas também não destrava nada. - O segundo teto não gera 429: modelos servidos por providers de teste consomem um orçamento de tokens por IP, vitalício (
promoTokens). Estourado, o modelo deixa de preferir aquele provider e segue por outro. Isso não produzFreeUsageLimitError— logo, não explica janelas de minutos. - Não existe contador: nem o OpenWork nem a aba Usage do Console mostram "quanto resta". O log de atividade do Console registra a recusa como
errorCode: inference_failed, sem dizer que é cota.
O número não é regra publicada
O FAQ do Go documenta 200 requisições/dia para os modelos gratuitos. O medido, porém, muda:
| Data | Primeira recusa do dia UTC |
|---|---|
| 22/10 | ~900 requisições concluídas (recusa só no fim do dia) |
| 23/10 | 939 concluídas |
| 25/10 | na 215ª requisição |
| 26/10 | na 168ª requisição |
Os mantenedores respondem publicamente que a cota free é dinâmica — "we are always shifting based off what capacity we have vs demand" (#28055, #55816) — e que o limite vale "for your account or network as a whole, not to each model" (#56523). Ou seja: 200 é foto, não contrato. E, no caso de 26/10, a recusa na 168ª posição pode ser config de servidor mais baixa ou tráfego de outro cliente no mesmo IP — as duas hipóteses cabem na medição, e não dá para separá-las sem outro IP de comparação.
4. A cronologia do corte
O aperto não foi um anúncio único; foi um deslocamento que dá para datar pela enxurrada de relatos.
17/10 — o catálogo encolhe por decisão de produto. O muse-spark-1.3-contributor-free é aposentado de propósito. As issues #56541 e #56580 recebem a resposta de que o modelo era "a free model offered for a limited time" e foi retirado (PR #56301). O catálogo gratuito é rotativo por definição: hoje são DeepSeek V4.1 Flash Free, Nemotron 3 Ultra/3.5, Beam Free, GLM-5.3 Flash Free, MiMo e Big Pickle.
22–23/10 — o balde ainda era grande. Em um IP monitorado para este artigo, 903 e 939 requisições deepseek-v4.1-flash-free foram concluídas num dia, com recusa só no fim. Ou seja: até 23/10, o patamar antigo ainda valia para pelo menos parte dos usuários.
23/10 — começa a enxurrada. É o dia da primeira leva de relatos públicos de cota recusada sem consumo: a issue #58284 descreve treze tentativas no dia 22, todas recusadas, com zero uso no Console. Nas 48 horas seguintes somam-se #58842, #58859, #58900, #58902 e #58919, todas com o mesmo desenho: 429 que não volta depois do horário mostrado, ou que volta com zero consumo.
25/10 — o teto novo aparece na medição. A primeira recusa veio na 215ª requisição free do dia UTC. É o primeiro dia em que o patamar de ~200 pode ser medido — dois dias depois de o balde ainda aceitar ~900.
26/10 — o teto novo se confirma. A recusa veio na 168ª requisição, e duas sessões novas, sem uso no dia local, nasceram bloqueadas. A issue #59176 reúne o mesmo sintoma em mais contas; o bot de triagem reconhece que "other people have reported the same symptom recently, which suggests it isn't specific to your account".
A leitura mais provável do corte é 23/10: é quando os relatos em massa começam e quando o comportamento deixa de ser "cota alta que ninguém alcança" para virar "recusa com pouco ou nenhum uso". O rollout não chegou a todos no mesmo dia — o IP que originou a medição só sentiu o teto novo em 25/10 —, mas a data do cerco é a da enxurrada, não a de uma medição isolada.
E há uma ambiguidade que o desenho impõe: a mesma mensagem cobre cota legitimamente gasta e cota travada por defeito de contabilidade. Aqui a aritmética fechou (167 chamadas antes da recusa), então foi esgotamento; para boa parte dos relatos de 23–26/10, não fecha.
Cerco fechado: por que não há contorno local
O gratuito do Zen deixou de ser uma reserva previsível. Ele é promoção: troca de modelo, sai do catálogo e tem o teto reduzido sem changelog — e, agora, pode recusar por cota gasta ou por contabilidade travada, com a mesma mensagem e sem contador para distinguir.
O que não muda a cota, apesar de parecer que muda: chave nova (o balde é do IP), reconectar a conta, religar o Auto, voltar o seletor ao padrão ou trocar de modelo free — este último compra minutos de um balde com folga, não uma saída. Do lado do app, também não há interruptor: a única alavanca real é comercial, um modelo pago ou assinatura.
Diferente do bloqueio por versão do app, que tinha uma reversão documentada no outro artigo, este aperto não tem gatilho de saída do lado de quem usa. O caminho seguro é orçar o trabalho importante em modelo pago e tratar o gratuito como bônus: serve para sessão curta e descartável, não para o que precisa acontecer.
Recomendo este
O gratuito não tem saída; o pago tem escolha — e a escolha, aqui, é direta: DeepSeek V4.1 Flash. É o modelo que escreveu este artigo: 5 horas de trabalho, 21 rodadas de conversa e cerca de US$ 1,40 até o fechamento. Cada rodada virou, na média, 14 requisições ao modelo — 290 no total. O balde free de 26/10 fechou na 168ª requisição do dia, ou seja, por volta da 12ª rodada: a conversa teria acabado antes da metade.
No Zen, custa US$ 0,30 por 1M de tokens de entrada e US$ 1,20 por 1M de saída. No ranking público do OpenRouter, a família V4.1 Flash ocupa os dois primeiros lugares da semana (35,4T e 17,4T tokens) e o primeiro do mês (123T) — é o modelo mais usado da plataforma, o que também significa mais gente testando e mais comportamento documentado. Preço e ranking mudam; confira antes de contratar.
Bruno Torres
Empreendedor digital solo. Construo negócios digitais do zero com agentes de IA — e documento o caminho, incluindo o que não funcionou.
Comentários
Discutir: LinkedIn
Compartilhar: X · Facebook · LinkedIn · WhatsApp · Telegram · E-mail ·