# Connect Linear

> Connect Linear and your automations can open issues for you — a certificate about to expire, a monitor that went down, a domain coming up for renewal, filed…

Source: https://infranest.io/docs/connect-linear
Last updated: 2026-10-26

---

Connect Linear to your InfraNest account so automations can open, comment on, or close issues for you — a certificate about to expire, a monitor that went down, a domain coming up for renewal — filed on the right team without anyone copying details across.

## Overview

- Lets automations create and update Linear issues automatically.
- Can also work the other way: changes in Linear can start an InfraNest automation.
- Works with either a one-click connection or a personal API key.

## Connect your workspace

1. Open **Integrations** in the sidebar and find Linear.
2. Click **Connect with Linear** (if shown).
3. Approve the workspace in Linear.
4. You land back in InfraNest already connected — nothing to copy.

> [!NOTE]
> If **Connect with Linear** is greyed out, your InfraNest administrator hasn't registered a Linear app yet. Use an API key instead — it works the same way once connected.

## Connect with an API key

1. In Linear, open **Settings → Account → Security & Access**.
2. Under **Personal API keys**, create a key with **Read** and **Write** access.
3. Copy the key — Linear shows it once.
4. In InfraNest, open **Integrations** in the sidebar, then **Linear**, paste the key and select **Save**.

InfraNest checks the key right away and shows the workspace it belongs to, so you can confirm you connected the right one.

> [!WARNING]
> A key can be limited to specific teams. If you restrict it, make sure it includes the team you want issues in — otherwise it connects fine but fails when an automation runs. Also note the key is tied to the person who created it; if they leave, it stops working. For a connection the whole team relies on, use an admin's key or the one-click connection instead.

<!-- screenshot: connect-linear -->

<!-- docs-screenshots:start:connect-linear -->

![Connect Linear](/media/1c5de93f-f1f3-4c37-b62e-e316b58b0374)

<!-- docs-screenshots:end:connect-linear -->

## Create issues from an automation

1. Build a rule as usual and pick **Create Linear issue** as the action.
2. Set **Team** — start typing and pick from your Linear teams, or type a team key like `ENG`.
3. Fill in **Title** and **Description** — plain text, and you can drop in values from whatever triggered the rule, so the issue arrives with the domain name or monitor already in it.
4. Optionally set **Status** — leave empty and Linear puts the issue wherever that team's new issues normally go.
5. Optionally set **Project** and **Assignee** — projects are listed for the team you picked; anyone in your workspace can be the assignee, or type their email address.
6. Optionally set **Priority**, using Linear's own scale (1 is Urgent, 4 is Low).

The issue the rule creates is available to later steps in the same rule, so you can post its link to Slack straight after creating it, or comment on it, or close it.

**One ticket per incident.** When the rule runs on an incident (a monitor went down, for example), InfraNest remembers the issue it opened. If the rule runs again for the same incident while that issue is still open, it adds a comment instead of opening another — a flapping monitor gives you one issue, not one per flap. To open a new issue every time anyway, set **If this incident already has an open ticket** to **Open a new ticket anyway**. The incident's timeline links to the issue.

## Comment on an issue, or change its status

1. Add **Comment on Linear issue** to add a comment — useful as the other half of a rule that opens issues: the monitor recovers, and the issue says so.
2. Add **Set Linear issue status** to move the issue, so a rule that opened work can also finish it.
3. For either action, specify which issue — give the identifier you see in Linear (`ENG-14`), or refer to the issue an earlier step in the same rule created, which the picker of earlier values offers.
4. For a status, type the name exactly as it appears on that team's board ("In Progress", "Done"). Statuses belong to a team, and the team comes from the issue itself, so there is no list to pick from here.

## Start an automation from Linear

1. Go to **Integrations → Linear** and select **Turn on triggers** on the account.
2. In Linear, open **Settings → API → Webhooks** and select **New webhook**. This needs a Linear admin.
3. Paste the URL InfraNest shows, choose the teams to watch, and tick **Issues** and **Comments**. Save.
4. Linear shows a signing secret once. Copy it, paste it in InfraNest and select **Save**.

The account then says whether events are arriving. Change an issue to try it. In the automation builder, a Linear trigger warns you when no Linear account has its triggers turned on.

**Issue a new URL** replaces the URL at once — paste the new one into the Linear webhook straight away. **Turn off triggers** stops them; delete the webhook in Linear too.

## Troubleshooting

**"Linear rejected the key"** — the key is wrong, expired, or was created without Write access. Create a new one and paste it again.

**A list says why it has nothing to offer.** When Linear could not be asked, the list explains instead of coming up empty:

- *Needs to be connected again* — the connection's access was revoked or has run out. Connect it again under **Integrations** in the sidebar. The list fills in on your next try.
- *Isn't allowed to read this list* — the connection works, but its access does not cover this list. Give it that access in Linear, or type the value.
- *Couldn't load suggestions just now* — Linear did not answer. Try again in a moment, or type the value.

**The team list is empty.** Pick a connection first, at the top of the action. If it is still empty, the key is probably limited to teams it cannot see — check its team restrictions in Linear.

**The status list is empty.** Statuses belong to a team, so choose the team first. If the team comes from the trigger rather than being picked, the list stays empty — type the status name instead, and the automation resolves it when it runs.

**The project list is empty.** Projects belong to teams — choose the team first, and only that team's projects are offered.

**An automation failed with "Linear rejected the request".** Open the run in **Automations → History**; the step shows what Linear said. The usual cause is a team the key cannot reach, or a status name that does not exist on that team.

**"No Linear user matches…"** — two people can share a display name, so the automation matches on email address first. Use the address to be certain which one it means.

## What InfraNest keeps

InfraNest receives an event from Linear for every issue and comment you or your team create or change — whether or not an automation uses it.

- **Event history** — used to show how often a draft automation *would have run*. It keeps which issue, its status, team and priority, who did it and what happened, for **45 days**. It does not keep the text people write: issue titles and comment text are left out.
- **Run history** — when an automation actually runs, its run keeps the full event it ran on, comment text included, for **90 days**. Only members whose role can edit automations can see it. Everyone else sees that a run happened and whether it worked.

Disconnecting stops new events from arriving. What InfraNest already holds is removed when those 45 and 90 days run out.
