Skip to content

feat: altimate integrations command for GitHub, Jira and Linear - #1622

Draft
hkaltai wants to merge 2 commits into
tool-cli-daemonfrom
feat-local-integrations-sync
Draft

hkaltai wants to merge 2 commits into
tool-cli-daemonfrom
feat-local-integrations-sync

Conversation

@hkaltai

@hkaltai hkaltai commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds altimate integrations so GitHub, Jira and Linear can be connected from the terminal, using the same credential fields as the Altimate workspace web form, instead of setting them up in the web app. Stacked on #1609.

  • Detection: finds credentials already on the machine: gh, jira-cli, GITHUB_TOKEN/GH_TOKEN, JIRA_API_TOKEN, LINEAR_API_KEY, and MCP servers in Claude Code's config.
  • fields <provider>: the form fields from the workspace's integrations catalog. They are cached, with a built-in fallback, and pre-filled from the machine. Secrets are reported only as a masked tail.
  • set / set-secret --from-clipboard | --from-env | --stdin: fills fields. A secret is read by the CLI itself and never printed.
  • connect <provider> [--local-only]: validates directly with GitHub, Jira or Linear, then either keeps the credential in the OS keychain or syncs it to the workspace as a private connection. A rejected credential shows the provider's message and stores nothing.
  • update <provider>: replaces a rejected token on the same connection.
  • status: reports rejected when a token stopped working.
  • Other commands: open-token-page, sync, block/unblock, disconnect (removes the local copy and the workspace connection this tool made).
  • Output: every command has --json, which the Claude Code plugin reads.
  • Browser flow: the OAuth flow remains behind connect --oauth.

Test plan

  • bun test test/altimate/integrations.test.ts: 60 pass. Covers:
    • catalog parsing and fallback
    • clipboard, env and stdin secrets that are never echoed
    • validators for all four providers against a stub server (success and 401)
    • local-only vs sync
    • update in place
    • rejected status
    • detection, disconnect and the existing flows
  • bun run typecheck is clean.
  • Ran against a local Altimate backend with real GitHub and Jira credentials:
    • GitHub kept local (validated against api.github.com, nothing sent to Altimate)
    • Jira validated and synced
    • a bad Linear key rejected with Linear's 401
    • a revoked Jira connection updated on the same connection

🤖 Generated with Claude Code

Detects gh, jira-cli, env tokens and Claude MCP servers, syncs them to
the Altimate workspace or keeps them in the OS keychain, and connects a
provider through a browser consent flow with a loopback callback.
Expired tokens are re-created through the authorize flow; no refresh
token is stored. Disconnect also removes the workspace copy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 29, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hkaltai
hkaltai changed the base branch from main to tool-cli-daemon October 29, 2026 14:56
@github-actions

Copy link
Copy Markdown

👋 This PR was automatically closed by our quality checks.

Common reasons:

  • New GitHub account with limited contribution history
  • PR description doesn't meet our guidelines
  • Contribution appears to be AI-generated without meaningful review

If you believe this was a mistake, please open an issue explaining your intended contribution and a maintainer will help you.

@github-actions

Copy link
Copy Markdown

This PR doesn't fully meet our contributing guidelines and PR template.

What needs to be fixed:

  • PR description is missing required template sections. Please use the PR template.
  • "Cost side effects" section is missing or empty. Describe any model calls, queries or cloud resources whose cost grows with user data, or write "None".

Please edit this PR description to address the above within 2 hours, or it will be automatically closed.

If you believe this was flagged incorrectly, please let a maintainer know.

connect now asks for the same fields as the workspace web form, read
from the integrations catalog, pre-filled from credentials found on the
machine. Secrets come from detection, the clipboard, an env var or
stdin and are never printed. Credentials are validated directly with
GitHub, Jira or Linear, then kept in the keychain or synced to the
workspace. A rejected token can be updated on the same connection.
The browser OAuth flow moves behind connect --oauth.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant