Cloudflare lançou cf em 28 de setembro de 2026, seu novo CLI em beta aberta: uma única ferramenta para mais de 3000 operações da API que substituirá o Wrangler. Você pode migrar um Worker hoje com cf migrate, exceto se estiver escrito em Python ou Rust: esses continuam passando pelo Wrangler.
Aqui está o que muda com cf, como instalá-lo sem surpresas e o que fica no Wrangler por enquanto.
O que é cf, o novo CLI do Cloudflare?
cf é a nova ferramenta de linha de comando do Cloudflare, gerada diretamente a partir do esquema OpenAPI da API do Cloudflare. O Wrangler acumulou ao longo dos anos cerca de 280 comandos feitos manualmente; cf cobre toda a API, mais de 3000 operações: Workers, DNS, WAF, Access, registro de domínios e tudo o mais, a partir de um único binário.
O motivo declarado são os agentes. Segundo o Cloudflare, em março de 2026 os agentes já geravam um quarto do uso do Wrangler, e na semana anterior ao lançamento chegaram a 48%. Essas são cifras do próprio Cloudflare. O design do CLI parte daí:
- JSON é a saída padrão. Formatado para pessoas e compactado para agentes, pronto para passar por
jqsem a flag--jsone sem tabelas Unicode para fazer parse. cf cli searchrecebe uma descrição em linguagem natural do que você quer fazer e retorna os comandos que se encaixam, a partir da descrição e dos parâmetros de cada operação da API. O Cloudflare diz que os agentes descobrem este comando automaticamente na primeira vez que executam--help.- Configuração tipada.
cloudflare.config.tssubstituiwrangler.toml/wrangler.jsonc, então o language server do seu editor (e qualquer agente que o use, como Claude Code ou Codex) pode validar a configuração enquanto você a escreve. - Vite é o build e o servidor de desenvolvimento padrão. O Cloudflare Vite Plugin substitui o bundling com esbuild próprio do Wrangler e seu servidor de desenvolvimento em
:8787.
Os comandos gerados seguem o padrão cf <product> [group…] <operation>. Se procurar documentação em inglês, os termos que vai encontrar são cloudflare cf cli e wrangler migration.
Como se instala o CLI do Cloudflare?
Se instala globalmente via npm:
npm i -g cf
Necessita de Node.js 22 ou superior. Depois, autentique-se e explore:
cf auth login # Autentique com o Cloudflare
cf --help # Navegue por todos os comandos
cf <command> --help # Ajuda por comando
cf complete bash >> ~/.bashrc # Instale completions do shell
Em CI, ou em qualquer ambiente onde um login no navegador não faça sentido, cf lê primeiro a variável de ambiente CLOUDFLARE_API_TOKEN, antes de qualquer perfil OAuth salvo.
Conflita com outras ferramentas que se chamam cf?
Pode acontecer. O CLI do Cloud Foundry também se chama cf, e foi uma das primeiras coisas que apareceram no thread do Hacker News do lançamento. O pacote npm instala o mesmo binário com um segundo nome, cloudflare, então você pode usar esse se cf já estiver ocupado na sua máquina.
Uma nota sobre o nome do pacote: em 2013, cf no npm era um pacote de configuração sem relação com o Cloudflare (versões 0.0.1 a 0.0.3). O Cloudflare publica sob esse nome desde a versão 0.0.4, em abril de 2026. Se quiser verificar antes de instalar, npm view cf deveria mostrar description: 'The Cloudflare CLI' e o repositório github.com/cloudflare/cf.
Como migrar do Wrangler para cf?
A partir do diretório do projeto do seu Worker, execute:
cf migrate
O que acontece depois depende de como seu Worker é construído hoje, segundo o anúncio do Cloudflare:
- Os Workers que já compilam com Vite são convertidos para
cloudflare.config.tsautomaticamente. - Os Workers que dependem do Wrangler para o bundling com esbuild continuam funcionando:
cfdelega esses builds ao Wrangler.
A partir daí, os comandos do dia a dia são:
cf dev
cf build
cf deploy
cf deploy compila por padrão e depois envia o resultado. Passe --prebuilt para reutilizar um build existente. Se quiser enviar uma versão sem implantá-la, use cf workers versions create. cf workers triggers deploy aplica as rotas e os cron configurados.
Para trabalhar com dados localmente, adicione --local a um comando compatível e será executado contra uma instância local e temporária do Miniflare, não contra sua conta de produção. Isso cobre, entre outras, operações de KV, D1 e R2. Os comandos sem equivalente local retornam um erro em vez de ir para a produção.
E se você começar um projeto novo?
cf init my-worker cria um Worker de exemplo com cloudflare.config.ts, vite.config.ts, src/index.ts, tsconfig.json e package.json. Se executar cf init em um diretório que já tem arquivos, configura o projeto existente.
cf init my-worker
cd my-worker
cf dev
Os sites estáticos continuam sem precisar de arquivo de configuração: basta com cf deploy no diretório do projeto.
O que é cloudflare.config.ts e em que se diferencia de wrangler.toml?
É um arquivo TypeScript que exporta uma chamada a defineConfig. Este é o exemplo mínimo do Cloudflare: um Worker cuja configuração muda de acordo com o mode do Vite.
import { bindings, defineConfig } from "cf/config";
import * as entrypoint from "./index.js" with { type: "cf-worker" };
export default defineConfig(({ mode }) => ({
worker: {
name: "example-worker",
entrypoint,
compatibilityDate: "2026-09-27",
env: {
Environment: bindings.text(`This is ${mode} environment`),
},
},
}));
A mudança principal em relação ao Wrangler está nos ambientes. Em wrangler.toml ou wrangler.jsonc o usual era copiar um bloco env para cada ambiente. Aqui cada ambiente é construído em código a partir de uma mesma base. O Cloudflare diz que algumas de suas configurações internas do Wrangler, de mais de 5000 linhas, foram reduzidas em 40% assim. Essa também é uma cifra do próprio Cloudflare.
Dois helpers fazem quase todo o trabalho. bindings expõe variáveis de ambiente, segredos, KV, D1, R2, filas, IA, Vectorize e service bindings com autocompletar no editor. triggers reúne em um único bloco tudo o que pode invocar o Worker:
import { defineConfig, triggers } from "cf/config";
export default defineConfig({
worker: {
// ...
triggers: [
triggers.fetch({ pattern: "example.com/*" }),
triggers.scheduled({ schedule: "0 * * * *" }),
triggers.queue({ name: "jobs", maxBatchSize: 10 }),
triggers.email({ addresses: ["support@example.com"] }),
],
},
});
A Cloudflare diz que o mesmo arquivo acabará cobrindo também zonas, DNS e políticas. Por enquanto começa pelos Workers.
Os Cloudflare Workers em Python funcionam com cf?
Ainda não totalmente: de acordo com o anúncio, cf continua delegando o desenvolvimento e a implantação no Wrangler para três tipos de Worker:
- Workers em JavaScript que ainda compilam com esbuild em vez de Vite
- Workers em Python
- Workers em Rust
Se você seguiu nosso guia para implantar FastAPI nos Cloudflare Workers, seu projeto está no segundo grupo. Você pode instalar cf e usá-lo para tudo mais em sua conta, mas o Worker em si continua sendo compilado e implantado com Wrangler, então não o desinstale.
O Wrangler vai deixar de funcionar?
Ainda não há data. O que a Cloudflare se compromete a fazer é publicar, quando terminar a beta aberta, uma última versão principal do Wrangler que o direcione a você e seu agente para cf. Após o fim da beta, o Wrangler continuará recebendo manutenção por 18 meses.
No momento da publicação desta nota (29 de setembro de 2026), a Cloudflare não havia anunciado quando a beta termina, então esse prazo de 18 meses ainda não começou a contar.
cf ou Wrangler? Vale a pena migrar agora?
Depende do que você tem em produção. No momento da publicação desta nota, cf está na versão 1.0.0-beta.5, e sua documentação oficial ainda é um pull request aberto e sem merge no repositório cloudflare-docs (#33735). Esse PR avisa que algumas páginas descrevem o comportamento da próxima versão de cf, então verifique o --help do comando antes de confiar em uma página da documentação.
Uma distribuição razoável por enquanto:
- Use-o já para explorar e operar sua conta (DNS, WAF, Access, tudo o que o Wrangler nunca cobriu), especialmente a partir de um agente. No trabalho de consultoria é onde
cf cli searche a saída em JSON funcionam desde o primeiro dia. - Migre os Workers em JavaScript que usam Vite em um branch com
cf migrate, e revise ocloudflare.config.tsgerado antes de fazer merge. - Deixe os Workers em Python, em Rust e os que usam esbuild no Wrangler, porque
cfos devolveria ao Wrangler de qualquer forma.
O código é open source sob MIT ou Apache-2.0 em github.com/cloudflare/cf, que é onde os problemas são reportados durante a beta.
Se você usa Cloudflare com agentes, talvez também se interesse em como auditar a segurança do seu código com a skill que a Cloudflare liberou e como Browser Run converte um Chrome headless em um endpoint HTTP.