Overview
OpenHands offers several integrations, including GitHub, GitLab, Bitbucket, and Slack, with more to come. Some integrations, like Slack, are only available in OpenHands Cloud. Configuration may also vary depending on whether you’re using OpenHands Cloud or running OpenHands on your own.OpenHands Cloud Integrations Settings
GitHub Settings
Configure GitHub Repositories- Allows you to modify GitHub repository access for OpenHands.
Slack Settings
Install OpenHands Slack App- Install the OpenHands Slack app in your Slack workspace. Make sure your Slack workspace admin/owner has installed the OpenHands Slack app first.
Running on Your Own Integrations Settings
Version Control Integrations
GitHub Setup
OpenHands automatically exports aGITHUB_TOKEN to the shell environment if provided:
Setting Up a GitHub Token
Setting Up a GitHub Token
- Generate a Personal Access Token (PAT):
- On GitHub, go to
Settings > Developer Settings > Personal Access Tokens. - Tokens (classic)
- Required scopes:
repo(Full control of private repositories)
- Required scopes:
- Fine-grained tokens
- All Repositories (You can select specific repositories, but this will impact what returns in repo search)
- Minimal Permissions (Select
Meta Data = Read-onlyread for search,Pull Requests = Read and WriteandContent = Read and Writefor branch creation)
- Enter token in OpenHands:
- Navigate to the
Settings > Integrationspage. - Paste your token in the
GitHub Tokenfield. - Click
Save Changesto apply the changes.
- Check organization requirements:
- Organization admins may enforce specific token policies.
- Some organizations require tokens to be created with SSO enabled.
- Review your organization’s token policy settings.
- Verify organization access:
- Go to your token settings on GitHub.
- Look for the organization under
Organization access. - If required, click
Enable SSOnext to your organization. - Complete the SSO authorization process.
Troubleshooting
Troubleshooting
-
Token Not Recognized:
- Check that the token hasn’t expired.
- Verify the token has the required scopes.
- Try regenerating the token.
-
Organization Access Denied:
- Check if SSO is required but not enabled.
- Verify organization membership.
- Contact organization admin if token policies are blocking access.
GitLab Setup
OpenHands automatically exports aGITLAB_TOKEN to the shell environment if provided:
Setting Up a GitLab Token
Setting Up a GitLab Token
- Generate a Personal Access Token (PAT):
- On GitLab, go to
User Settings > Access Tokens. - Create a new token with the following scopes:
api(API access)read_user(Read user information)read_repository(Read repository)write_repository(Write repository)
- Set an expiration date or leave it blank for a non-expiring token.
- Enter token in OpenHands:
- Navigate to the
Settings > Integrationspage. - Paste your token in the
GitLab Tokenfield. - Click
Save Changesto apply the changes.
- (Optional): Restrict agent permissions
- Create another PAT using Step 1 and exclude
apiscope . - In the
Settings > Secretspage, create a new secretGITLAB_TOKENand paste your lower scope token. - OpenHands will use the higher scope token, and the agent will use the lower scope token.
Troubleshooting
Troubleshooting
-
Token Not Recognized:
- Check that the token hasn’t expired.
- Verify the token has the required scopes.
-
Access Denied:
- Verify project access permissions.
- Check if the token has the necessary scopes.
- For group/organization repositories, ensure you have proper access.
BitBucket Setup
Setting Up a Bitbucket Password
Setting Up a Bitbucket Password
- Generate an App password:
- On Bitbucket, go to
Account Settings > App Password. - Create a new password with the following scopes:
account:readrepository: writepull requests: writeissues: write
- App passwords are non-expiring token. OpenHands will migrate to using API tokens in the future.
- On Bitbucket, go to
- Enter token in OpenHands:
- Navigate to the
Settings > Integrationspage. - Paste your token in the
BitBucket Tokenfield. - Click
Save Changesto apply the changes.
Troubleshooting
Troubleshooting
- Token Not Recognized:
- Check that the token hasn’t expired.
- Verify the token has the required scopes.

