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.


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.
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.
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.
1Install and pair
Install the ClawLink plugin, then pair Hermes with a one-time browser approval:
hermes plugins install ClawLink-HQ/hermes-plugin --enable- 2
Connect Linear
One-click OAuth in the dashboard.
- 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 testThen 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 loginlogin 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
| Tool | What it does |
|---|---|
Create attachment linear_create_attachment | Creates a new attachment and associates it with a specific, existing Linear issue. |
Create comment reaction linear_create_comment_reaction | Tool 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_comment | Creates 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_issue | Creates 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_relation | Create 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_label | Creates 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_project | Creates a new Linear project with specified name and team associations. |
Create project milestone linear_create_project_milestone | Tool 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_update | Tool 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_attachment | Downloads a specific attachment from a Linear issue; the file_name must include the correct file extension. |
Get current user linear_get_current_user | Gets 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_id | Retrieves all cycles for a specified Linear team ID; cycles are time-boxed work periods (like |
Get issue defaults linear_get_issue_defaults | Fetches a Linear team's default issue estimate and state, useful for pre-filling new issue forms |
Get linear issue linear_get_linear_issue | Retrieves an existing Linear issue's comprehensive details, including id, identifier, title |
Get linear project linear_get_linear_project | Retrieves a single Linear project by its unique identifier |
List issue drafts linear_list_issue_drafts | List issue drafts |
List issues by team ID linear_list_issues_by_team_id | List all issues for a specific Linear team, scoped by team ID |
List linear cycles linear_list_linear_cycles | Retrieves all cycles (time-boxed sprint iterations) org-wide from the Linear account; no |
List linear issues linear_list_linear_issues | Lists non-archived Linear issues; if project_id is not specified, issues from all accessible |
List linear labels linear_list_linear_labels | Retrieves labels from Linear |
List linear projects linear_list_linear_projects | Retrieves all projects from the Linear account |
List linear states linear_list_linear_states | Retrieves all workflow states for a specified team in Linear, representing the stages an issue |
List linear teams linear_list_linear_teams | Retrieves all teams with their members and projects |
List linear users linear_list_linear_users | Lists all workspace users (not team-scoped) with their IDs, names, emails, and active status |
Search issues linear_search_issues | Search Linear issues using full-text search across identifier, title, and description |
Update issue linear_update_issue | Updates an existing Linear issue using its issue_id; requires at least one other attribute |
Update linear comment linear_update_linear_comment | Update an existing Linear comment's body text |
Update linear project linear_update_linear_project | Update an existing Linear project |
Remove issue label linear_remove_issue_label | Removes a specified label from an existing Linear issue using their IDs; successful even if the |
Remove reaction linear_remove_reaction | Remove 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_issuetakesteam_idandtitleas required arguments; cycle, priority, state, assignee, labels, parent, and due date are all optional. - List tools differ by scope.
linear_list_linear_issueswith noproject_idreturns issues from all accessible projects, whilelinear_list_issues_by_team_idstays inside one team.linear_list_linear_cyclesis org-wide,linear_get_cycles_by_team_idis not. linear_get_current_useridentifies '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_issuessearches identifier, title, and description, so it finds issues by identifier likeENG-123as well as by words.
ClawLink vs. building it yourself
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.
| Manual | ClawLink | |
|---|---|---|
| Connection flow | Register 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 maintenance | You 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 usability | You 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. |
ClawLink vs. Composio
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.
Related
Hermes SafetyCulture integration
SafetyCulture (formerly iAuditor) is a workplace operations platform that enables teams to conduct digital inspections, manage audits, track issues, schedule tasks, and maintain compliance through mobile and web applications.
Connect LaunchDarkly
A feature management platform that helps teams build better software faster using feature flags.
Crowdin
Manage translations, localization projects, and language resources