ClawLink

How to connect Linear to Hermes Agent

Connect Linear to Hermes with ClawLink in one click — 32 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.

Get started for free
Hermes Agent
Hermes Agent
ClawLink
ClawLink
Linear
Linear
LinearOAUTH2MCP

Create and manage issues, cycles, and projects. Once connected, Hermes Agent can read and act on Linear from chat — pairing, token refresh, and tool wiring handled for you.

32 tools

Most guides for giving Hermes Agent Linear access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical Linear setup: pair once in the browser and your always-on Hermes agent can act on Linear for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

Copy this prompt into Hermes to install the plugin and pair your account.

Prompt for Hermes
Set up ClawLink for Hermes and tell me when it's ready.

1. Install the plugin:
hermes plugins install ClawLink-HQ/hermes-plugin --enable

2. Start pairing. It prints an approval link, so show me the link and stop, don't wait:
hermes clawlink begin

3. I'll approve it in my browser, then reply "approved".

4. When I say approved, finish setup:
hermes clawlink finish

5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

Setup

It takes three steps to connect Hermes to Linear.

  1. 1

    Install and pair

    Install the ClawLink plugin, then pair Hermes with a one-time browser approval:

    hermes plugins install ClawLink-HQ/hermes-plugin --enable
  2. 2

    Connect Linear

    One-click OAuth in the dashboard.

  3. 3

    Use it from chat

    Ask Hermes Agent: "What can you do with Linear?"

Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test

Then connect Linear in the ClawLink dashboard — a one-click OAuth approval, no API keys.

Verify the connection by asking Hermes:

Call linear_list_linear_teams to get a real team id, then linear_create_linear_issue with that team_id, title '<title>', and description '<description>'. Confirm the issue identifier it returns.

Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

npx -y @useclawlink/cli login

login opens the same browser approval and stores a credential locally. Once Linear is connected in the dashboard, that agent calls the same 32 Linear tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.

Linear MCP for Hermes

Looking for a Linear MCP server for Hermes Agent? ClawLink connects Linear to Hermes Agent and exposes 32 Linear tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using OpenClaw instead? The OpenClaw Linear integration works the same way.

The default answer for connecting Linear to Hermes Agent has changed, and this page has to name it: Hermes now ships hermes mcp install linear, which runs Linear's browser OAuth and updates your agent configuration for you. Google's AI Overview teaches that command first, and it is the right first answer for most users. ClawLink is the hosted alternative: the same browser OAuth, but the connection lives in the ClawLink dashboard, no config file on your machine, 32 tools ready for chat, and the same connected account works for OpenClaw if you run both agents. Choose the native command when you want Hermes to own the setup; choose ClawLink when you want the connection managed in one dashboard across agents.

What the Hermes Agent Linear integration can do

32 Linear tools are ready for Hermes Agent once the account is connected. The 30 below are the ones people reach for most; your agent can call all 32.

30 of 32 Linear tools for Hermes

