Integrations are optional. You can use Emdash without connecting any issue tracker.
Overview
The issue tracking workflow:- Connect your issue tracker in Settings
- Browse issues directly in Emdash
- Attach an issue to a task
- Agent receives the full issue context
- Link PR to the issue when creating a pull request
Supported platforms
| Platform | Status | Authentication | Service |
|---|---|---|---|
| Linear | ✅ Supported | API key | LinearService.ts |
| Jira | ✅ Supported | Site URL + API token | JiraService.ts |
| GitHub Issues | ✅ Supported | gh CLI | GitHubService.ts |
Linear integration
Connecting Linear
Generate an API key
- Go to Linear Settings → API
- Click Create a personal API key
- Name it “Emdash” and copy the key
Add to Emdash
- Open Settings → Integrations → Linear
- Paste your API key
- Click Connect
Using Linear issues
- Browse issues
- Search issues
- Attach to task
In any task, click Attach Issue and select Linear to browse:
- Open issues from your workspace
- Issues filtered by
state.typenot in["completed", "cancelled"] - Up to 50 most recently updated issues
Implementation details
FromLinearService.ts:91-129:
Linear tokens are stored securely in your OS keychain via Keytar (service name:
emdash-linear).Jira integration
Connecting Jira
Generate an API token
- Go to Atlassian API Tokens
- Click Create API token
- Name it “Emdash” and copy the token
Find your site URL
Your Jira site URL is the domain you use to access Jira:
- Example:
https://your-company.atlassian.net
Using Jira issues
- Browse issues
- Search issues
- Attach to task
Emdash fetches issues using fallback JQL queries to handle limited permissions:
assignee = currentUser() ORDER BY updated DESCreporter = currentUser() ORDER BY updated DESCORDER BY updated DESC(all issues you can see)
ADF description handling
Jira uses Atlassian Document Format (ADF) for rich text. Emdash flattens it to plain text:Jira credentials are stored in:
- API token: OS keychain (Keytar, service name:
emdash-jira) - Site URL + email:
<userData>/jira.json
GitHub Issues integration
Connecting GitHub Issues
GitHub Issues authentication piggybacks on GitHub CLI:Using GitHub Issues
- Browse issues
- Search issues
- Attach to task
Issues are project-specific. When you attach an issue to a task:
- Emdash runs
gh issue listin the project directory - Fetches open issues (state:
open) - Shows up to 50 most recently updated issues
GitHubService.ts:491-521:GitHub Issues requires the project to be a GitHub repository. For non-GitHub projects, use Linear or Jira instead.
Credential storage summary
| Platform | Storage | Service Name | Location |
|---|---|---|---|
| Linear | Keytar | emdash-linear | api-token account |
| Jira (token) | Keytar | emdash-jira | api-token account |
| Jira (config) | JSON file | — | <userData>/jira.json |
| GitHub | Keytar + gh CLI | emdash-github | github-token account |
- macOS: Keychain Access.app
- Linux: libsecret (GNOME Keyring, KWallet)
- Windows: Windows Credential Manager
Disconnecting integrations
To disconnect an integration:- Go to Settings → Integrations
- Select the platform (Linear/Jira/GitHub)
- Click Disconnect
- Remove credentials from the OS keychain
- Clear any cached data
- Stop fetching issues from that platform
Troubleshooting
Linear: Invalid API key
Linear: Invalid API key
Symptom: “Unable to retrieve Linear account information”Solutions:
- Verify the API key is correct (regenerate if needed)
- Check the key has the required scopes (read:issues, write:issues)
- Ensure your Linear workspace is active
Jira: 401 Unauthorized
Jira: 401 Unauthorized
GitHub: gh not found
GitHub: gh not found
Symptom: “GitHub CLI not installed”Solutions:
- Install
ghCLI:brew install gh(macOS) - Authenticate:
gh auth login - Restart Emdash to detect the CLI
- Check PATH includes
ghlocation
No issues appear
No issues appear
Symptom: Issue list is empty despite having open issuesSolutions:
- Linear: Check filter excludes completed/cancelled issues
- Jira: Verify you have permission to view issues (try JQL in Jira web)
- GitHub: Ensure the project is a GitHub repo with issues enabled
Best practices
Use dedicated API keys
Create separate API keys for Emdash (not your personal keys) for easier revocation.
Link PRs to issues
When creating PRs, Emdash can automatically reference the linked issue in the description.
Keep issue context minimal
Large issue descriptions can overwhelm agents. Summarize key requirements in the task description.
Rotate credentials regularly
Regenerate API keys periodically for security.