Fez login numa conta Nous — então por que a busca rápida gratuita ainda é recusada?

Você segue o caminho que a documentação recomenda: faz login numa conta Nous, não cola nenhuma API key de terceiros e espera que a busca simplesmente funcione. Em vez disso, a primeira busca dá erro dizendo que sua identidade não tem direito de acesso. Nada está mal configurado e sua conta está bem — a requisição nunca saiu da sua máquina. Ela foi barrada por um de três portões locais, e só um deles é de fato sobre direito de acesso.
Veja como a rota de busca rápida gratuita decide quem se qualifica, por que ela costumava barrar usuários registrados e como identificar em qual caso você está agora.
Dois tipos de rota, duas perguntas diferentes
O gateway gerenciado serve duas coisas bem diferentes:
- Integrações de fornecedores cobradas (extract, browser, imagens e assim por diante). Essas verificam que você tem direito — acesso pago ao Portal, ou um tool pool gratuito vivo.
- A rota
search_type: "fast". O gateway a serve sem nenhuma verificação de financiamento, então sua pergunta de elegibilidade é, por natureza, quem é você, e não quanto você pagou.
Historicamente, as duas rotas passavam por um único resolvedor, então a segunda pergunta era respondida com a régua da primeira. O bug é exatamente isso.
Os três portões, em ordem
A correção os percorre na ordem de execução, e vale a pena ler tudo — porque se qualquer um deles disser não, você vê a mesma mensagem de “sem direito”:
resolve_managed_tool_gateway()aplicavamanaged_nous_tools_enabled()(acesso pago, ou uma conta com um tool pool vivo) a todo fornecedor — incluindo o Perplexity._managed_web_search()só reportava uma rota gerenciada quando a autodetecção caía no Firecrawl e a sonda de prontidão do gateway, que passava pelo portão, era aprovada. Então uma identidade sem direito nunca era resolvida para a busca do Perplexity.- O provider do Perplexity chamava aquele mesmo resolvedor com portão de novo. É por isso que até escrever
web.backend: nousà mão esbarrava na mesma recusa.
Empilhados, o efeito era: registre uma conta, veja que existe uma rota gratuita para você, e ainda assim nunca chegue até ela.
A correção: dar escopo por identidade à rota gratuita
O PR #130660 não afrouxa o portão pago. Ele dá à rota gratuita a sua própria régua:
- Um novo
resolve_free_search_gateway()resolve puramente pela identidade. - O novo predicado
fast_search_entitled()aceita uma identidade Portal registrada de qualquer tier — sem exigência de crédito, sem exigência de tool pool. - Fornecedores cobrados continuam passando pelo
resolve_managed_tool_gateway()exatamente como antes.
E os convidados? Deliberadamente excluídos. A rota gratuita é emitida por identidade, e o tier de convidado anônimo não tem nenhuma conta Portal por trás. Os convidados permanecem byte a byte idênticos a antes e continuam no keyless ring. Isso não é uma porta se fechando para novatos — é “prove quem você é e use a rota gerenciada; se não conseguir, use a rotação pública”.
Dois detalhes merecem ser destacados separadamente:
- Uma falha falha fechado em vez de adivinhar. Uma consulta de conta que falha resolve para “não disponível”. A parte contraintuitiva: uma consulta que falha ainda é carimbada como logado, e só o campo
errora distingue de uma conta real — então esse campo é estrutural, não uma redundância por segurança. - A correspondência de tier não diferencia mais maiúsculas/minúsculas nem espaços em branco. O claim do tier chega literalmente do JWT ou das informações da conta, e costumava ser comparado ao pé da letra — um único espaço extra bastava para distorcer o veredito.
Quando não resolve, a mensagem diz em qual caso você está
A mesma mudança transformou “por que isso não funcionou” em três frases distintas:
| Sua situação | O que você recebe |
|---|---|
| Você é o tier de convidado anônimo | precisa de uma conta Nous (faça login com /login) |
| Não há identidade utilizável (você saiu, ou a consulta falhou) | não há identidade Nous utilizável (faça login com /login) |
| O gateway está inacessível | o Nous Tool Gateway está inacessível |
Elas são separadas de propósito, porque correspondem a três ações diferentes: faça login para as duas primeiras, e trate a terceira como um problema de rede ou de serviço que nenhuma quantidade de login vai resolver.
Como verificar na sua própria máquina
- Confira se você não fixou explicitamente outro fornecedor de busca. Assim que
web.backendouweb.search_backendnomeia um fornecedor concreto, a decisão é sua e nunca há redirecionamento — isso é um trade-off deliberado. As chaves estão documentadas na referência do hermes config. - Separe search de extract. Sob
web.backend: nous, a busca é servida pelo gateway gerenciado do Perplexity, enquanto o extract continua indo para o Firecrawl; a rota gratuita é só de search, e toda outra rota de fornecedor mantém sua exigência de direito. - Você não precisa fazer login. A rotação pública sem chave continua disponível para convidados — veja os cinco canais de busca gratuitos e o guia do tier gratuito sem API key; se preferir trazer sua própria chave, isso é abordado no backend de busca Perplexity.
- Veja em qual build você está. A correção foi mesclada na
mainem 2026-10-01, e a tag mais recente (v0.21.5) é de 24/09, então ela ainda não está na tag. Instalações via git que acompanham amainjá a têm.
A conclusão
Isso não era um recurso faltando. Era elegibilidade julgada na dimensão errada: uma rota que nunca verifica seu saldo estava sendo bloqueada por uma lógica que verifica, e os três portões reportavam a mesma frase — então você só conseguia ver “sem direito”, nunca “você nunca precisava de um direito”.
A lição prática é simples. Se a busca te recusa logo depois do login, não vá auditar seus créditos: primeiro confira se você fixou web.backend em algum outro fornecedor, depois leia qual problema de identidade a mensagem realmente nomeia. Acerte a identidade e a busca rápida gratuita será simplesmente gratuita.