Skip to content
499 linesCodeBlameRaw

Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.

What g1t can't do yet, and an open letter to Cloudflare1---
2title: What g1t can't do yet
3description: The limits you can hit on g1t today, why each one exists, what to do instead, and whether it is planned.
4---
5
6This page lists what g1t cannot do today. Each entry says what you can't
7do, why, what to do instead, and where it stands.
8
9Where it stands is one of:
10
11- **Planned**: we intend to build it. We don't give dates we can't keep.
12- **Depends on Cloudflare**: g1t runs on Cloudflare, and this needs
13 something the platform does not offer yet.
14- **Not scheduled**: no work is planned on it now.
15
16Several of these depend on Cloudflare; [we wrote to them about it](/about/open-letter-to-cloudflare/).
17
18If you hit a limit that is not here, tell us at
19[g1t.sh/support](https://g1t.sh/support), and we will add it.
20
21## Git
22
23### No git over SSH
24
25You can reach repositories only over HTTPS. A `git@g1t.sh:…` remote does
26not work.
27
28- **Why.** SSH needs inbound TCP connections on port 22. g1t runs on
29 Cloudflare Workers, which accept HTTP, not raw TCP. Cloudflare has a beta
30 for inbound TCP; we have applied and are waiting.
31- **Instead.** Use the HTTPS remote with an
32 [access token](/guides/git/#authentication). It does everything SSH would:
33 clone, fetch and push. SSH keys you add under **Settings → SSH keys** are
34 kept for when SSH arrives.
35- **Status.** Depends on Cloudflare. See [Git](/guides/git/#ssh).
36
37### Repositories up to 1 GB, files up to 32 MB, no LFS
38
39A repository can hold up to 1 GB and a single file up to 32 MB. Git LFS is
Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily40not supported. A push that would cross either is declined before it is
41stored, and git prints why. See [Size limits](/guides/git/#size-limits).
What g1t can't do yet, and an open letter to Cloudflare42
43- **Why.** These are the limits of Cloudflare Artifacts, where every
Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily44 repository is stored.
What g1t can't do yet, and an open letter to Cloudflare45- **Instead.** Keep large binaries out of the repository: in a release
46 bucket, a package registry or object storage, fetched at build time.
Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily47- **Status.** Large file storage is planned. Raising the limits themselves
48 depends on Cloudflare.
What g1t can't do yet, and an open letter to Cloudflare49
50### Pushes up to 100 MB each
51
52A single push can carry up to 100 MB. A larger one is refused with HTTP
53`413` before g1t sees it.
54
55- **Why.** Cloudflare's network limits the size of one request body on the
56 plan g1t.sh is on.
57- **Instead.** Push history in steps, oldest first:
58 `git push origin <older-commit>:refs/heads/main`, then a newer one, then
59 `main`. Each push sends only what the last did not.
60- **Status.** Depends on Cloudflare.
61
62### Imports and mirrors up to 40 MB
63
64Importing or mirroring a repository copies it in one piece of at most
6540 MB, after compression.
66
67- **Why.** The copy is held in memory while it moves, and a Worker has
68 128 MB for everything it is doing at once.
69- **Instead.** Clone the repository yourself and push it to g1t, in steps if
70 it is over 100 MB. See [Import, mirror or move a repository](/guides/github/#what-comes-across).
71- **Status.** Streaming the copy, so size stops mattering, is planned.
72
73### Partial clone works, but is not promised
74
75`git clone --filter=blob:none` returns a real partial clone today. We don't
76promise it will keep doing so.
77
78- **Why.** Cloudflare's documentation says filters are not supported, but
79 they work with git's protocol version 2. We have asked whether that is
80 intended.
81- **Instead.** Use it, and fall back to `--depth=1` for a shallow clone,
82 which is supported.
83- **Status.** Depends on Cloudflare.
84
85### No server-side hooks of your own
86
87You can't run a script of your own on g1t when a push arrives, before or
88after its refs move.
89
90- **Why.** The git store has no hook for this. g1t's own checks run in front
91 of it, in g1t's code: [protected branches](/guides/git/#protected-branches)
92 and [push protection](/guides/security/#push-protection).
93- **Instead.** Protect the default branch and make your workflows
94 [required checks](/guides/pull-requests/#required-status-checks). To react
95 after a push, use a [webhook](/guides/webhooks/) or a workflow on `push`.
96- **Status.** Not scheduled for your own scripts. A hook in the store,
97 which would let g1t enforce more before refs move, depends on Cloudflare.
98
Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily99### Very large pushes are scanned after they land, not before
What g1t can't do yet, and an open letter to Cloudflare100
Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily101A very large push is too large for push protection to read before it is
102stored, so it is let through, and g1t scans every commit it added
103afterwards, in the background. A secret found that way is an open alert
104rather than a refused push, and the workspace's owners are emailed when one
105looks real. Most pushes are scanned before they land.
What g1t can't do yet, and an open letter to Cloudflare106
107- **Why.** Scanning reads the whole push inside a Worker, which has 128 MB
Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily108 for everything it is doing at once. Past a certain size, scanning could fail
109 the push outright, and refusing such pushes would block importing real
110 repositories.
111- **Instead.** To have a large history checked before it lands, push it in
112 steps (see above), so each push is scanned first. Secrets already in
113 history are listed under
What g1t can't do yet, and an open letter to Cloudflare114 [Secrets in history](/guides/security/#secrets-in-history).
115- **Status.** Planned: scanning while the push streams, at any size.
116
117### Deleting history does not free storage
118
119Storage is counted from what is pushed, and the count only grows. Deleting
120a branch, or force-pushing over commits, does not lower it.
121
122- **Why.** The git store does not say whether or when it reclaims space
123 from objects nothing points to any more, or report how much a repository
124 holds. So g1t cannot see it either.
125- **Instead.** Keep large mistakes out with a `.gitignore`. If one landed in
126 a private repository and counts against you, tell us at
127 [g1t.sh/support](https://g1t.sh/support).
128- **Status.** Depends on Cloudflare. See
129 [private repository storage](/guides/usage-and-billing/#private-repository-storage).
130
131## Pull requests and forks
132
133### Forks are only for pull requests
134
135You can't fork a repository into your own workspace. On g1t, a fork is a
136pull request's own working copy, made when the pull request is opened.
137
138- **Why.** We built forks to isolate agents' work, one per pull request.
139 See [Forks and branches](/concepts/forks/).
140- **Instead.** To contribute, open a pull request: it gets its own fork. To
141 start a copy of your own, clone the repository and push it to a new one
142 in your workspace; pushing creates it.
143- **Status.** Not scheduled.
144
Pull request forks are removed a day after they merge or close, not a week145### Pull request forks are removed a day after they close
What g1t can't do yet, and an open letter to Cloudflare146
Pull request forks are removed a day after they merge or close, not a week147A day after a pull request merges or closes, its fork's git data is
Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily148removed. The pull request's changes stay readable: its head is kept in the
149repository as `refs/pull/<pull request id>/head`. Pushing to the fork, or
150reopening the pull request, makes the fork again from there.
What g1t can't do yet, and an open letter to Cloudflare151
152- **Why.** Cloudflare has not documented whether a fork shares stored
Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily153 objects with its source or copies them, so forks are not kept longer
154 than they are useful.
155- **Instead.** Nothing you need to do. To keep working on a closed pull
156 request's change, fetch `refs/pull/<pull request id>/head` and push it
157 to a branch.
158- **Status.** Clear fork storage rules depend on Cloudflare.
What g1t can't do yet, and an open letter to Cloudflare159
Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar160### Some dependency update options are not applied yet
161
162g1t reads and checks every option of a `dependabot.yml` file, but does not
163act on all of them yet:
164
165- Version update pull requests are opened for npm, Cargo, Go and pip only.
166 Entries for other ecosystems are checked and listed, and open nothing.
167
168- A multi-ecosystem group opens one pull request per ecosystem, not one
169 for the group.
170- Registries that sign in with OIDC are not used.
171
172- **Instead.** Keep a separate entry per ecosystem and directory, and
173 check the Security page, which lists what each entry reads but does not
174 act on. See [Dependency updates](/guides/dependency-updates/#options).
175- **Status.** Planned.
176
What g1t can't do yet, and an open letter to Cloudflare177### No conflict resolution in the browser
178
179You can't resolve a merge conflict on the pull request's page.
180
g1t is one name: its agent's work, commits and comments show as @g1t, and nobody can claim g1t or g1t-agent181- **Instead.** Ask g1t to resolve it, or fix it on the command line.
What g1t can't do yet, and an open letter to Cloudflare182 See [Conflicts](/guides/pull-requests/#conflicts).
183- **Status.** Planned.
184
185## Actions and runners
186
Merge branch 'main' into actions-toolkit-oidc-artifacts187### Docker shares the job's network
What g1t can't do yet, and an open letter to Cloudflare188
Merge branch 'main' into actions-toolkit-oidc-artifacts189A job's Docker Engine runs its containers on the job's own network, not on
190networks of their own. A service is reached at `localhost` and by its
191name, as on GitHub, but two containers cannot listen on the same port, and
192`docker network create` gives no separation between containers.
What g1t can't do yet, and an open letter to Cloudflare193
Merge branch 'main' into actions-toolkit-oidc-artifacts194- **Why.** Jobs run in Cloudflare Containers, which let a container run
195 Docker but not route a container network of its own out, or change its
196 packet filter. Sharing the job's network is also what keeps the job's
197 guardrails on every container.
198- **Instead.** Give containers that would clash different ports.
199- **Status.** Not scheduled.
200
201### No `type=gha` build cache
202
203Buildx's GitHub Actions cache backend (`cache-to: type=gha`) is skipped on
204g1t, and the build runs without a cache.
205
206- **Why.** It talks to GitHub's cache service, which g1t's cache does not
207 speak yet.
208- **Instead.** Use a registry cache in g1t's container registry
209 (`type=registry`), or `type=local` with `actions/cache`. See
210 [caching image builds](/guides/actions/#caching-image-builds).
211- **Status.** Planned.
212
213### No multi-platform image builds on g1t's machines
214
215Building an image for another platform, such as `linux/arm64`, needs QEMU's
216emulators, which g1t's machines do not have set up.
217
218- **Instead.** Build other platforms on a
219 [self-hosted runner](/guides/self-hosted-runners/) of that architecture,
220 or one with QEMU set up.
221- **Status.** Planned.
What g1t can't do yet, and an open letter to Cloudflare222
223### Linux only on g1t's machines
224
225A job with `runs-on: windows-latest` or `macos-latest` fails on g1t's own
226machines.
227
228- **Instead.** [Self-hosted runners](/guides/self-hosted-runners/) run Linux,
229 macOS and Windows, on x64 and arm64.
230- **Status.** Not scheduled.
231
Merge branch 'worktree-agent-a641fa0e2e4fffccb' into claude/cool-newton-7nm8r9232### No background steps
233
234GitHub's background steps (`background: true` on a step, and `wait`,
235`wait-all`, `cancel` and `parallel` steps) are refused: a workflow with one
236does not run on g1t. A schedule's `timezone`, `concurrency.queue`,
237`cancel-timeout-minutes` and `snapshot` are read but not applied: schedules
238run in UTC, a concurrency group keeps one run waiting, a cancelled job stops
239in its usual time, and no runner image is made from a job. The workflow's
240page says so.
241
242- **Why.** They are newer than g1t's runner, which runs a job's steps one
243 after another.
244- **Instead.** Start a long-running process with `&` in a `run:` step and
245 stop it in a later one; write a schedule's `cron` in UTC.
246- **Status.** Not scheduled.
247
Merge branch 'worktree-agent-ac79a505eca749d4d' into claude/cool-newton-7nm8r9248### Self-hosted Windows and macOS jobs run on the host
249
250On a self-hosted runner, a job native to Windows or macOS runs directly on
251the machine, unsandboxed, in host mode, which is deprecated. Only Linux
252jobs run in a sandbox of their own, a container inside the runner's own
253container under Sysbox.
254
255- **Why.** Sandboxes for them are not built yet: Windows containers with
256 Hyper-V isolation, and ephemeral macOS virtual machines (two per Mac at
257 most, by Apple's licence).
258- **Instead.** Run Linux jobs in
259 [the runner's container](/guides/self-hosted-runners/#run-it-as-a-container),
260 and keep Windows and macOS runners for repositories whose code you
261 trust. Host mode refuses public repositories' work.
262- **Status.** Planned. See
263 [Windows and macOS](/guides/self-hosted-runners/#windows-and-macos).
264
265### A self-hosted job's Docker can reach its runner's container
266
267On a runner in its container under Sysbox, a job that uses Docker gets an
268engine of its own that is privileged inside the runner's container. It
269cannot reach the machine, but it can reach the runner's container,
270including the runner's credential.
271
272- **Instead.** Use ephemeral runners for code you do not trust, or
273 register with `--no-job-docker`.
274- **Status.** Not scheduled.
275
`actions/checkout` is the real action now, at the version a step names: g1t's runner no longer checks out in its place. It fetches from g1t with the job's token, as on GitHub, including a pull request's test merge commit, which g1t now keeps in the repository as `refs/pull/<number>/merge` beside `refs/pull/<number>/head`, and its post step removes the credential it left. Every input and output is the action's own. In a job container whose image has no git, the action falls back to a tarball download g1t does not serve yet, and `lfs` finds no files: the limitations say so, with what to do instead.276### `actions/checkout` without git, or with Git LFS
Merge branch 'worktree-agent-a1eb74e8a85291bbb' into claude/cool-newton-7nm8r9277
`actions/checkout` is the real action now, at the version a step names: g1t's runner no longer checks out in its place. It fetches from g1t with the job's token, as on GitHub, including a pull request's test merge commit, which g1t now keeps in the repository as `refs/pull/<number>/merge` beside `refs/pull/<number>/head`, and its post step removes the credential it left. Every input and output is the action's own. In a job container whose image has no git, the action falls back to a tarball download g1t does not serve yet, and `lfs` finds no files: the limitations say so, with what to do instead.278`actions/checkout` is the action itself. In a job container whose image
279has no git, it downloads the repository as a tarball from
280`GET /repos/{owner}/{repo}/tarball/{ref}`, which g1t does not serve yet,
281and fails. With `lfs: true`, it finds no LFS files: g1t keeps none.
Merge branch 'worktree-agent-a1eb74e8a85291bbb' into claude/cool-newton-7nm8r9282
`actions/checkout` is the real action now, at the version a step names: g1t's runner no longer checks out in its place. It fetches from g1t with the job's token, as on GitHub, including a pull request's test merge commit, which g1t now keeps in the repository as `refs/pull/<number>/merge` beside `refs/pull/<number>/head`, and its post step removes the credential it left. Every input and output is the action's own. In a job container whose image has no git, the action falls back to a tarball download g1t does not serve yet, and `lfs` finds no files: the limitations say so, with what to do instead.283- **Instead.** Use an image with git, or install git in a step before the
284 checkout. Keep large files out of Git LFS for now.
285- **Status.** Planned.
Merge branch 'worktree-agent-a1eb74e8a85291bbb' into claude/cool-newton-7nm8r9286
Merge runner image: Java 21, .NET 8, Ruby 3.3287### No `gh` command in jobs
288
289The runner does not include the `gh` command, and pointing it at g1t
290(`GH_HOST=g1t.sh`) does not work.
291
292- **Why.** Most of `gh`'s commands use a GraphQL API, and the rest expect
293 the REST API under `/api/v3` on the same host. g1t's API is REST, at
294 `api.g1t.sh`.
295- **Instead.** Call the API with `curl` and the job's token. See
296 [calling g1t's API from a job](/guides/actions/#calling-g1ts-api-from-a-job).
297- **Status.** Not scheduled.
298
299### One Ruby for `ruby/setup-ruby`
300
301On g1t's machines, `ruby/setup-ruby` finds Ruby 3.3, which the runner
302includes, and fails for any other version.
303
304- **Why.** Its prebuilt Rubies are for other Linux systems, so on Debian it
305 uses only the Rubies already in `RUNNER_TOOL_CACHE`.
306- **Instead.** Use 3.3, run the job in a `container:` with the Ruby you
307 need (such as `ruby:3.4`), or build it in a step with `ruby-build`. See
308 [languages and their setup actions](/guides/actions/#languages-and-their-setup-actions).
309- **Status.** Not scheduled.
310
What g1t can't do yet, and an open letter to Cloudflare311### Machine sizes, time and storage
312
313| Limit | Value |
314| --- | --- |
315| Largest machine | 4 vCPUs, 12 GiB of memory, 20 GB of disk (`g1t-4core`). No GPUs. |
316| One job on g1t's machines | 60 minutes. On a self-hosted runner, 24 hours. |
Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily317| One cache entry | 2 GiB, compressed. A larger one is not saved. |
318| A repository's caches | 10 GiB together. Past it, the entries restored longest ago are removed. |
Actions: OIDC tokens, the toolkit's cache and artifact services, and artifacts in R2319| One artifact | 5 GiB, zipped. Kept 14 days unless the repository says otherwise, at most 90. |
320| A run's artifacts | 10 GiB together. |
What g1t can't do yet, and an open letter to Cloudflare321
322The machine sizes are Cloudflare Containers' instance sizes. For more, use a
323[self-hosted runner](/guides/self-hosted-runners/). See
324[Machine sizes](/guides/actions/#machine-sizes) and [the cache](/guides/actions/#the-cache).
325
326### Workflow features not supported yet
327
Actions: OIDC tokens, the toolkit's cache and artifact services, and artifacts in R2328- Actions that upload or download artifacts with the toolkit's artifact
329 library themselves. The library refuses to run against any server but
330 github.com. `actions/upload-artifact`, `actions/download-artifact` and
331 `actions/upload-artifact/merge` work, as g1t runs them itself.
`actions/cache`, `actions/cache/restore` and `actions/cache/save` are the real actions now, at the version a step names, as `setup-node` and every other action are: g1t's runner no longer stands in for them by name. They save to and restore from the repository's cache through the toolkit's cache service, which g1t already answered, so an entry `actions/cache` saves is restored by `setup-node` with the same key and paths, and the other way round, as on GitHub. Entries the stand-in saved were versioned its own way and are not restored by the real action: each cache misses once, then fills again. As for every toolkit cache, an entry between 100 and 128 MB, which the toolkit sends in one request, is not saved. The Actions guide and the limitations say so.332- A cache entry between 100 and 128 MB saved by `actions/cache` or another
333 action built on the toolkit, such as `setup-node` with `cache: npm`. The toolkit sends an
Actions: OIDC tokens, the toolkit's cache and artifact services, and artifacts in R2334 entry under 128 MB in one request, and g1t takes at most 100 MB in one
335 request, as for [pushes](#pushes-up-to-100-mb-each). The step warns and
336 the job goes on; smaller and larger entries are saved.
Merge branch 'worktree-agent-a8b78c62188153aa3' into claude/cool-newton-7nm8r9337- `on: label`: creating, editing or deleting a label starts no workflows.
338 Putting a label on an issue or a pull request starts `issues` and
339 `pull_request` workflows with the `labeled` type.
340- The `pull_request` activity types `unassigned`, `locked`, `unlocked`,
341 and `edited` for a new title or description, and the `issues` types
342 `unassigned`, `locked`, `unlocked`, `pinned` and `unpinned`: g1t starts
343 no workflows for them.
What g1t can't do yet, and an open letter to Cloudflare344
345See [Not yet](/guides/actions/#not-yet). **Status.** Planned.
346
Actions: OIDC tokens, the toolkit's cache and artifact services, and artifacts in R2347### No npm trusted publishing or provenance
348
349A workflow on g1t can't publish to npm with trusted publishing, or with
350`--provenance`.
351
352- **Why.** Both trade the job's OIDC token with npm and Sigstore, which
353 accept tokens only from the CI services they list. g1t's
354 [OIDC tokens](/guides/actions/#oidc-tokens) work with any cloud that
355 lets you add an issuer, and npm does not.
356- **Instead.** Publish with a granular access token in a secret
357 (`NODE_AUTH_TOKEN`); see [npm](/guides/actions/#npm).
358- **Status.** Depends on npm.
359
What g1t can't do yet, and an open letter to Cloudflare360## Deployments
361
362### Static sites and Workers only
363
364Deployments run static sites and Workers projects. You can't deploy a
365long-running server, a container, or an app that needs a process that stays
366up.
367
368- **Why.** Apps run on Cloudflare Workers, which run only while they answer a
369 request. That is why an app nobody visits costs nothing.
370- **Instead.** Deploy the server from a workflow to wherever it runs today,
371 with its credentials in [secrets](/guides/secrets-and-variables/).
372- **Status.** A runtime for servers is planned.
373
374### Some Workers bindings are not provisioned
375
376A Workers project deploys without D1, KV, R2, Durable Objects, Queues,
377service bindings, Vectorize, Hyperdrive, Workers AI or Workflows, and its
378cron triggers are not scheduled.
379
380- **Why.** Each of these is a resource g1t has to create and bill per
381 project, and that is not built yet.
382- **Instead.** Check that a binding exists before using it. The deployment
Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily383 lists each binding it left out, and warns when its cron triggers will
384 not run.
What g1t can't do yet, and an open letter to Cloudflare385- **Status.** Planned. See [Workers projects](/guides/deployments/#workers-projects).
386
387### Build and size limits
388
389A build stops after 45 minutes. A static site can have up to 20,000 files
390and 25 MiB per file, which are Cloudflare's limits. See
391[Static sites](/guides/deployments/#static-sites).
392
393## Data residency
394
395You can't choose where a workspace's data is stored. g1t's databases keep
396their primary copy in the United States, with read copies in other regions
397so pages load fast. Repositories are not pinned to a region.
398
399- **Why.** Cloudflare fixes the region of a repository store when it is
400 created, and g1t has one store so far.
401- **Instead.** None today, if your data must stay in the EU.
402- **Status.** EU residency, with an EU-only repository store and databases,
403 is planned.
404
405## Billing
406
407### Some costs are not fully defined yet
408
409Cloudflare starts billing for Artifacts, where repositories are stored, on
410October 14, 2026, and has not yet said exactly which calls count as a
411billable operation.
412
413- **What g1t does.** It counts every clone, fetch and push through its git
414 endpoints. Each day it checks what Cloudflare billed it for containers and
415 apps against what was used. When a cost moves,
416 g1t's price moves with it, and every change is listed with its reason on
417 [g1t.sh/pricing](https://g1t.sh/pricing).
418- **What this means for you.** Prices can change while Cloudflare's beta
419 products settle. They follow cost.
420 See [How prices are set](/guides/usage-and-billing/#how-prices-are-set)
421 and [git operations](/guides/usage-and-billing/#git-operations).
422- **Status.** Depends on Cloudflare.
423
424### Payments are in test mode
425
Git storage hardened, pages in tens of milliseconds, honest security alerts, and costs reconciled daily426While payments are in test mode, no real card is charged, so a card check
427proves nothing. g1t's hosted models are open only to a few invited
428workspaces, g1t's own among them. Every other workspace, trial or not,
429runs its agents on its own model provider; without one, assigning an agent
430is refused with a message that says so.
What g1t can't do yet, and an open letter to Cloudflare431
432- **Instead.** Connect your own [model provider](/guides/models/). Your
433 agents then run on your keys, and the provider bills you directly.
434- **Status.** Planned: hosted models for every workspace once payments go
435 live.
436
437## Agents
438
439### Confidence is a judgement, not a guarantee
440
441The confidence g1t gives an agent's change, high, medium or low, is
442worked out from what g1t can observe: checks, reviews, revisions, the size
443and reach of the change. It cannot tell whether the change is correct.
444
445- **Instead.** Keep **Ask a person before merging low-confidence changes**
446 on, and make your workflows required checks. A high rating on a
447 repository with weak tests means less. See
g1t is one name: its agent's work, commits and comments show as @g1t, and nobody can claim g1t or g1t-agent448 [How sure the agent is](/guides/working-with-g1t/#how-sure-the-agent-is).
What g1t can't do yet, and an open letter to Cloudflare449- **Status.** The signals and their weights may change as we learn from
450 real changes.
451
452### Agents' model calls go through g1t
453
454An agent's model requests always pass through g1t's model proxy,
455`models.g1t.sh`, with your keys or g1t's. You can't point an agent's sandbox
456straight at a provider.
457
458- **Why.** So that no key is ever inside a sandbox, and so budgets, caps and
459 the audit log hold. See [Your keys never reach a sandbox](/guides/models/#your-keys-never-reach-a-sandbox).
460- **Status.** Not planned. This is by design.
461
462## Accounts, status and self-hosting
463
464### Sign-up needs an invite
465
466g1t is invite-only for now. See [Invites](/guides/authentication/#invites).
467**Status.** Opening sign-up is planned.
468
One kind of access token; presence and status; usernames keep their case; the tour is a miniature of the real app; icons for password managers469### Tokens for one workspace you belong to
Docs and plan: fine-grained tokens, workspace token rules, workflow files, workspace token Write470
One kind of access token; presence and status; usernames keep their case; the tour is a miniature of the real app; icons for password managers471A personal access token can be made for one workspace only when you are a
472member of it. For a repository where you are an outside collaborator, make
473a token for all your workspaces. A workspace's
Docs and plan: fine-grained tokens, workspace token rules, workflow files, workspace token Write474[rules for tokens](/guides/authentication/#a-workspaces-rules-for-tokens)
475cover personal access tokens only, not applications you signed in to with
476OAuth. **Status.** Planned.
477
What g1t can't do yet, and an open letter to Cloudflare478### No uptime commitment during the beta
479
480g1t does not promise a particular uptime or offer a service level agreement
481unless you have a written agreement with us. Several of the Cloudflare
482products g1t is built on are in beta and have none either.
483[status.g1t.sh](https://status.g1t.sh/) shows how each part of g1t is doing,
484and every incident. Sandboxes are not checked there yet. See
485[Status and incidents](/guides/status/). **Status.** Not scheduled during
486the beta.
487
488### Self-hosting is early
489
490[Running g1t yourself](/guides/self-hosting/) gives you the core forge:
g1t is one name: its agent's work, commits and comments show as @g1t, and nobody can claim g1t or g1t-agent491accounts, repositories over HTTP, issues and pull requests. g1t's agent,
What g1t can't do yet, and an open letter to Cloudflare492Actions, deployments, git over SSH, the REST API and MCP are off, and it is
493not ready for the open internet. **Status.** Planned, in phases.
494
495### Not built yet
496
Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar497
What g1t can't do yet, and an open letter to Cloudflare498- **Releases and package registries.** Planned.
499- **Wikis.** Not scheduled. Keep docs in the repository.

This file's history is long; its oldest lines are credited to the oldest commit read.