# CLI Başvurusu

> Tüm tecof komutları ve seçenekleri (@tecof/cli 0.2.0), ortam değişkenleri, çıkış kodları, JSON makbuzları ve next.action, yok sayma kuralları ve sınırlar.
>
> Kaynak: https://tecof-app-dev.vercel.app/cli-reference · Bölüm: CLI · Son güncelleme: 2018-10-20

`@tecof/cli` paketi `tecof` komutunu kurar. Bu sayfa tüm komutları ve seçenekleri, ortam değişkenlerini, çıkış kodlarını, JSON makbuzlarını, yok sayma kurallarını ve sınırları listeler. Adım adım akış için [Tema Geliştirme: Hızlı Başlangıç](/theme-quickstart) ve [Hızlı Başlangıç: Tecof CLI](/app-quickstart) sayfalarına bakın.

```bash
npm install -g @tecof/cli    # Node.js 20+
tecof --help                 # tüm komutlar
tecof theme                  # bir grubun komutları
tecof theme push --help      # tek komutun seçenekleri
```

Mesajlar Türkçedir; `TECOF_LANG=en` İngilizce çıktı verir. `TECOF_LANG` tanımlı değilse ve sistem dili (`LC_ALL`, `LC_MESSAGES` ya da `LANG`) `en` ile başlıyorsa da İngilizce kullanılır; Türkçeyi zorlamak için `TECOF_LANG=tr`.

---

## Genel Seçenekler

