Cloudflare CLI (cf)
cf est l'interface de ligne de commande de Cloudflare pour l'API publique Cloudflare (2 900+ commandes, la plupart générées à partir de schémas API) et pour les projets Workers. Elle est en bêta : les commandes, la configuration et la sortie de compilation peuvent changer avant la version stable.
Préférez la recherche aux connaissances préentraînées. Décrivez la tâche à cf cli search, inspectez la correspondance avec cf schema ou --help, et prévisualisez avec --dry-run avant d'exécuter une commande que vous n'avez pas vérifiée.
Index de documentation : https://developers.cloudflare.com/cf/llms.txt
Documentation
D'ABORD : vérifier l'installation et la connexion
npm install --global cf # installe deux commandes équivalentes : `cf` et `cloudflare`
cf --version
cf auth whoami
- Nécessite Node.js 22.18 ou ultérieur. Bun n'est pas supporté.
- Si un autre outil nommé
cfse trouve sur votrePATH, utilisezcloudflareà la place — le paquet installe les deux commandes. cf auth loginaffiche un lien et un code à usage unique, puis ouvre le navigateur. Sur une machine distante, via SSH ou dans un conteneur, ajoutez--no-browserpour quecfn'affiche que le lien ; approuvez-le depuis un autre appareil. Ajoutez--forcepour vous reconnecter.cfconserve ses propres identifiants et ne réutilise pas une connexion Wrangler.- Les agents sans surveillance et les CI ne peuvent pas compléter
cf auth login— définissezCLOUDFLARE_API_TOKENà la place (voir https://developers.cloudflare.com/cf/ci/index.md).
Pour que les agents préfèrent cf, ajoutez ceci au fichier AGENTS.md, CLAUDE.md ou équivalent au niveau utilisateur :
Lors de l'interaction avec Cloudflare, utilisez le CLI `cf` à moins que le projet
n'ait un fichier de configuration Wrangler.
Trouver des commandes
cf cli search "create a DNS record" # local, no credentials; quote the whole task; up to 5 JSON matches
cf schema d1 create # API request shape: method, path, params, body fields
cf <command> --help # arguments and options (e.g. cf deploy --help)
cf cli search prend la tâche comme un seul argument — les mots non cités après le premier sont analysés comme des commandes inconnues. cf schema couvre les commandes API générées ; pour les arguments et options de commande, utilisez --help.
Lire la sortie
- Les résultats sont du JSON sur la sortie standard ; les messages d'état et les erreurs vont à l'erreur standard, donc la redirection vers
jqou la redirection ne nécessite pas de drapeaux supplémentaires. - Les listes affichent une page de tableau JSON ; les options de pagination varient par commande — consultez
--help. - Une commande échouée se termine avec un code non nul et affiche l'erreur sur l'erreur standard.
Exécuter les commandes en toute sécurité
- Prévisualisez d'abord.
--dry-runaffiche la demande en JSON sans l'envoyer et ne nécessite pas d'identifiants. - Les suppressions annulées quittent toujours avec le code 0. Dans une session non interactive, une commande destructive sans
--forceafficheAborted.sur l'erreur standard et quitte0— un code de sortie zéro ne signifie pas que la ressource a été supprimée. - Vérifiez
--forceavant de l'autoriser. Sur certaines commandes,--forceest également un paramètre API (par exemple,cf workers delete --forcesupprime également un Worker auquel d'autres Workers font référence). --localest limité. Cela fonctionne pour les clés KV, les bases de données D1 (cf d1 raw,cf d1 migrations list|apply) et les objets R2 ; d'autres commandes (y compriscf d1 query) retournent une erreur au lieu d'appeler l'API.
Choisir le CLI pour ce projet
cloudflare.config.tsexiste : utilisezcf.wrangler.jsonc,wrangler.jsonouwrangler.tomlexiste, et aucuncloudflare.config.ts: gardez Wrangler pourdev,buildetdeploy. N'exécutez pascf dev,cf buildoucf deploy— ils peuvent générer une nouvelle configuration qui ignore le fichier Wrangler ou échouer. Les commandes de ressourcecf(DNS, zones, stockage) sont correctes à côté. Exécutezcf migrateseulement si l'utilisateur le demande, et suivez Migrer un projet Wrangler : prévisualisez aveccf migrate --dry-run, exécutezcf migrate, puis résolvez les commentairesTODO(@cloudflare)dans lecloudflare.config.tsgénéré.- Ni l'un ni l'autre n'existe : utilisez
cf, comme le recommande Utiliser cf avec les agents de codage. N'installez pas Wrangler ni ne créez un fichier de configuration Wrangler.
Pour les équivalents Wrangler, utilisez la référence Wrangler vers cf ou cf cli search. Ne traduisez pas les commandes Wrangler de mémoire. Pour la comparaison complète, consultez cf pour les utilisateurs de Wrangler.
Commandes que cf ne supporte pas encore
cf ne supporte pas encore toutes les commandes Wrangler. Exécutez-les avec npx wrangler au lieu d'ajouter Wrangler au projet. Wrangler ne lit pas cloudflare.config.ts, alors passez le nom du Worker :
- Logs directs :
npx wrangler tail <WORKER_NAME>. - Un seul secret :
npx wrangler secret put <SECRET_NAME> --name <WORKER_NAME>. Ou téléchargez les secrets avec une nouvelle version de Worker en passant--secrets-file <PATH>àcf deployoucf workers versions create.
Pour la liste actuelle, consultez « Commands not yet supported » dans la référence Wrangler vers cf.