Skip to content

Integration authentication requirements

EkLine Docs Agent connects to the tools your team already uses — source control, issue trackers, knowledge bases, and chat — to gather context and publish documentation. Before you approve a connection, review what it grants. This reference covers every integration the agent supports: the authentication method, the account role needed to connect it, whether the agent reads or writes, and the exact scopes each connection requests.

Docs Agent connects to your tools with one of three methods. In every case, you authorize the connection — EkLine never asks for a user password.

MethodHow you authorizeWhat EkLine receives
OAuth 2.0You approve the connection on the provider’s authorization screen, which lists the exact permissions EkLine requests.A scoped authorization the provider issues. Revoke it anytime from the provider or from EkLine.
Access token or API keyYou create a scoped token in the provider and paste it into EkLine.The token you created, with the scopes and role you granted it.
GitHub AppYou install the EkLine GitHub App on the repositories you select.Short-lived installation tokens that GitHub issues for those repositories.

These principles apply to every integration:

  • The agent inherits the connecting account’s permissions. Docs Agent can only read or change content that the authorizing account can already access. It cannot reach anything that account cannot.
  • Connections are organization-level. An administrator connects an integration once, and members use it inside Docs Agent sessions. The agent acts with the permissions of the account that authorized the connection.
  • You choose the scope. Select the specific repositories, spaces, or knowledge bases the agent can work with. Content you do not select stays out of reach.
  • Credentials are stored encrypted. EkLine stores integration tokens and connection credentials encrypted at rest.
  • Read and write access is explicit. The Data access column shows the level each connection is granted. Several integrations are granted write access. The scope tables list exactly what every connection requests, so your reviewers can see each permission.

Integrations marked † are enabled on request. Contact support@ekline.io to turn them on for your organization.

IntegrationAuthenticationRole required to connectData accessHow Docs Agent uses it
GitHubGitHub App installationGitHub organization ownerRead and writeReads repository code and pull requests for context, commits changes to open documentation pull requests, and posts or updates pull request comments.
GitLabAccess token (group, project, or personal) with the api and read_repository scopesGroup Owner for a group token, or a member who can create a token with both scopesRead and writeReads merge requests, issues, and repository files, commits changes, and opens merge requests in your documentation projects.
JiraOAuth 2.0A member with access to the projects, or an Atlassian service accountRead and writeReads issue titles, descriptions, and comments to update documentation or generate release notes. Jira auto-trigger † manages a webhook so the agent can start updates when an issue changes.
LinearOAuth 2.0A member with access to the issuesRead and writeReads issue titles, descriptions, and comments to update documentation or generate release notes.
ConfluenceOAuth 2.0An Atlassian account with access to the spaces, ideally a service accountRead and writeReads pages and spaces as source material. With knowledge base management †, updates managed pages and their images and publishes changes back to Confluence.
NotionOAuth 2.0A member with access to the pagesRead and writeReads pages and databases, such as product specs and design documents, as source material.
Google DriveOAuth 2.0A member with access to the filesRead and writeSearches, reads, creates, uploads, and organizes files and folders on behalf of the connecting account.
SlackOAuth 2.0 (workspace app installation)Slack workspace owner or administratorRead and writeReads channel, group, and direct message threads as source material, then posts drafts and diffs, adds reactions, and uploads files in reply.
PostHogPersonal API key with a selected regionA member who can create a personal API keyReadReads insights, HogQL query results, and feature flag configurations to ground release notes and feature documentation in usage data.
PylonAPI tokenAn administrator who can generate a Pylon API tokenRead and writeReads, updates, and creates help center articles, and publishes changes back to Pylon.
Atlassian Teamwork GraphAtlassian API token, ideally a service-account tokenAn Atlassian administrator who can create a service-account token with read and search accessRead onlySearches your whole Confluence site to find source material across every space the account can access. It never writes back.

The EkLine GitHub App requests these repository and organization permissions. GitHub shows the exact set on the installation screen before you approve it.

PermissionAccessWhy the app needs it
ContentsRead and writeRead repository files for context and commit documentation changes on a new branch.
Pull requestsRead and writeRead pull request details and open, update, and comment on documentation pull requests.
IssuesRead and writePost and update comments, add labels, and react on pull request threads.
MetadataReadBaseline access GitHub requires for every app.
Organization membersReadConfirm that a requester belongs to the connected organization.

You choose which repositories the app can access when you install it — either all repositories or a selected list. EkLine acts only on the repositories you add under Documentation Repositories or Code Repositories.

For OAuth 2.0 integrations, EkLine requests the scopes below. The provider lists them on its authorization screen when you connect, and the connecting account’s own permissions still bound what the agent can reach. A scope grants a capability — it does not mean the agent uses it in every session.

Bot-token scopes granted when you install the app on your workspace:

