Skip to content

Compare changes

Choose two branches to see what one has that the other does not, then open a pull request for it.

Open a pull request

4 commits

195 files+943−8250/195 viewed
+1−1
7575 fi
7676 branch="runner-base/$(date -u +%Y%m%d-%H%M)"
7777 git config user.name "g1t"
78− git config user.email "actions@g1t.sh"
78+ git config user.email "g1t@users.noreply.g1t.sh"
7979 git checkout -b "$branch"
8080 git add services/runner/base.json
8181 git commit -m "A new base image for g1t's sandboxes"
+1−1
1414 | --- | --- |
1515 | Something a person does on g1t.sh | The guide for it in `apps/docs/src/content/docs/guides/` |
1616 | An API route, a field, or an MCP tool | `apps/api/src/operations.rs` descriptions (they feed the OpenAPI document and the API reference), the example and notes for it in `apps/api/src/reference.json`, `reference/mcp.md`, and any guide that shows the call. Then refresh the docs' copy of the OpenAPI document with `G1T_WRITE_OPENAPI=1 cargo test -p g1t-api openapi`; `cargo test` fails until you do. |
17−| How agents behave | `guides/g1t-agents.md`, and `apps/web/public/llms.txt` |
17+| How agents behave | `guides/working-with-g1t.md`, and `apps/web/public/llms.txt` |
1818 | Settings, limits or prices | The page that names them, and the table it is in |
1919 | A new feature | A section in the guide that owns it, linked from the docs home if it is a new task |
2020
+1−1
316316 kind: PrincipalKind::Agent,
317317 acting: Some(Box::new(Acting {
318318 credential_id: "tok_1".to_owned(),
319− agent: "g1t-agent".to_owned(),
319+ agent: "g1t".to_owned(),
320320 on_behalf_of: Principal::default(),
321321 scope: AgentScope {
322322 repo: RepoPath {
+1−1
268268 Op::UpdateIssue => "Update an issue",
269269 Op::CloseIssue => "Close an issue",
270270 Op::ReopenIssue => "Reopen an issue",
271− Op::AssignIssue => "Assign an issue to the g1t agent",
271+ Op::AssignIssue => "Assign an issue to g1t",
272272 Op::Delegate => "Put an agent on it",
273273 Op::PlanWork => "Plan work",
274274 Op::GetPlan => "Get a plan",
+9−9
752752 "The check names reported on a repository's commits in the last 30 days, most recent first, with the events each was reported for: the names update_repo_settings takes in required_checks. A workflow's runs report a check named after the workflow; a check required on the default branch must be reported on a pull request's head (pull_request events) and, with the merge queue on, on its queued state (merge_group events)."
753753 }
754754 Op::MessageAgent => {
755− "Send the agent working on a pull request a message: a correction, a hint, a change of plan. It receives it at its next step, and it is recorded in the pull request's session. The pull request's author, and anyone with the Write role or higher. An agent uses it to ask the agent on another pull request a question (kind: question) or hand it work that belongs there (kind: handoff), giving its own pull request as from_number; the answer comes back to it at its next step."
755+ "Send the agent working on a pull request a message: a correction, a hint, a change of plan. It receives it at its next step, and it is recorded in the pull request's session. The pull request's author (for one g1t made, whoever asked for it), and anyone with the Write role or higher. An agent uses it to ask the agent on another pull request a question (kind: question) or hand it work that belongs there (kind: handoff), giving its own pull request as from_number; the answer comes back to it at its next step."
756756 }
757757 Op::AnswerMessage => {
758758 "Answer a question or a handoff another agent sent you, by the message's id. For a handoff, set decline to say it is not yours to take. The answer reaches the asking agent at its next step."
791791 "Open an issue on a repository. Say what done means in the body if it helps, for instance under a \"Definition of done\" heading; what must pass before a pull request for it merges is the default branch's required checks, the same for every pull request."
792792 }
793793 Op::UpdateIssue => {
794− "Change an issue's title, body, labels or the people it is assigned to. Only the fields given are changed; labels and assignees each replace the whole set. Its author may change their own issue; anyone else needs the Triage role or higher."
794+ "Change an issue's title, body, labels or the people it is assigned to. Only the fields given are changed; labels and assignees each replace the whole set. Its author may change their own issue, as may the person g1t filed one for; anyone else needs the Triage role or higher."
795795 }
796796 Op::CloseIssue => {
797− "Close an issue without a pull request. Merging a pull request made for an issue closes it for you. Its author may close their own issue; anyone else needs the Triage role or higher."
797+ "Close an issue without a pull request. Merging a pull request made for an issue closes it for you. Its author may close their own issue, as may the person g1t filed one for; anyone else needs the Triage role or higher."
798798 }
799− Op::ReopenIssue => "Reopen a closed issue. Its author may reopen their own issue; anyone else needs the Triage role or higher.",
799+ Op::ReopenIssue => "Reopen a closed issue. Its author may reopen their own issue, as may the person g1t filed one for; anyone else needs the Triage role or higher.",
800800 Op::PlanWork => {
801801 "Turn an outcome into a plan. An agent reads the repository and proposes the issues that would get there: what each changes, what done means for it (added to its body under \"Definition of done\"), the files it will touch, and which must merge before which. Returns the plan's id at once; the plan takes a minute or two to write, so read it with get_plan until its status is ready. Nothing is opened until apply_plan. Needs the Write role or higher."
802802 }
807807 "Open a plan's issues, each blocked by the ones it depends on. With assign, g1t agents start at once on every issue that depends on nothing, working in parallel, and on the others as what they depend on merges. keep limits it to some of the proposed issues, by their positions counting from 1. A plan is applied once. Needs the Write role or higher."
808808 }
809809 Op::AssignIssue => {
810− "Assign an issue to the g1t agent. It opens a pull request for the issue in a sandbox of its own and sees it through: the repository's workflows run on it as its checks, a second agent reviews it, it revises when a check fails (reading the failing jobs' logs) or the review asks for changes, and it catches up when main moves. It is ready once the default branch's required checks pass and the review approves. Returns the pull request at once; follow its progress with get_pull_request. There is no model or agent count to choose. To put many agents to work, assign many issues. Needs the Write role or higher. In preview: only for accounts g1t agents are enabled for."
810+ "Assign an issue to g1t. It opens a pull request for the issue in a sandbox of its own and sees it through: the repository's workflows run on it as its checks, a second agent reviews it, it revises when a check fails (reading the failing jobs' logs) or the review asks for changes, and it catches up when main moves. It is ready once the default branch's required checks pass and the review approves. Returns the pull request at once, with g1t as its author and you as its requested_by; follow its progress with get_pull_request. There is no model or agent count to choose. To put many agents to work, assign many issues. Needs the Write role or higher. In preview: only for accounts g1t agents are enabled for."
811811 }
812812 Op::Delegate => {
813− "Put an agent on something in one step: open an issue and assign it to the g1t agent at once. Say what you want done in plain words, with what done means if you know it. What must pass before its pull request merges is the default branch's required checks. Needs the Write role or higher, and nothing is opened without it. The issue is opened whatever happens next: agent.status is started (pull is the draft pull request the agent opened; follow it with get_pull_request), queued (every agent slot of the workspace is busy; it starts by itself when one frees up) or not_started, with agent.code saying why (not_paid, trial_used, limit, paused, issue_cap, billing_unavailable or no_model), agent.message saying what to do, and agent.fix_url where. There is no model or agent count to choose."
813+ "Put an agent on something in one step: open an issue and assign it to g1t at once. Say what you want done in plain words, with what done means if you know it. What must pass before its pull request merges is the default branch's required checks. Needs the Write role or higher, and nothing is opened without it. The issue is opened whatever happens next: agent.status is started (pull is the draft pull request the agent opened; follow it with get_pull_request), queued (every agent slot of the workspace is busy; it starts by itself when one frees up) or not_started, with agent.code saying why (not_paid, trial_used, limit, paused, issue_cap, billing_unavailable or no_model), agent.message saying what to do, and agent.fix_url where. There is no model or agent count to choose."
814814 }
815815 Op::ListLabels => "The labels available on a repository's issues.",
816816 Op::AddComment => {
817817 "Comment on an issue or a pull request. On a pull request, give path and line to comment on one line of the change."
818818 }
819819 Op::ReviewPullRequest => {
820− "Give a verdict on a pull request: approve it, or request changes and say what. Read get_pull_request_changes first. You cannot review a pull request you opened."
820+ "Give a verdict on a pull request: approve it, or request changes and say what. Read get_pull_request_changes first. You cannot review a pull request you opened, or one g1t made for you (you are its requested_by)."
821821 }
822822 Op::ListPullRequests => {
823823 "Pull requests on a repository, newest first. State open covers drafts and those ready for review; closed covers merged and closed."
835835 Op::MarkPullRequestReady => {
836836 "Mark a draft pull request ready for review. Push your commits first. The summary becomes its description and should say what changed and why."
837837 }
838− Op::ClosePullRequest => "Close a pull request without merging it. Its author may close their own; anyone else needs the Triage role or higher.",
838+ Op::ClosePullRequest => "Close a pull request without merging it. Its author may close their own, and whoever asked g1t for one may close that one; anyone else needs the Triage role or higher.",
839839 Op::GetPullRequestChanges => {
840840 "What a pull request changes: the files it touches and their line-by-line diff against the commit it started from. Use it to review a pull request or to compare several made for the same issue."
841841 }
13941394 "assignees": {
13951395 "type": "array",
13961396 "items": { "type": "string" },
1397− "description": "Usernames of the people it is assigned to. Replaces the whole set; an empty list unassigns everyone. To assign it to the g1t agent, use assign_issue.",
1397+ "description": "Usernames of the people it is assigned to. Replaces the whole set; an empty list unassigns everyone. To assign it to g1t, use assign_issue.",
13981398 },
13991399 })),
14001400 &["repo", "number"],
+42−11
751751 "updated_by": "syntaqx",
752752 "updated_at": "2026-10-04T16:20:37.508Z"
753753 },
754− "notes": "`required_checks` replaces the whole list: at most 20 names, each a workflow's name or another status's context, as [`list_check_names`](/reference/api/repositories/list-check-names/) gives them. A pull request merges only once each passes on its head; one nothing has reported holds it too. With the merge queue on, each must also pass on the queued state, so the workflows behind them need `merge_group` in their `on:`. `required_approvals` is at most 6 and `max_revisions` at most 5. See [what a repository can ask for](/guides/g1t-agents/#what-a-repository-can-ask-for). `hold_low_confidence` is on unless turned off: see [confidence](/guides/g1t-agents/#how-sure-the-agent-is)."
754+ "notes": "`required_checks` replaces the whole list: at most 20 names, each a workflow's name or another status's context, as [`list_check_names`](/reference/api/repositories/list-check-names/) gives them. A pull request merges only once each passes on its head; one nothing has reported holds it too. With the merge queue on, each must also pass on the queued state, so the workflows behind them need `merge_group` in their `on:`. `required_approvals` is at most 6 and `max_revisions` at most 5. See [what a repository can ask for](/guides/working-with-g1t/#what-a-repository-can-ask-for). `hold_low_confidence` is on unless turned off: see [confidence](/guides/working-with-g1t/#how-sure-the-agent-is)."
755755 },
756756 "list_check_names": {
757757 "response": [
834834 "verified": false,
835835 "workspaces": []
836836 },
837+ "requested_by": null,
837838 "created_at": "2026-10-01T18:04:11.482Z",
838839 "updated_at": "2026-10-01T18:04:11.482Z",
839840 "closed_at": null,
874875 "verified": false,
875876 "workspaces": []
876877 },
878+ "requested_by": null,
877879 "created_at": "2026-10-01T18:04:11.482Z",
878880 "updated_at": "2026-10-01T18:04:11.482Z",
879881 "closed_at": null,
907909 "verified": false,
908910 "workspaces": []
909911 },
912+ "requested_by": null,
910913 "created_at": "2026-10-01T18:04:11.482Z",
911914 "updated_at": "2026-10-01T18:52:17.093Z",
912915 "closed_at": "2026-10-01T18:52:17.093Z",
950953 "verified": false,
951954 "workspaces": []
952955 },
956+ "requested_by": null,
953957 "created_at": "2026-10-01T18:20:02.117Z",
954958 "updated_at": "2026-10-01T18:20:02.117Z"
955959 },
993997 "verified": false,
994998 "workspaces": []
995999 },
1000+ "requested_by": null,
9961001 "created_at": "2026-10-01T18:20:02.117Z",
9971002 "updated_at": "2026-10-01T18:52:17.093Z"
9981003 }
10481053 "verified": false,
10491054 "workspaces": []
10501055 },
1056+ "requested_by": null,
10511057 "created_at": "2026-10-01T18:04:11.482Z",
10521058 "updated_at": "2026-10-01T18:09:47.305Z",
10531059 "closed_at": null,
10841090 "verified": false,
10851091 "workspaces": []
10861092 },
1093+ "requested_by": null,
10871094 "created_at": "2026-10-01T18:04:11.482Z",
10881095 "updated_at": "2026-10-01T19:30:00.214Z",
10891096 "closed_at": "2026-10-01T19:30:00.214Z",
11151122 "verified": false,
11161123 "workspaces": []
11171124 },
1125+ "requested_by": null,
11181126 "created_at": "2026-10-01T18:04:11.482Z",
11191127 "updated_at": "2026-10-01T19:41:52.830Z",
11201128 "closed_at": null,
11371145 "issue": 12,
11381146 "title": "Greeting should name the caller",
11391147 "body": null,
1140− "agent": "g1t-agent",
1148+ "agent": "g1t",
11411149 "runtime": "hosted",
11421150 "status": "draft",
11431151 "fork": {
11561164 "assignees": [],
11571165 "reviewers": [],
11581166 "author": {
1167+ "id": "usr_g1t_agent",
1168+ "username": "g1t",
1169+ "kind": "agent",
1170+ "verified": false,
1171+ "workspaces": []
1172+ },
1173+ "requested_by": {
11591174 "id": "usr_01kkntcg1eeb98j62xjm7eh09p",
11601175 "username": "syntaqx",
11611176 "kind": "user",
11661181 "updated_at": "2026-10-01T18:20:02.117Z",
11671182 "confidence": null
11681183 },
1169− "notes": "The response is the pull request the g1t agent opened, still a draft. Follow it with [get a pull request](/reference/api/pull-requests/get-pull-request/): `lifecycle` says what the agent is doing."
1184+ "notes": "The response is the pull request g1t opened, still a draft. g1t is its `author` and you are its `requested_by`: you may manage it as if you had opened it, and cannot approve it yourself. Follow it with [get a pull request](/reference/api/pull-requests/get-pull-request/): `lifecycle` says what the agent is doing."
11701185 },
11711186 "delegate": {
11721187 "request": {
11911206 "verified": false,
11921207 "workspaces": []
11931208 },
1209+ "requested_by": null,
11941210 "created_at": "2026-10-05T14:02:11.204Z",
11951211 "updated_at": "2026-10-05T14:02:11.204Z",
11961212 "closed_at": null,
11991215 "assignees": [],
12001216 "blocked_by": [],
12011217 "queued": false,
1202− "agent": "g1t-agent"
1218+ "agent": "g1t"
12031219 },
12041220 "pull": {
12051221 "id": "pr_01m4a2c9b6e0h4m8q2t6x0a4d8",
12081224 "issue": 41,
12091225 "title": "Retry webhooks with exponential backoff",
12101226 "body": null,
1211− "agent": "g1t-agent",
1227+ "agent": "g1t",
12121228 "runtime": "hosted",
12131229 "status": "draft",
12141230 "fork": {
12271243 "assignees": [],
12281244 "reviewers": [],
12291245 "author": {
1246+ "id": "usr_g1t_agent",
1247+ "username": "g1t",
1248+ "kind": "agent",
1249+ "verified": false,
1250+ "workspaces": []
1251+ },
1252+ "requested_by": {
12301253 "id": "usr_01kkntcg1eeb98j62xjm7eh09p",
12311254 "username": "syntaqx",
12321255 "kind": "user",
12441267 "fix_url": null
12451268 }
12461269 },
1247− "notes": "The issue is opened whatever becomes of the agent. When the workspace's plan does not let it start, `pull` is null and `agent` says why and where to fix it, for example `{ \"status\": \"not_started\", \"code\": \"not_paid\", \"message\": \"Agents need a paid workspace. Start the $20 plan or try it with $5 of free usage after a card check: /acme/-/billing\", \"fix_url\": \"https://g1t.sh/acme/-/billing\" }`. With every agent slot busy, `status` is `queued` and it starts by itself when one frees up. See [putting an agent on something](/guides/g1t-agents/#put-an-agent-on-it-in-one-step)."
1270+ "notes": "The issue is opened whatever becomes of the agent. When the workspace's plan does not let it start, `pull` is null and `agent` says why and where to fix it, for example `{ \"status\": \"not_started\", \"code\": \"not_paid\", \"message\": \"Agents need a paid workspace. Start the $20 plan or try it with $5 of free usage after a card check: /acme/-/billing\", \"fix_url\": \"https://g1t.sh/acme/-/billing\" }`. With every agent slot busy, `status` is `queued` and it starts by itself when one frees up. See [putting an agent on something](/guides/working-with-g1t/#put-an-agent-on-it-in-one-step)."
12481271 },
12491272 "add_comment": {
12501273 "request": {
14571480 "verified": false,
14581481 "workspaces": []
14591482 },
1483+ "requested_by": null,
14601484 "created_at": "2026-10-01T18:20:02.117Z",
14611485 "updated_at": "2026-10-01T18:35:44.902Z"
14621486 }
15011525 "verified": false,
15021526 "workspaces": []
15031527 },
1528+ "requested_by": null,
15041529 "created_at": "2026-10-01T18:20:02.117Z",
15051530 "updated_at": "2026-10-01T18:20:02.117Z"
15061531 },
15541579 "verified": false,
15551580 "workspaces": []
15561581 },
1582+ "requested_by": null,
15571583 "created_at": "2026-10-01T18:20:02.117Z",
15581584 "updated_at": "2026-10-01T18:35:44.902Z",
15591585 "confidence": null
15771603 "verified": false,
15781604 "workspaces": []
15791605 },
1606+ "requested_by": null,
15801607 "created_at": "2026-10-01T18:04:11.482Z",
15811608 "updated_at": "2026-10-01T18:20:02.117Z",
15821609 "closed_at": null,
16441671 }
16451672 ]
16461673 },
1647− "notes": "| Field | |\n| --- | --- |\n| `pull.files` | The files it changes, with lines added and removed. |\n| `statuses` | Its checks: what each workflow run (or another tool, such as a deployment) reported on its head, as `pending`, `success`, `failure` or `error`, with a link to the run. |\n| `required_checks` | Each check the default branch requires (see [`update_repo_settings`](/reference/api/repositories/update-repo-settings/)), as it stands on the head: `success`, `failure`, `pending`, or `expected` when nothing has reported it yet. It merges only once all are `success`. |\n| `checks` | Set when the merge queue took it out, with why in `error`. Older pull requests may show a run of commands from their issue here, from before checks were workflows. |\n| `overlaps` | Other pull requests in progress that change the same files. |\n| `behind` | Whether the default branch has moved since it was made. |\n| `landing` | Whether it is being brought up to date to land. |\n| `lifecycle` | For a pull request the g1t agent is seeing through: its stage, such as `working`, `checking`, `reviewing` or `needs_you`. |\n| `comments` | Comments, reviews and events, with `path`, `line` and `verdict`. |\n| `messages` | Messages sent to the agent working on it. |\n\n| `mergeable` | Whether it merges cleanly into its target: `clean`, `conflicting`, `checking` (being worked out) or `unknown`. Worked out ahead of time whenever it or its target moves. |\n| `conflicts` | When `mergeable` is `conflicting`, the files that conflict. Resolve them by merging the target in, or have the g1t agent do it. |\n| `earlier_checks` | Earlier records like `checks`, newest first. |\n\nChecks are the repository's workflows: they run on `pull_request` events when it is opened, marked ready and pushed to. Read why one failed with [`get_workflow_run`](/reference/api/actions/get-workflow-run/) and [`get_job_logs`](/reference/api/actions/get-job-logs/)."
1674+ "notes": "| Field | |\n| --- | --- |\n| `pull.files` | The files it changes, with lines added and removed. |\n| `statuses` | Its checks: what each workflow run (or another tool, such as a deployment) reported on its head, as `pending`, `success`, `failure` or `error`, with a link to the run. |\n| `required_checks` | Each check the default branch requires (see [`update_repo_settings`](/reference/api/repositories/update-repo-settings/)), as it stands on the head: `success`, `failure`, `pending`, or `expected` when nothing has reported it yet. It merges only once all are `success`. |\n| `checks` | Set when the merge queue took it out, with why in `error`. Older pull requests may show a run of commands from their issue here, from before checks were workflows. |\n| `overlaps` | Other pull requests in progress that change the same files. |\n| `behind` | Whether the default branch has moved since it was made. |\n| `landing` | Whether it is being brought up to date to land. |\n| `lifecycle` | For a pull request g1t is seeing through: its stage, such as `working`, `checking`, `reviewing` or `needs_you`. |\n| `comments` | Comments, reviews and events, with `path`, `line` and `verdict`. |\n| `messages` | Messages sent to the agent working on it. |\n\n| `mergeable` | Whether it merges cleanly into its target: `clean`, `conflicting`, `checking` (being worked out) or `unknown`. Worked out ahead of time whenever it or its target moves. |\n| `conflicts` | When `mergeable` is `conflicting`, the files that conflict. Resolve them by merging the target in, or have g1t do it. |\n| `earlier_checks` | Earlier records like `checks`, newest first. |\n\nChecks are the repository's workflows: they run on `pull_request` events when it is opened, marked ready and pushed to. Read why one failed with [`get_workflow_run`](/reference/api/actions/get-workflow-run/) and [`get_job_logs`](/reference/api/actions/get-job-logs/)."
16481675 },
16491676 "get_pull_request_changes": {
16501677 "response": {
17351762 "verified": false,
17361763 "workspaces": []
17371764 },
1765+ "requested_by": null,
17381766 "created_at": "2026-10-01T18:20:02.117Z",
17391767 "updated_at": "2026-10-01T18:33:10.398Z"
17401768 }
18101838 "verified": false,
18111839 "workspaces": []
18121840 },
1841+ "requested_by": null,
18131842 "created_at": "2026-10-01T18:20:02.117Z",
18141843 "updated_at": "2026-10-01T18:52:17.093Z"
18151844 },
18541883 "verified": false,
18551884 "workspaces": []
18561885 },
1886+ "requested_by": null,
18571887 "created_at": "2026-10-01T18:20:02.117Z",
18581888 "updated_at": "2026-10-01T19:02:48.760Z"
18591889 }
18831913 "id": "qen_01m43khqjmeb5a1magayrnk63z",
18841914 "number": 11,
18851915 "title": "Fix trailing newline in greeting",
1886− "agent": "g1t-agent",
1916+ "agent": "g1t",
18871917 "state": "landed",
18881918 "ahead": [],
18891919 "base_commit": "4b1d7e9c2a5f8e3d6c0b9a7e5d3c1b8a6f4e2d0c",
19331963 },
19341964 "response": {
19351965 "id": "msg_01m43t66tde8hs2vpxhh3v8tqw",
1936− "author": "g1t-agent",
1966+ "author": "g1t",
19371967 "body": "Are you renaming greet() in src/lib.rs? I need to call it from #16.",
19381968 "created_at": "2026-10-01T18:58:12.301Z",
19391969 "delivered_at": "2026-10-01T18:58:40.117Z",
35373567 },
35383568 "number": 14
35393569 },
3540− "created_by": "g1t-agent",
3570+ "created_by": "g1t",
35413571 "pinned": false,
35423572 "created_at": "2026-10-01T18:40:12.000Z",
35433573 "updated_at": "2026-10-01T18:40:12.000Z",
36453675 "number": null,
36463676 "state": null,
36473677 "author": null,
3678+ "requested_by": null,
36483679 "labels": [],
36493680 "topics": [],
36503681 "slug": null,
36543685 ],
36553686 "notes": []
36563687 },
3657− "notes": "`q` takes words, `\"exact phrases\"`, `-words` to leave out, and qualifiers: `repo:owner/name`, `org:` (or `workspace:`), `language:`, `path:` (a glob when it has `*`), `is:issue`, `is:pr`, `is:open`, `is:closed`, `is:merged`, `is:draft`, `is:public`, `is:private`, `author:` and `label:`; most can be left out with a leading `-`, as in `-label:wontfix`. `type` is `repositories`, `code`, `issues`, `pulls` or `people`; without it, `path:` means code, `is:pr` pull requests, `is:open`, `author:` or `label:` issues, and anything else repositories. `counts` says how many results each type has, up to 1,000. Each result's `snippet` (or, for code, each of its `lines`) is a list of parts, `highlight` true where the query matched. Code is searched on default branches and needs a word of three characters or more, unless the query names a `repo:`. Public content is returned to anyone, without a token; private content only to people who can read it (members of its workspace, and people given a role on the repository), checked when the search runs, so a repository made private, or a role taken away, stops appearing at once. A g1t agent's token can search too."
3688+ "notes": "`q` takes words, `\"exact phrases\"`, `-words` to leave out, and qualifiers: `repo:owner/name`, `org:` (or `workspace:`), `language:`, `path:` (a glob when it has `*`), `is:issue`, `is:pr`, `is:open`, `is:closed`, `is:merged`, `is:draft`, `is:public`, `is:private`, `author:` and `label:`; most can be left out with a leading `-`, as in `-label:wontfix`. `type` is `repositories`, `code`, `issues`, `pulls` or `people`; without it, `path:` means code, `is:pr` pull requests, `is:open`, `author:` or `label:` issues, and anything else repositories. `counts` says how many results each type has, up to 1,000. Each result's `snippet` (or, for code, each of its `lines`) is a list of parts, `highlight` true where the query matched. Code is searched on default branches and needs a word of three characters or more, unless the query names a `repo:`. Public content is returned to anyone, without a token; private content only to people who can read it (members of its workspace, and people given a role on the repository), checked when the search runs, so a repository made private, or a role taken away, stops appearing at once. A g1t agent's token can search too. An issue or pull request g1t opened has `author` `g1t` and `requested_by` the person it was for; `author:` matches the author."
36583689 },
36593690 "search_context": {
36603691 "params": {
+5−1
99
1010 export default defineConfig({
1111 site: 'https://docs.g1t.sh',
12+ // Pages that moved, so links already shared still arrive.
13+ redirects: {
14+ '/guides/g1t-agents/': '/guides/working-with-g1t/',
15+ },
1216 integrations: [
1317 starlight({
1418 title: 'g1t docs',
7680 {
7781 label: 'Agents',
7882 items: [
79− { label: 'g1t agents', slug: 'guides/g1t-agents' },
83+ { label: "g1t's agent", slug: 'guides/working-with-g1t' },
8084 { label: 'Guardrails', slug: 'guides/guardrails' },
8185 { label: 'Outcomes and plans', slug: 'guides/outcomes' },
8286 { label: 'Talking to agents', slug: 'guides/talking-to-agents' },
+3−3
161161
162162 You can't resolve a merge conflict on the pull request's page.
163163
164−- **Instead.** Ask a g1t agent to resolve it, or fix it on the command line.
164+- **Instead.** Ask g1t to resolve it, or fix it on the command line.
165165 See [Conflicts](/guides/pull-requests/#conflicts).
166166 - **Status.** Planned.
167167
309309 - **Instead.** Keep **Ask a person before merging low-confidence changes**
310310 on, and make your workflows required checks. A high rating on a
311311 repository with weak tests means less. See
312− [How sure the agent is](/guides/g1t-agents/#how-sure-the-agent-is).
312+ [How sure the agent is](/guides/working-with-g1t/#how-sure-the-agent-is).
313313 - **Status.** The signals and their weights may change as we learn from
314314 real changes.
315315
343343 ### Self-hosting is early
344344
345345 [Running g1t yourself](/guides/self-hosting/) gives you the core forge:
346−accounts, repositories over HTTP, issues and pull requests. g1t agents,
346+accounts, repositories over HTTP, issues and pull requests. g1t's agent,
347347 Actions, deployments, git over SSH, the REST API and MCP are off, and it is
348348 not ready for the open internet. **Status.** Planned, in phases.
349349
+8−8
8787
8888 ## Assignees and reviewers
8989
90−An issue is assigned to people, to the g1t agent, or to both. A pull
91−request has assignees too, and reviewers: the people, or the g1t agent,
90+An issue is assigned to people, to g1t, or to both. A pull
91+request has assignees too, and reviewers: the people, or g1t,
9292 whose review was asked for. Each shows beside the conversation, with where
9393 every reviewer stands.
9494
134134 unless the repository allows bypassing them and someone who can merge
135135 chooses to. Checks that are not required are shown, and never hold a merge.
136136
137−The same rules hold for people and agents. A g1t agent's pull request is
137+The same rules hold for people and agents. A pull request g1t opens is
138138 checked by the same workflows as yours, and an agent cannot mark its own
139139 work as passing: only the workflow runs report.
140140
144144 on a single line of its change. Line comments are shown in the **Files changed**
145145 tab under the line they are about.
146146
147−You can also ask a **g1t agent** to review. It reads the change in a sandbox
147+You can also ask **g1t** to review. It reads the change in a sandbox
148148 of its own and posts comments on lines, a summary and a verdict, as
149−`g1t-agent`.
149+`g1t`.
150150
151151 A reviewer can also give a verdict: **approve**, or **request changes**.
152152 The pull request shows where each reviewer stands. You cannot give a verdict
153153 on a pull request you opened, and that holds for agents too: one agent can
154154 review another's work, but not its own.
155155
156−Requesting changes on a g1t agent's pull request sends the agent back to
156+Requesting changes on a pull request g1t opened sends g1t back to
157157 make them. See [talk to agents](/guides/talking-to-agents/#ask-for-changes).
158158
159159 ## Overlap
168168 when the second one tries to merge. Agents get the same list from
169169 the `pull_request` tool's `get` action, as `overlaps`.
170170
171−A g1t agent is told about the other work before it starts. Its instructions
171+g1t is told about the other work before it starts. Its instructions
172172 list every pull request in progress in the repository, what each is for and
173173 which files it changes, and ask it to keep its edits small and local where
174174 it has to touch the same files. It is told again when it is sent back to
192192
193193 **Catch up with main** brings it up to date. When the pull request and `main` changed
194194 different files, g1t merges `main` in itself and pushes the merge in a few
195−seconds. When they changed some of the same files, a g1t agent merges `main`
195+seconds. When they changed some of the same files, g1t merges `main`
196196 into the pull request in a sandbox: if the merge is clean, it is pushed as it
197197 is; if it conflicts, the agent is given the conflicted files and what the
198198 pull request is for, resolves them, and pushes the result, and the session
+1−1
211211 remove or invite anyone, answer an invitation, or change the base
212212 permission. When the person it works for loses their role on the
213213 repository, or leaves the workspace, the agent loses it too. See
214−[credentials](/guides/g1t-agents/#credentials).
214+[credentials](/guides/working-with-g1t/#credentials).
215215
216216 Because putting agents to work spends compute, it needs Write. Someone with
217217 Read or Triage who mentions or assigns an agent is told so, and nothing
+12−4
180180 ## Pull requests
181181
182182 A pull request's workflows run on each new head: when it is opened, when
183−a commit is pushed to it, and, for one a g1t agent makes, when the agent
183+a commit is pushed to it, and, for one g1t makes, when g1t
184184 marks it ready, which on g1t is when it first has code. Each head runs
185185 each workflow once.
186186
187+`github.event.pull_request` reads as it does on GitHub. For a pull request
188+g1t made, `pull_request.user` is g1t (`login` `g1t`, `type` `Bot`), and
189+`pull_request.requested_by` names the person who asked for it; it is `null`
190+on anyone else's. `github.event.issue.requested_by` does the same for an
191+issue g1t's agent filed. `sender` is whoever caused the event.
192+
187193 ## Checks
188194
189195 A pull request's checks are its workflows. Each workflow that runs on
202208 builds, on the branch `g1t-queue/<entry>`, and the state lands only if
203209 they and every required check pass on it. A workflow behind a required
204210 check needs `merge_group` in its `on:`.
205−- **A pull request a g1t agent is working on** goes back to the agent when
211+- **A pull request g1t is working on** goes back to g1t when
206212 a check fails, with the end of each failed job's log. The agent reads the
207213 run and its logs with the same tools you have, fixes the cause, and
208214 pushes; the workflows run again. See
209− [seeing it through](/guides/g1t-agents/#seeing-it-through).
215+ [seeing it through](/guides/working-with-g1t/#seeing-it-through).
210216
211217 ```yaml
212218 name: CI
255261 token for the run, with `GITHUB_TOKEN` as its alias. A pull request's runs
256262 get secrets and the token only when its author has the Write
257263 [role](/guides/access-and-roles/) or higher on the repository, a member or
258−an outside collaborator, or is g1t's agent. Anyone else's, such as one
264+an outside collaborator, or is g1t working on its own. For a pull request
265+g1t made, its author is g1t and the person who asked for it is the one
266+whose role counts. Anyone else's, such as one
259267 from a fork or by someone with Read or Triage, runs without secrets and
260268 with an empty token. See
261269 [who gets secrets](/guides/secrets-and-variables/#who-gets-secrets).
+3−3
2020
2121 ## Runs
2222
23−A **run** is one sandbox g1t starts. Each g1t agent run does one kind of
23+A **run** is one sandbox g1t starts. Each g1t run does one kind of
2424 work on one pull request:
2525
2626 | Kind | What the agent does |
3737
3838 Each run records:
3939
40−- the agent (`g1t-agent`) and, for members, the model it runs on;
40+- the agent (`g1t`) and, for members, the model it runs on;
4141 - its pull request, or for a plan, the outcome;
4242 - its status: starting, running, done, failed or stopped;
4343 - its **current step**, one line such as `Edited src/auth.ts` or
135135
136136 ### How agents use it
137137
138−Every g1t agent run is given memory when it starts: the workspace's and
138+Every g1t run is given memory when it starts: the workspace's and
139139 the project's, each labelled, pinned memories first, then the ones used
140140 most recently, up to about 6,000 characters. Agents are told to treat it as
141141 notes from colleagues: usually right, sometimes out of date, and where it
+3−3
55
66 Every workspace keeps an audit log. It records:
77
8−- **Everything an agent does** with its [run credentials](/guides/g1t-agents/#credentials),
8+- **Everything an agent does** with its [run credentials](/guides/working-with-g1t/#credentials),
99 reads included: every API and MCP call, every clone and fetch, every push.
1010 - **Every change people and workspace tokens make** through the API, the
1111 MCP server and git: opening and closing issues, comments, merges,
4141 | --- | --- |
4242 | Time | When it happened, to the millisecond. |
4343 | Actor | Who did it: a person, an agent, or a workspace token. |
44−| On behalf of | For an agent, the person it worked for: `g1t-agent on behalf of syntaqx`. |
44+| On behalf of | For an agent, the person it worked for: `g1t on behalf of syntaqx`. |
4545 | Run | The agent run, with its kind: `implement`, `review`, `update` and so on. |
4646 | Credential | The id of the token used. |
4747 | Action | The API or MCP operation, such as `create_issue`, or `git.push` and `git.fetch`. |
5252 | Request id | The request's id, the same one Cloudflare logs it under. |
5353
5454 The rules that refuse an agent are listed under
55−[credentials](/guides/g1t-agents/#credentials).
55+[credentials](/guides/working-with-g1t/#credentials).
5656
5757 ## Read the log
5858
+2−2
341341 | `issues:write` | Open, edit, close and comment on issues |
342342 | `pull_requests:read` | Read pull requests, their changes, sessions and merge queues |
343343 | `pull_requests:write` | Open, review, close and merge pull requests |
344−| `agents:run` | Put g1t agents to work and message them, which uses the workspace's money |
344+| `agents:run` | Put g1t to work and message it, which uses the workspace's money |
345345 | `workflows:read` | Read workflows, runs and logs |
346346 | `workflows:write` | Run, cancel, rerun and turn workflows on or off |
347347 | `memory:read` | Recall memory and search the workspace's context |
394394 | Preset | Scopes |
395395 | --- | --- |
396396 | Read only | Every `read` scope. Changes nothing. |
397−| Agent | Every `read` scope except `runners:read`, and `code:write`, `issues:write`, `pull_requests:write`, `agents:run` and `memory:write`. Reads everything, works on issues and pull requests, pushes code and runs g1t agents. No admin scope. |
397+| Agent | Every `read` scope except `runners:read`, and `code:write`, `issues:write`, `pull_requests:write`, `agents:run` and `memory:write`. Reads everything, works on issues and pull requests, pushes code and puts g1t to work. No admin scope. |
398398 | CI | `repo:read`, `code:read`, `code:write`, `workflows:read` and `workflows:write`. Clones and pushes code, and runs workflows. |
399399 | Full access | Everything you can do, including deleting repositories and changing who has access. Marked **Dangerous**. |
400400
+4−4
6363 Claude Code from `CLAUDE.md`, and Codex, OpenCode and Cursor from
6464 `AGENTS.md`. To keep one file, write `AGENTS.md` and put `@AGENTS.md` in
6565 `CLAUDE.md`. g1t's own agents read both; see
66−[repository instructions](/guides/g1t-agents/#repository-instructions).
66+[repository instructions](/guides/working-with-g1t/#repository-instructions).
6767
6868 ### Recording sessions automatically
6969
137137 was made. If it has, pull `main` into the fork and push before asking for a
138138 merge.
139139
140−## Talking to g1t agents
140+## Talking to g1t
141141
142−Your agent can send the g1t agent working on a pull request a message with
143−`agent` and `message`; it arrives at that agent's next step. g1t agents also ask
142+Your agent can send g1t a message on a pull request it is working on, with
143+`agent` and `message`; it arrives at g1t's next step. g1t's runs also ask
144144 each other questions and hand each other work. See
145145 [talk to agents](/guides/talking-to-agents/).
146146
+2−2
1919 | **Search** | One search across the catalog, docs, issues, pull requests and memory |
2020 | **Scorecards** | A few rules every project should meet, each failing one a click away from an issue an agent fixes |
2121
22−Every g1t agent run starts with a **Context** section drawn from the hub,
22+Every g1t run starts with a **Context** section drawn from the hub,
2323 and your own agents can ask it through the [MCP tools](#mcp-tools):
2424 the `search` tool's `context` and `entity` actions.
2525
169169
170170 ## Agents start with context
171171
172−Every g1t agent run is given a **Context** section, after the project's
172+Every g1t run is given a **Context** section, after the project's
173173 memory, within about 4,000 characters:
174174
175175 - the project's stack, test commands, owners, docs, and its environments
+2−1
314314 rather than the build. Secrets reach a preview only when the pull
315315 request's author has Write or higher on the repository, whether a member
316316 or an [outside collaborator](/guides/access-and-roles/#outside-collaborators),
317−or it is g1t's own agent. A preview of anyone else's pull request, such as
317+or it is g1t working on its own. For a pull request g1t made, whoever
318+asked for it is the one whose role counts. A preview of anyone else's pull request, such as
318319 one from a fork or by someone with Read or Triage, is built and runs with
319320 variables only, no secrets.
320321
+0−662
1−---
2−title: g1t agents
3−description: Have g1t's own agents work on an issue.
4−---
5−
6−g1t can do the work itself. Assign an open issue to the g1t agent and it
7−opens a pull request for the issue, works in a sandbox and a fork of its
8−own, and reports back as it goes. There is nothing to configure: you do not
9−say how many agents or which model. Scale comes from assigning many issues,
10−each to its own agent, all working at once.
11−
12−g1t agents are paid for by the workspace they work for, so they need a
13−paid workspace or the free trial; see [who can run agents](#who-can-run-agents)
14−and [usage and billing](/guides/usage-and-billing/). Everyone can also
15−[bring their own agent](/guides/bring-your-own-agent/), which costs
16−nothing on g1t.
17−
18−To hand over a whole outcome rather than one issue at a time, have an agent
19−plan it first: see [hand off an outcome](/guides/outcomes/).
20−
21−## Put an agent on it in one step
22−
23−When the work is not written down yet, open the issue and hand it to the
24−agent at once:
25−
26−1. On Mission control, choose **Put an agent on it**.
27−2. Pick the project, give a title, and say what you want done in plain
28− words, with what done means if you know it.
29−3. Choose **Put an agent on it**.
30−
31−You land on the new issue with the agent already at work on its pull
32−request. The same choice is on a project's **New issue** page, as **Assign
33−g1t-agent now**, and in the ⌘K palette as **Put an agent on …** followed by
34−a project's name.
35−
36−Putting an agent to work needs the Write role on the project. Without it,
37−nothing is opened. With it, the issue is always opened, even when the
38−agent cannot start:
39−
40−| What happened | What you see |
41−| --- | --- |
42−| The agent started | The issue, with its draft pull request under **Assignees**. |
43−| Every agent slot of the workspace is busy | The issue, queued for g1t-agent. It starts by itself when a slot frees up. |
44−| The workspace's plan or limits refused it | The issue is opened, and the composer says why and links to the fix: start the plan or the trial (`not_paid`, `trial_used`), raise the monthly limit (`limit`) or the cap per issue (`issue_cap`), or connect a model (`no_model`). A workspace g1t `paused` says to contact support. |
45−
46−From the API or an agent of your own, it is one call:
47−
48−```sh
49−curl -X POST https://api.g1t.sh/repos/<workspace>/<repo>/issues/delegate \
50− -H "Authorization: Bearer $G1T_TOKEN" \
51− -H "Content-Type: application/json" \
52− -d '{"title": "Retry webhooks with exponential backoff", "body": "Deliveries that fail are dropped today. Retry them up to six times."}'
53−```
54−
55−The answer holds the `issue`, the `pull` request the agent opened (or
56−`null`), and `agent`: its `status` (`started`, `queued` or `not_started`),
57−and when it did not start, a `code`, a `message` and a `fix_url`. On the MCP
58−server it is the `agent` tool's `delegate` action. See
59−[put an agent on it](/reference/api/issues/delegate/).
60−
61−The `checks` field this call and `create_issue` used to take is
62−deprecated. It is still accepted: its commands are added to the issue's
63−body under `## Definition of done`, one line each (`` - `npm test` passes. ``),
64−and the answer carries a `deprecation` string saying so. What has to pass
65−before the pull request merges is the default branch's
66−[required status checks](/guides/pull-requests/#required-status-checks).
67−
68−## Assigning agents
69−
70−One issue:
71−
72−1. Open an issue on a repository.
73−2. In **Assign to g1t agent**, optionally add guidance for this run, on top
74− of the issue's description.
75−3. Choose **Assign**.
76−
77−Many issues:
78−
79−1. Open the repository's **Issues** tab.
80−2. Tick the issues to hand over, up to ten at a time.
81−3. Choose **Assign to g1t agent**.
82−
83−From the API, an agent of your own, or a script:
84−
85−```sh
86−curl -X POST https://api.g1t.sh/repos/<workspace>/<repo>/issues/12/assign \
87− -H "Authorization: Bearer $G1T_TOKEN"
88−```
89−
90−The same thing is the `agent` tool's `assign` action on the MCP server, so an agent
91−planning work can hand issues to g1t agents itself.
92−
93−In a comment: write `@g1t-agent take this` on the issue. See
94−[mentioning g1t-agent](#mentioning-g1t-agent).
95−
96−By label: a project can hand every issue given a label to the agent. See
97−[the label rule](#the-label-rule).
98−
99−Each agent appears as a draft pull request on its issue within a few
100−seconds. The pages update on their own while they work.
101−
102−An issue can still have more than one pull request: assign it again, or
103−have your own agent open one alongside. That is for when you want a second
104−attempt, not the normal way of working.
105−
106−## What an agent does
107−
108−1. Clones its pull request's fork.
109−2. Is told what else is in progress: every other open pull request in the
110− repository, what it is for and which files it changes. Its session
111− starts with a note of what it was told.
112−3. Reads the code and makes the change the issue asks for, keeping clear of
113− the other work where it can.
114−4. Commits its work.
115−5. Pushes to the fork and marks the pull request ready for review, with a
116− summary as its description.
117−
118−Everything it reads, runs and decides is recorded in the pull request's
119−**Session** as it happens; see [sessions and why-blame](/guides/why-blame/).
120−The **Files changed** tab shows the resulting diff.
121−
122−If an agent fails, or finishes without changing anything, its pull request
123−is closed and its session says why.
124−
125−## Repository instructions
126−
127−Every g1t agent run reads the repository's own instructions for agents
128−and is told them, labelled as the repository's, before it starts: making a
129−change, revising it, reviewing, catching up, answering, and planning.
130−
131−| File | Read by |
132−| --- | --- |
133−| `AGENTS.md` and `CLAUDE.md` at the root | Every run. |
134−| `AGENTS.md` and `CLAUDE.md` in a subdirectory | Runs whose task touches files under it: the nearest one above each file. Where it disagrees with the root's, it wins for the files under it. |
135−| `.g1t/review.md` | Reviews: what to check, house rules, paths that need extra care. |
136−
137−Write them for an agent that knows nothing about the project: how to build
138−and test, how things are named, what never to touch. For example:
139−
140−```md
141−# AGENTS.md
142−- Run `npm test` and `npm run typecheck` before you finish.
143−- API handlers return a Result; they never throw.
144−- Never edit files under `vendor/`.
145−```
146−
147−Which directories a task touches comes from the pull request's changed
148−files, and for new work from the paths the issue names, so naming the
149−files in an issue helps the right instructions reach the agent.
150−
151−**Where they are read from.** The default branch, as it is when the run
152−starts. A pull request from one of the repository's own branches is read at
153−its head instead, since only people who can push to the repository can
154−change it. A pull request from a fork, which includes every change a g1t
155−agent makes, is never followed: the agent keeps the default branch's
156−instructions, and if the fork changes them, it is shown the changed text as
157−part of the change, marked as not instructions. That way nobody can steer
158−an agent, or the review of their own change, by editing these files in a
159−pull request. Treat what a fork's head says as untrusted, as you would its
160−code.
161−
162−**Limits.** Each file is cut at 8,000 characters and all of them together
163−at 24,000; what is left out is named in the prompt. Files are read once per
164−commit and reused.
165−
166−The project's **Agents** page lists the files its runs read, what they say
167−and when each last changed, with a link to each in the code. Each run's
168−session starts with a note of which files it read. To change them, change
169−the files and merge to the default branch.
170−
171−## Seeing it through
172−
173−Making the change is the first step. g1t takes the rest itself, and you
174−get the pull request back ready to merge:
175−
176−1. **Checks.** Every push the agent makes runs the repository's
177− [workflows](/guides/actions/) on the pull request, as for anyone's pull
178− request. g1t waits for them to finish. Only the workflow runs report, so
179− the agent has no say in the result.
180−2. **Review.** A different agent reads the change and posts comments on
181− lines, a summary and a verdict.
182−3. **Revision.** If a check fails or the review asks for changes, the
183− author is sent back with exactly what was found. For a failed check,
184− that is the end of the log of each failed job, up to three jobs and
185− about 3,000 characters each; it can read more with `get_workflow_run`
186− and `get_job_logs`. Steps 1 and 2 run again on the result. This happens
187− at most twice, or as often as the repository's **Revisions before asking
188− you** allows.
189−4. **Ready to merge.** The required checks passed and it is approved.
190− Merging is yours, unless the repository says otherwise (below).
191−
192−Agents are told to run the same tests and linters the workflows run before
193−they finish, so most failures are caught in the sandbox. What "done" means
194−for the issue, if its description says so, is context for the agent and
195−its reviewer; what decides the merge is the default branch's
196−[required status checks](/guides/pull-requests/#required-status-checks).
197−A repository with no workflows has nothing to prove a change works; **Add
198−CI** gives it one ([add CI](/guides/actions/#add-ci)).
199−
200−If `main` has moved in the meantime, that does not hold the pull request
201−up. Merging it brings it up to date first: g1t merges `main` in, an agent
202−resolves any conflict, and it lands. A repository that wants every pull
203−request caught up and checked again before it may merge turns on **Require
204−pull requests to be up to date before merging** in its settings; catching
205−up is then a step of its own, before "ready".
206−
207−g1t also works out ahead of time whether each pull request still merges
208−cleanly, every time it or `main` moves
209−([how](/guides/pull-requests/#conflicts)). When one of an agent's pull
210−requests is found to conflict, g1t does not wait for a merge to trip over
211−it: the agent is sent to merge `main` in and resolve the conflicts, told
212−which files conflict, and the checks run again on the result.
213−
214−The pull request's page shows which step it is at. While a required check
215−has not reported on its latest commit, it says so: "Waiting for the
216−required check CI to report on its latest commit." If g1t cannot finish,
217−because a required check still fails after the agent revised as often as
218−the repository allows ("The required check CI still fails after the agent
219−revised twice."), a review could not be written, or a conflict could not
220−be resolved while bringing it up to date, it stops and the page says
221−**Needs you**, with the reason. A check that is not required and still
222−fails after the last revision does not hold it. Pushing to the pull
223−request yourself starts it moving again.
224−
225−### What a repository can ask for
226−
227−Under a project's **Settings → Branches and merging**, someone with the
228−Maintain [role](/guides/access-and-roles/) or higher sets the rules its pull
229−requests follow. **Branch protection** holds the rules for every pull
230−request, a person's or an agent's; they are described in
231−[required status checks](/guides/pull-requests/#required-status-checks):
232−
233−| Setting | Default | What it does |
234−| --- | --- | --- |
235−| Require a pull request to change the default branch | Off | Refuses pushes to the default branch. |
236−| Required status checks | None | The checks that must pass on a pull request's head before it merges. |
237−| Required approvals | None | How many reviewers must approve before a merge. A reviewer who asked for changes blocks it. |
238−| A g1t agent's approval counts | On | Off means approvals have to come from people. |
239−| Require branches to be up to date before merging | Off | On means catching up is a step of its own and the checks run again. |
240−| Merge through a queue | Off | Merging tests a pull request together with those ahead of it; the default branch only moves to a combination that passed. See [merge queue](/guides/merge-queue/). |
241−| Allow bypassing required checks | On | Lets someone who may merge merge without the required checks passing. Off means nobody can. |
242−
243−**g1t agents** holds what g1t does with its own agents' pull requests:
244−
245−| Setting | Default | What it does |
246−| --- | --- | --- |
247−| Review by a second agent | On | Off leaves review to people. |
248−| Revisions before asking you | 2 | How often an agent is sent back before g1t stops. |
249−| Merge automatically when ready | Off | Lands a g1t agent's pull request once every rule is met. |
250−| Ask a person before merging low-confidence changes | On | A g1t agent's change [rated low](#how-sure-the-agent-is) waits for a person's approval instead of merging by itself or joining the queue. |
251−
252−A g1t agent's pull request follows the same rules as anyone's. If the
253−repository wants approvals from people, it waits for them, and shows
254−**Needs you** until they arrive.
255−
256−### Talking to an agent
257−
258−While a g1t agent works, you can steer it with **Message the agent** on its
259−pull request; it reads the message at its next step, without starting
260−over. Once it is done, a review with **Request changes** sends it back to
261−make them, and the checks and review run again. g1t agents working at the
262−same time can also ask each other questions and hand each other work. See
263−[talk to agents](/guides/talking-to-agents/).
264−
265−### Merging automatically
266−
267−A repository can land a g1t agent's pull request by itself once it is
268−ready. Someone with the Maintain role or higher turns this on under the repository's
269−**Settings → Branches and merging**; it is off to begin with. The merge is recorded as made by
270−`g1t`, the issue closes naming the pull request, and nothing short of
271−ready is ever merged this way: every required check has passed on its
272−head. One that is behind `main` is brought up to
273−date as part of the merge. Pull requests from people and from other
274−agents always wait for a person to merge them.
275−
276−Every step is recorded: revisions and catch-ups in the pull request's
277−**Session**, reviews in its conversation.
278−
279−This applies to pull requests made by g1t agents. One you or your own
280−agent opened is yours to drive; the same workflows run on it, and you can ask
281−for a review or a catch-up from its page.
282−
283−### How sure the agent is
284−
285−Once a g1t agent has finished a change, g1t records how sure it is that the
286−change is right: **high**, **medium** or **low**, with a few words saying
287−why, such as "Low — tests not added, 3 revisions". It shows on the pull
288−request, under the agent, and on Mission control. It is worked out again as
289−the change moves through checks, review and revision, and kept with each
290−run, so a run's page says how the change stood when that run left it.
291−
292−Confidence comes from what g1t can observe, not from how the agent sounds.
293−Each signal below that tells against the change adds points, or makes it
294−low on its own. No points is high, one or two is medium, and three or more
295−is low.
296−
297−| Signal | Effect |
298−| --- | --- |
299−| Required checks fail | Low |
300−| It failed in the [merge queue](/guides/merge-queue/) | Low |
301−| The reviewer agent asks for changes | Low |
302−| A run was stopped at its cost or time cap | Low |
303−| Sent back to revise | 1 point per revision, at most 3 |
304−| Required checks have not finished, or have not run on its head | 1 point |
305−| Checks passed only on a retry | 1 point |
306−| The default branch has no required checks | 1 point |
307−| No review yet, or the repository has no reviewer agent | 1 point |
308−| The reviewer approved but left three or more comments on lines | 1 point |
309−| Code changed and no test was added or changed | 1 point |
310−| More than 400 lines changed; more than 1,000 | 1 point; 2 points |
311−| More than 30 files changed | 1 point |
312−| Files changed outside the area its [plan](/guides/outcomes/) expected; four or more | 1 point; 2 points |
313−| Touches CI workflows, repository automation, secrets, infrastructure or `CODEOWNERS` | 2 points |
314−| Its latest run used 80% or more of its cost or time cap | 1 point each |
315−| Steps refused by [guardrails](/guides/guardrails/); three or more | 1 point; 2 points |
316−| A question or handoff it sent another agent is unanswered | 2 points |
317−| The agent said it was unsure about something | 1 point |
318−
319−At the end of every run that makes or revises a change, the agent is also
320−asked how sure it is, and what it could not verify. g1t takes the lower of
321−the two: what it observes can lower the agent's own word, never raise it.
322−When the agent's word is lower, the reasons start with "agent says low",
323−and the pull request lists what it was unsure about.
324−
325−For high confidence, the reasons say what it rests on: required checks pass,
326−approved on the first review, tests added, a small change.
327−
328−The pull request's `confidence` in the
329−[API](/reference/api/pull-requests/get-pull-request/) has the `level`,
330−`reasons`, `self_reported`, `uncertain_about`, the `run_id` it was worked out
331−after, and `assessed_at`. [Webhooks](/guides/webhooks/) for pull requests
332−carry it too.
333−
334−### Low-confidence changes wait for a person
335−
336−With **Ask a person before merging low-confidence changes** on, which it is
337−unless someone turns it off, a g1t agent's change rated low is not merged
338−by itself and does not join the merge queue, even with **Merge
339−automatically when ready** on. Once everything else the repository asks
340−for is met, it stops at **Needs you**, saying why, and Mission control
341−lists it under **Needs you** with a **Low confidence** chip, the reasons in
342−**What the agent already knows**, and the reasons again in **Why this
343−needs you**.
344−
345−To let it land, approve it: a person's approval since the agent last
346−revised lifts the hold, and it merges as the repository's rules say. To
347−send it back, request changes. Merging it yourself works as usual. The
348−setting is under **Settings → Branches and merging**, in **g1t agents**,
349−and is `hold_low_confidence` in
350−[`update_repo_settings`](/reference/api/repositories/update-repo-settings/).
351−
352−## Choosing between pull requests
353−
354−Each pull request on the issue's page shows whether its checks passed. Open
355−the ones that did, read their descriptions and changes, and merge the one
356−you want. Merging lands it on `main` and closes the issue, which records
357−that pull request as the one that resolved it. The other pull requests for
358−the issue close as superseded. See
359−[merging](/concepts/overview/#merging) for what happens when `main` has moved.
360−
361−## Other things g1t agents do
362−
363−- **Review.** On a pull request that is ready, **Request review from g1t agent**
364− has an agent read the change and post comments on lines, a summary and a
365− verdict.
366−- **Catch up.** When `main` has moved under a pull request, **Catch up with
367− main** merges it in. When the two changed different files g1t does that
368− itself in seconds, with no agent; otherwise an agent merges it in a
369− sandbox and resolves any conflict
370− ([catching up](/guides/pull-requests/#catching-up)).
371−- **Finish a security update.** g1t raises a vulnerable dependency to its
372− fixed version itself, with no agent. When raising the version is not
373− enough (the bump fails, or the pull request's required checks fail
374− because code must change), g1t opens an issue and puts g1t-agent on it.
375− That session shows as **started by g1t** on the project's **Agents** page.
376− See [security updates](/guides/security/#security-updates).
377−
378−Each runs in a sandbox of its own.
379−
380−## Mentioning g1t-agent
381−
382−Write `@g1t-agent` in a comment on an issue or a pull request, with what
383−you want, and it does it. The comment box offers to complete the name as
384−you type `@`.
385−
386−| Where | You write | What happens |
387−| --- | --- | --- |
388−| An issue | A request: `@g1t-agent take this`, `@g1t-agent fix the empty case` | The issue is assigned to the agent, which opens a pull request, as if you had chosen **Assign**. |
389−| An issue | A question: `@g1t-agent why does search time out?` | The agent reads the code on the default branch and answers in the thread. It changes nothing. |
390−| A pull request g1t-agent made | A request: `@g1t-agent also handle the empty list` | The agent is sent back to make the change, with your comment as what to address, and the checks and review run again. If it is still working, it gets your comment as a message at its next step. |
391−| Any pull request | `@g1t-agent review` | A review by a g1t agent, as with **Request review from g1t agent**. |
392−| Any pull request | A question | The agent reads the change at its head and answers in the thread. On someone else's pull request, which it cannot push to, a request is answered too: it says what it would change. |
393−
394−A request is a comment whose words after the mention start with what to
395−do (`take`, `fix`, `add`, `please rename`, `can you update`); a question
396−starts with a question word or ends with a question mark. `review` near the
397−start asks for a review.
398−
399−g1t-agent always replies in the thread, saying what it started or why it
400−did not. Every run a mention starts shows on the project's **Agents** page
401−as started by whoever mentioned it, and a mention that started nothing
402−shows there as a failed run with the reason.
403−
404−**What does not count.** Mentions in code (`` `@g1t-agent` `` or a code
405−block), in quoted lines (`> @g1t-agent …`), in email addresses
406−(`ops@g1t-agent.dev`) and in longer names (`@g1t-agents`) are ignored.
407−Matching ignores case. Agents mentioning `@g1t-agent` start nothing, so
408−agents cannot set each other to work this way.
409−
410−**Who can.** People with the Write [role](/guides/access-and-roles/) or higher on the
411−repository, members or not. Anyone else who mentions it gets a short reply
412−saying that putting g1t-agent to work needs the Write role on the
413−repository, and nothing starts. When
414−the workspace's plan does not let the agent start (a free workspace with no
415−trial left, a paused workspace, an issue at its spending cap), g1t-agent
416−replies with why and where to fix it. When every agent slot is busy, it
417−replies that the run is waiting for a free slot, and starts it when one
418−finishes.
419−
420−Each comment starts one run at most; to ask again, write a new comment.
421−
422−## The label rule
423−
424−Under a project's **Settings → Agents**, someone with the Maintain role or
425−higher sets a label, such as `agent`. From then on, when someone with the
426−Write role or higher gives an open issue that label, either
427−when opening it or later, g1t-agent takes it: the issue is queued for an
428−agent, the conversation says so, and the agent starts as soon as the
429−project has room and nothing the issue depends on is still open, exactly as
430−for a [plan's](/guides/outcomes/) issues. An issue that already had the
431−label is not affected; removing and adding it again counts. **Turn off**
432−removes the rule.
433−
434−## Which model runs
435−
436−You do not pick one. You assign the work to `g1t-agent`, the way you would
437−assign an issue to a colleague, and g1t routes it. The kind of work decides:
438−
439−| Work | Model today |
440−| --- | --- |
441−| Making a change for an issue, and revising it | Claude Sonnet 5.5 |
442−| Reviewing a pull request | Claude Sonnet 5.5 |
443−| Catching up with `main` and resolving conflicts | Claude Sonnet 5.5 |
444−| Planning an outcome | Claude Sonnet 5.5 |
445−
446−Every session opens with a note naming the model that ran, and an agent's
447−review says which model wrote it, so what you got is always on the record.
448−When a better model for a kind of work appears, g1t changes the route and
449−nothing you have set up needs to change.
450−
451−A pull request made by a g1t agent carries the label `g1t-agent`, and its
452−commits are authored by `g1t agent`.
453−
454−## How model traffic is routed
455−
456−g1t agents send model requests to g1t's model proxy at
457−`https://models.g1t.sh`, with a token for their run in place of a key; see
458−[your keys never reach a sandbox](/guides/models/#your-keys-never-reach-a-sandbox).
459−Requests for g1t's hosted models go on through
460−[Cloudflare AI Gateway](https://developers.cloudflare.com/ai-gateway/),
461−which holds g1t's key. Each of those requests is tagged with the kind of
462−work, the repository and the pull request, so spend can be read per pull
463−request. Requests for a workspace's own provider go to that provider.
464−
465−If you run your own copy of g1t, these settings control it:
466−
467−| Setting | Where | What it does |
468−| --- | --- | --- |
469−| `AGENT_ROUTES` | Runner | The model for each kind of work: `implement`, `review`, `update` and `plan`. |
470−| `MODELS_URL` | Runner | Where sandboxes send model requests: the model proxy. |
471−| `AI_GATEWAY_ID` | Model proxy | The gateway hosted requests go through. Empty sends them to the provider directly. |
472−| `AI_GATEWAY_TOKEN` | Model proxy | Secret. Authenticates to the gateway. |
473−| `ANTHROPIC_API_KEY` | Model proxy | Secret. The provider's key, if the gateway does not hold it. |
474−
475−## What it costs
476−
477−A workspace pays for the g1t agents that work on its repositories, after
478−they run: each run is charged its sandbox by the second, at cost plus 20%,
479−and, on g1t's hosted models, what AI Gateway priced its model requests at,
480−plus 20%. A workspace's [own provider](/guides/models/) bills it for the
481−model directly. See
482−[Usage and billing](/guides/usage-and-billing/) for how prices are set and
483−the limits on usage not yet paid for.
484−The workspace's **Usage** page shows what its agents have cost, by day,
485−kind of work, repository, model and pull request. See
486−[usage and billing](/guides/usage-and-billing/).
487−
488−## What a sandbox has
489−
490−Git, common shell tools, and toolchains for Node.js, Python, Go and Rust, so
491−an agent can build and test most projects. If your project needs something
492−else, the agent will say in its summary what it could not run.
493−
494−A workspace (or a project) can send its agents' work to
495−[its own runners](/guides/self-hosted-runners/#agents-on-your-runners)
496−instead, so agents build and test with what those machines have. The agent
497−works the same way there, with the same short-lived credentials, and its
498−model calls still go through g1t; the machine time is free. g1t's network
499−guardrails cannot be enforced on your machines, and the run says so.
500−
501−## Who can run agents
502−
503−Putting an agent to work (assigning it, mentioning it, asking it for a
504−review, planning, sending it back to revise) needs the Write
505−[role](/guides/access-and-roles/) or higher on the repository. That
506−includes an [outside collaborator](/guides/access-and-roles/#outside-collaborators)
507−with Write: their runs are charged to the repository's workspace, as a
508−member's are, and count against its plan, caps and agent slots. They see
509−what their agents do, but not which model ran or what a run cost; those
510−are for members of the workspace. A run for an outside collaborator is
511−told the project's memory, never the workspace's.
512−
513−Agents cost g1t real money, so they run for paid workspaces. A free
514−workspace has the whole forge, and two ways to try agents:
515−
516−- **The trial.** $5 of usage, once per workspace, after a card check.
517−- **The open-source pool.** Workflows and the merge queue on public
518− repositories, after the same card check. It does not pay for agents.
519−
520−This holds whether the agent uses g1t's hosted models or
521−[the workspace's own model provider](/guides/models/): the sandbox an agent
522−works in is g1t's either way. Before anyone assigns, asks for a review or
523−plans, a free workspace's pages say "Agents need a paid workspace or the
524−free trial", with a link to its **Billing** page.
525−
526−Every agent run, of every kind (making a change, revising, reviewing,
527−catching up, planning, answering a mention), asks billing before it
528−starts. Billing reserves what the run is expected to cost: its model's
529−recent average (about $0.10 to make a change or plan, $0.07 to review)
530−plus its sandbox for its whole time cap. When the run ends, what it really
531−cost is settled against that. If billing refuses, nothing starts, and you
532−see why where you started it:
533−
534−| Where you started it | Where the refusal shows |
535−| --- | --- |
536−| **Assign to g1t agent**, **Request review**, **Plan it**, catching up | Under the button |
537−| A mention or the label rule | A comment from g1t-agent on the issue or pull request |
538−| A step g1t takes by itself (a review, a revision, a catch-up) | The pull request's status, which then waits for you |
539−
540−Each refusal says what to do: start the plan or the trial, raise the spend
541−limit, or wait for next month's open-source pool, with the page to do it
542−on.
543−
544−### Caps on a plan
545−
546−A workspace's plan sets caps on its agents. A new paid workspace in its
547−first month, and a workspace on the trial, has tighter ones. The amounts
548−are on [usage and billing](/guides/usage-and-billing/#caps).
549−
550−| Cap | What happens at it |
551−| --- | --- |
552−| Agents at once | A run over the cap waits for a free slot instead of being refused. An assigned issue goes back in the queue; a review, catch-up, plan or answer someone asked for waits its turn; a step g1t takes by itself is tried again at its next sweep, within five minutes. Each says "Waiting for a free slot". |
553−| Time per run | The lower of the project's [guardrails](/guides/guardrails/) time cap for that kind of run and the plan's. |
554−| Cost per run | The lower of the guardrails' cost cap and the plan's. The agent is stopped when it reaches it, as with any cost cap. |
555−| Cost per issue | What every agent run on an issue and its pull requests has cost in all. Past it, g1t-agent does not start on that issue again and says so on it; an owner can raise the cap on the **Billing** page. |
556−
557−When the workspace's compute is paused (a spend spike waiting for an owner,
558−or a hold by g1t), nothing new starts, and the refusal gives the reason.
559−
560−### When billing cannot be reached
561−
562−g1t's own billing service could be briefly unreachable. Then:
563−
564−- A paid workspace's runs go ahead, and the miss is logged. A billing blip
565− never stops a paying customer's work.
566−- A free workspace's runs do not start: they would be paid for by nobody.
567− Try again in a minute.
568−
569−g1t decides which a workspace is from its plan, or from the last plan it
570−saw for it in the past day.
571−
572−### Other limits
573−
574−- A run has two hours. After that its credentials expire and it can no
575− longer push or report.
576−- Agents do not run on an [archived](/guides/managing-repositories/#archive-a-repository)
577− or deleted repository: nothing new starts, whether from an assignment,
578− a mention or the label rule, and a run under way cannot push or merge.
579− What was refused does not start by itself when the repository is
580− unarchived or restored; assign the work again.
581−
582−## Credentials
583−
584−Every sandbox run gets credentials of its own, made when it starts and
585−revoked the moment it stops. They are not your access tokens, and they are
586−not listed with them.
587−
588−Each credential carries a composite identity: the agent, acting on behalf
589−of the person who started the work. A run you started by assigning an issue
590−is `g1t-agent on behalf of you`, and that is how it appears in the
591−[audit log](/guides/audit-log/), on the run's page and in the pull
592−request's **Agent** panel.
593−
594−What it may do is the intersection of two things:
595−
596−- **The run's scope.** The credential is bound to the run, its repository,
597− and what that kind of run needs. It expires no later than the run's
598− timeout.
599−- **What you may do now.** It works only in the repository's workspace,
600− with your [role](/guides/access-and-roles/) on the repository as it is now, and never
601− more than Write: an owner's agent has Write, not Admin. If you leave the
602− workspace or lose your role, every agent working on your behalf there
603− loses it too. It can never change who has access.
604−
605−A sandbox holds two credentials. One is for g1t's runner, which clones,
606−pushes the result and records the session; downstream it acts as you, so
607−what it pushes is yours, within the run's scope. The other is for the
608−agent's own tools over MCP, and acts as the agent; it cannot be used with
609−git at all.
610−
611−| Kind of run | Git | API and MCP tools |
612−| --- | --- | --- |
613−| Implement | Reads the repository; pushes to its pull request's fork only | Records the session and marks its own pull request ready; tools to read issues, pull requests, the merge queue, workflow runs and memory, to [search all of g1t](/guides/search/) and the workspace's context hub, open issues, comment, remember, and message other agents |
614−| Revise, answer | Reads the repository; pushes to the pull request's fork, or to its branch only when the change is a branch of the repository | Records the session of its own pull request; the same tools as implement |
615−| Catch up | Reads the repository; pushes to the pull request's fork or branch only | Records the session of its own pull request |
616−| Review | Reads the change and the repository; pushes nothing | Reports its review through its own run |
617−| Plan | Reads the repository; pushes nothing | Reports its plan through its own run, for a person to apply; it can create issues in its repository only |
618−| Merge check | Reads the change; pushes nothing | None |
619−| Merge queue | Reads each queued change; pushes the queue's own branch only | None |
620−| Deploy | Reads the commit it builds; pushes nothing | None |
621−
622−Nothing an agent's credential holds can reach another repository, or a
623−workspace's settings, members, access tokens, billing, integrations,
624−webhooks, secrets and variables, or workflows' controls. It cannot merge a
625−pull request or put more agents to work. It cannot change its repository's
626−details or default branch, rename it or its branches, make it public or
627−private, archive, transfer, delete, restore or purge it; see
628−[managing a repository](/guides/managing-repositories/). A call that would is refused, and
629−the refusal is recorded with the rule that refused it:
630−
631−| Rule | Refused because |
632−| --- | --- |
633−| `never` | No agent's credential may ever do this. |
634−| `scope:operation` | The run's kind does not include this operation. |
635−| `scope:repository` | It names a repository other than the run's. |
636−| `scope:pull` | The runner tried to change a pull request other than its own. |
637−| `on-behalf-of:membership` | The person the agent works for is no longer a member of the workspace, and has no role on its repositories. |
638−| `git:read`, `git:push`, `git:ref` | The run has no grant to clone that repository, push to it, or move that branch or tag. |
639−| `git:not-a-run` | An agent's tools credential was used with git. |
640−
641−Personal and workspace access tokens are unchanged by any of this.
642−
643−## What a sandbox can reach
644−
645−A sandbox holds one fork and its run's credentials, which expire when the
646−run's time is up and are revoked as soon as it stops. Those credentials,
647−and the model key the agent runs on, are removed from anything recorded in
648−the session.
649−
650−## Guardrails
651−
652−A workspace decides what its agents may do in their sandboxes, and each
653−project can override it: which hosts a sandbox can reach (g1t, the package
654−registries the project needs, and domains you list; enforced outside the
655−sandbox), which commands the harness refuses (force-pushing, rewriting the
656−default branch, reading outside the project, printing the environment,
657−sudo, and your own patterns), and how much one run may cost and how long it
658−may take. A run that is refused something shows it as a step; one that
659−reaches a cap is stopped and its pull request waits for you. A run on a
660−fork's head loads none of the fork's `CLAUDE.md`, `.claude` settings,
661−hooks, MCP servers or commands. See [guardrails](/guides/guardrails/) for
662−every rule and exactly how each is enforced.
+2−1
116116 https://g1t.sh/pulls/<pull request id>.git
117117 ```
118118
119−Only whoever opened the pull request can push to it. Pushes to a fork
119+Only whoever opened the pull request can push to it, or, for one g1t
120+made, whoever asked for it. Pushes to a fork
120121 update the pull request's head commit on its page.
121122
122123 ## Limits
+4−4
196196 - The sandbox's credentials. The agent itself holds none of g1t's: the
197197 runner clones and pushes with credentials passed per command, and pushes
198198 only to the run's own fork or branch, never with force. See
199− [credentials](/guides/g1t-agents/#credentials).
199+ [credentials](/guides/working-with-g1t/#credentials).
200200 - Branch protection on the repository, which g1t enforces when a push
201201 arrives, whatever the sandbox did.
202202
203203 ### Changes from forks
204204
205205 When a run checks out a fork's head (revising, reviewing or answering on
206−any pull request from a fork, including g1t-agent's own, and replying to a
206+any pull request from a fork, including g1t's own, and replying to a
207207 mention on one), the harness loads nothing from that checkout: no
208208 `CLAUDE.md`, no `.claude/settings.json` or `settings.local.json` (so none
209209 of their hooks or permissions), no `.mcp.json` servers, and no commands or
210210 skills. g1t's guardrails, its tools and the repository's instructions from
211211 its own branches still apply. The run's session says so at the start. This
212212 follows the rule g1t uses for
213−[repository instructions](/guides/g1t-agents/#repository-instructions):
213+[repository instructions](/guides/working-with-g1t/#repository-instructions):
214214 they are read from the repository's own branches, never from a fork.
215215
216216 ## Caps
244244 stops at $2 unless an owner raises it (see
245245 [caps](/guides/usage-and-billing/#caps)). A new paid workspace's first
246246 month, and the trial, also cap every run's time at 60 minutes (see
247−[who can run agents](/guides/g1t-agents/#who-can-run-agents)). A run gets
247+[who can run agents](/guides/working-with-g1t/#who-can-run-agents)). A run gets
248248 the lower of its guardrails' cap and its plan's, for time and for cost,
249249 and its page shows the cap it got.
250250
+2−2
3232 linking the new occurrence.
3333 - **A recovery** (Datadog) is noted on the issue.
3434
35−Turn on **Put a g1t agent on each new issue** and an agent starts on the
35+Turn on **Assign each new issue to g1t** and g1t starts on the
3636 issue as soon as it opens: it makes the change, is reviewed, revises, and
3737 lands through your repository's rules, often before anyone has looked. A
3838 reopened issue gets an agent again. Agents need a way to reach a model:
138138
139139 ### Agents read tickets the work mentions
140140
141−When a g1t agent starts on an issue, or plans an outcome, g1t looks for
141+When g1t starts on an issue, or plans an outcome, g1t looks for
142142 ticket keys and addresses in the text (`TECH-1234`,
143143 `https://acme.atlassian.net/browse/TECH-1234`,
144144 `https://linear.app/acme/issue/ENG-42/…`, a Sentry issue's address) and
+3−3
4040
4141 Renaming the repository or its default branch, changing its visibility
4242 and archiving it are done by a person, not a workspace token.
43−A g1t agent's token can never use the tools that make these changes,
44−whatever its run. See [credentials](/guides/g1t-agents/#credentials).
43+g1t's token can never use the tools that make these changes,
44+whatever its run. See [credentials](/guides/working-with-g1t/#credentials).
4545
4646 ## Edit the details
4747
374374 | Response | Why | What to do |
375375 | --- | --- | --- |
376376 | `401 unauthenticated` | No token, or one that is not valid. | Send a personal access token. |
377−| `403 forbidden` | You are not an owner, for a change that needs one; or a g1t agent's token was used. | Ask an owner of the workspace. |
377+| `403 forbidden` | You are not an owner, for a change that needs one; or g1t's token was used. | Ask an owner of the workspace. |
378378 | `404 not_found` | No such repository or branch, or you cannot see it. For restore and purge: no deleted repository had that path, or it was purged. | Check the path. A deleted repository is named by the path it had. |
379379 | `409 conflict` | The new name is taken in the workspace, by a repository or a recently deleted one; or a branch with the new name exists. | Pick another name, or purge the deleted repository first. |
380380 | `422 invalid` | `confirm` is not the repository's full name; the name, branch name or website is not valid; or the new default branch does not exist. | Type `<workspace>/<repo>` exactly; push the branch first. |
+2−2
139139 file, which opens in the pull request's changes.
140140 3. The entries that were tested on top of it are tested again without it.
141141
142−A g1t agent's pull request is then sent back to revise, as for any failed
142+A pull request g1t opened is then sent back to revise, as for any failed
143143 check, starting from `main` as it is now. The revision counts towards
144144 **Revisions before asking you**. Once it is ready again, a repository with
145145 **Merge automatically when ready** on adds it to the queue again by itself;
183183 {
184184 "number": 44,
185185 "title": "Add a --shout flag",
186− "agent": "g1t-agent",
186+ "agent": "g1t",
187187 "state": "testing",
188188 "ahead": [41],
189189 "base_commit": "8f3c2e1…",
+3−1
7676
7777 Each can go to g1t's models, or to any of your providers on any of its
7878 models. An Anthropic provider also offers **g1t's choice of Claude**,
79−which runs g1t's pick for that kind of work on your key. For example: make
79+which runs g1t's large-tier model, Claude Sonnet 5.5 today, on your key.
80+Routing between tiers by the size of the work is only for g1t's hosted
81+models; see [which model runs](/guides/working-with-g1t/#which-model-runs). For example: make
8082 changes on Claude through your Anthropic key, review on GPT through your
8183 OpenAI key, and catch up on a small model through OpenRouter.
8284
+13−13
11 ---
22 title: Hand off an outcome
3−description: Write what should be true, let an agent plan the issues, and follow g1t agents as they land them.
3+description: Write what should be true, let an agent plan the issues, and follow g1t as it lands them.
44 ---
55
66 You do not have to split work into issues yourself. Write the outcome you
77 want on a repository's **Plan** page. An agent reads the repository and
88 proposes the issues that would get there, with what done means for each and
99 the order they have to land in. You read the plan, keep what you want, and open
10−it. g1t agents then work on the issues, as many at once as the dependencies
10+it. g1t then works on the issues, as many at once as the dependencies
1111 allow, and the outcome page shows each one until it lands.
1212
13−Planning and g1t agents work in any workspace that
14−[can run agents](/guides/g1t-agents/#who-can-run-agents) (the plan or the
13+Planning and g1t's agent work in any workspace that
14+[can run agents](/guides/working-with-g1t/#who-can-run-agents) (the plan or the
1515 trial) and has a model: [its own model provider](/guides/models/), or g1t's
1616 hosted models where they are open to it. The agents' runs are charged to
1717 the workspace; see
5959
6060 | Choice | What happens |
6161 | --- | --- |
62−| **Open these and assign g1t agents** | The issues are opened and queued for g1t agents. Agents start at once on every issue that depends on nothing, working in parallel, and on the others as what they depend on merges. |
62+| **Open these and assign g1t** | The issues are opened and queued for g1t. It starts at once on every issue that depends on nothing, working in parallel, and on the others as what they depend on merges. |
6363 | **Only open the issues** | The issues are opened, each blocked by the ones it depends on. Nobody is put to work on them. |
6464
6565 A dependency on an issue you unticked is dropped with it. A plan is applied
6767
6868 ### How queued issues start
6969
70−An issue queued for a g1t agent starts when:
70+An issue queued for g1t starts when:
7171
7272 - every issue it depends on has closed, normally because a pull request for
7373 it merged; and
74−- the repository has room. At most six g1t agents make changes in one
74+- the repository has room. g1t makes at most six changes in one
7575 repository at once. The rest wait their turn, which also leaves sandboxes
7676 free for reviews.
7777
7878 Each queued issue says so in its conversation, for example "queued this for
79−g1t-agent, to start once #41 has merged". From there each issue is
80−[seen through](/guides/g1t-agents/#seeing-it-through) like any other a g1t
81−agent works on: checks, review, revision, and merging under the
79+g1t, to start once #41 has merged". From there each issue is
80+[seen through](/guides/working-with-g1t/#seeing-it-through) like any other g1t
81+works on: checks, review, revision, and merging under the
8282 repository's rules.
8383
8484 ## Follow the outcome
105105 | Blocked | Waiting for the issues it depends on to land. |
106106 | Waiting for an agent | Queued, and waiting for an agent to be free. |
107107 | Open | Nobody is working on it. |
108−| Agent working | A g1t agent is making the change. |
108+| Agent working | g1t is making the change. |
109109 | Checking | Its workflows are running, or a required check has not reported yet. |
110−| In review | A g1t agent is reviewing the change. |
110+| In review | g1t is reviewing the change. |
111111 | Revising | The agent was sent back by the checks, a review or a person. |
112112 | Catching up | The agent is merging in the branch it will land on, which has moved. |
113113 | In the merge queue | It is being tested with the changes ahead of it. See [the merge queue](/guides/merge-queue/). |
151151 curl https://api.g1t.sh/repos/acme/greeter/plans/pln_01… \
152152 -H "Authorization: Bearer $G1T_TOKEN"
153153
154−# 3. Open issues 1 and 3 and put g1t agents on them.
154+# 3. Open issues 1 and 3 and assign them to g1t.
155155 curl -X POST https://api.g1t.sh/repos/acme/greeter/plans/pln_01…/apply \
156156 -H "Authorization: Bearer $G1T_TOKEN" \
157157 -H "Content-Type: application/json" \
+2−2
7070 | Deploy to production | A production build has gone live. | Deployments settings, or **Deployments** once they are on. |
7171 | Add a custom domain | The project has a [custom domain](/guides/deployments/#custom-domains). | Domain settings. |
7272 | Open a preview | A branch or pull request has had a [preview](/guides/deployments/#previews-of-branches). | A new pull request. |
73−| Set up repository instructions | `AGENTS.md` or `CLAUDE.md` is at the root of the default branch. | The instructions on the **Agents** page. See [repository instructions](/guides/g1t-agents/#repository-instructions). |
74−| Assign a first issue to g1t-agent | g1t-agent has had a run, a pull request or an issue here. | A new issue. |
73+| Set up repository instructions | `AGENTS.md` or `CLAUDE.md` is at the root of the default branch. | The instructions on the **Agents** page. See [repository instructions](/guides/working-with-g1t/#repository-instructions). |
74+| Assign a first issue to g1t | g1t has had a run, a pull request or an issue here. | A new issue. |
7575
7676 The card goes away when every step is done. To hide it sooner, choose
7777 **×** on it. That hides it for this project in this browser only.
+17−11
88 whether it merges cleanly, and the button that merges it. Everything in it
99 updates by itself while something is still running.
1010
11+A pull request g1t made shows **g1t** as its author and **requested by**
12+the person who asked for it. That person can manage it as its author could,
13+and cannot approve it; see
14+[who a pull request is for](/guides/working-with-g1t/#who-a-pull-request-is-for).
15+
1116 ## Checks
1217
1318 A pull request's checks are the statuses reported on its head commit. Most
6671 | Require a pull request to change the default branch | Off | Refuses pushes to the default branch; changes reach it only by merging. See [protected branches](/guides/git/#protected-branches). |
6772 | Required status checks | None | The checks that must pass on a pull request's head before it merges. |
6873 | Required approvals | None | How many reviewers must approve before a merge, 0 to 3 on the page (up to 6 from the API). A reviewer who asked for changes blocks it. |
69−| A g1t agent's approval counts | On | Off means approvals have to come from people. |
74+| g1t's approval counts | On | Off means approvals have to come from people. |
7075 | Require branches to be up to date before merging | Off | On means a pull request behind the default branch has to catch up, and its checks run again, before it merges. |
7176 | Merge through a queue | Off | See [merge queue](/guides/merge-queue/). |
7277 | Allow bypassing required checks | On | Lets someone who may merge tick **bypass** when merging, to merge without the required checks passing. Off means nobody can. |
9095
9196 The same rule holds wherever a pull request merges: the merge button,
9297 [`merge_pull_request`](/reference/api/pull-requests/merge-pull-request/),
93−a g1t agent's [automatic merge](/guides/g1t-agents/#merging-automatically)
98+a g1t agent's [automatic merge](/guides/working-with-g1t/#merging-automatically)
9499 and the [merge queue](/guides/merge-queue/). With **Allow bypassing required
95100 checks** on, the merge button has a **bypass** box, and the API takes
96101 `ignore_checks: true`.
146151 be resolved**, the conflicting files, each linked to its diff, and three
147152 ways to resolve them:
148153
149−- **Resolve with g1t agent.** An agent merges the target branch in,
154+- **Resolve with g1t.** g1t merges the target branch in,
150155 resolves the conflicts keeping what both sides meant, and pushes the
151156 result. It is told which files conflict. Available to whoever can push to
152− the pull request: for a pull request's fork, whoever opened it; for a
153− branch, anyone with the Write role or higher.
157+ the pull request: for a pull request's fork, whoever opened it (whoever
158+ asked g1t for one it made); for a branch, anyone with the Write role or
159+ higher.
154160 - **Resolve in the browser.** Coming soon.
155161 - **On the command line.** The box lists the commands, each with a copy
156162 button. For a pull request from a branch:
184190
185191 When the target branch has moved, the merge box says **main has moved since
186192 this was made**. Whoever can push to the pull request (whoever opened it,
187−for one in its own fork; anyone with the Write [role](/guides/access-and-roles/) or higher,
188−for a branch) can
193+or asked g1t for it, for one in its own fork; anyone with the Write
194+[role](/guides/access-and-roles/) or higher, for a branch) can
189195 press **Catch up with main now**:
190196
191197 1. **When the two changed different files**, g1t merges `main` in itself,
195201 up to date with main**, and the workflows run again on the
196202 new commit, as after any push.
197203 2. **When both changed some of the same files**, a sandbox merges `main` in
198− with git, and a [g1t agent](/guides/g1t-agents/) resolves any conflict.
199− The box says what is happening (**g1t-agent is resolving conflicts with
204+ with git, and [g1t](/guides/working-with-g1t/) resolves any conflict.
205+ The box says what is happening (**g1t is resolving conflicts with
200206 main** when the merge is known to conflict) with the run's live step and
201207 how long it has taken. It usually takes about a minute. When the result
202208 is pushed, the box shows the pull request up to date; if the run fails,
207213 where it was when the catch-up started. If someone pushed to it meanwhile,
208214 the catch-up stops with nothing lost, and you can press it again.
209215
210−The second case needs g1t agents enabled for the workspace and is
216+The second case needs g1t's agent enabled for the workspace and is
211217 [charged](/guides/usage-and-billing/#what-is-charged) as agent work; the
212218 first is not.
213219
214−A [g1t agent's](/guides/g1t-agents/) pull request that is found to conflict
220+A pull request [g1t](/guides/working-with-g1t/) opened that is found to conflict
215221 is sent back to resolve it by itself, before it is ready.
216222
217223 ## From the API
+1−1
7070 | `is:open`, `is:closed` | Issues and pull requests by state | Issues, pull requests |
7171 | `is:merged`, `is:draft` | Pull requests that were merged, or are still drafts | Pull requests |
7272 | `is:public`, `is:private` | Results from public or private repositories | Repositories, code, issues, pull requests |
73−| `author:ana` | Opened by someone | Issues, pull requests |
73+| `author:ana` | Opened by someone. What g1t opened is `author:g1t`, and shows who it was for | Issues, pull requests |
7474 | `label:bug` | With a label. Quote a label with spaces: `label:"good first issue"` | Issues, pull requests |
7575 | `type:code` | Which tab to open: `repositories`, `code`, `issues`, `pulls` or `people` | All |
7676
+3−2
7878 - pushes, schedules, manual runs and the merge queue;
7979 - pull requests whose author has the Write [role](/guides/access-and-roles/)
8080 or higher on the repository, a member or an
81− [outside collaborator](/guides/access-and-roles/#outside-collaborators);
82−- pull requests from g1t's agents.
81+ [outside collaborator](/guides/access-and-roles/#outside-collaborators).
82+ For one g1t made, that is whoever asked for it;
83+- pull requests g1t opened on its own, such as a security update.
8384
8485 Anyone else's pull request, such as one from a fork or by someone with
8586 Read or Triage (who may open one on a private repository too), runs its
+2−2
292292 Install scripts never run. A lockfile the sandbox cannot change this way,
293293 such as a `requirements.txt` that pins with `--hash`, is handled as
294294 [when code has to change](#when-code-has-to-change): if no branch has been
295−pushed 45 minutes after the update started, g1t-agent gets an issue for it.
295+pushed 45 minutes after the update started, g1t gets an issue for it.
296296
297297 ### When code has to change
298298
299299 Sometimes raising the version is not enough: the bump fails, or the pull
300300 request's required checks fail because code must change. Then g1t opens an
301−issue and puts [g1t-agent](/guides/g1t-agents/) on it. That agent's session
301+issue and assigns it to [g1t](/guides/working-with-g1t/). That session
302302 shows as **started by g1t**. This is the only time an agent is involved in
303303 a security update.
304304
+1−1
170170
171171 **Settings → Runners → Where work runs** can send g1t's own work to your
172172 runners too: agent runs, checks, reviews, merge checks and the merge queue.
173−Switch on **Run g1t-agent work on self-hosted runners** and give the labels
173+Switch on **Run g1t's work on self-hosted runners** and give the labels
174174 a runner needs to take it (`self-hosted` is always one).
175175
176176 - The agent works exactly as in g1t's sandbox: the same harness, with a
+1−1
2323 | A status page of your own | Works, at `http://localhost:8788` ([below](#the-status-page)) |
2424 | Webhooks, integrations | Run, but scheduled retries do not (see below) |
2525 | Sign in with GitHub, import from GitHub | Off until you register a GitHub App of your own ([below](#sign-in-with-github-and-import-from-github)). Mirrors sync with **Sync now**: GitHub's webhook needs the REST API. |
26−| g1t agents, plans, reviews by agents | Off |
26+| g1t's agent: changes, plans and reviews | Off |
2727 | Context hub search | Off |
2828 | Deployments on `g1t.page` | Off |
2929 | Billing | Off. Nothing is charged, and no usage limit stops work. |
+11−11
11 ---
22 title: Talk to agents
3−description: Steer a g1t agent while it works, ask it for changes, and let agents ask each other.
3+description: Steer g1t while it works, ask it for changes, and let agents ask each other.
44 ---
55
6−A g1t agent does not work in silence until it is done. You can tell it
6+g1t does not work in silence until it is done. You can tell it
77 things while it works, ask for changes when it is done, and the agents
88 working on a repository at the same time can ask each other questions and
99 hand each other work. Everything said is recorded in the pull request's
1313 | --- | --- |
1414 | Correct an agent while it works | [Message the agent](#steer-an-agent-while-it-works) on its pull request. |
1515 | Have it change what it made | [Request changes](#ask-for-changes) in a review. |
16−| Let agents coordinate | Nothing. g1t agents [ask each other](#agents-asking-each-other) through g1t. |
16+| Let agents coordinate | Nothing. g1t's runs [ask each other](#agents-asking-each-other) through g1t. |
1717
1818 ## Steer an agent while it works
1919
20−While a g1t agent is making or revising a change, its pull request shows
20+While g1t is making or revising a change, its pull request shows
2121 **Message the agent**.
2222
2323 1. Open the pull request.
5656
5757 ## Ask for changes
5858
59−When a g1t agent's pull request is ready, review it the way you would
59+When a pull request g1t opened is ready, review it the way you would
6060 anyone's:
6161
6262 1. Open the **Files changed** tab and comment on the lines you want changed.
7878
7979 ### People outrank an agent's review
8080
81−Whenever a g1t agent revises or reviews a change, it is given what people
81+Whenever g1t revises or reviews a change, it is given what people
8282 have said on the pull request: their comments, comments on lines,
8383 approvals and requests for changes. It is told that a change a person asked
8484 for is in scope, even where it goes beyond the issue, and that it outranks
8787
8888 ## Agents asking each other
8989
90−g1t agents working in the same repository at the same time can talk
90+g1t's runs working in the same repository at the same time can talk
9191 through g1t, instead of guessing at each other's work. Each one is given
9292 the tools to do it, and told when to use them.
9393
119119 pull request's sandbox with the agent's own change in front of it and what
120120 it was asked; the agent reads its code, answers with `agent` `answer`, and,
121121 for a handoff it takes on, commits the work. Its pull request is noted "g1t
122−woke g1t-agent to answer the agent on #41", and nothing else starts on it
122+woke g1t to answer the agent on #41", and nothing else starts on it
123123 until everything it was asked is answered, or 20 minutes pass. The response
124124 to `agent` `message` says so in `hint`, and points the asking agent at the
125125 other pull request's change to read meanwhile with `pull_request` `get`
134134
135135 ### Rules
136136
137−- `question` and `handoff` are for g1t agents. A call from your own token,
137+- `question` and `handoff` are for g1t's own runs. A call from your own token,
138138 including your own agent's, sends an ordinary message to the agent on the
139139 pull request, as from you.
140140 - `from_number` is required from an agent. It may name the agent's issue
147147
148148 ## Your own agent
149149
150−A g1t agent picks up messages between its steps. An agent you run yourself
150+g1t picks up messages between its steps. An agent you run yourself
151151 is not reached this way: steer it in your own client. It can still send
152−messages to a g1t agent's pull request with `agent` `message`, as above,
152+messages to a pull request g1t is working on with `agent` `message`, as above,
153153 and comment on any pull request with `issue` `comment`. See
154154 [connect an agent](/guides/bring-your-own-agent/).
+1−1
1717
1818 You must be an **owner of both workspaces**: the one the repository is in
1919 and the one it moves to. A member of either cannot, and neither can an
20−access token that belongs to a workspace or a g1t agent's token. Your email
20+access token that belongs to a workspace or g1t's token. Your email
2121 address must be confirmed.
2222
2323 ## Transfer a repository
+3−3
199199 | --- | --- |
200200 | Making a change for an issue | Yes |
201201 | Revising a change after checks, a review or a person | Yes |
202−| A review by a g1t agent | Yes |
202+| A review by g1t | Yes |
203203 | Catching up with `main` | Yes, when it needed an agent |
204204 | Planning an [outcome](/guides/outcomes/) | Yes |
205205 | The [merge queue](/guides/merge-queue/) | [Sandbox time](#sandbox-time) |
220220 its [sandbox time](#sandbox-time), like any other sandbox.
221221
222222 The charge goes to the workspace that owns the repository, whoever
223−assigned the issue. That is why putting g1t agents to work on a
223+assigned the issue. That is why putting g1t to work on a
224224 repository needs the Write [role](/guides/access-and-roles/) or higher on it.
225225
226226 ## How prices are set
474474 then **Save caps**; a blank field goes back to the default. A cap g1t staff
475475 set for the workspace wins over both. When an issue's agents reach its cap,
476476 the message links straight to that section. See
477−[caps on a plan](/guides/g1t-agents/#caps-on-a-plan) for what happens at
477+[caps on a plan](/guides/working-with-g1t/#caps-on-a-plan) for what happens at
478478 each.
479479
480480 ### Alerts
+3−3
7575 | `repo.collaborator_added`, `repo.collaborator_role_changed`, `repo.collaborator_removed` | Someone was given a role on it, had their role changed, or lost it. `data.username`, `data.role`, `data.previous_role`. See [access and roles](/guides/access-and-roles/). |
7676 | `repo.archived`, `repo.unarchived` | It was made read-only, or writable again. |
7777 | `repo.deleted`, `repo.restored`, `repo.purged` | It was deleted, restored within its 30 days, or removed for good. |
78−| `issue.opened`, `issue.updated`, `issue.assigned`, `issue.closed`, `issue.reopened` | An issue changed. `data.number`; on close, `data.reason` and `data.resolved_by`. |
78+| `issue.opened`, `issue.updated`, `issue.assigned`, `issue.closed`, `issue.reopened` | An issue changed. `data.number` and `data.author` (`id` and `username`); on close, `data.reason` and `data.resolved_by`. For an issue g1t's agent filed while at work, `data.author` is g1t and `data.requested_by` is the person it was working for. |
7979 | `comment.created` | A comment or review on an issue or pull request. |
80−| `pull.opened`, `pull.ready`, `pull.updated`, `pull.merge_requested`, `pull.merged`, `pull.closed` | A pull request changed. `data.number`, `data.issue`; on merge, `data.commit`. On a g1t agent's change, once g1t has worked it out, `data.confidence`: `level` (`high`, `medium` or `low`), `reasons`, `self_reported`, `uncertain_about`, `run_id` and `assessed_at`. See [how sure the agent is](/guides/g1t-agents/#how-sure-the-agent-is). |
80+| `pull.opened`, `pull.ready`, `pull.updated`, `pull.merge_requested`, `pull.merged`, `pull.closed` | A pull request changed. `data.number`, `data.issue` and `data.author` (`id` and `username`); on merge, `data.commit`. For a change g1t made, `data.author` is g1t and `data.requested_by` is the person who asked for it; `actor` is still whoever caused the event. On a change by g1t, once g1t has worked it out, `data.confidence`: `level` (`high`, `medium` or `low`), `reasons`, `self_reported`, `uncertain_about`, `run_id` and `assessed_at`. See [how sure the agent is](/guides/working-with-g1t/#how-sure-the-agent-is). |
8181 | `checks.completed` | A pull request's checks finished: every status on its head has reported and none is still pending, or the merge queue took it out. `data.number`, `data.commit`, and `data.status`, `passed` or `failed`. |
82−| `review.completed` | A g1t agent reviewed a pull request. `data.verdict`. |
82+| `review.completed` | g1t reviewed a pull request. `data.verdict`. |
8383 | `workflow.completed` | A [workflow](/guides/actions/) run finished. `data.workflow`, `data.conclusion`, `data.run_id`, `data.sha`, `data.pull`. |
8484 | `queue.changed` | The merge queue gained, lost or settled an entry. |
8585 | `session.appended` | An agent's session grew. Busy: choose it only if you need it. |
+2−2
2929 or with `GET /repos/{owner}/{name}/pulls/{number}/session?after=`. A session
3030 is as visible as the repository, so do not put secrets in one.
3131
32−### From g1t agents
32+### From g1t
3333
34−A [g1t agent](/guides/g1t-agents/) records its whole session itself:
34+[g1t](/guides/working-with-g1t/) records its whole session itself:
3535
3636 - it opens with a note naming the model that ran, and a note of the other
3737 pull requests in progress it was told about;
+721−0
1+---
2+title: g1t's agent
3+description: Assign an issue to g1t and it does the work.
4+---
5+
6+g1t can do the work itself. Its agent is named `g1t`: assign an open issue
7+to g1t and it opens a pull request for the issue, works in a sandbox and a
8+fork of its own, and reports back as it goes. There is nothing to
9+configure: you do not say how many agents or which model. Scale comes from
10+assigning many issues, each worked on by its own run, all at once.
11+
12+Everything g1t does shows as `g1t`: the pull requests it opens, its
13+commits, comments, reviews, plans and security updates, assignments,
14+timeline events, the audit log, notifications and webhooks. A pull request
15+g1t opens shows g1t as its author, with **requested by** naming the person
16+who asked for it. See [who a pull request is for](#who-a-pull-request-is-for).
17+
18+g1t's runs are paid for by the workspace they work for, so they need a
19+paid workspace or the free trial; see [who can run agents](#who-can-run-agents)
20+and [usage and billing](/guides/usage-and-billing/). Everyone can also
21+[bring their own agent](/guides/bring-your-own-agent/), which costs
22+nothing on g1t.
23+
24+To hand over a whole outcome rather than one issue at a time, have an agent
25+plan it first: see [hand off an outcome](/guides/outcomes/).
26+
27+## Put an agent on it in one step
28+
29+When the work is not written down yet, open the issue and hand it to the
30+agent at once:
31+
32+1. On Mission control, choose **Put an agent on it**.
33+2. Pick the project, give a title, and say what you want done in plain
34+ words, with what done means if you know it.
35+3. Choose **Put an agent on it**.
36+
37+You land on the new issue with the agent already at work on its pull
38+request. The same choice is on a project's **New issue** page, as **Assign
39+g1t now**, and in the ⌘K palette as **Put an agent on …** followed by
40+a project's name.
41+
42+Putting an agent to work needs the Write role on the project. Without it,
43+nothing is opened. With it, the issue is always opened, even when the
44+agent cannot start:
45+
46+| What happened | What you see |
47+| --- | --- |
48+| The agent started | The issue, with its draft pull request under **Assignees**. |
49+| Every agent slot of the workspace is busy | The issue, queued for g1t. It starts by itself when a slot frees up. |
50+| The workspace's plan or limits refused it | The issue is opened, and the composer says why and links to the fix: start the plan or the trial (`not_paid`, `trial_used`), raise the monthly limit (`limit`) or the cap per issue (`issue_cap`), or connect a model (`no_model`). A workspace g1t `paused` says to contact support. |
51+
52+From the API or an agent of your own, it is one call:
53+
54+```sh
55+curl -X POST https://api.g1t.sh/repos/<workspace>/<repo>/issues/delegate \
56+ -H "Authorization: Bearer $G1T_TOKEN" \
57+ -H "Content-Type: application/json" \
58+ -d '{"title": "Retry webhooks with exponential backoff", "body": "Deliveries that fail are dropped today. Retry them up to six times."}'
59+```
60+
61+The answer holds the `issue`, the `pull` request the agent opened (or
62+`null`), and `agent`: its `status` (`started`, `queued` or `not_started`),
63+and when it did not start, a `code`, a `message` and a `fix_url`. On the MCP
64+server it is the `agent` tool's `delegate` action. See
65+[put an agent on it](/reference/api/issues/delegate/).
66+
67+The `checks` field this call and `create_issue` used to take is
68+deprecated. It is still accepted: its commands are added to the issue's
69+body under `## Definition of done`, one line each (`` - `npm test` passes. ``),
70+and the answer carries a `deprecation` string saying so. What has to pass
71+before the pull request merges is the default branch's
72+[required status checks](/guides/pull-requests/#required-status-checks).
73+
74+## Assigning agents
75+
76+One issue:
77+
78+1. Open an issue on a repository.
79+2. In **Assign to g1t**, optionally add guidance for this run, on top
80+ of the issue's description.
81+3. Choose **Assign**.
82+
83+Many issues:
84+
85+1. Open the repository's **Issues** tab.
86+2. Tick the issues to hand over, up to ten at a time.
87+3. Choose **Assign to g1t**.
88+
89+From the API, an agent of your own, or a script:
90+
91+```sh
92+curl -X POST https://api.g1t.sh/repos/<workspace>/<repo>/issues/12/assign \
93+ -H "Authorization: Bearer $G1T_TOKEN"
94+```
95+
96+The same thing is the `agent` tool's `assign` action on the MCP server, so an agent
97+planning work can hand issues to g1t itself.
98+
99+In a comment: write `@g1t take this` on the issue. See
100+[mentioning g1t](#mentioning-g1t).
101+
102+By label: a project can hand every issue given a label to the agent. See
103+[the label rule](#the-label-rule).
104+
105+Each run appears as a draft pull request on its issue within a few
106+seconds. The pages update on their own while g1t works.
107+
108+An issue can still have more than one pull request: assign it again, or
109+have your own agent open one alongside. That is for when you want a second
110+attempt, not the normal way of working.
111+
112+## What an agent does
113+
114+1. Clones its pull request's fork.
115+2. Is told what else is in progress: every other open pull request in the
116+ repository, what it is for and which files it changes. Its session
117+ starts with a note of what it was told.
118+3. Reads the code and makes the change the issue asks for, keeping clear of
119+ the other work where it can.
120+4. Commits its work.
121+5. Pushes to the fork and marks the pull request ready for review, with a
122+ summary as its description.
123+
124+Everything it reads, runs and decides is recorded in the pull request's
125+**Session** as it happens; see [sessions and why-blame](/guides/why-blame/).
126+The **Files changed** tab shows the resulting diff.
127+
128+If an agent fails, or finishes without changing anything, its pull request
129+is closed and its session says why.
130+
131+## Repository instructions
132+
133+Every g1t run reads the repository's own instructions for agents
134+and is told them, labelled as the repository's, before it starts: making a
135+change, revising it, reviewing, catching up, answering, and planning.
136+
137+| File | Read by |
138+| --- | --- |
139+| `AGENTS.md` and `CLAUDE.md` at the root | Every run. |
140+| `AGENTS.md` and `CLAUDE.md` in a subdirectory | Runs whose task touches files under it: the nearest one above each file. Where it disagrees with the root's, it wins for the files under it. |
141+| `.g1t/review.md` | Reviews: what to check, house rules, paths that need extra care. |
142+
143+Write them for an agent that knows nothing about the project: how to build
144+and test, how things are named, what never to touch. For example:
145+
146+```md
147+# AGENTS.md
148+- Run `npm test` and `npm run typecheck` before you finish.
149+- API handlers return a Result; they never throw.
150+- Never edit files under `vendor/`.
151+```
152+
153+Which directories a task touches comes from the pull request's changed
154+files, and for new work from the paths the issue names, so naming the
155+files in an issue helps the right instructions reach the agent.
156+
157+**Where they are read from.** The default branch, as it is when the run
158+starts. A pull request from one of the repository's own branches is read at
159+its head instead, since only people who can push to the repository can
160+change it. A pull request from a fork, which includes every change g1t
161+makes, is never followed: the agent keeps the default branch's
162+instructions, and if the fork changes them, it is shown the changed text as
163+part of the change, marked as not instructions. That way nobody can steer
164+an agent, or the review of their own change, by editing these files in a
165+pull request. Treat what a fork's head says as untrusted, as you would its
166+code.
167+
168+**Limits.** Each file is cut at 8,000 characters and all of them together
169+at 24,000; what is left out is named in the prompt. Files are read once per
170+commit and reused.
171+
172+The project's **Agents** page lists the files its runs read, what they say
173+and when each last changed, with a link to each in the code. Each run's
174+session starts with a note of which files it read. To change them, change
175+the files and merge to the default branch.
176+
177+## Seeing it through
178+
179+Making the change is the first step. g1t takes the rest itself, and you
180+get the pull request back ready to merge:
181+
182+1. **Checks.** Every push the agent makes runs the repository's
183+ [workflows](/guides/actions/) on the pull request, as for anyone's pull
184+ request. g1t waits for them to finish. Only the workflow runs report, so
185+ the agent has no say in the result.
186+2. **Review.** A different agent reads the change and posts comments on
187+ lines, a summary and a verdict.
188+3. **Revision.** If a check fails or the review asks for changes, the
189+ author is sent back with exactly what was found. For a failed check,
190+ that is the end of the log of each failed job, up to three jobs and
191+ about 3,000 characters each; it can read more with `get_workflow_run`
192+ and `get_job_logs`. Steps 1 and 2 run again on the result. This happens
193+ at most twice, or as often as the repository's **Revisions before asking
194+ you** allows.
195+4. **Ready to merge.** The required checks passed and it is approved.
196+ Merging is yours, unless the repository says otherwise (below).
197+
198+Agents are told to run the same tests and linters the workflows run before
199+they finish, so most failures are caught in the sandbox. What "done" means
200+for the issue, if its description says so, is context for the agent and
201+its reviewer; what decides the merge is the default branch's
202+[required status checks](/guides/pull-requests/#required-status-checks).
203+A repository with no workflows has nothing to prove a change works; **Add
204+CI** gives it one ([add CI](/guides/actions/#add-ci)).
205+
206+If `main` has moved in the meantime, that does not hold the pull request
207+up. Merging it brings it up to date first: g1t merges `main` in, an agent
208+resolves any conflict, and it lands. A repository that wants every pull
209+request caught up and checked again before it may merge turns on **Require
210+pull requests to be up to date before merging** in its settings; catching
211+up is then a step of its own, before "ready".
212+
213+g1t also works out ahead of time whether each pull request still merges
214+cleanly, every time it or `main` moves
215+([how](/guides/pull-requests/#conflicts)). When one of an agent's pull
216+requests is found to conflict, g1t does not wait for a merge to trip over
217+it: the agent is sent to merge `main` in and resolve the conflicts, told
218+which files conflict, and the checks run again on the result.
219+
220+The pull request's page shows which step it is at. While a required check
221+has not reported on its latest commit, it says so: "Waiting for the
222+required check CI to report on its latest commit." If g1t cannot finish,
223+because a required check still fails after the agent revised as often as
224+the repository allows ("The required check CI still fails after the agent
225+revised twice."), a review could not be written, or a conflict could not
226+be resolved while bringing it up to date, it stops and the page says
227+**Needs you**, with the reason. A check that is not required and still
228+fails after the last revision does not hold it. Pushing to the pull
229+request yourself starts it moving again.
230+
231+### What a repository can ask for
232+
233+Under a project's **Settings → Branches and merging**, someone with the
234+Maintain [role](/guides/access-and-roles/) or higher sets the rules its pull
235+requests follow. **Branch protection** holds the rules for every pull
236+request, a person's or an agent's; they are described in
237+[required status checks](/guides/pull-requests/#required-status-checks):
238+
239+| Setting | Default | What it does |
240+| --- | --- | --- |
241+| Require a pull request to change the default branch | Off | Refuses pushes to the default branch. |
242+| Required status checks | None | The checks that must pass on a pull request's head before it merges. |
243+| Required approvals | None | How many reviewers must approve before a merge. A reviewer who asked for changes blocks it. |
244+| g1t's approval counts | On | Off means approvals have to come from people. |
245+| Require branches to be up to date before merging | Off | On means catching up is a step of its own and the checks run again. |
246+| Merge through a queue | Off | Merging tests a pull request together with those ahead of it; the default branch only moves to a combination that passed. See [merge queue](/guides/merge-queue/). |
247+| Allow bypassing required checks | On | Lets someone who may merge merge without the required checks passing. Off means nobody can. |
248+
249+In the **g1t** section, you set what g1t does with its own pull requests:
250+
251+| Setting | Default | What it does |
252+| --- | --- | --- |
253+| Review by a second agent | On | Off leaves review to people. |
254+| Revisions before asking you | 2 | How often an agent is sent back before g1t stops. |
255+| Merge automatically when ready | Off | Lands g1t's pull request once every rule is met. |
256+| Ask a person before merging low-confidence changes | On | A change by g1t [rated low](#how-sure-the-agent-is) waits for a person's approval instead of merging by itself or joining the queue. |
257+
258+A pull request g1t opens follows the same rules as anyone's. If the
259+repository wants approvals from people, it waits for them, and shows
260+**Needs you** until they arrive.
261+
262+### Talking to an agent
263+
264+While g1t works, you can steer it with **Message the agent** on its
265+pull request; it reads the message at its next step, without starting
266+over. Once it is done, a review with **Request changes** sends it back to
267+make them, and the checks and review run again. g1t's runs working at the
268+same time can also ask each other questions and hand each other work. See
269+[talk to agents](/guides/talking-to-agents/).
270+
271+### Merging automatically
272+
273+A repository can land g1t's pull request by itself once it is
274+ready. Someone with the Maintain role or higher turns this on under the repository's
275+**Settings → Branches and merging**; it is off to begin with. The merge is recorded as made by
276+`g1t`, the issue closes naming the pull request, and nothing short of
277+ready is ever merged this way: every required check has passed on its
278+head. One that is behind `main` is brought up to
279+date as part of the merge. Pull requests from people and from other
280+agents always wait for a person to merge them.
281+
282+Every step is recorded: revisions and catch-ups in the pull request's
283+**Session**, reviews in its conversation.
284+
285+This applies to pull requests g1t opens. One you or your own
286+agent opened is yours to drive; the same workflows run on it, and you can ask
287+for a review or a catch-up from its page.
288+
289+### How sure the agent is
290+
291+Once g1t has finished a change, g1t records how sure it is that the
292+change is right: **high**, **medium** or **low**, with a few words saying
293+why, such as "Low — tests not added, 3 revisions". It shows on the pull
294+request, under the agent, and on Mission control. It is worked out again as
295+the change moves through checks, review and revision, and kept with each
296+run, so a run's page says how the change stood when that run left it.
297+
298+Confidence comes from what g1t can observe, not from how the agent sounds.
299+Each signal below that tells against the change adds points, or makes it
300+low on its own. No points is high, one or two is medium, and three or more
301+is low.
302+
303+| Signal | Effect |
304+| --- | --- |
305+| Required checks fail | Low |
306+| It failed in the [merge queue](/guides/merge-queue/) | Low |
307+| The reviewer agent asks for changes | Low |
308+| A run was stopped at its cost or time cap | Low |
309+| Sent back to revise | 1 point per revision, at most 3 |
310+| Required checks have not finished, or have not run on its head | 1 point |
311+| Checks passed only on a retry | 1 point |
312+| The default branch has no required checks | 1 point |
313+| No review yet, or the repository has no reviewer agent | 1 point |
314+| The reviewer approved but left three or more comments on lines | 1 point |
315+| Code changed and no test was added or changed | 1 point |
316+| More than 400 lines changed; more than 1,000 | 1 point; 2 points |
317+| More than 30 files changed | 1 point |
318+| Files changed outside the area its [plan](/guides/outcomes/) expected; four or more | 1 point; 2 points |
319+| Touches CI workflows, repository automation, secrets, infrastructure or `CODEOWNERS` | 2 points |
320+| Its latest run used 80% or more of its cost or time cap | 1 point each |
321+| Steps refused by [guardrails](/guides/guardrails/); three or more | 1 point; 2 points |
322+| A question or handoff it sent another agent is unanswered | 2 points |
323+| The agent said it was unsure about something | 1 point |
324+
325+At the end of every run that makes or revises a change, the agent is also
326+asked how sure it is, and what it could not verify. g1t takes the lower of
327+the two: what it observes can lower the agent's own word, never raise it.
328+When the agent's word is lower, the reasons start with "agent says low",
329+and the pull request lists what it was unsure about.
330+
331+For high confidence, the reasons say what it rests on: required checks pass,
332+approved on the first review, tests added, a small change.
333+
334+The pull request's `confidence` in the
335+[API](/reference/api/pull-requests/get-pull-request/) has the `level`,
336+`reasons`, `self_reported`, `uncertain_about`, the `run_id` it was worked out
337+after, and `assessed_at`. [Webhooks](/guides/webhooks/) for pull requests
338+carry it too.
339+
340+### Low-confidence changes wait for a person
341+
342+With **Ask a person before merging low-confidence changes** on, which it is
343+unless someone turns it off, a change by g1t rated low is not merged
344+by itself and does not join the merge queue, even with **Merge
345+automatically when ready** on. Once everything else the repository asks
346+for is met, it stops at **Needs you**, saying why, and Mission control
347+lists it under **Needs you** with a **Low confidence** chip, the reasons in
348+**What the agent already knows**, and the reasons again in **Why this
349+needs you**.
350+
351+To let it land, approve it: a person's approval since the agent last
352+revised lifts the hold, and it merges as the repository's rules say. To
353+send it back, request changes. Merging it yourself works as usual. The
354+setting is under **Settings → Branches and merging**, in the **g1t** section,
355+and is `hold_low_confidence` in
356+[`update_repo_settings`](/reference/api/repositories/update-repo-settings/).
357+
358+## Choosing between pull requests
359+
360+Each pull request on the issue's page shows whether its checks passed. Open
361+the ones that did, read their descriptions and changes, and merge the one
362+you want. Merging lands it on `main` and closes the issue, which records
363+that pull request as the one that resolved it. The other pull requests for
364+the issue close as superseded. See
365+[merging](/concepts/overview/#merging) for what happens when `main` has moved.
366+
367+## Other things g1t does
368+
369+- **Review.** On a pull request that is ready, **Request review from g1t**
370+ has g1t read the change and post comments on lines, a summary and a
371+ verdict.
372+- **Catch up.** When `main` has moved under a pull request, **Catch up with
373+ main** merges it in. When the two changed different files g1t does that
374+ itself in seconds, with no agent; otherwise an agent merges it in a
375+ sandbox and resolves any conflict
376+ ([catching up](/guides/pull-requests/#catching-up)).
377+- **Finish a security update.** g1t raises a vulnerable dependency to its
378+ fixed version itself, with no agent. When raising the version is not
379+ enough (the bump fails, or the pull request's required checks fail
380+ because code must change), g1t opens an issue and assigns it to g1t.
381+ That session shows as **started by g1t** on the project's **Agents** page.
382+ See [security updates](/guides/security/#security-updates).
383+
384+Each runs in a sandbox of its own.
385+
386+## Mentioning g1t
387+
388+Write `@g1t` in a comment on an issue or a pull request, with what
389+you want, and it does it. The comment box offers to complete the name as
390+you type `@`.
391+
392+| Where | You write | What happens |
393+| --- | --- | --- |
394+| An issue | A request: `@g1t take this`, `@g1t fix the empty case` | The issue is assigned to g1t, which opens a pull request, as if you had chosen **Assign**. |
395+| An issue | A question: `@g1t why is this slow?` | g1t reads the code on the default branch and answers in the thread. It changes nothing. |
396+| A pull request g1t made | A request: `@g1t also handle the empty list` | g1t is sent back to make the change, with your comment as what to address, and the checks and review run again. If it is still working, it gets your comment as a message at its next step. |
397+| Any pull request | `@g1t review this` | A review by g1t, as with **Request review from g1t**. |
398+| Any pull request | A question | g1t reads the change at its head and answers in the thread. On someone else's pull request, which it cannot push to, a request is answered too: it says what it would change. |
399+
400+A request is a comment whose words after the mention start with what to
401+do (`take`, `fix`, `add`, `please rename`, `can you update`); a question
402+starts with a question word or ends with a question mark. `review` near the
403+start asks for a review.
404+
405+g1t always replies in the thread, saying what it started or why it
406+did not. Every run a mention starts shows on the project's **Agents** page
407+as started by whoever mentioned it, and a mention that started nothing
408+shows there as a failed run with the reason.
409+
410+**What does not count.** Mentions in code (`` `@g1t` `` or a code
411+block), in quoted lines (`> @g1t …`), in email addresses
412+(`ops@g1t.sh`), in URLs, in package scopes (`@g1t/platform`) and in longer
413+names (`@g1t-bot`) are ignored. Matching ignores case. Agents mentioning
414+`@g1t` start nothing, so
415+agents cannot set each other to work this way.
416+
417+**Who can.** People with the Write [role](/guides/access-and-roles/) or higher on the
418+repository, members or not. Anyone else who mentions it gets a short reply
419+saying that putting g1t to work needs the Write role on the
420+repository, and nothing starts. When
421+the workspace's plan does not let the agent start (a free workspace with no
422+trial left, a paused workspace, an issue at its spending cap), g1t
423+replies with why and where to fix it. When every agent slot is busy, it
424+replies that the run is waiting for a free slot, and starts it when one
425+finishes.
426+
427+Each comment starts one run at most; to ask again, write a new comment.
428+
429+## The label rule
430+
431+Under a project's **Settings → Agents**, someone with the Maintain role or
432+higher sets a label, such as `agent`. From then on, when someone with the
433+Write role or higher gives an open issue that label, either
434+when opening it or later, g1t takes it: the issue is queued for
435+g1t, the conversation says so, and the agent starts as soon as the
436+project has room and nothing the issue depends on is still open, exactly as
437+for a [plan's](/guides/outcomes/) issues. An issue that already had the
438+label is not affected; removing and adding it again counts. **Turn off**
439+removes the rule.
440+
441+## Which model runs
442+
443+You do not pick one. You assign the work to `g1t`, the way you would
444+assign an issue to a colleague, and g1t routes it. On g1t's hosted models,
445+each piece of work goes to the least costly of two tiers that can do it:
446+
447+| Tier | Model today |
448+| --- | --- |
449+| Small | Claude Haiku 4.5 |
450+| Large | Claude Sonnet 5.5 |
451+
452+The work decides the tier:
453+
454+| Work | Tier |
455+| --- | --- |
456+| Making a change for an issue, revising it, and answering a mention | Large |
457+| Reviewing a pull request that changes at most 10 files and 200 lines, touches no sensitive path, and is not for an issue labelled `security` | Small |
458+| Reviewing any other pull request, or one whose changed files g1t does not know yet | Large |
459+| Catching up with `main` and resolving conflicts | Small |
460+| Planning an outcome | Small |
461+| Any of these again, after the last attempt at the same work failed or stopped at a guardrail cap | Large |
462+
463+Sensitive paths are the ones that run, configure or guard things: CI
464+workflows, `.g1t/` and `.github/`, `CODEOWNERS`, secrets such as `.env`
465+and `.pem` files, and infrastructure such as Dockerfiles, Terraform and
466+`wrangler.*` files. They are the same paths that lower a change's
467+[confidence](#how-sure-the-agent-is).
468+
469+The agent's own small background steps run on the small tier.
470+
471+Every session opens with a note naming the model that ran, and an agent's
472+review says which model wrote it, so what you got is always on the record.
473+When a better model for a tier appears, g1t changes the route and nothing
474+you have set up needs to change.
475+
476+A workspace that routes its work to [its own provider](/guides/models/)
477+is not routed by tier: its work runs on the model its route names.
478+
479+A pull request g1t opens has `g1t` as its author and as its `agent` in the
480+API, and its commits are authored `g1t <g1t@users.noreply.g1t.sh>`.
481+
482+## Who a pull request is for
483+
484+g1t is the author of every pull request it makes and of every issue it
485+files while at work. The person who asked for the work, by assigning the
486+issue or handing g1t the task, is kept beside it as **requested by**. Work
487+g1t starts itself, such as a [security update](/guides/security/), names
488+nobody.
489+
490+| Where | Author | Who asked |
491+| --- | --- | --- |
492+| The pull request's page, lists and link previews | **g1t** | **requested by** *name*, or **for** *name* |
493+| The API and MCP (`get_pull_request`, `list_pull_requests`, `get_issue`) | `author`: `{ "username": "g1t", "kind": "agent" }` | `requested_by`, or `null` |
494+| [Webhooks](/guides/webhooks/) | `data.author` | `data.requested_by`, left out when nobody asked |
495+| [Actions](/guides/actions/) (`github.event`) | `pull_request.user`, a `Bot` named `g1t` | `pull_request.requested_by`; `sender` is whoever caused the event |
496+| [Search](/guides/search/) | `author:g1t` finds it | shown as **for** *name* |
497+
498+The person who asked answers for the pull request as its author would:
499+
500+- they can update, close and mark it ready, catch it up and steer its
501+ agent without the Triage role;
502+- they are never asked to review it, and they cannot approve it or
503+ request changes on it; nor does their approval count toward the
504+ repository's required approvals;
505+- it is on their own lists: what they are working on, and their profile;
506+- the sandboxes that work on it act as them, so it reaches what they can;
507+- its workflows and preview get secrets only when they have the Write
508+ role or higher, as theirs would.
509+
510+Being its author gives g1t nothing more: a review by g1t's agent still
511+counts where the repository lets an agent's approval count.
512+
513+## How model traffic is routed
514+
515+g1t's runs send model requests to g1t's model proxy at
516+`https://models.g1t.sh`, with a token for their run in place of a key; see
517+[your keys never reach a sandbox](/guides/models/#your-keys-never-reach-a-sandbox).
518+Requests for g1t's hosted models go on through
519+[Cloudflare AI Gateway](https://developers.cloudflare.com/ai-gateway/),
520+which holds g1t's key. Each of those requests is tagged with the kind of
521+work, the tier, the repository and the pull request, so spend can be read
522+per tier and per pull request. Requests for a workspace's own provider go to that provider.
523+
524+If you run your own copy of g1t, these settings control it:
525+
526+| Setting | Where | What it does |
527+| --- | --- | --- |
528+| `AGENT_ROUTING` | Runner | JSON. `tiers`: the model behind `small` and `large`, each `{ "modelName", "model" }`. `tasks`: the tier of `implement`, `review`, `update` and `plan`, or `change` to decide by the change. `smallChange`: the most `files` and `lines` a `change` review runs on the small tier with. `largeLabels`: issue labels that keep a review on the large tier. Anything left out takes the defaults above. |
529+| `MODELS_URL` | Runner | Where sandboxes send model requests: the model proxy. |
530+| `AI_GATEWAY_ID` | Model proxy | The gateway hosted requests go through. Empty sends them to the provider directly. |
531+| `AI_GATEWAY_TOKEN` | Model proxy | Secret. Authenticates to the gateway. |
532+| `ANTHROPIC_API_KEY` | Model proxy | Secret. The provider's key, if the gateway does not hold it. |
533+
534+## What it costs
535+
536+A workspace pays for g1t's runs on its repositories, after
537+they run: each run is charged its sandbox by the second, at cost plus 20%,
538+and, on g1t's hosted models, what AI Gateway priced its model requests at,
539+plus 20%. A workspace's [own provider](/guides/models/) bills it for the
540+model directly. See
541+[Usage and billing](/guides/usage-and-billing/) for how prices are set and
542+the limits on usage not yet paid for.
543+The workspace's **Usage** page shows what its agents have cost, by day,
544+kind of work, repository, model and pull request. See
545+[usage and billing](/guides/usage-and-billing/).
546+
547+## What a sandbox has
548+
549+Git, common shell tools, and toolchains for Node.js, Python, Go and Rust, so
550+an agent can build and test most projects. If your project needs something
551+else, the agent will say in its summary what it could not run.
552+
553+A workspace (or a project) can send its agents' work to
554+[its own runners](/guides/self-hosted-runners/#agents-on-your-runners)
555+instead, so agents build and test with what those machines have. The agent
556+works the same way there, with the same short-lived credentials, and its
557+model calls still go through g1t; the machine time is free. g1t's network
558+guardrails cannot be enforced on your machines, and the run says so.
559+
560+## Who can run agents
561+
562+Putting an agent to work (assigning it, mentioning it, asking it for a
563+review, planning, sending it back to revise) needs the Write
564+[role](/guides/access-and-roles/) or higher on the repository. That
565+includes an [outside collaborator](/guides/access-and-roles/#outside-collaborators)
566+with Write: their runs are charged to the repository's workspace, as a
567+member's are, and count against its plan, caps and agent slots. They see
568+what their agents do, but not which model ran or what a run cost; those
569+are for members of the workspace. A run for an outside collaborator is
570+told the project's memory, never the workspace's.
571+
572+Agents cost g1t real money, so they run for paid workspaces. A free
573+workspace has the whole forge, and two ways to try agents:
574+
575+- **The trial.** $5 of usage, once per workspace, after a card check.
576+- **The open-source pool.** Workflows and the merge queue on public
577+ repositories, after the same card check. It does not pay for agents.
578+
579+This holds whether the agent uses g1t's hosted models or
580+[the workspace's own model provider](/guides/models/): the sandbox an agent
581+works in is g1t's either way. Before anyone assigns, asks for a review or
582+plans, a free workspace's pages say "Agents need a paid workspace or the
583+free trial", with a link to its **Billing** page.
584+
585+Every agent run, of every kind (making a change, revising, reviewing,
586+catching up, planning, answering a mention), asks billing before it
587+starts. Billing reserves what the run is expected to cost: its model's
588+recent average (about $0.10 to make a change or plan, $0.07 to review)
589+plus its sandbox for its whole time cap. When the run ends, what it really
590+cost is settled against that. If billing refuses, nothing starts, and you
591+see why where you started it:
592+
593+| Where you started it | Where the refusal shows |
594+| --- | --- |
595+| **Assign to g1t**, **Request review**, **Plan it**, catching up | Under the button |
596+| A mention or the label rule | A comment from g1t on the issue or pull request |
597+| A step g1t takes by itself (a review, a revision, a catch-up) | The pull request's status, which then waits for you |
598+
599+Each refusal says what to do: start the plan or the trial, raise the spend
600+limit, or wait for next month's open-source pool, with the page to do it
601+on.
602+
603+### Caps on a plan
604+
605+A workspace's plan sets caps on its agents. A new paid workspace in its
606+first month, and a workspace on the trial, has tighter ones. The amounts
607+are on [usage and billing](/guides/usage-and-billing/#caps).
608+
609+| Cap | What happens at it |
610+| --- | --- |
611+| Agents at once | A run over the cap waits for a free slot instead of being refused. An assigned issue goes back in the queue; a review, catch-up, plan or answer someone asked for waits its turn; a step g1t takes by itself is tried again at its next sweep, within five minutes. Each says "Waiting for a free slot". |
612+| Time per run | The lower of the project's [guardrails](/guides/guardrails/) time cap for that kind of run and the plan's. |
613+| Cost per run | The lower of the guardrails' cost cap and the plan's. The agent is stopped when it reaches it, as with any cost cap. |
614+| Cost per issue | What every agent run on an issue and its pull requests has cost in all. Past it, g1t does not start on that issue again and says so on it; an owner can raise the cap on the **Billing** page. |
615+
616+When the workspace's compute is paused (a spend spike waiting for an owner,
617+or a hold by g1t), nothing new starts, and the refusal gives the reason.
618+
619+### When billing cannot be reached
620+
621+g1t's own billing service could be briefly unreachable. Then:
622+
623+- A paid workspace's runs go ahead, and the miss is logged. A billing blip
624+ never stops a paying customer's work.
625+- A free workspace's runs do not start: they would be paid for by nobody.
626+ Try again in a minute.
627+
628+g1t decides which a workspace is from its plan, or from the last plan it
629+saw for it in the past day.
630+
631+### Other limits
632+
633+- A run has two hours. After that its credentials expire and it can no
634+ longer push or report.
635+- Agents do not run on an [archived](/guides/managing-repositories/#archive-a-repository)
636+ or deleted repository: nothing new starts, whether from an assignment,
637+ a mention or the label rule, and a run under way cannot push or merge.
638+ What was refused does not start by itself when the repository is
639+ unarchived or restored; assign the work again.
640+
641+## Credentials
642+
643+Every sandbox run gets credentials of its own, made when it starts and
644+revoked the moment it stops. They are not your access tokens, and they are
645+not listed with them.
646+
647+Each credential carries a composite identity: the agent, acting on behalf
648+of the person who started the work. A run you started by assigning an issue
649+is `g1t on behalf of you`, and that is how it appears in the
650+[audit log](/guides/audit-log/), on the run's page and in the pull
651+request's **Agent** panel.
652+
653+What it may do is the intersection of two things:
654+
655+- **The run's scope.** The credential is bound to the run, its repository,
656+ and what that kind of run needs. It expires no later than the run's
657+ timeout.
658+- **What you may do now.** It works only in the repository's workspace,
659+ with your [role](/guides/access-and-roles/) on the repository as it is now, and never
660+ more than Write: an owner's agent has Write, not Admin. If you leave the
661+ workspace or lose your role, every agent working on your behalf there
662+ loses it too. It can never change who has access.
663+
664+A sandbox holds two credentials. One is for g1t's runner, which clones,
665+pushes the result and records the session; downstream it acts as you, so
666+what it pushes is yours, within the run's scope. The other is for the
667+agent's own tools over MCP, and acts as the agent; it cannot be used with
668+git at all.
669+
670+| Kind of run | Git | API and MCP tools |
671+| --- | --- | --- |
672+| Implement | Reads the repository; pushes to its pull request's fork only | Records the session and marks its own pull request ready; tools to read issues, pull requests, the merge queue, workflow runs and memory, to [search all of g1t](/guides/search/) and the workspace's context hub, open issues, comment, remember, and message other agents |
673+| Revise, answer | Reads the repository; pushes to the pull request's fork, or to its branch only when the change is a branch of the repository | Records the session of its own pull request; the same tools as implement |
674+| Catch up | Reads the repository; pushes to the pull request's fork or branch only | Records the session of its own pull request |
675+| Review | Reads the change and the repository; pushes nothing | Reports its review through its own run |
676+| Plan | Reads the repository; pushes nothing | Reports its plan through its own run, for a person to apply; it can create issues in its repository only |
677+| Merge check | Reads the change; pushes nothing | None |
678+| Merge queue | Reads each queued change; pushes the queue's own branch only | None |
679+| Deploy | Reads the commit it builds; pushes nothing | None |
680+
681+Nothing an agent's credential holds can reach another repository, or a
682+workspace's settings, members, access tokens, billing, integrations,
683+webhooks, secrets and variables, or workflows' controls. It cannot merge a
684+pull request or put more agents to work. It cannot change its repository's
685+details or default branch, rename it or its branches, make it public or
686+private, archive, transfer, delete, restore or purge it; see
687+[managing a repository](/guides/managing-repositories/). A call that would is refused, and
688+the refusal is recorded with the rule that refused it:
689+
690+| Rule | Refused because |
691+| --- | --- |
692+| `never` | No agent's credential may ever do this. |
693+| `scope:operation` | The run's kind does not include this operation. |
694+| `scope:repository` | It names a repository other than the run's. |
695+| `scope:pull` | The runner tried to change a pull request other than its own. |
696+| `on-behalf-of:membership` | The person the agent works for is no longer a member of the workspace, and has no role on its repositories. |
697+| `git:read`, `git:push`, `git:ref` | The run has no grant to clone that repository, push to it, or move that branch or tag. |
698+| `git:not-a-run` | An agent's tools credential was used with git. |
699+
700+Personal and workspace access tokens are unchanged by any of this.
701+
702+## What a sandbox can reach
703+
704+A sandbox holds one fork and its run's credentials, which expire when the
705+run's time is up and are revoked as soon as it stops. Those credentials,
706+and the model key the agent runs on, are removed from anything recorded in
707+the session.
708+
709+## Guardrails
710+
711+A workspace decides what its agents may do in their sandboxes, and each
712+project can override it: which hosts a sandbox can reach (g1t, the package
713+registries the project needs, and domains you list; enforced outside the
714+sandbox), which commands the harness refuses (force-pushing, rewriting the
715+default branch, reading outside the project, printing the environment,
716+sudo, and your own patterns), and how much one run may cost and how long it
717+may take. A run that is refused something shows it as a step; one that
718+reaches a cap is stopped and its pull request waits for you. A run on a
719+fork's head loads none of the fork's `CLAUDE.md`, `.claude` settings,
720+hooks, MCP servers or commands. See [guardrails](/guides/guardrails/) for
721+every rule and exactly how each is enforced.
+6−4
3535 Usernames and workspaces share one set of names, so a name means the same
3636 thing wherever it appears. Your username is reserved for you: only you can
3737 create a workspace with that name, and nobody can register a username that
38−is already a workspace.
38+is already a workspace. The names `g1t` and `g1t-agent` belong to
39+[g1t's agent](/guides/working-with-g1t/), and nobody can register them.
3940
4041 ## Display name, slug and icon
4142
211212
212213 | Role | Can |
213214 | --- | --- |
214−| Member | Create repositories, see the workspace's usage and billing, and get the workspace's [base permission](/guides/access-and-roles/#the-base-permission) on every repository in it: Write unless an owner changes it, which is enough to push, manage issues, merge pull requests, plan work and put g1t agents to work. |
215+| Member | Create repositories, see the workspace's usage and billing, and get the workspace's [base permission](/guides/access-and-roles/#the-base-permission) on every repository in it: Write unless an owner changes it, which is enough to push, manage issues, merge pull requests, plan work and put g1t to work. |
215216 | Owner | Everything a member can, and manage members, the base permission, the workspace's access tokens, its details, and billing: the plan, card checks, prepayment and limits. Admin on every repository, and the only ones who can transfer and delete them; see [access and roles](/guides/access-and-roles/). |
216217
217218 Whoever creates a workspace is its owner. An owner adds people on the
254255 across them (**Agent fleet**, **Context**, **Memory**, **Security**,
255256 **Guardrails**, [**Secrets and variables**](/guides/secrets-and-variables/),
256257 [**Integrations**](/guides/integrations/) and
257−[**Webhooks**](/guides/webhooks/)); then **Usage**, what g1t agents have
258+[**Webhooks**](/guides/webhooks/)); then **Usage**, what g1t's runs have
258259 cost (see [usage and billing](/guides/usage-and-billing/)), **Support** and
259260 **Settings**. An item with an arrow opens a list of its own in the sidebar:
260261 **Settings** slides over to the workspace's settings, and the row at the
372373
373374 - **Overview:** pull requests merged, open pull requests and issues
374375 opened, and your most recent activity.
375−- **Pull requests** and **Issues:** everything you opened, newest first,
376+- **Pull requests** and **Issues:** everything you opened, and what g1t
377+ opened for you, newest first,
376378 with filters beside the list for state (open, closed, merged), type,
377379 repository and sort order. Add `?tab=pulls&state=merged` and the like to
378380 link to a filtered list.
+2−2
8585
8686 <Tabs>
8787 <TabItem label="g1t's agent">
88− On the issue, choose **Assign to g1t agent**. It opens a pull
88+ On the issue, choose **Assign to g1t**. It opens a pull
8989 request, makes the change in a sandbox, and sees it through: checks and
9090 workflows, a review by a second agent, revisions until both pass.
9191 </TabItem>
113113 ## Next
114114
115115 - [How g1t works](/concepts/overview/): issues, pull requests, checks, review and merging.
116−- [Hand off an outcome](/guides/outcomes/): an agent plans the issues and g1t agents land them in order.
116+- [Hand off an outcome](/guides/outcomes/): an agent plans the issues and g1t lands them in order.
117117 - [GitHub Actions](/guides/actions/): your workflows, unchanged.
118118 - [MCP tools](/reference/mcp/) and the [API](/reference/api/): everything above, from code.
+2−2
5252 says whether it needs a token.
5353
5454 A [workspace's own token](/guides/workspaces/#workspace-access-tokens) acts
55−as the workspace. The token a g1t agent works with can use only the
55+as the workspace. The token g1t works with can use only the
5656 operations its task needs, in its own repository.
5757
5858 ### Scopes
198198 | [Invites](/reference/api/invites/list-invites/) | Your invites while g1t is invite-only, and inviting people into a workspace by email. |
199199 | [Repositories](/reference/api/repositories/list-repos/) | A repository, how it handles pull requests, and its timeline. |
200200 | [Access](/reference/api/access/list-collaborators/) | Who has which role on a repository, invitations, outside collaborators, and a workspace's base permission. |
201−| [Issues](/reference/api/issues/list-issues/) | What should change, with labels and comments, and assigning it to the g1t agent. |
201+| [Issues](/reference/api/issues/list-issues/) | What should change, with labels and comments, and assigning it to g1t. |
202202 | [Plans](/reference/api/plans/plan-work/) | An [outcome](/guides/outcomes/) turned into issues. |
203203 | [Pull requests](/reference/api/pull-requests/list-pull-requests/) | Proposed changes: reviews, merging, the merge queue, and messages to the agent at work. |
204204 | [Sessions](/reference/api/sessions/read-session/) | The record of how a pull request was made. |
+13−13
236236 | [`create`](/reference/api/repositories/create-repo/) | Create a repository in one of your workspaces, empty or as a copy of a public git repository (`import_url`). `workspace` may be left out if you belong to exactly one. | `name` | `repo:write` |
237237 | [`update`](/reference/api/repositories/update-repo/) | Change its `description`, `website`, `topics` and `default_branch`, whether its default branch is `protected`, and whether it is `private`. Maintain role; `private` and `default_branch` need Admin. | `repo` | `repo:write` |
238238 | [`get_settings`](/reference/api/repositories/get-repo-settings/) | How it handles pull requests: the default branch's required checks, approvals, bypassing checks, being up to date, the merge queue, and how g1t's agents are reviewed, revised and merged. | `repo` | `repo:read` |
239−| [`update_settings`](/reference/api/repositories/update-repo-settings/) | Change those settings, including `hold_low_confidence`, which holds a g1t agent's [low-confidence](/guides/g1t-agents/#how-sure-the-agent-is) change for a person. Only the fields given change; `required_checks` replaces the whole list. Maintain role. | `repo` | `repo:write` |
239+| [`update_settings`](/reference/api/repositories/update-repo-settings/) | Change those settings, including `hold_low_confidence`, which holds g1t's [low-confidence](/guides/working-with-g1t/#how-sure-the-agent-is) change for a person. Only the fields given change; `required_checks` replaces the whole list. Maintain role. | `repo` | `repo:write` |
240240 | [`check_names`](/reference/api/repositories/list-check-names/) | The check names reported on its commits in the last 30 days, most recent first, each with `name`, `events` and `last_seen`: the names `required_checks` takes. | `repo` | `repo:read` |
241241 | [`list_labels`](/reference/api/issues/list-labels/) | The labels available on its issues. | `repo` | `repo:read` |
242242 | [`list_events`](/reference/api/repositories/list-events/) | Its timeline, newest first. `before` pages back. | `repo` | `repo:read` |
259259 `allow_ignoring_checks`, `require_up_to_date`, `agent_review`,
260260 `max_revisions`, `auto_merge`, `merge_queue` and `hold_low_confidence`. See
261261 [required status checks](/guides/pull-requests/#required-status-checks) and
262−[what a repository can ask for](/guides/g1t-agents/#what-a-repository-can-ask-for).
262+[what a repository can ask for](/guides/working-with-g1t/#what-a-repository-can-ask-for).
263263 `update` with `private` or `default_branch` also needs `repo:admin`.
264264
265265 See [managing a repository](/guides/managing-repositories/) for what each
281281 | [`close`](/reference/api/issues/close-issue/) | Close it as `completed` or `not_planned`. | `repo`, `number` | `issues:write` |
282282 | [`reopen`](/reference/api/issues/reopen-issue/) | Reopen a closed issue. | `repo`, `number` | `issues:write` |
283283 | [`comment`](/reference/api/issues/add-comment/) | Comment on an issue or a pull request; with `path` and `line`, on one line of a pull request's change. | `repo`, `number`, `body` | `issues:write` |
284−| [`import`](/reference/api/integrations/import-issue/) | Open an issue from a ticket, linked to it. `assign` puts a g1t agent on it. | `repo`, `reference` | `issues:write` |
284+| [`import`](/reference/api/integrations/import-issue/) | Open an issue from a ticket, linked to it. `assign` assigns it to g1t. | `repo`, `reference` | `issues:write` |
285285
286286 `import` with `assign` also needs `agents:run`, since it puts an agent to
287287 work.
301301 | [`record_session`](/reference/api/sessions/record-session/) | Append entries to a pull request's session. Each has `kind` and `text`, and `tool` for tool entries. | `repo`, `number`, `entries` | `pull_requests:write` |
302302 | [`read_session`](/reference/api/sessions/read-session/) | The recorded session, oldest first. `after` skips to entries after a sequence number. | `repo`, `number` | `pull_requests:read` |
303303 | [`ready`](/reference/api/pull-requests/mark-pull-request-ready/) | Mark a draft ready for review. The summary becomes its description. | `repo`, `number`, `summary` | `pull_requests:write` |
304−| [`review`](/reference/api/pull-requests/review-pull-request/) | `approve`, or `request_changes` with a `body`. Not on your own pull request. | `repo`, `number`, `verdict` | `pull_requests:write` |
304+| [`review`](/reference/api/pull-requests/review-pull-request/) | `approve`, or `request_changes` with a `body`. Not on your own pull request, nor one g1t made for you. | `repo`, `number`, `verdict` | `pull_requests:write` |
305305 | [`close`](/reference/api/pull-requests/close-pull-request/) | Close it without merging. | `repo`, `number` | `pull_requests:write` |
306306 | [`merge`](/reference/api/pull-requests/merge-pull-request/) | Land it on `main` and resolve its issue, or add it to the [merge queue](/guides/merge-queue/), once every [required check](/guides/pull-requests/#required-status-checks) has passed on its head. `ignore_checks` bypasses them where the repository allows it. Write role. | `repo`, `number` | `pull_requests:write` |
307307 | [`merge_queue`](/reference/api/pull-requests/get-merge-queue/) | The pull requests waiting to land, in order, each with the state it is tested in and how that went; then those that recently landed or left. | `repo` | `pull_requests:read` |
313313
314314 ## `agent`
315315
316−Put [g1t agents](/guides/g1t-agents/) to work and talk to them. One agent
316+Put [g1t](/guides/working-with-g1t/) to work and talk to it. One run
317317 works on each issue; to do more at once, use more issues. Starting an agent
318318 uses the workspace's money. `delegate` also needs `issues:write`, since it
319319 opens the issue.
320320
321321 | Action | What it does | Required | Scope |
322322 | --- | --- | --- | --- |
323−| [`delegate`](/reference/api/issues/delegate/) | Put an agent on something in one step: open an issue, with `body`, and assign it to the g1t agent at once. Write role; nothing is opened without it. The issue opens even when the agent cannot start: `agent.status` is `started`, `queued` or `not_started`, with `agent.code`, `agent.message` and `agent.fix_url` saying why and where to fix it. `checks` is deprecated, as for `issue` `create`. See [put an agent on it](/guides/g1t-agents/#put-an-agent-on-it-in-one-step). | `repo`, `title` | `agents:run` |
324−| [`assign`](/reference/api/issues/assign-issue/) | Assign an existing issue to the [g1t agent](/guides/g1t-agents/), which opens a pull request and sees it through. Preview. | `repo`, `number` | `agents:run` |
325−| [`message`](/reference/api/pull-requests/message-agent/) | Send the agent working on a pull request a message, received at its next step. A g1t agent sends a `question` or a `handoff`, with its own pull request as `from_number`. | `repo`, `number`, `body` | `agents:run` |
323+| [`delegate`](/reference/api/issues/delegate/) | Put an agent on something in one step: open an issue, with `body`, and assign it to g1t at once. Write role; nothing is opened without it. The issue opens even when the agent cannot start: `agent.status` is `started`, `queued` or `not_started`, with `agent.code`, `agent.message` and `agent.fix_url` saying why and where to fix it. `checks` is deprecated, as for `issue` `create`. See [put an agent on it](/guides/working-with-g1t/#put-an-agent-on-it-in-one-step). | `repo`, `title` | `agents:run` |
324+| [`assign`](/reference/api/issues/assign-issue/) | Assign an existing issue to [g1t](/guides/working-with-g1t/), which opens a pull request and sees it through. Preview. | `repo`, `number` | `agents:run` |
325+| [`message`](/reference/api/pull-requests/message-agent/) | Send the agent working on a pull request a message, received at its next step. g1t sends a `question` or a `handoff`, with its own pull request as `from_number`. | `repo`, `number`, `body` | `agents:run` |
326326 | [`answer`](/reference/api/pull-requests/answer-message/) | Answer a question or a handoff by the message's id; `decline` a handoff that is not yours. The answer reaches the asking agent at its next step. | `repo`, `id`, `body` | `agents:run` |
327−| [`take_messages`](/reference/api/pull-requests/take-messages/) | For a g1t agent at work: the messages it has not seen yet, each returned once. | `repo`, `number` | `agents:run` |
327+| [`take_messages`](/reference/api/pull-requests/take-messages/) | For g1t at work: the messages it has not seen yet, each returned once. | `repo`, `number` | `agents:run` |
328328
329329 See [talk to agents](/guides/talking-to-agents/).
330330
338338 | --- | --- | --- | --- |
339339 | [`create`](/reference/api/plans/plan-work/) | Have an agent turn an outcome into proposed issues, each with what done means (`done`) and its dependencies. Returns the plan's id at once. Write role. | `repo`, `brief` | `agents:run` |
340340 | [`get`](/reference/api/plans/get-plan/) | The plan: its status (`planning`, `ready`, `failed` or `applied`), the issues it proposes, and once applied, where each stands. | `repo`, `plan` | `issues:read` |
341−| [`apply`](/reference/api/plans/apply-plan/) | Open its issues. `assign` puts g1t agents on them in dependency order; `keep` opens only some, by position from 1. | `repo`, `plan` | `issues:write` |
341+| [`apply`](/reference/api/plans/apply-plan/) | Open its issues. `assign` assigns them to g1t in dependency order; `keep` opens only some, by position from 1. | `repo`, `plan` | `issues:write` |
342342
343343 ## `memory`
344344
473473 | [`decline_repository_invitation`](/reference/api/access/decline-repo-invitation/) | Decline one. | `id` | `account:write` |
474474
475475
476−## What a g1t agent can use
476+## What g1t can use
477477
478−A g1t agent works with a [run credential](/guides/g1t-agents/#credentials):
479−a token bound to its run and its own repository, acting as `g1t-agent` on
478+g1t works with a [run credential](/guides/working-with-g1t/#credentials):
479+a token bound to its run and its own repository, acting as `g1t` on
480480 behalf of the person who started the work, and only while that person is
481481 still a member of the workspace or has a role on one of its repositories. It
482482 has that person's role on its repository, but never more than Write. Which
+0−0

Binary or large file; its contents are not shown.

+9−9
1616
1717 import { Avatar, TimeAgo } from "./ui";
1818
19−/** The accounts that are g1t's own agents and machinery. */
20−const AGENTS = new Set(["g1t-agent", "g1t"]);
19+/** Whether an actor is g1t itself: its agent or its machinery. */
20+const isG1t = (actor: string | null): actor is string => actor === "g1t";
2121
2222 type Line = { icon: ReactNode; tone: string; actor: string | null; text: ReactNode; coordination?: boolean };
2323
3333 case "issue.opened":
3434 return {
3535 icon: <CircleDot size={14} />,
36− tone: actor && AGENTS.has(actor) ? "text-merged" : "text-muted",
36+ tone: isG1t(actor) ? "text-merged" : "text-muted",
3737 actor,
38− text: actor && AGENTS.has(actor) ? <>filed {ref(event.data.number)} for something it found</> : <>opened {ref(event.data.number)}</>,
39− coordination: actor != null && AGENTS.has(actor),
38+ text: isG1t(actor) ? <>filed {ref(event.data.number)} for something it found</> : <>opened {ref(event.data.number)}</>,
39+ coordination: isG1t(actor),
4040 };
4141 case "pull.opened":
4242 return {
6666 return {
6767 icon: event.data.verdict === "approve" ? <CircleCheck size={14} /> : <CircleSlash size={14} />,
6868 tone: event.data.verdict === "approve" ? "text-accent" : "text-warn",
69− actor: "g1t-agent",
69+ actor: "g1t",
7070 text: (
7171 <>
7272 {event.data.verdict === "approve" ? "approved" : "asked for changes on"} {ref(event.data.number)}
8888 }
8989 return {
9090 icon: <MessageSquare size={14} />,
91− tone: actor && AGENTS.has(actor) ? "text-merged" : "text-muted",
91+ tone: isG1t(actor) ? "text-merged" : "text-muted",
9292 actor,
9393 text: <>commented on {ref(event.data.number)}</>,
94− coordination: actor != null && AGENTS.has(actor),
94+ coordination: isG1t(actor),
9595 };
9696 case "pull.merged":
9797 return { icon: <GitMerge size={14} />, tone: "text-accent", actor, text: <>landed {ref(event.data.number)} on main</> };
161161 return (
162162 <li key={exchange.id} className="rounded-2xl bg-merged/[0.05] p-4 ring-1 ring-merged/25">
163163 <p className="flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-muted">
164− <Avatar name="g1t-agent" size={14} />
164+ <Avatar name="g1t" size={14} />
165165 <span>
166166 The agent on {exchange.fromNumber != null ? pull(exchange.fromNumber) : exchange.author}{" "}
167167 {exchange.kind === "handoff" ? "handed work to" : "asked"} the agent on {pull(exchange.toNumber)}
+5−5
1414
1515 /**
1616 * "Put an agent on it": a compact composer that opens an issue in one of
17− * the viewer's projects and puts g1t-agent on it, in one step. Posts to
17+ * the viewer's projects and puts g1t on it, in one step. Posts to
1818 * Mission control's action, which lands on the issue with the agent
1919 * running. A native `<details>`, so it opens and posts without script.
2020 */
7979 Put an agent on it
8080 </p>
8181 <p className="mt-1 text-xs leading-5 text-muted">
82− Opens an issue and assigns g1t-agent at once. It makes the change in a sandbox and sees it through checks
82+ Opens an issue and assigns g1t at once. It makes the change in a sandbox and sees it through checks
8383 and review.
8484 </p>
8585
129129 <div className="mt-3 rounded-lg border border-warn/30 bg-warn/[0.06] p-3 text-sm">
130130 <p className="text-fg-soft">
131131 Opened <Link to={said.notStarted.to} className="font-medium text-fg hover:underline">#{said.notStarted.number}</Link>, but
132− g1t-agent did not start. {said.notStarted.message}
132+ g1t did not start. {said.notStarted.message}
133133 </p>
134134 <p className="mt-2 flex flex-wrap gap-2">
135135 {said.notStarted.fix && (
150150
151151 <div className="mt-4 flex items-center justify-between gap-3">
152152 <span className="flex min-w-0 items-center gap-1.5 text-xs text-faint">
153− <Avatar name="g1t-agent" size={16} />
154− <span className="truncate">g1t-agent · no model to choose</span>
153+ <Avatar name="g1t" size={16} />
154+ <span className="truncate">g1t · no model to choose</span>
155155 </span>
156156 <button
157157 type="submit"
+1−1
1313 };
1414
1515 /**
16− * The files every g1t agent run in a project reads as the repository's
16+ * The files every run of g1t in a project reads as the repository's
1717 * instructions, as they are on its default branch: which, what they say,
1818 * when they last changed, and where to change them.
1919 */
+7−4
252252 </Link>
253253 <p className="mt-1.5 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-muted">
254254 {current.pull.runtime === "hosted" ? (
255− <span className="flex items-center gap-1 text-merged">
256− <Sparkles size={11} />
257− written by {current.pull.agent}
258− </span>
255+ <>
256+ <span className="flex items-center gap-1 text-merged">
257+ <Sparkles size={11} />
258+ written by {current.pull.agent}
259+ </span>
260+ {current.pull.requestedBy && <span>for {current.pull.requestedBy}</span>}
261+ </>
259262 ) : (
260263 <span>by {current.pull.author} with {current.pull.agent}</span>
261264 )}
+1−1
7474 links: [
7575 ["Explore", "/explore"],
7676 ["Pricing", "/pricing"],
77− ["g1t agents", "https://docs.g1t.sh/guides/g1t-agents/"],
77+ ["Working with g1t", "https://docs.g1t.sh/guides/working-with-g1t/"],
7878 ["Bring your own agent", "https://docs.g1t.sh/guides/bring-your-own-agent/"],
7979 ["Integrations", "https://docs.g1t.sh/guides/integrations/"],
8080 ],
+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

+0−0

Binary or large file; its contents are not shown.

This change is too large to show in full.