ToolWhat it does
Create attachment linear_create_attachmentCreates a new attachment and associates it with a specific, existing Linear issue.
Create comment reaction linear_create_comment_reactionTool to add a reaction to an existing Linear comment. Use when you want to programmatically react to a comment on an issue.
Create linear comment linear_create_linear_commentCreates a new comment on a specified Linear issue. This action modifies shared workspace data and is not reversible — confirm the target issue and comment content before executing.
Create linear issue linear_create_linear_issueCreates a new issue in a specified Linear project and team, requiring team_id and title, and allowing optional properties like description, assignee, state, priority, cycle, and due date.
Create linear issue relation linear_create_linear_issue_relationCreate a relationship between two Linear issues using the issueRelationCreate mutation. Use this to establish connections like 'blocks', 'duplicate', or 'related' between issues.
Create linear label linear_create_linear_labelCreates a new label in Linear for a specified team, used to categorize and organize issues. Label names must be unique within each team.
Create linear project linear_create_linear_projectCreates a new Linear project with specified name and team associations.
Create project milestone linear_create_project_milestoneTool to create a project milestone in Linear with a name and optional target date and sort order. Use when you need to add milestones to track progress within a project.
Create project update linear_create_project_updateTool to create a project status update post for a Linear project. Use when you need to post progress updates, status reports, or announcements for a project.
Get attachment linear_get_attachmentDownloads a specific attachment from a Linear issue; the file_name must include the correct file extension.
Get current user linear_get_current_userGets the currently authenticated user's ID, name, email, and other profile information — this is the account behind the API token, which may be a bot or service account rather than a human user.
Get cycles by team ID linear_get_cycles_by_team_idRetrieves all cycles for a specified Linear team ID; cycles are time-boxed work periods (like
Get issue defaults linear_get_issue_defaultsFetches a Linear team's default issue estimate and state, useful for pre-filling new issue forms
Get linear issue linear_get_linear_issueRetrieves an existing Linear issue's comprehensive details, including id, identifier, title
Get linear project linear_get_linear_projectRetrieves a single Linear project by its unique identifier
List issue drafts linear_list_issue_draftsList issue drafts
List issues by team ID linear_list_issues_by_team_idList all issues for a specific Linear team, scoped by team ID
List linear cycles linear_list_linear_cyclesRetrieves all cycles (time-boxed sprint iterations) org-wide from the Linear account; no
List linear issues linear_list_linear_issuesLists non-archived Linear issues; if project_id is not specified, issues from all accessible
List linear labels linear_list_linear_labelsRetrieves labels from Linear
List linear projects linear_list_linear_projectsRetrieves all projects from the Linear account
List linear states linear_list_linear_statesRetrieves all workflow states for a specified team in Linear, representing the stages an issue
List linear teams linear_list_linear_teamsRetrieves all teams with their members and projects
List linear users linear_list_linear_usersLists all workspace users (not team-scoped) with their IDs, names, emails, and active status
Search issues linear_search_issuesSearch Linear issues using full-text search across identifier, title, and description
Update issue linear_update_issueUpdates an existing Linear issue using its issue_id; requires at least one other attribute
Update linear comment linear_update_linear_commentUpdate an existing Linear comment's body text
Update linear project linear_update_linear_projectUpdate an existing Linear project
Remove issue label linear_remove_issue_labelRemoves a specified label from an existing Linear issue using their IDs; successful even if the
Remove reaction linear_remove_reactionRemove a reaction on a comment

Try it: find the Linear tool you need

Browse the 30 Linear tools

Click any tool to see exactly what Hermes can do and copy a ready-to-use prompt.

Example prompts

Call linear_list_linear_teams to get a real team id, then linear_create_linear_issue with that team_id, title '<title>', and description '<description>'. Confirm the issue identifier it returns.

Use linear_list_linear_issues with assignee_id set to the result of linear_get_current_user, then group the issues by state and tell me what is due this week.

Search Linear with linear_search_issues for '<query>', pick the most relevant issue, then linear_update_issue to set its priority to high using the issue_id from the search results.

How the Linear tools take their arguments

Verified against the live tool schemas; Linear's team-scoped model is where argument errors come from.

  • Issue creation requires a team. linear_create_linear_issue takes team_id and title as required arguments; cycle, priority, state, assignee, labels, parent, and due date are all optional.
  • List tools differ by scope. linear_list_linear_issues with no project_id returns issues from all accessible projects, while linear_list_issues_by_team_id stays inside one team. linear_list_linear_cycles is org-wide, linear_get_cycles_by_team_id is not.
  • linear_get_current_user identifies 'me'. Its schema says to use it to identify the current user in operations that take a user id, which is the correct first call before filtering issues by assignee.
  • Search is full-text. linear_search_issues searches identifier, title, and description, so it finds issues by identifier like ENG-123 as well as by words.

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Linear working from chat.

ManualClawLink
Connection flowRegister a Linear app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift.Users connect Linear through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code.
Ongoing maintenanceYou own refresh logic, permission debugging, environment config, and every provider-specific edge case for Linear.ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure.
Agent usabilityYou still need to expose the right Linear actions to the runtime in a format your agent can reliably use.32 tools for Linear are already exposed through ClawLink, so the agent can read and act from chat immediately.

Composio also exposes Linear to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect Linear in the browser, and the 32 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full Composio alternatives comparison.

Troubleshooting

Hermes paired but still can't use Linear

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.

Connection succeeds but no tools appear

Reconnect Linear from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

"Tool schema not loaded yet" error when calling Linear tools

Linear tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Linear call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

Linear returns 403 or "permission denied" on one action while others work

Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

Linear API 403 insufficient permissions

Linear's 403s are scope-shaped, and the mechanics matter. OAuth apps carry Linear scopes: read, write, issues:create, and admin. A connection approved before a scope was added does not get it retroactively, so after changing permissions, reconnect so the new scope is granted. A personal key acts with its owner's authority, and an API key created with 'All teams' scoping can fail against a team outside that scope; the OAuth equivalent is an account that is not a member of the team in the request. And the usual ClawLink-specific cause still applies: the agent passed a placeholder id like YOUR_ID or an example team_id from docs. Run linear_list_linear_teams first, then retry with the real team id from the result.

Ask the agent to diagnose it:

Call linear_get_current_user and linear_list_linear_teams, tell me which teams the connection can see, then retry the failing call once and quote the exact error body.
Linear API rate limit

Verified against Linear's own rate-limiting docs on 2026-08-02, because the numbers circulating in AI answers are stale or wrong. OAuth-app requests are limited to 5,000 per hour per user, with a complexity budget of 2,000,000 points per hour. Errors come back as HTTP 400 with a RATELIMITED code inside the GraphQL errors array, not as HTTP 429, which makes them easy to mistake for bad requests. The response includes X-RateLimit-Requests-* and X-RateLimit-Complexity-* headers with the reset time. When an agent hits this, the fix is to wait for the window and retry, and to stop polling: Linear's docs specifically discourage polling and recommend webhooks and filtering instead.

Linear MCP tool not found

Search engines answer this error in Cursor and Claude Code terms: wipe the npx cache, delete mcp.json, avoid hyphens in server names, use the mcp-remote https://mcp.linear.app/sse config block. All of that is for people running their own MCP servers, and Linear's official hosted server lives at mcp.linear.app. On the ClawLink hosted flow the analogous error is 'Tool schema not loaded yet': schemas load on demand the first time a tool runs and are cached after that, so the error clears on retry within seconds. If every Linear call keeps failing with it in a fresh chat, reconnect from the dashboard; a persistent pattern points to a config problem on our side, not a file on your machine.

OAuth finished in the browser but the account is still missing

Try reconnecting Linear and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

FAQ

Is there a Hermes Agent Linear integration?

Yes. ClawLink is the fastest way to connect Hermes to Linear: link your Linear account once in the browser and Hermes Agent can call the Linear API through 32 ready-made tools — no custom code or token handling.

How do I connect Linear to Hermes with ClawLink?

Install the plugin with hermes plugins install ClawLink-HQ/hermes-plugin --enable, then pair once: run hermes clawlink begin, approve the link in your browser, and run hermes clawlink finish. Connect Linear in the dashboard and Hermes can use it from the next message — no config files or API keys to manage.

How long does it take to connect Linear to Hermes Agent?

About two minutes. Sign in, click Connect next to Linear in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

Why use ClawLink instead of wiring Linear up myself?

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Linear working from chat.

Should I use `hermes mcp install linear` instead?

If you run Hermes Agent and only need Linear from it, the native command is the simplest path and this page is not going to argue with it. hermes mcp install linear runs browser OAuth and writes the server config into Hermes's own configuration. What ClawLink adds is a hosted connection instead of a local one: the token is stored server-side and refreshed for you, there is no config file to maintain, the connection is managed from the ClawLink dashboard, and the same account works for OpenClaw alongside Hermes. For a single agent on a single machine, the native CLI does the job. For a connection you want to manage centrally, ClawLink is the hosted version of the same flow.

Do I need a Linear API key or personal access token?

No. Both the native hermes mcp install linear command and the ClawLink hosted flow use Linear's OAuth, so you sign in to Linear in the browser once and never generate a personal API key. The manual route engines still teach, creating an API key and using it with a third-party MCP server, is the path this page and the native CLI both replace. Linear's own docs note that API-key requests are limited to 2,500 per hour per user while OAuth-app requests get 5,000, which is a separate reason the hosted and native OAuth routes beat the key route.

Is it safe to connect Linear to an AI agent?

The answers both engines give to this query settle on least privilege: connect with scoped permissions, prefer read-only defaults, and gate writes. The ClawLink connection uses Linear's OAuth scopes and acts as your account, so the same rules apply: the agent can do what the connected account can do, including every issues:create call if that scope is granted. Set the agent's own permission rules to match what you want done, and revoke the connection from the ClawLink dashboard at any time, after which Linear rejects further calls.

Hermes paired but still can't use Linear

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.