[BUG] Linear MCP tools appear as "deferred" and fail to work reliably across sessions despite server showing Connected

Resolved 💬 4 comments Opened Apr 26, 2026 by throwercoder Closed May 31, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Linear MCP tools (mcp__linear__*) don't work in Claude Code sessions even though the server reports as Connected.

Two specific failures:

  1. Tools are "deferred" at session start — schemas not loaded

At the start of every session, Linear tools only appear in the <system-reminder> block as deferred tools, meaning their parameter schemas aren't loaded and they cannot be called directly. Claude must internally call a ToolSearch workaround to load schemas before the tools are usable. This extra step is not required for the GitHub MCP server, which is configured identically.

  1. Permission prompts fire despite tools being explicitly allowed

Even after schemas are loaded via ToolSearch, calling a Linear tool (e.g. mcp__linear__linear_get_user_issues) triggers a permission prompt — despite the tool being listed in .claude/settings.local.json under permissions.allow. The equivalent GitHub tools do not trigger prompts.

Bonus failure: Claude gave false reassurance across multiple sessions

Across multiple sessions where Linear didn't work, Claude said "Linear will work when you start a new session." This was wrong each time and should not have been said.

What Should Happen?

Linear MCP tools should be available at session start with no extra steps, the same way GitHub MCP tools are.
Tools listed in permissions.allow should not trigger permission prompts.

Error Messages/Logs

claude mcp list output:

linear: npx -y linear-mcp-server - ✓ Connected
github: npx -y @modelcontextprotocol/server-github - ✓ Connected
claude mcp get linear output:

linear:
  Scope: User config (available in all your projects)
  Status: ✓ Connected
  Type: stdio
  Command: npx
  Args: -y linear-mcp-server
  Environment:
    LINEAR_API_KEY=<redacted>
.claude/settings.local.json permissions (project-level):

{
  "permissions": {
    "allow": [
      "mcp__linear__linear_get_user_issues",
      "mcp__linear__linear_search_issues",
      "mcp__linear__linear_create_issue",
      "mcp__linear__linear_update_issue",
      "mcp__linear__linear_add_comment"
    ]
  }
}
System reminder shown at session start (Linear tools deferred, GitHub tools are not):

The following deferred tools are now available via ToolSearch. Their schemas are NOT loaded:
mcp__linear__linear_add_comment
mcp__linear__linear_create_issue
mcp__linear__linear_get_user_issues
mcp__linear__linear_search_issues
mcp__linear__linear_update_issue

Steps to Reproduce

Add Linear MCP server at user scope:
claude mcp add linear -s user --env LINEAR_API_KEY=<key> -- npx -y linear-mcp-server
Verify it shows Connected: claude mcp list
Add Linear tool permissions to .claude/settings.local.json:
{ "permissions": { "allow": ["mcp__linear__linear_get_user_issues"] } }
Start a new Claude Code session in any project.
Observe: mcp__linear__* tools appear only in the deferred tools system-reminder, not as directly callable.
Ask Claude to fetch your Linear issues.
Observe: Claude must call ToolSearch internally to load schemas (extra step not needed for GitHub MCP).
After ToolSearch, Claude attempts mcp__linear__linear_get_user_issues.
Observe: Permission prompt fires despite the tool being in permissions.allow.
Contrast: Repeat steps 4–9 with any mcp__github__* tool — no deferred state, no unexpected permission prompt.

Claude Model

Sonnet (default)

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.119

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

PowerShell

Additional Information

Maybe this is a really simple fix, but Claude should be able to tell me how to fix it.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