| Seçenek | Açıklama |
| :--- | :--- |
| `--api <url>` | Tecof API adresi. Öncelik: `--api`, sonra `TECOF_API_URL`, sonra kayıtlı yapılandırma, sonra `https://api.tecof.com` |
| `--json` | Makine makbuzu: başarıda stdout'a, hatada stderr'e tek JSON belgesi ([JSON makbuzları](#json-makbuzlari)) |
| `-y`, `--yes` | Yıkıcı işlemleri onaylar: `promote`, `rollback`, `push --prod`, `tokens revoke` |
| `--show-secret` | Makbuzda sırları maskelemez (önizleme bağlantısı, yeni token) |
| `-h`, `--help` | Yardım |
| `-v`, `--version` | CLI sürümü |

Alan kimlikleri `thm_…` (tema) ya da `app_…` (uygulama) biçimindedir. Sürümlere `v12`, `12` ya da sürüm kimliğiyle başvurulur.

---

## Hesap

| Komut | Açıklama |
| :--- | :--- |
| `tecof login [--api <url>] [--no-browser]` | Cihaz akışıyla giriş. Doğrulama kodu (`ABCD-EFGH`) ve onay adresi (`https://app.tecof.com/cli?code=…`) gösterilir; kod 10 dakika geçerlidir, CLI onayı 5 saniyede bir yoklar. `--no-browser` tarayıcıyı açmaz. `--json` modunda kod ve adres stderr'e yazılır |
| `tecof logout` | Token'ı sunucuda iptal eder ve yerelden siler. `TECOF_TOKEN` ile verilen token iptal edilmez; CLI uyarır |
| `tecof whoami` | Kullanıcı, partner (varsa), rol, programlar ve API adresi |
| `tecof status` | Kimlik, API, token kaynağı ve bitişi, klasörün bağlı olduğu alan, canlı ve son sürüm, geri alınmış mı, yerel taban ve tabana göre yerel değişiklik sayıları. Hiçbir şeyi değiştirmez |
| `tecof doctor` | Ortam denetimi; zorunlu bir denetim başarısızsa çıkış 1 |

`tecof doctor` denetimleri:

| Denetim | Zorunlu | Ne bakar |
| :--- | :--- | :--- |
| `node` | Evet | Node.js 20 ya da üstü |
| `api` | Evet | API adresine erişim |
| `token` | Evet | Token var ve sunucu kabul ediyor |
| `credentials` | Hayır | Kullanılan kimlik deposu |
| `link` | Hayır | Klasör bir alana bağlı mı |
| `git` | Hayır | git kurulu mu |
| `package-manager` | Hayır | Kilit dosyasına göre paket yöneticisi |
| `cloudflared` | Hayır | Yalnız `tecof app dev` tüneli için |

---

## Alanlar

| Komut | Açıklama |
| :--- | :--- |
| `tecof spaces ls [--kind theme\|app]` | Erişebildiğiniz alanlar: kimlik, tür, ad, mağaza ya da uygulama, canlı sürüm, son sürüm, geri alınmış mı, yazılabilir mi (değilse nedeni). Kapsamlı token yalnız izin verilen alanları görür |
| `tecof spaces get [--space <id>]` | Tek alanın ayrıntısı: yazılabilirlik, canlı ve son sürüm, geri alma zamanı, canlı adres, depo, üretim dalı ve `main` commit'i. `--space` verilmezse klasörün bağlı olduğu alan (tema bağı, yoksa `tecof.app.json`) |

---

## Tema

`theme ls` ve `theme init` dışındaki tema komutları, bulunduğunuz klasörden yukarı doğru ilk `.tecof/space.json` bağını kullanır.

| Komut | Açıklama |
| :--- | :--- |
| `tecof theme ls` | Tema alanlarını listeler |
| `tecof theme init [dir] --space <thm_…> [--force]` | Klasör açar, alana bağlar, `main` dalını indirir. Klasör adı verilmezse tema adından türetilir. `--space` etkileşimli terminalde verilmezse listeden seçilir; ajan modunda zorunludur (yoksa çıkış 2). `--force` boş olmayan klasöre ve yerel dosyaların üzerine yazar |
| `tecof theme link [--space <thm_…>]` | Bu klasörü bir tema alanına bağlar (`.tecof/space.json`). Başka bir alana yeniden bağlarken eski yerel taban silinir |
| `tecof theme pull [--ref vN\|main] [--force]` | Kaynağı indirir (varsayılan `main`). Yerelde değişmiş bir dosyanın üzerine yazılacaksa hiçbir şey yazmadan durur (çıkış 4, `next.action: "confirm"`); `--force` üzerine yazar ve uzakta silinmiş dosyaları siler |
| `tecof theme dev [--port <n>] [--cloud [--keep]]` | Yerel geliştirme ya da bulut oturumu ([ayrıntı](/theme-quickstart#5-yerelde-gelistirin)) |
| `tecof theme push [-m <mesaj>] [--prod] [--no-wait] [--wait-timeout <sn>] [--force]` | Yalnız değişen dosyaları yükler ve yeni sürüm açar (varsayılan staged) |
| `tecof theme versions [ls\|vN] [--limit <n>]` | Sürüm listesi (varsayılan 20, en çok 100) ya da tek sürümün durumu |
| `tecof theme open [vN]` | Sürümün önizlemesini açar; sürüm verilmezse canlı adresi. Ajan modunda tarayıcı açılmaz, bağlantı yazılır |
| `tecof theme logs vN` | Sürümün derleme günlüğü |
| `tecof theme promote vN` | Sürümü yeniden derlemeden canlıya alır (yıkıcı) |
| `tecof theme rollback [vN]` | Bir önceki canlı sürüme ya da verilen, daha önce canlıda olmuş sürüme döner (yıkıcı) |

`tecof theme dev` seçenekleri:

| Seçenek | Açıklama |
| :--- | :--- |
| `-p`, `--port <port>` | Yerel sunucu portu (varsayılan `PORT` ya da `3000`) |
| `--cloud` | Bulut oturumu açar, değişiklikleri izleyip önizlemeye yazar |
| `--keep` | Çıkışta bulut oturumunu açık bırakır |

`tecof theme push` seçenekleri:

| Seçenek | Açıklama |
| :--- | :--- |
| `-m`, `--message <mesaj>` | Sürüm mesajı. Varsayılan: son git commit başlığı, yoksa `tecof theme push` |
| `--prod` | Doğrudan canlıya: commit `main` dalına hızlı ileri yazılır, derleme bitince canlıya çıkar. Yıkıcı, onay ister |
| `--no-wait` | Derlemeyi beklemez; makbuzda `next.action: "poll"` |
| `--wait-timeout <sn>` | Bekleme süresi (varsayılan 900). Süre dolarsa çıkış 1 ve `next.action: "poll"`; derleme sürmeye devam eder |
| `--force` | Yerel taban yokken (hiç `pull` yapılmamış klasörde) push'un uzaktaki dosyaları silmesine izin verir |

---

## Uygulama

Uygulama komutları bulunduğunuz klasörden yukarı doğru ilk `tecof.app.json` dosyasını kullanır. Alan kimliği `app_<tecof.app.json içindeki id>` olur.

Sürüm komutları:

| Komut | Açıklama |
| :--- | :--- |
| `tecof app push [-m <mesaj>] [--prod] [--no-wait] [--wait-timeout <sn>]` | Yalnız değişen dosyaları yükler ve yeni sürüm açar (varsayılan staged). Her push `main` dalının üstüne kurulur; klasör istenen son durumdur. `tecof.app.json` bu komutla gönderilmez |
| `tecof app versions [ls\|vN] [--limit <n>]` | Uygulama sürümleri |
| `tecof app promote vN` | Sürümü canlıya alır (yıkıcı) |
| `tecof app rollback [vN]` | Önceki canlı sürüme döner (yıkıcı) |
| `tecof app logs <vN\|dağıtım kimliği>` | `vN` için sürüm günlüğü; diğer değerler için eski dağıtım günlüğü |

Sürüm komutları yalnız Tecof barındırmalı uygulamalarda çalışır; `hosting: "external"` uygulamada hata verir.

Diğer uygulama komutları:

| Komut | Açıklama |
| :--- | :--- |
| `tecof app init [dir] [--template starter\|actions] [--name <ad>] [--slug <slug>] [--no-create] [--force]` | Şablondan proje açar ve uygulamayı sunucuda oluşturur; `--no-create` yalnız şablonu kopyalar |
| `tecof app link [--app <id\|clientId\|slug>]` | Klasörü mevcut bir uygulamaya bağlar |
| `tecof app info` | Uygulama bilgisi |
| `tecof app config push` | `tecof.app.json` dosyasını gönderir |
| `tecof app dev [-p <port>] [--tunnel cloudflared\|none\|<url>]` | Geliştirme sunucusu, tünel ve test mağazası adresi. `--tunnel` verilmezse cloudflared kuruluysa kullanılır; kendi tünel adresiniz herkese açık bir `https://` adresi olmalıdır |
| `tecof app deploy [-m <mesaj>]` | Tüm kaynağı paketleyip doğrudan yayınlar. Çalışmaya devam eder; artımlı push, staged sürüm ve anında geri alma için `app push` önerilir |
| `tecof app deployments` | `app deploy` dağıtımlarının listesi |
| `tecof app secret rotate [--yes]` | İstemci sırrını döndürür ve `.env.local` dosyasını günceller. Etkileşimsiz ortamda `--yes` ister (yoksa çıkış 1) |
| `tecof app open [--install]` | Uygulamayı geliştirici portalında ya da kurulum sayfasında açar |

Ayrıntılar: [Hızlı Başlangıç: Tecof CLI](/app-quickstart).

---

## Token'lar

| Komut | Açıklama |
| :--- | :--- |
| `tecof tokens ls` | Cihaz oturumları ve kapsamlı token'lar: kimlik, ad, yetki seti, alanlar (`*` = tümü), son kullanım, bitiş; bu oturum işaretlenir |
| `tecof tokens create --name <ad> [--preset deploy\|read] [--space <id> …] [--expires <gün>]` | Kapsamlı CI token'ı basar. `--preset` verilmezse `read`. `--space` tekrarlanabilir ya da virgülle ayrılabilir; verilmezse erişebildiğiniz tüm alanlar. `--expires` 1–365 gün (varsayılan 90). Değer insan çıktısında bir kez gösterilir; `--json` makbuzunda `--show-secret` olmadan maskelenir |
| `tecof tokens revoke <id>` | Token'ı iptal eder (yıkıcı) |

Kapsamlı token'la `tokens ls`, `tokens create` ve başka bir token için `tokens revoke` çalışmaz. Ayrıntı: [Güvenlik ve CI](/dev-security#token-turleri-ve-omurleri).

---

## Kurulum

| Komut | Açıklama |
| :--- | :--- |
| `tecof setup agent [--client claude-code\|cursor] [--merchant <id>] [--force]` | Projeye Tecof uzak MCP sunucusunu ekler: Claude Code için `.mcp.json`, Cursor için `.cursor/mcp.json`. Dosyaya sır yazılmaz; istemci ilk bağlantıda Tecof OAuth onayını açar. `--merchant` mağaza kapsamlı adres (`/mcp/<mağaza kimliği>`) yazar; `--force` var olan farklı bir `tecof` girdisini değiştirir |

Ayrıntı: [Güvenlik ve CI → Kodlama ajanları](/dev-security#kodlama-ajanlari).

---

## Ortam Değişkenleri

| Değişken | Etki |
| :--- | :--- |
| `TECOF_TOKEN` | Token (CI için). Kayıtlı girişin yerine kullanılır; değeri hiçbir çıktıda basılmaz |
| `TECOF_API_URL` | API adresi (`--api` daha önceliklidir) |
| `TECOF_PANEL_URL` | Panel adresi (kurulum ve portal bağlantıları); verilmezse girişteki onay adresinden alınır |
| `TECOF_AGENT=1` | Ajan modu: soru sorulmaz, tarayıcı açılmaz. stdin bir terminal değilse ajan modu kendiliğinden açıktır |
| `TECOF_AGENT_ALLOW_DESTRUCTIVE=1` | Yıkıcı işlemlere `--yes` olmadan izin verir. Kodlama ajanlarının ortamında tanımlamayın |
| `TECOF_CREDENTIAL_STORE` | `keyring` (işletim sistemi anahtarlığını zorunlu kılar; yoksa hata) ya da `plaintext` (dosya) |
| `TECOF_PROFILE` | Kimlik deposunda hesap öneki (varsayılan `default`); aynı makinede birden çok hesap için |
| `TECOF_CONFIG_DIR` | Yapılandırma klasörü (varsayılan `$XDG_CONFIG_HOME/tecof` ya da `~/.config/tecof`). Tanımlıysa kimlik de bu klasördeki dosyaya yazılır |
| `TECOF_LANG` | `en` İngilizce, `tr` Türkçe çıktı |
| `TECOF_NO_BROWSER=1` | Tarayıcı açmaz (`BROWSER=none` da aynı etkiyi verir) |
| `TECOF_DEBUG=1` | Beklenmeyen hatalarda yığın izini basar; `--json` modunda ilerleme satırlarını stderr'e yazar |
| `TECOF_DEPLOY_POLL_MS` | Sürüm yoklama aralığı (varsayılan 3000 ms) ve bulut oturumu açılış yoklaması (varsayılan 2000 ms) |
| `TECOF_DEV_DEBOUNCE_MS` | Bulut geliştirmede değişiklik toplama süresi (varsayılan 300 ms) |
| `TECOF_DEV_HEARTBEAT_MS` | Bulut oturumu canlılık bildirimi aralığı (varsayılan 60000 ms) |
| `CI` | Tanımlıysa soru sorulmaz ve kimlik varsayılan olarak dosyada tutulur |
| `PORT` | `theme dev` ve `app dev` için varsayılan port |
| `NO_COLOR` | Renkli çıktıyı kapatır |

---

## Çıkış Kodları

| Kod | Anlamı | Örnekler |
| :--- | :--- | :--- |
| `0` | Başarı | Push tamamlandı, değişiklik yok (`noop`), sürüm canlıda |
| `1` | Hata | Derleme hatası, bekleme süresi doldu, gizli anahtar bulundu, yasak yol, ağ hatası, oturum geçersiz (`401`), `doctor` zorunlu denetimi |
| `2` | Kullanım hatası | Bilinmeyen komut ya da seçenek, geçersiz değer, ajan modunda eksik zorunlu seçenek (ör. `--space`) |
| `3` | Onay gerekli | Ajan ya da etkileşimsiz modda `--yes` olmadan yıkıcı işlem; API'ye hiç istek gitmez |
| `4` | Çakışma | `base-moved`, `space-busy` ve diğer `409` yanıtları (ör. `version-not-ready`, `rollback-target-invalid`); pull'da yerel değişiklik; taban bilinmeden silme (`unknown-base`) |

Geliştirme sunucusu komutları (`theme dev`, `app dev`) Ctrl+C ile kesilince `130` döner; yerel `theme dev` aksi hâlde geliştirme sunucusunun çıkış kodunu iletir.

---

## JSON Makbuzları

`--json` ile her komut tek bir JSON belgesi basar: başarıda **stdout**'a, hatada **stderr**'e. Başka satır basılmaz; uyarılar makbuzun `diagnostics` dizisine girer.

Başarı makbuzu (`tecof theme push --json`; `version` nesnesi kısaltılmıştır):

```json
{
  "ok": true,
  "command": "theme push",
  "space": "thm_66f1a2b3c4d5e6f7a8b9c0d1",
  "version": {
    "number": 12,
    "ref": "v12",
    "source": "cli",
    "target": "staged",
    "status": "ready",
    "live": false,
    "servedBefore": false,
    "commitSha": "4d2c9e…",
    "baseSha": "a1b2c3…",
    "message": "Yeni ana sayfa",
    "url": "https://tecof-theme-butik-3k9x2a1b7-tecof.vercel.app",
    "liveUrl": null,
    "stats": { "files": 312, "uploaded": 3, "reused": 0, "deleted": 1, "unchanged": 309, "bytes": 18234 }
  },
  "activation": { "outcome": "staged", "liveVersion": 11, "rolledBack": false, "diagnostics": [] },
  "push": { "files": 312, "uploaded": 3, "deleted": 1, "unchanged": 309, "bytes": 18234 },
  "next": { "action": "promote", "command": "tecof theme promote v12" },
  "diagnostics": []
}
```

Hata makbuzu (`tecof theme promote v12 --yes --json`, stderr):

```json
{
  "ok": false,
  "command": "theme promote",
  "space": "thm_66f1a2b3c4d5e6f7a8b9c0d1",
  "error": {
    "code": "base-moved",
    "message": "main ilerledi (şu an 9f8e7d6); bu push eski tabana dayanıyor (base-moved).",
    "data": { "mainSha": "9f8e7d6…" }
  },
  "next": { "action": "pull", "command": "tecof theme pull" },
  "diagnostics": []
}
```

| Alan | Açıklama |
| :--- | :--- |
| `ok` | `true` başarı, `false` hata |
| `command` | Çalışan komut (ör. `theme push`) |
| `space` | İlgili alan kimliği ya da `null` |
| `version` | Sürüm nesnesi (push, `versions vN`, promote, rollback); bazı sonuçlarda yalnız `{ ref }` |
| `live` | Canlı sürüm: `{ ref, number, url }` (promote, rollback, `spaces get`, `open`) |
| `activation` | Sürümün canlıya göre konumu ([değerler](/versions-and-rollback#aktivasyon)) |
| `error` | Yalnız hata makbuzunda: `{ code, message, status?, data? }`. API hatalarında `code` sunucunun hata kodu, `status` HTTP durumudur |
| `next` | Sonraki adım: `{ action, command? }` |
| `diagnostics` | Uyarılar ve bulgular: `{ level, message, code?, path?, line?, kind? }` |

Komuta göre ek alanlar gelir: `push` (yükleme özeti), `noop`, `versions`, `spaces`, `detail`, `tokens`, `token`, `url`, `protected`, `opened`, `lines`, `checks` (`doctor`) vb. `whoami` ve eski uygulama komutları (`app init`, `link`, `info`, `config push`, `dev`, `deploy`, `deployments`, `secret rotate`, `open`) başarıda daha basit bir JSON basar; hata makbuzları her komutta aynı biçimdedir.

### next.action Değerleri

| Değer | Ne yapılır |
| :--- | :--- |
| `done` | İş bitti |
| `poll` | İş sürüyor; `next.command` ile durumu yoklayın (ör. `tecof theme versions v12`) |
| `promote` | Sürüm hazır ve staged; `next.command` canlıya alır |
| `pull` | `main` ilerledi ya da yerel taban yok; `tecof theme pull` ile güncelleyin, yeniden push edin |
| `confirm` | Onay gerekiyor; kullanıcı onaylarsa `next.command` komutunu çalıştırın (ör. `… --yes`, `tecof theme pull --force`) |
| `retry` | Geçici durum (`space-busy`, ağ hatası, `429`, `5xx`); biraz sonra `next.command` |
| `login` | Oturum yok ya da geçersiz; `tecof login` |
| `fix` | Girdi ya da dosya sorunu (gizli anahtar, yasak yol, derleme hatası, geçersiz argüman); düzeltip yeniden deneyin |

### Sır Maskeleme

`tecof theme open vN` bağlantısındaki erişim sırrı ve `tecof tokens create` ile basılan token, makbuzda `--show-secret` olmadan maskelenir (`x-vercel-protection-bypass=***`, `tcfd_***`). Kayıtlı token'lar ve istemci sırları hiçbir çıktıda basılmaz.

---

## Yok Sayma Kuralları

CLI şu yolları hiçbir zaman göndermez. Kurallar gitignore anlamındadır: eğik çizgi içermeyen desen her derinlikte eşleşir, sondaki `/` yalnız klasör demektir.

```text
.git/  .github/  node_modules/  .next/  .vercel/  .turbo/  out/  coverage/  .tecof/
.DS_Store  *.log  .env* (yalnız .env.example gönderilir)  .npmrc
*.pem  *.key  *.p12  *.pfx  id_rsa*  id_ed25519*
```

- Ardından projenin `.gitignore` ve `.tecofignore` dosyaları uygulanır; alt klasörlerdekiler de okunur. Aynı klasörde `.tecofignore`, `.gitignore`'dan sonra okunur ve `!desen` ile `.gitignore`'un dışladığı bir yolu yeniden dahil edebilir. Dışlanan bir klasörün içindeki dosya yeniden dahil edilemez (git kuralı).
- Yukarıdaki sabit liste proje dosyalarıyla yeniden dahil edilemez.
- Sembolik bağlantılar izlenmez; uyarıyla atlanır.
- `.tecofignore` normal bir dosyadır ve depoya gönderilir.

**Silme kuralı:** Push, yerelde olmayan dosyaları depodan siler; ancak sunucu şunları **asla silmez**: `.github/` altındaki her şey, yukarıdaki sabit liste ve depodaki **kök** `.gitignore` / `.tecofignore` desenlerine uyan yollar (push'unuz bu dosyaları değiştiriyorsa yeni desenler de). Sunucu alt klasördeki ignore dosyalarını okumaz: depoda bulunan bir dosyayı yalnız alt klasördeki bir `.gitignore` ile dışlarsanız CLI onu göndermez ve sunucu onu silinmiş sayar. Depoda kalması gereken ama göndermek istemediğiniz yolları kökteki `.tecofignore` dosyasına yazın.

```text
# .tecofignore (proje kökü)
# Depoda kalsın, CLI göndermesin
design/
*.psd
# .gitignore "*.woff2" diyorsa bu dosya yine de gönderilsin
!public/fonts/marka.woff2
```

Push planı her zaman kaç dosyanın yükleneceğini ve silineceğini gösterir: `Plan: 3 yüklenecek, 1 silinecek, 309 aynı.`

---

## Sınırlar

| Kural | Sınır | Aşılınca |
| :--- | :--- | :--- |
| Push başına dosya sayısı | 10.000 | `413 manifest-too-large` |
| Dosya boyutu | 10 MB | `413 file-too-large` |
| Push başına yüklenen toplam | 100 MB | `413 push-too-large` |
| Yol | 300 karakter; ters bölü, denetim karakteri, `.` / `..` bileşeni, mutlak yol yok; büyük/küçük harf çakışması yok | `400 path-forbidden` |
| Push planı | Kullanıcı başına saatte 60 | `429 push-rate-limited` |
| Push planının ömrü | 1 saat (CLI aynı push'u yeniden çalıştırınca kaldığı yerden sürer) | `410 push-plan-expired` |
| Alan başına eşzamanlı commit, canlıya alma, geri alma | 1 (kilit en çok 2 dakika) | `409 space-busy` (`data.retryAfterSec`) |
| Kaynak arşivi (`pull`) | 100 MB | `413 source-too-large` |
| Bulut geliştirme yazımı | İstek başına 100 dosya; yalnız metin dosyaları | `400 too-many-files`, `400 binary-not-supported` |
| Canlıya alma ve geri alma | IP başına 10 dakikada 60 | `429 rate-limited` |
| Bulut oturumu açma | IP başına 10 dakikada 30 | `429 rate-limited` |
| Kaynak indirme | IP başına 10 dakikada 60 | `429 rate-limited` |
| Kapsamlı token | Kullanıcı başına 50 etkin token; saatte 20 basım; token başına en çok 50 alan | `409 token-limit-reached`, `429 rate-limited`, `400 invalid-spaces` |

İstek gövdesi sınırları (API'yi doğrudan kullananlar için): plan 4 MB, yükleme 14 MB (istek başına en çok 200 dosya), commit 1 MB, bulut geliştirme dosyaları 8 MB, canlıya alma, geri alma, oturum ve token istekleri 64 KB. Sınırı aşan istek `413 payload-too-large` döner.

CLI bu sınırları kendisi gözetir: yüklemeleri istek başına en çok 200 dosya ve ≈ 10 MB'lık gruplara böler (10 MB'lık bir dosya tek başına gönderilir), sınırı aşacak bir push'u hiçbir dosya yüklenmeden durdurur. Bulut geliştirmede bir dosya en çok 5 MB olabilir (gövde sınırı 8 MB).