ScopeWhat it permits
channels:read, channels:historyList public channels and read their messages.
groups:read, groups:historyList private channels the bot is in and read their messages.
im:read, im:historyList direct message conversations and read them.
mpim:read, mpim:historyList group direct messages and read them.
app_mentions:readReceive messages that mention the app.
metadata.message:readRead message metadata.
chat:writePost messages as the bot.
reactions:read, reactions:writeRead and add emoji reactions.
files:read, files:writeRead files shared in conversations and upload files.
users:readRead workspace member profiles.
users:read.emailRead member email addresses.
team:readRead workspace metadata.
ScopeWhat it permits
read:jira-workRead issues, comments, worklogs, and attachments.
write:jira-workCreate and edit issues, comments, and worklogs.
read:jira-userRead user profiles and search for users.
read:project:jiraRead project metadata.
read:issue-type-scheme:jiraRead issue-type schemes.
read:sprint:jira-softwareRead sprints.
read:board-scope:jira-software, write:board-scope:jira-softwareRead and modify boards.
manage:jira-projectAdminister projects, versions, and components.
manage:jira-configurationAdminister site-level Jira configuration.
manage:jira-webhookRegister and delete webhooks. The Jira auto-trigger † uses this to start a session when an issue changes.
manage:jira-data-providerRegister a data provider on the site.
offline_accessKeep the connection working after the access token expires.

Confluence requests both the current granular scopes and Atlassian’s older classic scopes.

ScopeWhat it permits
read:content:confluenceRead content across the site.
read:content-details:confluenceRead detailed content information.
read:content.metadata:confluenceRead content metadata.
read:page:confluenceRead pages.
read:blogpost:confluenceRead blog posts.
read:folder:confluenceRead folders.
read:custom-content:confluenceRead custom content.
read:attachment:confluenceRead attachments.
readonly:content.attachment:confluenceRead content attachments.
read:comment:confluenceRead comments.
read:template:confluenceRead templates.
read:label:confluenceRead labels.
read:space:confluenceRead spaces.
read:space-details:confluenceRead space details.
read:hierarchical-content:confluenceRead hierarchical content, such as page trees.
search:confluenceSearch content across the site.
write:content:confluenceCreate and update content.
write:page:confluenceCreate and update pages.
write:blogpost:confluenceCreate and update blog posts.
write:custom-content:confluenceCreate and update custom content.
write:comment:confluenceCreate and update comments.
write:label:confluenceAdd and remove labels.
write:attachment:confluenceUpload and update attachments.
delete:attachment:confluenceDelete attachments.
read:audit-log:confluenceRead the audit log.
write:audit-log:confluenceWrite to the audit log.
read:confluence-content.allRead all content (classic scope).
read:confluence-content.summaryRead content summaries (classic scope).
read:confluence-space.summaryRead space summaries (classic scope).
write:confluence-contentCreate and update content (classic scope).
offline_accessKeep the connection working after the access token expires.
ScopeWhat it permits
read:userRead the connected account’s Notion profile.
read:contentRead pages and databases the account can see.
write:contentCreate pages and blocks.
update:contentUpdate existing pages and blocks.
ScopeWhat it permits
readRead issues, comments, projects, and teams.
writeCreate and update Linear resources.
issues:createCreate issues.
comments:createCreate comments.
ScopeWhat it permits
https://www.googleapis.com/auth/driveFull read and write access to the files in the account’s Drive.
https://www.googleapis.com/auth/userinfo.emailRead the account’s email address.

These integrations connect with a token you create in the provider. You control the scopes and role when you create the token.

Create a group, project, or personal access token with both of these scopes. EkLine validates that both are present and rejects a token that is missing either.

ScopeWhat it permits
apiFull read and write API access — repositories, merge requests, and issues — within the token’s role. Docs Agent uses this to read content and to open merge requests.
read_repositoryRead repository files over HTTPS.

A group access token requires the Owner role to create. The token’s role also bounds what it can do: choose the Developer role or higher so the agent can open merge requests in your documentation projects.

PostHog uses a personal API key rather than OAuth, so there is no EkLine-defined scope list. You create the key in PostHog, choose its scopes there, and paste the key and your region into EkLine. The key is only as broad as you make it, so grant it the minimum PostHog scopes the agent needs to read insights, run HogQL queries, and read feature flags.

Pylon uses an API token that an administrator generates in Pylon. The token carries the permissions of the Pylon account that created it. The agent reads, updates, and creates help center articles within those permissions.

Teamwork Graph uses an Atlassian API token, ideally on a service account. Grant the account read and search access to only the Confluence spaces the agent should search. The connection is read-only — it searches and reads, and never writes back.

GitHub and GitLab send events to EkLine over webhooks so the agent can react to pull requests, merge requests, and comments:

  • GitHub verifies each delivery with a signed secret before EkLine processes it.
  • GitLab verifies each delivery against a per-project secret token that EkLine generates and stores encrypted.
  • Requesting access. Docs Agent is available on all plans on request. Contact support@ekline.io to enable Docs Agent, and to turn on any integration marked † above.
  • Revoking access. Remove an OAuth connection from the provider or from Settings > Organization > Integrations in EkLine. Revoke an access token or API key in the provider to cut off a token-based integration, or uninstall the GitHub App from your GitHub organization settings.