Linear
With Linear connected, you can delegate an issue to Rivets or mention it on an issue, and a task starts on one of your workers. Progress, the agent’s plan, and follow-ups stay synchronized with the issue, and the resulting pull request links back to it. Any task can also be linked to an issue, so its comments and your team’s discussion stay in one place.
Connect Linear
Only organization owners can connect Linear.
- Open Settings › Integrations › Linear.
- Choose Connect Linear and approve the installation in Linear.
Rivets installs as a Linear app actor. Anything it does in Linear, such as comments and status changes, appears as Rivets.
Choose where issues run
Once connected, Where issues assigned to Rivets run sets the defaults for work started from Linear:
| Setting | Default | Meaning |
|---|---|---|
| Repository | Automatic first match | The repository to use when Rivets cannot tell from the issue. |
| Agent and model | Use my agent defaults | Follows the agent defaults of the person who delegated the issue. Choose an agent to pin Linear to one instead. |
| Base branch | Repository default | The branch tasks start from. |
Choose Save to apply them.
Rivets picks the repository for each issue in this order:
- A repository named in your comment, or in your answer to its question.
- The only repository, if the organization has just one.
- A repository whose name matches the issue’s Linear project, or exactly matches its team.
- Linear’s own repository suggestion, when it is confident.
- If none of these settle it and no repository is chosen above, Rivets asks in the issue Which Rivets repository should I use for this issue? and waits for your answer.
- Otherwise, the repository chosen above, or the first connected repository.
Approve work from Linear
Issue text is often written outside your organization, by customers or synced from public trackers, and it becomes the prompt of an agent that runs on a member’s machine. So by default, work from Linear waits for a person.
With Settings › Integrations › Approval › Approve work from integrations on, which is the default:
- Rivets creates the task but does not start it. It replies in the issue that a Rivets member has to approve it, with a link to the task.
- In Rivets, the task’s status on Home reads Needs approval. Open it to see Approval needed with the full prompt the agent will receive.
- A member chooses Approve or Reject. Rivets posts the decision in the issue.
Anyone with access to the repository and an online worker they can use can approve. The run then happens as the approver: on a worker they can use, with their commit identity. Only the first run waits. Follow-ups on approved work start right away. Comments in Linear while the task is waiting are answered but not acted on, so add anything the agent needs to the issue itself before it is approved.
Only owners can change this setting. Turning it off asks for confirmation, because Linear issues then start agents immediately. Work that is already waiting keeps waiting.
Start work from Linear
Delegate an issue to Rivets, or mention Rivets in a comment on an issue. Rivets:
- Opens an agent session on the issue, adds an Open in Rivets link to it, and creates a task in the chosen repository, named after the issue.
- Names the branch with the issue identifier as a prefix, so Linear associates it with the issue.
- Posts an Agent Plan to the issue and updates it as the task moves from preparing the workspace, to doing the work, to reporting the result.
- Streams progress into the issue’s agent activity, and posts the agent’s final answer when the run finishes. If the agent ends its turn by asking you something, the question is posted with the answer as a request for input, so you can reply in Linear.
Follow-up comments in the same agent session steer or continue the task. Stopping the session in Linear stops the run. Everything is also visible in Rivets, where your team can watch and steer the task like any other.
A follow-up runs on the worker the task already uses. If that worker is not shared with you, Rivets replies in the issue instead of acting, and links to the task so you can continue it in Rivets.
Issue status
When an issue is delegated to Rivets, Rivets moves it through your team’s workflow:
| Event | Issue moves to |
|---|---|
| The agent starts working | Your team’s first started state |
| A run completes | A started state with “review” in its name, such as In Review, if your team has one |
| The pull request is merged | Your team’s first completed state |
An issue in triage is not moved to a started state. Rivets never moves an issue out of a completed or canceled state, and failed or cancelled runs leave the issue where it is. Mentioning Rivets in a comment, without delegating, does not change the issue’s status.
Unassigning the issue from Rivets, or moving it to a completed or canceled state yourself, stops the work. Completing an issue that already has a pull request from Rivets does not.
Pull requests
When a task delegated from Linear opens a pull request, Rivets attaches it to the issue and adds a line such as Fixes ABC-123 to the description, unless it already contains a closing keyword for that issue. If you use Linear’s GitHub integration, the Fixes line also links the pull request to the issue there.
Account linking
Rivets attributes Linear work to a Rivets member. If your Linear email matches the verified email on your Rivets account, Rivets links you automatically. Otherwise, it replies in the issue with a link instead of starting work:
- Open the link while signed in to Rivets and choose Link account. The link is valid for an hour.
- Rivets replies in the issue that you are linked, and that it has not started anything yet.
- Reply in the issue when you want it to begin.
If your Rivets email is not verified, Settings › Integrations reminds you to verify it so linking can happen automatically.
Start from an issue in Rivets
You can also start from Linear inside Rivets. In the New task dialog, open Start from, choose Linear issues (Linear in the Mac and iOS apps) in Choose where to start, search for an issue or filter the list, and choose Start from followed by its identifier, for example Start from ENG-12. Rivets makes a new branch for the issue, the issue briefs the agent, and the prompt can be left empty to work on the issue as written. See Creating tasks.
Tasks started this way are linked to the issue and its discussion, but they do not open a Linear agent session, sync issue status, or add the Fixes line. Those belong to work delegated from Linear.
Discuss an issue in Team
A task linked to a Linear issue shares its Team panel with the issue. This covers tasks delegated from Linear, started from an issue in Rivets, created over MCP with a Linear issue, and tasks you link later.
- The issue is the first post. It is laid out like the issue in Linear: identifier and team, title, then its properties, description, sub-issues, and attachments. The identifier links to the issue in Linear, and Open in Linear is also in the post’s right-click menu. It updates as the issue changes in Linear. Choose Edit to change the issue’s title or description from Rivets.
- Comments come in. Existing comments are imported, and new comments, edits, and deletions in Linear follow. Replies are grouped under the comment they answer, as in Linear. Each one links back to the original comment in Linear. Comments from Linear never instruct the agent on their own.
- Messages go out. The composer reads Comment on followed by the issue identifier. Anything you send is posted to the issue under your name, and your edits and deletions update it there.
- Send to agent on the issue or a comment adds it to the agent’s prompt so you can edit it before sending.
Markdown, including tables, checklists, and images, is rendered.
Edit the issue from Rivets
Change the issue’s properties directly in the first post: Status, Priority, Assignee, Labels, Project, and Due date. The parent issue is shown but cannot be changed here. Labels, project, and due date always show, reading Add label, Add to project, or Set due date while empty.
| Property | Choices |
|---|---|
| Status | The team’s states, in Linear’s order. Press 1 to 9 to pick one, or 0 for Triage. |
| Priority | No priority, Urgent, High, Medium, or Low. Press 0 to 4. |
| Assignee | No assignee, then you, then the rest of the team. Type to search. |
| Labels | Tick as many as you like. The menu stays open while you do. |
| Project | No project, then the team’s open projects. |
| Due date | Tomorrow, End of this week, In one week, a date picker, or Remove due date. |
A change shows straight away and is saved to Linear under your name. If Linear refuses it, the value goes back and the reason appears under the properties. Everyone viewing the task sees the change. The Linear mark beside Send opens the issue and shows when messages are still being delivered or when Linear is disconnected. Undelivered messages are kept and sent once the connection is back.
Link an existing task
Any task that is not linked yet can be synced with an existing issue:
- In the task’s Team panel, choose Sync with Linear issue. Once the discussion has messages, it is the Linear mark beside Send.
- Search by title, ID, or description. The list shows open issues. Narrow it with the Status, Team, Assignee, Project, Priority, and Labels filters. Choose done or canceled under Status to include them, and Reset filters to go back to open issues.
- Choose Sync with followed by the issue’s identifier, for example Sync with ENG-12.
Messages sent before the link stay in Rivets. Only messages sent afterwards are posted to the issue. A task can be linked to one issue.
Create an issue for a task
If there is no issue yet, create one from the same browser. Choose New issue beside the search field, then fill in the title and description and set the issue’s Status, Priority, Assignee, Project, and Labels. The team defaults to the one the list is filtered to, otherwise the team you used last, otherwise your first team. Choose Create and sync to create the issue in Linear and link the task’s discussion to it.
Like the rest of Team, this needs only access to the task’s repository. If the request is retried after a lost connection, Rivets finds the issue it already made instead of creating a second one.
Linear over MCP
The Rivets MCP server includes rivets_linear_* tools that read and update your organization’s Linear issues through this same connection. External agents can find issues, file new ones, and comment, without installing a separate Linear MCP server. See MCP server.
Disconnect
Owners can choose Disconnect in Settings › Integrations › Linear.