Skip to content

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

88 linesCodeBlameRaw
1---
2title: Issues became work items
3description: Issues moved out of repositories into workspace-level work items. What happened to the issues, labels and milestones you had, why old links still work, and what to change in scripts and agents.
4---
5
6Issues used to belong to one repository each. They are now
7[work items](/guides/work-items/), which belong to the workspace and can
8link several repositories. **Work**, after **Home** in the left rail,
9replaces each repository's **Issues** tab.
10
11## What happened to your issues
12
13Every issue became a work item, with everything it had: its title and
14description, comments, reactions, labels, assignees, milestone, claims,
15sessions, pull requests and what it was blocked by.
16
17- **It has a new number.** Work items are numbered once for the whole
18 workspace, and each issue was given the next number, oldest first, above
19 every number any of the workspace's repositories had used. So an issue
20 number and a work item number never mean two things.
21- **Its repository is its origin.** The work item links the repository
22 the issue was in as its `origin`, and keeps the old number there. Its
23 pull requests' repositories are linked as `touched`.
24- **Pull requests kept their numbers.** New ones take the workspace's next
25 number.
26- **Who can see it did not change.** Anyone who could read the repository
27 still sees the work item filed there. Members of the workspace now see
28 every work item in it.
29
30## Old links still work
31
32- `g1t.sh/<owner>/<repo>/issues/12` redirects to the work item that issue
33 became, at `g1t.sh/<owner>/-/work/<number>`. **Issues**, **New issue**,
34 **Labels** and **Milestones** under a repository redirect to **Work**:
35 the repository's issue list to the Work list filtered to it, and its
36 labels and milestones to the workspace's. A milestone's own old address,
37 `…/milestones/3`, lands on the milestones list, since milestones were
38 renumbered.
39- A person's **Issues** tab is their **Work items** tab, at
40 `g1t.sh/u/<name>/items`.
41- `#12` and `owner/repo#12` in descriptions, comments and commit messages
42 written before still link to that issue's work item.
43- `Closes #12` in history still points at the right work item.
44- A repository's old **Work** page, its claims and sessions, is now its
45 **Sessions** page, with the sessions recorded on its pull requests, and
46 the old address redirects there. A session's page is
47 `g1t.sh/<owner>/<repo>/sessions/<id>`; an old address with a pull
48 request's number in place of the id goes to that pull request's
49 session.
50
51## Labels and milestones
52
53Labels and milestones now belong to the workspace, too.
54
55- Labels with the same name in several repositories became one label. The
56 one made first kept its color and description.
57- Milestones were renumbered in the workspace. Each records the
58 repository it came from, and every work item and pull request in it
59 stayed in it.
60
61## What to change
62
63Nothing that reads links or references needs to change. What calls g1t by
64name does:
65
66| Was | Now |
67| --- | --- |
68| `g1t issue …` | `g1t work …`: `list`, `view`, `new`, `comment`, `edit`, `close`, `reopen` |
69| `g1t browse --issues` | `g1t browse --work` |
70| `g1t work context N` | `g1t work view N` |
71| `g1t work list` (claims and sessions) | `g1t work status` |
72| `--issue N` on `g1t pr create`, `g1t session …` and `g1t work events` | `--item N` |
73| The MCP `issue` tool | `work_item`, with `workspace` and `number` |
74| `pull_request` `create` with `issue` | `pull_request` `create` with `item` |
75| `/repos/{owner}/{name}/issues…` | `/workspaces/{workspace}/work…` |
76| Repository labels and milestones routes | `/workspaces/{workspace}/labels` and `/workspaces/{workspace}/milestones` |
77| `issue.*` events and webhooks | `work_item.*`. Webhooks you had were moved over for you. |
78| `issue` and `other_issue` in event payloads | `item` and `other_item` |
79| Workflows `on: issues` and `on: issue_comment`, and `permissions: { issues: … }` | `on: work_item`, `on: work_item_comment` and `permissions: { work: … }`. The old names still read but start and grant nothing, and the workflow's page says so. |
80| The repository settings `has_issues` and `auto_close_issues` | `has_work_items` and `auto_close_items` |
81| Search `is:issue` and `type: issues` | `is:item` and `type: items` |
82| `issues:read`, `issues:write` scopes | `work:read`, `work:write` |
83| `/g1t:work-on-issue` in Claude Code | `/g1t:work-on-item`, with the plugin 0.3.0 and the CLI 0.4.0 or later |
84
85There are no aliases for the old names: a script that calls one gets an
86error, not a silent change. Numbers in your own data, such as a tracker
87that stored `owner/repo#12`, still resolve, but a work item's own number
88is the one to keep from now on.