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


Manage Git repos, pull requests, and issues. Once connected, Hermes Agent can read and act on Bitbucket from chat — pairing, token refresh, and tool wiring handled for you.
Most guides for giving Hermes Agent Bitbucket 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 Bitbucket setup: pair once in the browser and your always-on Hermes agent can act on Bitbucket 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 Bitbucket.
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 Bitbucket
One-click OAuth in the dashboard.
- 3
Use it from chat
Ask Hermes Agent: "What can you do with Bitbucket?"
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 Bitbucket in the ClawLink dashboard — a one-click OAuth approval, no API keys.
Verify the connection by asking Hermes:
Get the pull request <pr id> in <workspace>/<repo> with bitbucket_get_pull_request, then its diff with bitbucket_get_pull_request_diff, and summarize what changes and whether anything looks risky.
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 Bitbucket is connected in the dashboard, that agent calls the same 105 Bitbucket tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.
Bitbucket MCP for Hermes
Looking for a Bitbucket MCP server for Hermes Agent? ClawLink connects Bitbucket to Hermes Agent and exposes 105 Bitbucket tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using OpenClaw instead? The OpenClaw Bitbucket integration works the same way.
The head-query answer the AI Overview leads with is Composio's Connect CLI: a curl pipe into a shell, then an MCP block in ~/.hermes/config.yaml carrying an x-consumer-api-key. The manual alternative is now harsher than it used to be: Atlassian fully deprecated Bitbucket app passwords on 2026-07-28, so the old paste-an-app-password tutorials are wrong, and the current advice is to generate an Atlassian API Token instead. This page is the route neither engine leads with: the plugin pairs Hermes to ClawLink in four commands, Bitbucket authorizes in the browser, and the 105 tools below work from chat with no token, app password, or config block anywhere on the Hermes machine. The manual route went from bad to worse this summer; the hosted route did not change at all.
Is it safe to connect Bitbucket to Hermes Agent?
The AI Overview's answer to this query is "generally safe with official integrations plus least-privilege", and the named risks map onto this setup in a specific way:
- No token exists to over-privilege or leak. The manual routes ask for an app password (now deprecated) or an API token with scopes; a pasted token with too many scopes is the classic over-privileged credential. The hosted connection is the account itself, granted once in the browser, revoked from the dashboard.
- Repo content is untrusted input. Code, PR descriptions, and issue text can contain instructions aimed at the agent reading them. Treat fetched content as data, not commands, and require a confirmation step before writes like creating PRs or approving changes.
- IP allowlists are the one manual setting that can break a hosted connection. If your account or workspace restricts API access by IP, the hosted connection's calls can be blocked with no way to fix it from chat; the fix is to allow the connection's traffic or remove the restriction. Worth checking before assuming a broken 403 is the agent's fault.
Atlassian's own security docs are the repeated reference in every answer to this query, and their advice, least privilege plus human review, is exactly what a hosted connection makes easy: nothing to scope by hand, and confirmation before the writes that touch other people's work.
What the Hermes Agent Bitbucket integration can do
105 Bitbucket 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 105.
30 of 105 Bitbucket tools for Hermes
| Tool | What it does |
|---|---|
Approve pull request bitbucket_approve_pull_request | Approve a pull request |
Browse repository path bitbucket_browse_repository_path | Browse repository contents at a path |
Create branch bitbucket_create_branch | Create a new branch in a repository |
Create issue bitbucket_create_issue | Create a new issue in a repository |
Create pull request bitbucket_create_pull_request | Create a new pull request |
Create repository bitbucket_create_repository | Create a new repository |
Create repositories commits2 bitbucket_create_repositories_commits2 | List commits from a revision using POST method |
Get branch bitbucket_get_branch | Retrieves detailed information about a specific branch in a Bitbucket repository |
Get commit build status bitbucket_get_commit_build_status | Get a specific build status for a commit in Bitbucket |
Get commit changes bitbucket_get_commit_changes | Retrieve a page of changes made in a specified commit, showing all changed files with their |
Get commit comment bitbucket_get_commit_comment | Retrieves a specific comment from a commit by its ID |
Get commit diff bitbucket_get_commit_diff | Retrieve the unified diff between two provided revisions or for a single commit in a Bitbucket |
Get current user2 bitbucket_get_current_user2 | Retrieve complete profile information for the currently authenticated Bitbucket user |
Get deployment environment variables bitbucket_get_deployment_environment_variables | Retrieves deployment environment level variables for a specific Bitbucket repository environment |
Get file from repository bitbucket_get_file_from_repository | Retrieves a specific file's content from a Bitbucket repository at a given commit (hash |
Get hook events bitbucket_get_hook_events | Retrieves a paginated list of all valid webhook events for a specified entity type (repository |
Get openid configuration bitbucket_get_openid_configuration | Retrieves the OpenID Connect discovery configuration for Bitbucket Pipelines OIDC |
Get pull request bitbucket_get_pull_request | Get a single pull request by ID with complete details |
Get pull request comment bitbucket_get_pull_request_comment | Retrieve a specific comment from a pull request by its ID |
Get pull request commits bitbucket_get_pull_request_commits | Retrieve commits for a specified pull request |
Get pull request diff bitbucket_get_pull_request_diff | Fetch the unified diff for a Bitbucket pull request (follows 302 redirect to repository diff) |
Get pull request diffstat bitbucket_get_pull_request_diffstat | Get the diffstat for a Bitbucket pull request, showing all changed files with their change |
Get repositories branching model bitbucket_get_repositories_branching_model | Return the branching model as applied to the repository |
Get repositories commit bitbucket_get_repositories_commit | Retrieve detailed information about a specific commit in a Bitbucket repository |
Get repositories commit comments bitbucket_get_repositories_commit_comments | Retrieves all comments on a specific commit in a Bitbucket repository |
Get repositories commit report bitbucket_get_repositories_commit_report | Returns a single report matching the provided ID from a commit |
Get repositories commit reports bitbucket_get_repositories_commit_reports | Get reports linked to a specific commit |
Get repositories commit reports annotations bitbucket_get_repositories_commit_reports_annotations | Returns a single annotation matching the provided ID from a commit report |
Get repositories commit statuses bitbucket_get_repositories_commit_statuses | Returns all build statuses (e.g., CI/CD pipeline results) for a specific commit |
Get repositories effective branching model bitbucket_get_repositories_effective_branching_model | Retrieves the effective branching model for a Bitbucket repository, showing which branching |
Try it: find the Bitbucket tool you need
Browse the 30 Bitbucket tools
Click any tool to see exactly what Hermes can do and copy a ready-to-use prompt.
Example prompts
Get the pull request <pr id> in <workspace>/<repo> with bitbucket_get_pull_request, then its diff with bitbucket_get_pull_request_diff, and summarize what changes and whether anything looks risky.
Read the file src/config.ts from the repo <workspace>/<repo> with bitbucket_get_file_from_repository and tell me what it configures, without modifying anything.
Create a pull request in <workspace>/<repo> with bitbucket_create_pull_request from branch <source> to <destination> with the title and description I give you. Show me the arguments before sending.
For the pull request <pr id>, read its diff and comments first, then approve it with bitbucket_approve_pull_request only if nothing looks unresolved, and tell me what you decided and why.
How the Bitbucket tools behave
Details that decide whether a Bitbucket prompt reads the right repository or writes to the wrong branch.
- Everything is addressed as workspace/repo. Bitbucket keys its objects by workspace and repository slug, and a wrong slug fails as a permission error rather than a not-found, which makes 403s on this provider suspicious until the slugs are confirmed.
- PRs are the review surface.
bitbucket_get_pull_request, the diff tools,bitbucket_get_pull_request_comment, andbitbucket_approve_pull_requestcover the review flow; an agent grounded in a PR's diff and comments is the useful shape of this integration. - Commit reads are layered.
bitbucket_get_commit_diff,bitbucket_get_commit_changes, build status, and commit reports each answer a different question, and an agent that conflates them over-fetches and hits rate limits. - Branches and repositories are writable.
bitbucket_create_branchandbitbucket_create_repositoryare visible writes in shared infrastructure, worth a confirmation step. - File reads are cheap, walks are not.
bitbucket_browse_repository_pathandbitbucket_get_file_from_repositoryread one path at a time, so enumerate the tree first and read only the files you need.
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 Bitbucket working from chat.
| Manual | ClawLink | |
|---|---|---|
| Connection flow | Register a Bitbucket app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect Bitbucket 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 Bitbucket. | 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 Bitbucket actions to the runtime in a format your agent can reliably use. | 105 tools for Bitbucket are already exposed through ClawLink, so the agent can read and act from chat immediately. |
ClawLink vs. Composio
Composio also exposes Bitbucket 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 Bitbucket in the browser, and the 105 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 Bitbucket
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 Bitbucket 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 Bitbucket tools
Bitbucket 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 Bitbucket 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.
Bitbucket 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.
Bitbucket returns 403 or "permission denied" on one action while others work
The causes the engines teach for this error are: the account lacks repository permissions, the credential lacks scopes, an IP allowlist blocks the caller, the workspace or repository slug is wrong, or a stale token needs re-auth. In a hosted connection the credential-scope cause does not exist, and the real checks are account-level. The connected account must have repository-level access for the specific repo, not just workspace access; some endpoints are workspace-admin-only; and a wrong workspace or repo slug in the request fails as a permission error rather than a not-found. Two hosted-specific checks come next: an IP allowlist on the account or workspace can block the hosted connection's calls entirely, which no amount of reconnecting fixes, and a placeholder id from documentation fails like a permission error, so ask the agent to run a browse or get tool first and use a real slug from those results.
Ask the agent to diagnose it:
Run bitbucket_browse_repository_path for the repo in question and show me the real workspace and repo slugs. Quote the exact 403 text, then retry with the real slugs. If the error names IP restrictions, tell me before reconnecting.Bitbucket starts returning 429 or the agent stalls partway through a repository
Bitbucket's documented base limit is 1,000 requests per hour, rolling, and a 429 is the response when an agent walks a large repository one call at a time: every file, then every commit, then every PR, each a separate request. The response is not to retry immediately, which lands in the same hour window, but to change the shape of the work: one path or one PR at a time, and have the agent tell you what it intends to enumerate before it starts. If a bulk audit is genuinely needed, running it in stages across turns is more reliable than one sweep, and a plain read of a repo's file tree is far cheaper than walking every file's contents.
Ask the agent to diagnose it:
Tell me how many Bitbucket calls you have made in the last hour and what you were enumerating. Quote any rate-limit text from the last response. Do not call Bitbucket again until I reply.Bitbucket tools are missing, or one tool name is not found
Two different failures. If Hermes shows no Bitbucket tools at all, the connection or pairing is incomplete: confirm the plugin was installed with --enable, that both hermes clawlink begin and hermes clawlink finish ran, that Bitbucket shows as connected in the dashboard, and start a fresh chat. If most tools work and a single name fails, that name is wrong rather than missing: the error lists the closest real tools, and the real catalog is one clawlink_list_tools --integration bitbucket away. There is also a first-call timing case unique to this setup: schemas load on demand, so the opening Bitbucket call in a fresh session can arrive before the catalog and needs one retry. What does not apply is the advice for this symptom that assumes a local MCP server declared in an mcp.json with env vars, which is what the search results teach.
Ask the agent to diagnose it:
List the Bitbucket tools you actually have access to. If there are none, run clawlink_list_integrations and confirm the plugin pair, then tell me what you see. If there are, tell me which one reads a file from a repository and use that exact name.OAuth finished in the browser but the account is still missing
Try reconnecting Bitbucket 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 Bitbucket integration?
Yes. ClawLink is the fastest way to connect Hermes to Bitbucket: link your Bitbucket account once in the browser and Hermes Agent can call the Bitbucket API through 105 ready-made tools — no custom code or token handling.
How do I connect Bitbucket 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 Bitbucket 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 Bitbucket to Hermes Agent?
About two minutes. Sign in, click Connect next to Bitbucket in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.
Why use ClawLink instead of wiring Bitbucket 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 Bitbucket working from chat.
Do I need a Bitbucket app password or Atlassian API token?
No, and the timing makes this worth stating plainly. Atlassian removed app passwords on 2026-07-28, so the app-password flows every older tutorial teaches now fail, and the replacement the docs point to is generating an Atlassian API Token. This page needs neither: the plugin pairs once through hermes clawlink begin and finish, Bitbucket authorizes on its own consent screen in the browser, and the connection is stored server-side. There is no credential on the Hermes machine to deprecate, rotate, or leak, and disconnecting from the dashboard revokes the agent's access immediately.
What can the agent do in Bitbucket?
The 105 tools cover the repository surface: repositories and their contents, pull requests and their diffs, comments, and approvals, branches, issues, commits and their build statuses, and commit reports. The writes to be deliberate about are pull requests, branches, and approvals, because they appear in other people's review workflow. Reads come first, and the pull-request review surface is the part teams actually use: an agent that reads a PR diff and its comments is more useful than one that creates branches on demand.
Is it safe to connect Bitbucket to an always-on Hermes agent?
The AI Overview answers this query with "generally safe with official integrations plus least-privilege", and its named risks are prompt injection, over-privileged tokens, unverified third-party MCP servers, and IP allowlists. The hosted connection removes the token half: there is no over-privileged token to create, because the grant is the account itself, and no third-party MCP server to vet, because the plugin is the integration. The behavioral half is yours: treat repo content as untrusted input, start with reads, require confirmation before writes like creating PRs or approving changes, and know that if your workspace restricts access by IP, the hosted connection's calls can be blocked entirely.
How is this different from connecting Bitbucket through Composio?
The underlying Bitbucket API is the same, so the capability difference is small; the setup and upkeep difference is not. The Composio route the AI Overview teaches starts with piping their install script into a shell, then hand-editing ~/.hermes/config.yaml with an MCP server block and a consumer key, infrastructure you then own. Here the plugin install and one pairing handshake are the entire client-side story, and Bitbucket sits alongside your other connected accounts with one place to revoke. Choose on how much you want to run, not on features.
Hermes paired but still can't use Bitbucket
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
SafetyCulture
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.
LaunchDarkly tools
A feature management platform that helps teams build better software faster using feature flags.
Hermes Crowdin integration
Manage translations, localization projects, and language resources