# AGENTS Source: https://docs.getunblocked.com/AGENTS # Unblocked documentation repository guidance You are an experienced, pragmatic technical writer with robust content strategy and content design experience. You elegantly create just enough docs to solve users' needs and get them back to the product quickly. Rule #1: If you want an exception to ANY rule, YOU MUST STOP and get explicit permission from a team member first. BREAKING THE LETTER OR SPIRIT OF THE RULES IS FAILURE. ## Working relationship * We're colleagues working together to solve problems with our combined strengths. You are much better read; the team has more nuanced understanding of our customers. * You can push back on ideas—this can lead to better documentation. Cite sources and explain your reasoning when you do. * When you disagree with an approach, YOU MUST push back, citing specific reasons if you have them. * YOU MUST call out bad ideas, unreasonable expectations, and mistakes. * NEVER be agreeable just to be nice—honest technical judgment is what's needed. * NEVER tell anyone they are "absolutely right" or anything like that. You ARE NOT a sycophant. * YOU MUST ALWAYS ask for clarification rather than making assumptions. * NEVER lie, guess, or make up information. If you are making an inference, stop and ask for confirmation or say that you need more information. * If you're having trouble, YOU MUST STOP and ask for help, especially for tasks where human input would be valuable. * Humour and playfulness are fine, but not when they get in the way of the task at hand. Save it for when a project is finished or when a tough project needs levity. ## Project context * Format: MDX files with YAML frontmatter * Config: docs.json for navigation, theme, settings * See the docs.json schema: [https://mintlify.com/docs.json](https://mintlify.com/docs.json) && docs.json file at the root * Components: Mintlify components ## Content strategy * We document just enough so that customers are successful. Too much content makes it hard to find what people are looking for. Too little makes it too challenging to accomplish customers' goals. * Prioritize accuracy and usability of information * Make content evergreen when possible * Search for existing information before adding new content. Avoid duplication unless it is done for a strategic reason * Check existing patterns for consistency * Start by making the smallest reasonable changes ## Frontmatter requirements for pages * title: Clear, descriptive page title * description: Concise summary for SEO/navigation * NEVER skip frontmatter on any MDX file ## Writing standards * Second-person voice ("you") * Prerequisites at start of procedural content * Test all code examples before publishing; NEVER include untested code examples * Match style and formatting of existing pages * Include both basic and advanced use cases * Language tags on all code blocks * Alt text on all images * Relative paths for internal links; NEVER use absolute URLs for internal links * Use broadly applicable examples rather than overly specific business cases * Lead with context when helpful - explain what something is before diving into implementation details * Use sentence case for all headings ("Getting started", not "Getting Started") and for code block titles ("Expandable example", not "Expandable Example") * Prefer active voice and direct language * Remove unnecessary words while maintaining clarity * Break complex instructions into clear numbered steps * Make language more precise and contextual * Use [Lucide](https://lucide.dev) icon library ### Language and tone standards * **Avoid promotional language**: Never use phrases like "rich heritage," "breathtaking," "captivates," "stands as a testament," "plays a vital role," or similar marketing language in technical documentation * **Reduce conjunction overuse**: Limit use of "moreover," "furthermore," "additionally," "on the other hand" - favour direct, clear statements * **Avoid editorializing**: Remove phrases like "it's important to note," "this article will," "in conclusion," or personal interpretations * **No undue emphasis**: Avoid overstating importance or significance of routine technical concepts ### Technical accuracy standards * **Verify all links**: Every external reference must be tested and functional before publication * **Use precise citations**: Replace vague references with specific documentation, version numbers, and accurate sources * **Maintain consistency**: Use consistent terminology, formatting, and language variety throughout all documentation * **Valid technical references**: Ensure all code examples, API references, and technical specifications are current and accurate ### Formatting discipline * **Purposeful formatting**: Use bold, italics, and emphasis only when it serves the user's understanding, not for visual appeal * **Clean structure**: Avoid excessive formatting, emoji, or decorative elements that don't add functional value * **Standard heading case**: Use sentence case for headings unless project style guide specifies otherwise * **Minimal markup**: Keep formatting clean and functional, avoiding unnecessary markdown or styling ### Feature introductions * Start with action-oriented language: "Use \[feature] to..." rather than "The \[feature] feature..." * Be specific about what components can contain or do * Make introductions practical and user-focused ### Property descriptions * End all property descriptions with periods for consistency * Be specific and helpful rather than generic * Add scope clarification where needed (e.g., "For Unblocked MCP service only:") * Use proper technical terminology ("boolean" not "bool") ### Code examples * Keep examples simple and practical * Use consistent formatting and naming * Provide clear, actionable examples rather than showing multiple options when one will do ## Content organization * Structure content in the order users need it * Combine related information to reduce redundancy * Use specific links (direct to relevant pages rather than generic dashboards) * Put most commonly needed information first ## Custom SVG icons * When adding a custom SVG through page frontmatter or a card `icon` property, also add a matching mask rule to `style.css`: ```css theme={null} img[src*=".svg"] { -webkit-mask-image: url("/img/.svg"); mask-image: url("/img/.svg"); } ``` * Without the explicit mask rule, the navigation or card icon renders as a solid square. * Verify new icons in the local preview in the sidebar and card, including selected and dark-mode states. ## Git workflow * NEVER use --no-verify when committing * Ask how to handle uncommitted changes before starting * NEVER commit to the main branch directly * Create a new branch when no clear branch exists for changes * Commit frequently throughout development * NEVER skip or disable pre-commit hooks ## Warnings * **Warn when renaming or deleting docs**: If there is a change that will potentially break existing documentation URLs, such as renaming or deleting a doc, issue a warning that the Unblocked dashboard, backend, and emails may be linking to the old URL. Those sources may need to be updated, and a redirect should be provided in the documentation. # Answers Source: https://docs.getunblocked.com/api-reference/answers-overview Ask Unblocked questions and retrieve answers asynchronously. Submit a question with the PUT endpoint, then poll the GET endpoint for the answer. # Ask a Question Source: https://docs.getunblocked.com/api-reference/answers/ask-a-question https://getunblocked.com/api/v1/public-api.json put /answers/{questionId} Submit a question to Unblocked. This endpoint initiates an asynchronous question processing. Use the GET endpoint to poll for the response. # Delete a Question Source: https://docs.getunblocked.com/api-reference/answers/delete-a-question https://getunblocked.com/api/v1/public-api.json delete /answers/{questionId} Permanently delete a question and its associated answer. This operation cannot be undone. # List Answers Source: https://docs.getunblocked.com/api-reference/answers/list-answers https://getunblocked.com/api/v1/public-api.json get /answers List all questions and answers for your team, ordered by creation time (newest first). **Authentication behavior:** - **Personal Access Token (PAT) keys**: Only questions asked by that specific user are returned (user-level isolation) - **Team-wide API keys**: All questions in the team are returned # Retrieve an Answer Source: https://docs.getunblocked.com/api-reference/answers/retrieve-an-answer https://getunblocked.com/api/v1/public-api.json get /answers/{questionId} Poll a pending question for a response. Use this endpoint to check if your question has been processed and retrieve the answer. # Collections Source: https://docs.getunblocked.com/api-reference/collections-overview Organize related documents from custom data sources. Create collections for data sources that Unblocked does not connect to directly, such as customer support tools and internal wikis. You can list, update, or delete collections. Deleting a collection also removes its documents. # Create Collection Source: https://docs.getunblocked.com/api-reference/collections/create-collection https://getunblocked.com/api/v1/public-api.json post /collections Create a collection. Teams are limited to 25 collections. **Field Constraints:** - Collection name: 1-32 characters - Collection description: 1-4096 characters # Delete Collection Source: https://docs.getunblocked.com/api-reference/collections/delete-collection https://getunblocked.com/api/v1/public-api.json delete /collections/{collectionId} Delete a collection. Deleting a collection will also delete all of its associated documents. # Get Collection Source: https://docs.getunblocked.com/api-reference/collections/get-collection https://getunblocked.com/api/v1/public-api.json get /collections/{collectionId} Get a collection. # List Collections Source: https://docs.getunblocked.com/api-reference/collections/list-collections https://getunblocked.com/api/v1/public-api.json get /collections List all collections. # Update Collection Source: https://docs.getunblocked.com/api-reference/collections/update-collection https://getunblocked.com/api/v1/public-api.json patch /collections/{collectionId} Update a collection. # Context Source: https://docs.getunblocked.com/api-reference/context-overview Retrieve information from your connected data sources. Research returns a synthesized answer from connected code, pull requests, issues, messages, and documentation, with sources to support it. Search returns relevant sources from one content space. Query finds issues or pull requests using natural-language criteria and optional filters. Get URL content retrieves content from known URLs. Requests made with a Personal Access Token are attributed to the token's user. Requests made with a Team Access Token are attributed to the team. # Get URL Content Source: https://docs.getunblocked.com/api-reference/context/get-url-content https://getunblocked.com/api/v1/public-api.json post /context/get/urls Retrieve the content of one or more URLs from systems connected to Unblocked, such as pull requests, issues, documents, and message threads. **Authentication behavior:** - **Personal Access Token (PAT) keys**: Requests are attributed to the key's user - **Team-wide API keys**: Requests are attributed to the team # Query Issues Source: https://docs.getunblocked.com/api-reference/context/query-issues https://getunblocked.com/api/v1/public-api.json post /context/query/issues Retrieve issues matching a natural-language query with optional project and person filters. Unlike search, which ranks results by semantic relevance, query returns the issues that match the given criteria. **Authentication behavior:** - **Personal Access Token (PAT) keys**: Requests are attributed to the key's user - **Team-wide API keys**: Requests are attributed to the team # Query Pull Requests Source: https://docs.getunblocked.com/api-reference/context/query-pull-requests https://getunblocked.com/api/v1/public-api.json post /context/query/prs Retrieve pull requests matching a natural-language query with optional repository and person filters. Unlike search, which ranks results by semantic relevance, query returns the pull requests that match the given criteria. **Authentication behavior:** - **Personal Access Token (PAT) keys**: Requests are attributed to the key's user - **Team-wide API keys**: Requests are attributed to the team # Research Context Source: https://docs.getunblocked.com/api-reference/context/research-context https://getunblocked.com/api/v1/public-api.json post /context/research Research a question across the data sources connected to Unblocked, including code, pull requests, issues, messages, and documentation. Returns a synthesized summary along with the sources that support it. **Authentication behavior:** - **Personal Access Token (PAT) keys**: Requests are attributed to the key's user - **Team-wide API keys**: Requests are attributed to the team # Search Code Source: https://docs.getunblocked.com/api-reference/context/search-code https://getunblocked.com/api/v1/public-api.json post /context/search/code Search code across connected repositories and return the most relevant sources. **Authentication behavior:** - **Personal Access Token (PAT) keys**: Requests are attributed to the key's user - **Team-wide API keys**: Requests are attributed to the team # Search Documentation Source: https://docs.getunblocked.com/api-reference/context/search-documentation https://getunblocked.com/api/v1/public-api.json post /context/search/documentation Search connected documentation sources, such as wikis and knowledge bases, and return the most relevant sources. **Authentication behavior:** - **Personal Access Token (PAT) keys**: Requests are attributed to the key's user - **Team-wide API keys**: Requests are attributed to the team # Search Issues Source: https://docs.getunblocked.com/api-reference/context/search-issues https://getunblocked.com/api/v1/public-api.json post /context/search/issues Search issues across connected issue trackers and return the most relevant sources. **Authentication behavior:** - **Personal Access Token (PAT) keys**: Requests are attributed to the key's user - **Team-wide API keys**: Requests are attributed to the team # Search Messages Source: https://docs.getunblocked.com/api-reference/context/search-messages https://getunblocked.com/api/v1/public-api.json post /context/search/messages Search messages across connected messaging platforms and return the most relevant sources. **Authentication behavior:** - **Personal Access Token (PAT) keys**: Requests are attributed to the key's user - **Team-wide API keys**: Requests are attributed to the team # Search Pull Requests Source: https://docs.getunblocked.com/api-reference/context/search-pull-requests https://getunblocked.com/api/v1/public-api.json post /context/search/prs Search pull requests across connected repositories and return the most relevant sources. **Authentication behavior:** - **Personal Access Token (PAT) keys**: Requests are attributed to the key's user - **Team-wide API keys**: Requests are attributed to the team # Documents Source: https://docs.getunblocked.com/api-reference/documents-overview Add documents to collections for use in Unblocked answers. Create a collection before adding documents. Documents used in answers appear as references in Unblocked. You can list, add, and delete documents. # Delete Document Source: https://docs.getunblocked.com/api-reference/documents/delete-document https://getunblocked.com/api/v1/public-api.json delete /documents/{documentId} Remove a document from the collection. Removed documents may take up to a minute to be removed from the system. # List Documents Source: https://docs.getunblocked.com/api-reference/documents/list-documents https://getunblocked.com/api/v1/public-api.json get /documents List all documents. # Put Document Source: https://docs.getunblocked.com/api-reference/documents/put-document https://getunblocked.com/api/v1/public-api.json put /documents Use this endpoint to create or update a document for a given collection. Documents are unique by `uri` across your team. If the document for `uri` does not exist, it will be created. If the document for `uri` exists, it will be updated. On success, an ID for the created or updated document will be returned. Documents created or updated may take up to a minute to be available for use. # Errors Source: https://docs.getunblocked.com/api-reference/errors How the Unblocked API formats error responses and what each status code means When a request to the Unblocked API fails, the response body is a JSON object with a `status` field containing the HTTP status code. ```json theme={null} { "status": 401 } ``` ## Status codes | Status | Description | | - | - | | 400 | Bad request. The request body or parameters are invalid. | | 401 | Unauthorized. The request is missing a valid API token, or the token is invalid or expired. | | 403 | Forbidden. The API token doesn't have permission to perform this action. | | 404 | Not found. The requested resource doesn't exist, or you don't have access to it. | | 429 | Too many requests. You've exceeded a rate limit. See [Rate limits](/api-reference/rate-limits). | | 500 | Internal server error. An unexpected error occurred on the server. | | 502 | Bad gateway. The API couldn't connect to an upstream service. | | 504 | Gateway timeout. An upstream service didn't respond in time. | ## Retrying failed requests 502 and 504 responses are transient. Retry the request with a short delay between attempts. A 500 response may also be transient, but retrying isn't guaranteed to succeed. If it persists, [contact us](https://getunblocked.com/dashboard?showIntercom=true). For 429 responses, wait before retrying. See [Rate limits](/api-reference/rate-limits) for current limits. # Pagination in the Unblocked API Source: https://docs.getunblocked.com/api-reference/pagination List endpoints return up to 25 results by default. You can request 1 to 200 results per page with `limit`, although the API may return fewer than you request. When another page is available, the response includes a `Link` header with a URL marked `rel="next"`: ```http theme={null} Link: ; rel="prev", ; rel="next" ``` Request the `next` URL exactly as returned, including its `after` value. Continue following `next` links until a response has none. A short page does not mean you have reached the end. # Quickstart for the Unblocked API Source: https://docs.getunblocked.com/api-reference/quickstart The Unblocked API is a REST API that allows you to retrieve context from your connected data sources, add documents to Unblocked, and ask questions about your codebase programmatically. If you are deciding between the REST API, MCP, and the Unblocked CLI, see [Programmatic access to Unblocked](/programmatic-access). ## Create an API Token Unblocked supports two types of API tokens for authentication: Personal Access Tokens are scoped to your individual account and are ideal for personal automation, testing, and development workflows. Personal Access Tokens have a limit of **1,000 API calls per day**. See [Rate limits](/api-reference/rate-limits). In the [Unblocked web app](/using-unblocked/on-the-web), click on **Settings** --> **API Tokens**. In the **Personal API Tokens** section, click on **Create Token**. Personal Token[] Fill out the token name. You can also limit the data sources that the token will have access to in the list under **Data Sources**. Personal Token[] Copy the resulting API token. Personal Token[] Team Access Tokens can access every document in the data sources selected when the token is created. Select only the data sources this integration needs, store the token in a secret manager, and rotate it regularly. In the [Unblocked web app](/using-unblocked/on-the-web), click on **Settings** --> **API Tokens**. In the **Team API Tokens** section, click on **Create Token**. Team Token[] Fill out the token name. You can also limit the data sources that the token will have access to in the list under **Data Sources**. Team Token[] Copy the resulting API token. Team Token[] All tokens should be provided with each request to the Unblocked API using the `Authorization: Bearer ` header to authenticate the request. ## Retrieve Context The Context API retrieves information from the code, pull requests, issues, messages, and documentation connected to Unblocked. Context requests are synchronous. Use the research endpoint when you want a synthesized answer from several source types: ```bash theme={null} curl --request POST \ --url https://getunblocked.com/api/v1/context/research \ --header 'Authorization: Bearer ' \ --header 'Content-Type: application/json' \ --data '{ "query": "How does the user authentication system work?", "instruction": "Focus on the current implementation and the decisions behind it.", "effort": "medium" }' ``` The response contains a Markdown summary and the sources that support it: ```json theme={null} { "summary": "The authentication system uses short-lived access tokens...", "sources": [ { "content": "The access token is validated before...", "title": "Add short-lived access tokens", "url": "https://github.com/yourorg/yourrepo/pull/123", "sourceType": "pull_request", "provider": "github" } ], "effort": "medium" } ``` Choose a focused endpoint when you do not need a synthesized answer: | Endpoint | Use it to | | - | - | | `POST /context/research` | Research across all connected source types and return a summary with supporting sources. | | `POST /context/search/code` | Search connected source code. | | `POST /context/search/documentation` | Search connected documentation and knowledge bases. | | `POST /context/search/issues` | Search connected issue trackers. | | `POST /context/search/messages` | Search connected messaging platforms. | | `POST /context/search/prs` | Search pull requests. | | `POST /context/query/issues` | Retrieve issues that match natural-language criteria and optional project or person filters. | | `POST /context/query/prs` | Retrieve pull requests that match natural-language criteria and optional repository or person filters. | | `POST /context/get/urls` | Retrieve content from known URLs. | Search endpoints accept a `query` and optional `instruction`. Query endpoints accept a `query` plus optional `projects` and `userName` filters. The URL endpoint accepts a non-empty `urls` array. ## Create a Collection To add your own documents, first create a collection. A collection in Unblocked is a group of related documents from various data sources, such as customer support tools, knowledge bases, and internal wikis. Multiple collections can be created to manage documents from different sources. ```bash theme={null} curl --request POST \ --url https://getunblocked.com/api/v1/collections \ --header 'Authorization: Bearer ' \ --header 'Content-Type: application/json' \ --data '{ "name": "Apollo", "description": "Documents from the Apollo customer support tool including support responses.", "iconUrl": "https://my.company.com/apollo/logo.svg" }' ``` The Unblocked API will respond with the newly created collection along with an ID. This ID uniquely identifies the collection, and will be used for adding documents to Unblocked. ```json theme={null} { "id": "12345678-abcd-123456789-123456789abc", "name": "Apollo", "description": "Documents from the Apollo customer support tool including support responses.", "iconUrl": "https://my.company.com/apollo/logo.svg" } ``` Collections can also be created in the Unblocked web app. Once you've signed in, click **Data Sources** in the sidebar, and then the **Add Data Sources** section. Scroll to the Custom section and select **Public API Collection**. ## Add a Document Add a document to the collection using the collection's ID. In addition to the collection ID, provide a title, a body (in plain text or Markdown), and a URI for the document. A document is uniquely identified by its URI. The URI will be used to link to the source of a reference in an answer. ```bash theme={null} curl --request PUT \ --url https://getunblocked.com/api/v1/documents \ --header 'Authorization: Bearer ' \ --header 'Content-Type: application/json' \ --data '{ "collectionId": "12345678-abcd-123456789-123456789abc", "title": "Password Reset Guide", "body": "To reset your password, visit ...", "uri": "https://my.company.com/apollo/ticket/123456" }' ``` ## Get Answers The Answers API allows you to programmatically ask questions about your codebase and receive answers from Unblocked. The API uses an asynchronous pattern where you submit a question and then poll for the response. Responses are in Markdown format. The Answers API is currently limited to 1,000 questions per day per team. See [Rate limits](/api-reference/rate-limits). ### Submit a Question First, submit your question using a unique `questionId` (must be a globally unique UUID): ```bash theme={null} curl --request PUT \ --url https://getunblocked.com/api/v1/answers/12345678-abcd-123456789-123456789abc \ --header 'Authorization: Bearer ' \ --header 'Content-Type: application/json' \ --data '{ "question": "How does the user authentication system work?" }' ``` The API will respond with a `204 No Content` status, indicating the question has been queued for processing. ### Poll for the Answer Use the same `questionId` to poll for the answer: ```bash theme={null} curl --request GET \ --url https://getunblocked.com/api/v1/answers/12345678-abcd-123456789-123456789abc \ --header 'Authorization: Bearer ' ``` While processing, the API returns: ```json theme={null} { "state": "processing" } ``` Once complete, the API returns the answer with references: ```json theme={null} { "state": "complete", "result": { "answer": "The user authentication system uses JWT tokens... ", "references": [ { "htmlUrl": "https://github.com/yourorg/yourrepo/blob/main/src/auth/login.js#L42" } ] } } ``` # Rate limits Source: https://docs.getunblocked.com/api-reference/rate-limits Request limits for the Unblocked API The Unblocked API applies the following limits. Limits reset at midnight Pacific Time. | Limit | Scope | | - | - | | 1,000 API calls per day | Each Personal Access Token. | | 1,000 questions per day | The [Answers API](/api-reference/quickstart#get-answers), per team. | | 10,000 MCP tool calls per day | Per team for [Team Access Tokens](/api-reference/quickstart#create-an-api-token), and per team member across [Personal Access Tokens](/api-reference/quickstart#create-an-api-token), OAuth connections, and the desktop app used with [Unblocked MCP](/unblocked-mcp/mcp-overview). | These limits are guardrails against abuse, not a measure of expected usage. If your workflows need more headroom, [contact us](https://getunblocked.com/dashboard?showIntercom=true) and we can raise the limits for your team. # Security Events Source: https://docs.getunblocked.com/api-reference/security-events-overview Export team audit logs to a security information and event management system. Use Security Events to export a feed of team activity to your security information and event management (SIEM) system. The feed currently includes audit logs. ## Poll for new events Call [List Audit Logs](./security-events/list-audit-logs) to retrieve events. Each response that contains events includes a `next` link, even when the page is not full. Follow each `next` link until the API returns an empty response. Save the URL that returned the empty response. Use that same URL the next time you poll for events. The URL does not expire. # List Audit Logs Source: https://docs.getunblocked.com/api-reference/security-events/list-audit-logs https://getunblocked.com/api/v1/public-api.json get /audit-logs List audit logs for the authenticated team in ascending creation order. Use `since` to start at an inclusive date-time or `after` to continue from a previous page. Supplying both parameters returns HTTP 400. Each page with audit logs includes a `next` link, even if the page is not full. Follow that link until the response is empty. Then stop and retry the same URL when you poll again. Cursors use stable keyset pagination and never expire. **Authentication behavior:** - **Personal Access Token (PAT) keys**: Team admins can export all audit logs for their team; non-admin members receive 403 Forbidden. - **Team-wide API keys**: All audit logs for the team are returned. # Adding a billing admin Source: https://docs.getunblocked.com/billing/billing-admin How to invite a team member to manage payments While anyone who has an account in your Unblocked workspace can select and pay for a plan, you can also add a dedicated billing administrator who can set up and manage your team's payments. After you've [selected a plan](/billing/setting-up-billing), you'll be directed to a page where you can select your billing term, number of licenses, and enter payment details. At the top of this page, you'll notice a link to invite a user to enter payment information for your team. add-admin This link will open a modal where you can enter this individual's email address or copy a unique link to invite them to the payment page. invite-admin By accepting the email invitation or following the invite link, your billing admin will be able to update any payment details and enter a credit card to pay for your team's plan. Moving forward, your billing admin will receive receipts, renewal notices, and other billing-related emails from Unblocked. # Changing your payment method Source: https://docs.getunblocked.com/billing/changing-payment-method How to update your credit or debit card For customers on the Platform plan, you can update your credit or debit card at any time. To do so, sign in to Unblocked on the web, and then click **Settings** in the sidebar of the Unblocked web app. Under **Team Settings**, select **Billing**. Here you'll see your Unblocked plan and your current payment method. payment-method To add a new credit card, select **Update payment**. You'll then be prompted to enter the details for a new credit or debit card. Once you're done select **Update payment method** to save your card details. add-credit-card Your new card will charge at the start of your next billing cycle. # How licensing works Source: https://docs.getunblocked.com/billing/how-licensing-works Learn which actions need an Unblocked license, like questions in the web app, Slack, or MCP, and how the shared credit pool covers Code Reviews and CI reports. Unblocked licensing is built around two ideas: **licenses** for the people on your team who use Unblocked, and a **shared credit pool** that covers everything your team does with it: questions, MCP calls, Code Reviews, and CI reports. ## Licenses A license is required for each member of your team who uses Unblocked directly. A licensed user can: * Ask questions in the Unblocked web or Mac app * Ask questions in your messaging platform (like Slack) * Query Unblocked through the MCP server from their coding tools and agents **Receiving Code Reviews or CI reports does not require a license.** Your whole team benefits from Unblocked's code reviews on pull requests and reports from the CI Failure Agent, regardless of who holds a license. This activity draws from your team's shared credit pool instead. ## The shared credit pool Every license adds **300 credits per month** to a pool shared across your team. Credits measure usage in a single currency, so you don't need to track different products separately: | Activity | Credits | | - | - | | Answer (web app, Mac app, or Slack) | 4 | | MCP call | 2 | | Code Review (per review) | 9 | | CI report (per report) | 9 | The pool belongs to the team, not to individuals. A heavy user and a light user on the same team balance each other out, and agent activity like Code Reviews is covered by the same pool, no matter whose pull request is reviewed. Credits reset at the start of each monthly billing period. ## What a license gets you Each license contributes 300 credits — enough for roughly **75 answers**, or **150 MCP calls**, or **33 Code Reviews** per month, or any mix. Because credits pool at the team level, what matters is the total across your team, not any one person's usage. ### Example: a 10-person team A team with 10 licenses has a shared pool of **3,000 credits** each month. A typical month might look like: | Activity | Volume | Credits | | - | - | - | | Answers | 180 | 720 | | MCP calls | 250 | 500 | | Code Reviews | 110 pull requests | 990 | | CI reports | 15 pull requests | 135 | | **Total** | | **2,345 of 3,000** | Everything, including reviews on pull requests from teammates who don't hold licenses, is covered by the pool. ### Example: an agent-heavy team A 25-person platform team leans hard on Code Review and uses Q\&A less. Their pool is **7,500 credits**: | Activity | Volume | Credits | | - | - | - | | Answers | 150 | 600 | | MCP calls | 700 | 1,400 | | Code Reviews | 500 pull requests | 4,500 | | CI reports | 25 pull requests | 225 | | **Total** | | **6,725 of 7,500** | The same pool flexes to whatever mix of human questions and agent activity your team actually has. ### Example: growing MCP usage A 40-person team has rolled Unblocked's MCP server out to their coding agents, so MCP calls dominate. Their pool is **12,000 credits**: | Activity | Volume | Credits | | - | - | - | | Answers | 400 | 1,600 | | MCP calls | 2,600 | 5,200 | | Code Reviews | 350 pull requests | 3,150 | | CI reports | 80 pull requests | 720 | | **Total** | | **10,670 of 12,000** | ## If your team uses more than its pool Most teams' usage fits comfortably within their pool. If your team consistently uses more, you can add a credit pack — a recurring block of additional credits added to your pool each billing term. See [Managing your plan](/billing/managing-plan) for details. You can monitor your team's credit usage any time on the Usage & Billing page. ## Assigning licenses Admins can assign a license to a team member before that person has created an Unblocked account, which simplifies onboarding for new hires. Whether other users receive a license automatically or must request one is controlled by the team's License Approval setting. Admins can claim an available seat for themselves directly. Admins can use the Code Review User Access setting to control which users are eligible to receive automated code reviews, and individual users can opt out of the CI Failure Agent at the bottom of any CI report they've received, or under Personal Settings. # Managing your plan Source: https://docs.getunblocked.com/billing/managing-plan How to change plans and manage users If you're using Unblocked on the [Platform plan](/billing/unblocked-plans), you can change your plan details at any point. To make changes to an Enterprise plan, please contact our sales team. ### Updating your plan To update your payment details or manage and assign licenses, sign in to Unblocked on the web, and then click **Settings** in the sidebar of the Unblocked web app. Under **Team Settings**, select **Billing**. Here you'll see your team's current plan details. current-plan ### Adding users to your team If your team is using SSO with Unblocked, please refer to [that article](/team-settings/sso) for instructions on adding users. You can add users at any point in your billing cycle. To do so, follow the instructions in the [inviting users article](/inviting-users). You'll be charged a prorated amount for any users who are added during a billing cycle. Users who are added to your plan claim their license when they ask Unblocked their first question. These members will appear in the **Licensed Members** table. ### Removing users from a paid license The **Licensed Members** table shows all users who have been assigned a license for your Unblocked workspace. Select the three dot menu next to a user and then choose **Remove License** from the dropdown menu. You'll then be asked to confirm that you want to remove a license for this user. This license can now be assumed by any new members on your team. Users who have been removed from a paid license will still have access to your Unblocked Team and their past questions.
removing-users
### Managing Licenses You can manage the number of licenses you want to pay for and set how you want to assign licenses to new team members. Under the **Manage Licenses** section, click the **Manage Licenses** button. manage-licenses #### Paid Licenses You can adjust the number of licenses you pay for by clicking **Edit**, then changing your licenses count. When you decrease your license count, the updated costs will be reflected on your next bill. The number of licenses can only be decreased to the total number of users with an assigned license. To go below this number, you'll need to remove a license from a user. #### Credit packs If your team consistently uses more credits than your license pool provides, you can purchase a credit pack from the Billing page to add capacity without buying additional licenses. A credit pack is a recurring charge: its credits are added to your pool at the start of each billing term. Unused credits don't carry over between terms. Enterprise teams typically need larger credit packs than the Platform self-service options provide. Contact your account team to add a custom-sized pack to your plan. #### License Approval You can manage how you want licenses assigned to new members who join your team. **Auto-approve new licenses:** When this is set, a license will automatically be assigned to new members when they ask a question. To set a maximum limit for automatically assigned licenses, select **`Require manual approval after ⁠n licenses`**. When this number is reached, new members will have to [request a license](/request-license) to keep using Unblocked. **Manually approve new licenses**: All members requesting a license will require manual approval from an Unblocked Admin. # Setting up Billing Source: https://docs.getunblocked.com/billing/setting-up-billing How to set up payments for Unblocked The Platform plan can be set up through self-service. For help setting up payments for the Enterprise plan, please contact our sales team. ### Selecting a plan You can select a plan at any point during your team's 21-day free trial. To start, sign in to Unblocked on the web, and then click **Settings** in the sidebar of the Unblocked web app. Under **Team Settings**, select **Plans**. This will pull up a page with each of the Unblocked plans listed. billing-plans Here you can either select the Platform plan, or contact our sales team to further discuss the Enterprise plan. ### Entering payment details If you've selected the Platform plan, you'll be directed to a screen to enter your payment details. payment-form Before entering your credit card you'll need to select either a monthly or annual billing cycle, and then enter the number of licenses you are purchasing for your team. This information will be used to give you a billing total. Next, you'll need to enter the email address for the billing contact. This email address will be used by Unblocked to send receipts and other billing reminders. You can also invite a user to your Unblocked Team to handle billing. Follow the instructions in the article on [adding a billing admin](/billing/billing-admin) to set this up. Finally, enter your credit card information and select **Pay Now**. Your team will be automatically placed on your selected plan and billed according to the term you selected. # Unblocked Plans Source: https://docs.getunblocked.com/billing/unblocked-plans Compare Unblocked's Platform and Enterprise plans, learn what each includes, and see how the 21-day free trial works with no credit card required. Unblocked is built to support software developers and teams of all sizes, so plans are customized for specific needs. ## Available plans Unblocked offers two plan types: **Platform** includes code reviews, PR summaries, the CI Failure Agent, and unlimited data sources for context, plus the ability to ask questions about your software and its history. It also includes API access, MCP integrations for tools like Claude, Cursor, and Copilot, and incognito mode for private questions. **Enterprise** includes everything in Platform, plus SSO, Data Shield permission enforcement, and support for enterprise data sources like GitHub Enterprise, Jira Data Center, and Bitbucket Data Center. Enterprise customers also receive priority support via Slack and Zoom. More information about the features available in each plan is [on our website](https://www.getunblocked.com/pricing). Every license on either plan contributes to a shared team credit pool that covers questions, MCP calls, Code Reviews, and CI reports. See [How licensing works](/billing/how-licensing-works) for details. ## The free trial period All new Unblocked accounts receive a 21-day free trial that includes access to all the features available on the Enterprise plan. A credit card is not required to start a trial. You can [select a plan and set up billing](/billing/setting-up-billing) any time during your trial. # Product updates Source: https://docs.getunblocked.com/changelog New releases and improvements to Unblocked ## Improvements * **Risk policy validation**: An invalid `.unblocked/risk-policies.yaml` file no longer fails silently. The [risk assessment](/code-review/risk-assessment) comment lists each schema error and where it is. When a pull request edits the policy file, the code review flags errors in the proposed version. * **Updated pull request notices**: When an [Unblocked Code](/unblocked-code) task updates an existing pull request instead of opening a new one, Unblocked now replies "Updated PR #N" in the Slack, web, or pull request thread where the task started. * **Clearer auto-answer notice**: The Slack notice for an auto-answer that is awaiting approval is shorter. It no longer mentions "protected content". ## Bug fixes * Fixed Unblocked removing all existing reviewers from [Bitbucket Data Center](/data-sources/bitbucket-data-center) pull requests when it updated the description, replied in PR Chat, or changed the title, draft state, or base branch. * Fixed [GitLab](/data-sources/gitlab) service account connections repeatedly asking to be reconnected. * Fixed [Azure DevOps](/data-sources/azure-devops) organizations that use legacy `*.visualstudio.com` URLs failing to sync. * Fixed Bitbucket and Bitbucket Data Center pull request links in a question returning "not found". * Fixed turning on auto-merge for GitHub pull requests from Unblocked. You can choose squash, merge, or rebase; squash is the default. * Fixed [PR Chat](/code-review/pr-chat) no longer responding once a review thread passed 20 messages. Threads now support up to 50 messages. * Fixed PR Chat sometimes saying code didn't exist when it lived in a different file in the repository. * Fixed Unblocked Code tasks failing with "run finished without delivering a result" after the agent had finished. * Fixed [Slack](/data-sources/slack) channels shared with an external organization appearing selected without being indexed. These Slack Connect channels can no longer be selected. * Fixed Unblocked replying in Slack threads to messages meant for other people or bots, for example "@Linear create an issue". * Fixed rotating [Datadog](/data-sources/datadog) API and application keys failing with an organization mismatch error on older installations. * Fixed answers being unable to open documents from [Public API](/custom-integrations) collections that appeared in search results. ## New features * **Unblocked plugin for ChatGPT and Codex**: Install the Unblocked plugin from the ChatGPT plugin directory to answer questions in [ChatGPT](/unblocked-mcp/install-chatgpt) and the [Codex desktop app](/unblocked-mcp/install-codex) with context from your team's code, pull requests, messages, and documentation. * **Enterprise Managed Authorization for Claude**: Organizations using Claude with Okta can set up the Unblocked connector so members connect through Okta, without a separate Unblocked browser sign-in. This requires Okta SSO and SCIM provisioning. See [Claude + Okta](/unblocked-mcp/enterprise-managed-authorization/claude-okta). * **Manage pull requests from Unblocked**: Ask Unblocked to close or reopen a pull request, mark it as a draft or ready for review, change its title or base branch, add or remove labels and reviewers, or turn auto-merge on or off. Works on GitHub, GitHub Enterprise Server, GitLab, Bitbucket, and Azure DevOps; which actions are available depends on the code host. You need write access to the repository. ## Improvements * **Coding task page**: In [Unblocked Code](/unblocked-code), blocking problems now appear under **Issues** and non-blocking advice under **Tips**. The Description and Progress sections collapse, and start collapsed on finished tasks. * **Suggested coding tasks are editable**: Clicking a suggested coding task fills the input so you can edit it before starting, instead of starting it right away. * **Network access guidance for self-hosted source control**: When Unblocked Code can't reach your GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center host, setup now shows **Requires network access** and links to the network access settings. * **More MCP clients can sign in**: The [Unblocked MCP](/unblocked-mcp/mcp-overview) server now accepts OAuth sign-in from any client that redirects to an HTTPS address, localhost, or a custom app scheme. * **Clearer Custom MCP access choice**: When you add a [Custom MCP](/data-sources/custom-mcp) server, setup asks whether to use shared access or respect each person's permissions. * **Unselected Jira projects**: Asking about a [Jira](/data-sources/jira) project that isn't selected for indexing now says so, instead of reporting access denied. * **Azure DevOps pull request links**: Azure DevOps pull request URLs are now recognized when you share them in a question. ## Bug fixes * Fixed code review comments on GitHub sometimes landing on the wrong lines. * Fixed code reviews occasionally running against an older commit instead of the pull request's latest one. * Fixed GitLab merge requests being approved after new commits were pushed. * Fixed code reviews occasionally failing on a brief network error. * Fixed [Snowflake](/data-sources/snowflake) OAuth connections failing with `invalid_client` when the client ID or secret contained `+`, `/`, or `=`. * Fixed [Jira](/data-sources/jira) syncs failing on attachments with no file type or from deleted users. * Fixed [GitLab](/data-sources/gitlab) members with the Security Manager role losing repository access. * Fixed answers using an outdated copy of a GitHub issue when you shared its link. * Fixed some pull request comments on Azure DevOps, GitHub Enterprise Server, and Bitbucket Data Center being attributed to the wrong pull request. * Fixed Unblocked Code tasks being blocked on inner-source repositories in GitHub Enterprise. * Fixed the Mac app installing updates and restarting as soon as you returned to it. It now waits until the app has been in the background for five minutes. * Fixed **Add more repositories** in source control settings leaving you on GitHub with no way back. It now opens in a new tab. ## New features * **Expanded repository-host support**: [Unblocked Code](/unblocked-code) now runs coding tasks against GitHub Enterprise Server, GitLab.com, GitLab Self-Managed, Bitbucket Cloud, and Bitbucket Data Center as well as GitHub.com. * **Data Shield for any Custom MCP**: [Data Shield](/team-settings/data-shield) can now be turned on for a [Custom MCP](/data-sources/custom-mcp) server that authenticates with OAuth. Once enabled, each member connects their own account to the server, and Unblocked calls its tools with that member's credentials instead of the shared connection. ## Improvements * **Coding task details**: A task's page now shows its detailed description in a collapsible, formatted **Description** section, and coding agent tips also render as formatted Markdown. * **Coding tasks read more history**: [Unblocked Code](/unblocked-code) clones repositories with enough commit history for the agent to use `git log` and `git blame`, instead of shallow clones that left it guessing. Repositories that use Git LFS now clone their real file contents. * **Longer code reviews finish**: A [code review](/code-review/how-it-works) can now run much longer before timing out. * **Risk assessment on every review**: [Risk](/code-review/risk-assessment) is now scored and reported even when a review has no comments to post. * **PR Chat reactions**: [PR Chat](/code-review/pr-chat) reacts with 👀 when it picks up a mention and swaps in 👍 once the work is actually done, including when it triggered a code review. Asking it to fix code, such as "fix this and re-review", now makes the change instead of only re-reviewing. * **Zendesk brands in presets**: [Data source presets](/data-sources/data-source-presets) can include a subset of [Zendesk](/data-sources/zendesk) brands, the way GitHub presets can scope to specific repositories. * **Connection guidance**: When Unblocked can't read a linked page because the integration or your personal account isn't connected, it now says so and prompts you to connect, rather than reporting the page as not found. * **"Not selected for indexing" is no longer reported as "not found"**: Asking about a repository that is connected but not selected for indexing now says so and points at Repositories settings, rather than answering as though the repository doesn't exist. * **Confluence short links resolve**: Pasting a [Confluence](/data-sources/confluence) tiny link (`/wiki/x/...`) now resolves to the page it points at, so the document is used when answering. * **Snowflake schema discovery**: [Snowflake](/data-sources/snowflake) questions get more time and steps to find the right tables, so fewer time out, and a query that omits the database name resolves automatically when the connection has only one database. * **Longer skills**: [Skill](/unblocked-mcp/skills) instructions can be up to 20,000 characters, up from 10,000. * **Last Active in the usage export**: The billing usage CSV export includes a Last Active column, covering questions, CI reports, code reviews, and tool calls. * **Correct API limits for self-hosted source control**: GitHub Enterprise Server and self-managed GitLab were given GitHub.com's and GitLab.com's rate limits, which throttled them well below what their instances allow. Both now use limits derived from the instance itself. ## Bug fixes * Fixed [Google Drive](/data-sources/google-drive-for-workspaces) files shared with "anyone with the link" appearing in answers for every member with a connected Google account, including people who had never opened them. Link-shared files are no longer indexed, and previously indexed ones are removed. * Fixed [Zendesk](/data-sources/zendesk) syncs getting stuck processing or missing tickets. * Fixed some [Datadog](/data-sources/datadog) and [Sentry](/data-sources/sentry) connections failing with a decryption error. * Fixed [Linear](/data-sources/linear) issues and comments posted by an app on someone's behalf losing the person's name. * Fixed webhooks from self-hosted GitLab and GitHub Enterprise Server being dropped when the instance is reachable under more than one hostname. * Fixed reactions failing on GitLab Self-Managed merge requests. * Fixed [GitLab](/data-sources/gitlab) disconnects failing when a webhook had already been removed. * Fixed [Bitbucket](/data-sources/bitbucket) repository pages after the first failing to load. * Fixed [Confluence](/data-sources/confluence) attachments failing to index when the filename contained unusual characters. * Fixed coding tasks being cancelled when the agent reported an "Unverified" status, and steps hanging for many minutes on a stalled model response. * Fixed coding task repository access being checked against a member's primary account rather than the account used for the task. * Fixed coding tasks failing against source control servers that redirect, and the code environment log appearing empty for repositories with no code init script. * Fixed [Custom MCP](/data-sources/custom-mcp) servers that share one OAuth resource across tenant endpoints being rejected at connection time. * Fixed MCP tool responses including citation reference IDs that clients can't resolve. * Fixed mermaid diagrams overflowing their box and the Mac app diagram popup being mispositioned on large diagrams. * Fixed the Slack bot occasionally not replying at all when it couldn't decide how to respond. It now retries and surfaces an error. * Fixed the private-channel **Grant access** button in Slack settings returning you to the dashboard home instead of Slack settings. * Fixed PR Chat replies taking several minutes during busy periods. * Fixed questions occasionally failing with an error while a deployment was rolling out. * Fixed the billing contact email not saving when changed from the dashboard. ## New features * **Custom MCP is now generally available**: Connect any [Model Context Protocol server](/data-sources/custom-mcp) reachable over public HTTPS from Settings › Data Sources, and Unblocked uses its read-only tools when answering questions. Servers can authenticate with OAuth or with HTTP headers such as an API key or bearer token — with OAuth you authorize the server in your browser and Unblocked handles discovery, registration, and token refresh. You choose which of the server's tools Unblocked can use, and answers cite the tools they drew on. ## Improvements * **Archive controls for coding tasks**: An `Open tasks` / `All tasks` filter replaces the "Show archived" toggle on [Unblocked Code](/unblocked-code) task lists, and finished tasks have an explicit Archive action. Tasks you archive or restore by hand keep that state. * **Steadier syncs against rate-limited source control**: Unblocked now learns each installation's actual API quota from what the provider reports rather than assuming a fixed ceiling, backs off once per throttling episode instead of once per rejected request, and pauses an installation while its provider is throttling it. Bitbucket and GitLab workspaces above the base tier sync considerably faster, and a burst of rejections no longer collapses an installation's throughput for hours. * **Threads open immediately**: Starting a thread or a coding task in the web and Mac apps navigates straight to it instead of waiting on the server round trip. * **Thread titles match your language**: Generated thread titles are now written in the language you asked your question in. * **Clearer coding task reports**: When an [Unblocked Code](/unblocked-code) task hits a problem, the summary now lists what you can actually change — a secret to add, or lines for the init script — instead of internal role and tool names. * **"Not yet indexed" is no longer reported as "not found"**: Asking about a [Confluence](/data-sources/confluence) page in a space that isn't enabled for indexing now says so, rather than answering as though the page doesn't exist. * **Sentry short IDs**: [Sentry](/data-sources/sentry) questions can now name an issue by its short ID, such as `UNBLOCKED-2`, instead of only the numeric ID. * **Mac app sidebar**: Expanding the sidebar no longer resizes the window when there's already room for it, and collapsing it never changes the window size. ## Bug fixes * Fixed [SharePoint](/data-sources/microsoft-sharepoint) syncs stalling. Deleted items, slow drives, and documents the processor couldn't read each left a sync retrying instead of moving past them. * Fixed large PDFs exhausting memory during document processing and stalling ingestion. * Fixed [GitHub](/data-sources/github) issue comment ingestion aborting when a comment had been deleted. * Fixed [GitLab](/data-sources/gitlab) discussion ingestion failing for members with no profile picture. * Fixed [Bitbucket](/data-sources/bitbucket) repository metadata failing to load for some workspaces. * Fixed raw citation metadata occasionally appearing in answers. * Fixed MCP tool calls continuing to run after the caller had already timed out. Clients now get a clear error telling them to retry. * Fixed the Slack bot missing `@Unblocked` mentions when it was slow to respond. * Fixed the "update permissions" link for [Unblocked Code](/unblocked-code) returning a 404 for members who aren't GitHub organization owners. * Fixed members with more than one linked account of the same source control type being given their lower role instead of their highest. * Fixed [Unblocked Code](/unblocked-code) tasks failing on a repository left half-written by an interrupted checkout, on a detached `HEAD`, and when the branch name was already taken by conflicting edits. * Fixed Unblocked Code file search silently skipping files too large to read, making an unsearched file look like a file with no matches. * Fixed the Unblocked Code setup screen giving no explanation to teams whose source control isn't supported, and the "ready" dialog not appearing after permissions were accepted in another browser tab. ## New features * **Unblocked Code is in public beta**: [Unblocked Code](/unblocked-code) is available to all GitHub customers. Describe a coding task wherever you already chat with Unblocked — Slack, the web and Mac apps, or an `@unblocked` mention on a pull request — and it runs remotely and opens a pull request when it's done. Existing GitHub customers will need to accept the `Contents: write` before it can push code and open pull requests. There's no additional charge during the beta, and organization-owned repositories on GitHub.com are supported. For a high-level overview, see the [Unblocked Code page](https://getunblocked.com/unblocked-code/). * **Google Cloud MCP**: Connect [Google Cloud](/data-sources/google-cloud-mcp) from Settings › Data Sources and let Unblocked reach your Compute, Logging, and Monitoring services when answering questions. Access uses Workload Identity Federation, so there's no service-account key or other long-lived Google credential to create. * **Code review status checks**: A completed [code review](/code-review/how-it-works) now posts an "Unblocked Review" commit status on the pull request, so review state shows up in your checks UI and can gate merges. Statuses are posted on GitHub, GitHub Enterprise, GitLab, GitLab Self-Managed, Bitbucket, and Bitbucket Data Center. Only successful reviews post a status — a queued, running, or failed review never blocks a merge. On GitHub this needs the `Commit statuses: write` permission — accepted once by a GitHub organization owner. * **Generated pull request descriptions follow your template**: When Unblocked writes or rewrites a [pull request description](/code-review/pr-chat), it now resolves your repository's pull request template — `pull_request_template.md` under `.github/`, the repository root, or `docs/`, falling back to your organization's `.github` repository — and fills in that structure instead of replacing it. Source-backed context and its citations are written into the template's own sections. ## Improvements * **Adjustable SharePoint content age**: SharePoint indexes documents created or modified in the last five years. Teams that want a narrower window can now ask for one as short as one year. * **Redesigned data source picker**: The Add Data Source dialog lists each provider as a row with a short description of what it syncs, alongside search and category navigation. ## Bug fixes * Fixed members who aren't GitHub organization owners hitting a 404 when accepting the updated GitHub App permissions. They're now given the link to pass to an owner instead. * Fixed [SharePoint](/data-sources/microsoft-sharepoint) documents that had dropped out of the indexed set still turning up in answers. * Fixed [Confluence](/data-sources/confluence) ingestion failing on attachments with unsupported file types, such as `.zip`. * Fixed [external website](/data-sources/external-websites) crawls being refused for valid URLs. * Fixed [PostHog](/data-sources/posthog) questions failing when answering them needed both a schema lookup and a query. * Fixed [Data Shield](/team-settings/data-shield) UI now lists Slack with a permanently enabled toggle, making it clear that private channel content is always access-controlled and that the protection can't be turned off. * Fixed [Snowflake](/data-sources/snowflake) now returns up to 1,000 rows. * Fixed Safari offering to save a password when you typed into a search or filter field. ## New features * **Risk labels on pull requests**: [Risk assessment](/code-review/risk-assessment#risk-labels) now adds a `risk: ` label to each reviewed pull request on GitHub and GitHub Enterprise, so you can route automation and filters off the score without parsing the review comment. Stale labels from earlier assessments are removed. The label has to already exist in the repository for Unblocked to apply it. ## Improvements * **Shared Memories understand follow-up questions**: [Shared Memories](/unblocked-chat/shared-memories) retrieval now reads the recent conversation alongside your question, so a follow-up like "what about staging?" matches the right notes. Previously it scored notes against the question alone, and skipped retrieval in Slack, where the question lives in the prior messages. * **Fewer dashboard interruptions**: Announcements, feedback prompts, and install prompts now share a single two-day cooldown, so several can no longer stack up in one session. ## Bug fixes * Fixed the rare occurrence where code reviews on Bitbucket Data Center showed hundreds of unrelated files. * Fixed [SharePoint](/data-sources/microsoft-sharepoint) syncs stalling on tenants with large numbers of sites, and on sites that returned permission errors or had no page collection. * Fixed connecting SharePoint failing for tenants using restricted `Sites.Selected` app permissions. * Fixed repository search capping at 50 results when more repositories were indexed, without saying so. Results now page through the full set. * Fixed code review memories being wiped on busy repositories when memory grouping exceeded the request timeout. * Fixed [Zendesk](/data-sources/zendesk) ticket searches timing out when the question named a person, and Zendesk syncs failing when the OAuth token expired mid-sync. * Fixed self-hosted Bitbucket Data Center and GitLab sign-up looping back to the source code system picker, and app creation not advancing past the manifest form. * Fixed Copy Link producing a broken link on the first message in a thread. ## New features * **Context endpoints in the Unblocked API**: The [Unblocked API](/api-reference/quickstart#retrieve-context) now exposes `/context/*` endpoints covering the same research, search, query, and URL retrieval you get from the [Unblocked CLI](/unblocked-cli/cli-query) — so you can build the CLI's behavior into your own scripts, agents, and CI jobs without shelling out to it. ## Improvements * **Microsoft Teams channels in analytics**: The Most Active Channels chart in [team analytics](/team-settings/analytics) now ranks channels across every connected messaging platform. * **Risk assessment runs on every review**: [Risk assessment](/code-review/risk-assessment) is now scored on every review, including reviews that found issues — those previously skipped risk review and reported no risk at all. On a re-review it scores the whole pull request rather than only the commits since the last review, so a change added earlier in the pull request and edited since is no longer misread as destructive. * **Fuller pull request context in Chat**: Questions in [chat](/unblocked-chat/chat-overview) about a pull request now retrieve the whole pull request — description, discussion, and diff — and resolve pull requests in other connected repositories, replacing the previous diff-only lookup. * **Filter Zendesk tickets by tag**: [Zendesk](/data-sources/zendesk) ticket tags are now indexed, so questions can narrow to the tickets carrying a specific tag. * **PostHog links resolve in Chat**: Paste a link to a [PostHog](/data-sources/posthog) dashboard, notebook, survey, experiment, or feature flag and Unblocked reads the resource behind it, subject to your [Data Shield](/team-settings/data-shield) settings. * **Fresher GitHub issue discussions**: New and edited comments on [GitHub](/data-sources/github) issues are re-indexed within seconds of being posted, instead of waiting for a periodic sync — matching the behavior already in place for pull request comments. ## Bug fixes * Fixed Unblocked posting unrequested replies in a Slack thread when a second bot was participating in that thread. * Fixed [risk policies](/code-review/risk-assessment) being weakened by the model, so a change matching a `high` policy could be scored `medium`. Matched policy names are now reported with the assessment. * Fixed questions about Microsoft Teams and Slack channel history returning no messages. * Fixed [Zendesk](/data-sources/zendesk) syncs stalling on accounts with large numbers of end users. Only agents and administrators are synced now; customer details still come from the tickets themselves. * Fixed connecting [PostHog](/data-sources/posthog) failing partway through the OAuth handshake. * Fixed failed invoices not being retried after a payment card was updated. ## New features * **Memories**: Unblocked now remembers what it learns and applies it to later answers. [Personal Memories](/unblocked-chat/personal-memories) hold preferences about you — your role, the format you want answers in, the tools you work with, sources you'd rather it didn't trust — and apply in private one-on-one conversations. [Shared Memories](/unblocked-chat/shared-memories) hold facts about your organization: when someone corrects an answer in a conversation your whole team can read, Unblocked checks the correction against your connected sources and applies it to everyone's answers from then on. Personal Memories are on by default and each person can opt out under Settings › Preferences. Admins control Shared Memories under Settings › Answers. * **SQL context is now generally available**: [Snowflake](/data-sources/snowflake) no longer needs to be requested. Connect it, choose which databases to index, and Unblocked maps their schema and runs read-only queries against your selection to answer questions from the data itself rather than from documents about it. Snowflake remains the only supported database. * **PostHog**: Connect your [PostHog](/data-sources/posthog) organization as a data source from Settings › Data Sources › Analytics. Unblocked indexes dashboards, notebooks, surveys, experiments, and feature flags from the projects you select, and references them in answers with links back to the original PostHog resources. Connecting uses OAuth, so there's no API key to create. PostHog Cloud organizations in the US and EU regions are supported. * **Update pull request descriptions from chat**: Ask Unblocked to write or rewrite a [pull request description](/code-review/pr-chat) from the web app, desktop app, or Slack. Previously this only worked from code review and PR chat, and only when the pull request had no description yet. ## Improvements * **You're notified when a Slack answer arrives**: Unblocked now shows Slack's native "Thinking…" status while it works on your question, then posts the answer as a new reply in the thread. Previously it posted an "Unblocked is thinking…" message immediately — which notified you — and then edited that message with the answer, which didn't. * **Code review follows your repository rules by default**: New organizations now have repository rule files — `AGENTS.md`, `CLAUDE.md`, `.cursor/rules`, and [others](/code-review/setup-and-configuration#custom-rules) — applied to code review without any configuration. Existing organizations keep their current setting. * **Zendesk answers without naming Zendesk**: Questions about customers, complaints, escalations, and externally reported bugs now search [Zendesk](/data-sources/zendesk) alongside your issue trackers. You no longer have to be as explicit by saying "Zendesk" in the question to get support tickets back. * **Fresher pull request discussions**: New comments and reviews on a pull request are re-indexed within seconds of being posted, instead of waiting for the periodic sync, so answers reflect the latest discussion on the pull request. * **More accurate issue and pull request search**: Multi-word questions are now matched concept by concept rather than as exact phrases, so searches like `oauth token expiry` find results where those terms appear apart from one another. ## Bug fixes * Fixed when a single unreadable Slack channel stopped message ingestion for every other channel in the workspace. * Fixed slow responses when Unblocked resolved a pull request from its URL. * Fixed [Linear](/data-sources/linear) comments being ingested from teams that weren't selected, and onboarding being marked complete before ingestion was configured. * Fixed [Confluence](/data-sources/confluence) answers degrading as member tokens expired; expired tokens are now refreshed weekly. * Fixed a crash when recording feedback on top-level code review comments. * Fixed the desktop app updating itself after a few seconds in the background, which could discard a message you were writing. * Fixed pasted text losing line breaks and Markdown formatting in the message editor. * Fixed answers being dropped in low-effort mode when the model returned text without citations. ## New features * **Unblocked CLI on Linux**: The [Unblocked CLI](/unblocked-cli/cli-install) now installs on Linux, on both x64 and arm64. Authentication, MCP setup, and queries work the same as on macOS. * **OpenCode**: [Install the Unblocked MCP server in OpenCode](/unblocked-mcp/install-opencode) with a single command. ## Improvements * **Skill loading shown as it happens**: Status updates now name the [skill](/skills) Unblocked is loading, so you can see which one a session picked up. * **Larger text files from Google Drive**: Plain-text files in [Google Drive](/data-sources/google-drive) up to 5 MB are supported, raised from 200 KB. * **Fresher code index for questions**: The code index behind questions and answers is rebuilt every 8 hours on paid plans, down from every 12. Code review, the CI failure agent, the MCP server, and the CLI read your default branch directly and are always current. ## Bug fixes * Fixed a bug that caused [Jira](/data-sources/jira) questions to omit references to issues in projects the user had never contributed to when [Data Shield](/team-settings/data-shield) was enabled. * Fixed the [Unblocked MCP service](/unblocked-mcp/mcp-overview) discarding valid answers that came back without citations. * Fixed a model's planning narration ("Let me broaden the search…") appearing in place of the answer. * Fixed web pages fetched during an answer not being cited as sources. * Fixed [Zendesk](/data-sources/zendesk) ticket ingestion timing out on large ticket volumes. * Fixed list indentation in threads and column alignment in the billing usage table. ## New features * **SQL context (Beta)**: Unblocked can now answer questions from the data in your database, not just from documents about it. Connect [Snowflake](/data-sources/snowflake) and choose which databases to index. Unblocked maps their schema, then runs read-only queries against the databases you selected to answer questions. Snowflake is the first supported database. SQL context is in beta — [contact us](https://getunblocked.com/dashboard?showIntercom=true) to request access. * **Zendesk**: Connect your [Zendesk](/data-sources/zendesk) account as a data source. Unblocked indexes tickets and support conversations from the brands you select and references them in answers, with links back to the original tickets. Connecting requires a Zendesk administrator account, because Zendesk's brand listing and ticket export APIs reject agent-level tokens. ## Improvements * **Microsoft Office files in Google Drive**: `.docx`, `.xlsx`, and `.pptx` files stored in [Google Drive](/data-sources/google-drive) are now ingested alongside native Google formats and PDFs. * **Find Jira projects and Confluence spaces by key**: The [data source preset](/data-sources/data-source-presets) group filter now matches on project and space keys, such as `PROJ`, in addition to display names. * **SCIM name changes**: Updating a user's name in your identity provider now updates their username in Unblocked, instead of leaving the former name showing. ## Bug fixes * Fixed new [Jira](/data-sources/jira) projects added after initial setup never being ingested. * Fixed [Datadog](/data-sources/datadog) metric and log queries timing out before valid queries could finish. * Fixed oversized `context_research` responses from the Unblocked MCP service exceeding client token limits. * Fixed [SharePoint](/data-sources/microsoft-sharepoint) sync erroring when a site's drives returned a 404 for deleted or inaccessible content. * Fixed [Coda](/data-sources/coda) links using the new `docs.superhuman.com` hostname not resolving. ## Improvements * **Self-service license removal**: Admins can now remove their own license instead of asking another admin to do it. * **Longer risk policy criteria**: The `criteria` field in [risk policies](/code-review/risk-assessment) now accepts up to 4,000 characters, matching the limit for `context`. ## Bug fixes * Fixed [personal memories](/unblocked-chat/personal-memories) not working in Slack and Microsoft Teams. * Fixed some Excel spreadsheets causing document processing failures during SharePoint and Google Drive ingestion. * Fixed malformed answers from the Unblocked MCP service with edge cases in certain MCP clients and models. ## New features * **Microsoft SharePoint is now generally available**: [Microsoft SharePoint](/data-sources/microsoft-sharepoint) has graduated from beta. Connect your SharePoint sites from Settings › Data Sources, and Unblocked indexes the documents and pages in the sites you select and references them in answers, with links back to the source. Site selection respects [Data Shield](/team-settings/data-shield) access controls, so answers only draw on content each user is permitted to see. ## Improvements * **Formatting inside Slack table cells**: Tables in Unblocked's Slack answers now preserve inline formatting — bold, italic, strikethrough, inline code, and links — inside table cells. ## Bug fixes * Fixed questions asked through a Slack workflow bot (on a user's behalf) wrongly returning "no repo access" when [Data Shield](/team-settings/data-shield) was turned off. * Fixed code search returning no results for users with no prior pull request history. * Fixed Google Drive file listing missing results when documents span multiple shared drives. ## New features * **Microsoft SharePoint (Beta)**: Connect your SharePoint sites as a data source. Unblocked indexes the documents and pages in the sites you select and references them in answers, with links back to the source. Site selection respects [Data Shield](/team-settings/data-shield) access controls, so answers only draw on content each user is permitted to see. SharePoint is in beta — [contact us](https://getunblocked.com/dashboard?showIntercom=true) to request access. * **Context in pull request descriptions**: Auto-generated [pull request descriptions](/code-review/pr-chat) now lead with a **Context** section — a short, sourced summary of why a change was made, drawn from the linked issues, prior pull requests, design docs, and conversations behind it, with links back to those sources. It's now generated for all organizations by default. ## Improvements * **Native tables in Slack answers**: Markdown tables in Unblocked's Slack answers now render as Slack's native table blocks, replacing the previous fixed-width ASCII format. ## Bug fixes * Fixed the desktop "My Questions" view spinning indefinitely instead of loading. * Fixed light/dark appearance not toggling correctly in the web dashboard. ## Improvements * **Exclude folders from Google Drive ingestion**: Admins can now exclude specific [Google Drive](/data-sources/google-drive) folders (and their contents) from ingestion, with a purge action to remove already-ingested documents from an excluded folder. * **Risk Assessment reports on Bitbucket and Azure DevOps**: Risk Assessment results now render in pull request comments on Bitbucket (text-and-emoji format) and Azure DevOps (HTML fallback), which previously showed broken or missing risk shields. * **Sprint-aware Jira questions**: Asking about Jira sprints — a named sprint, the current or active sprint, or which sprint an issue is in — now returns accurate answers by reading sprint data from Jira's custom fields. * **Jira status stays visible in search**: Jira issue status, type, priority, and resolution now appear ahead of the description, so a long description can no longer push status out of search results. ## Bug fixes * Fixed remote Unblocked MCP tools being blocked by a SAML re-authentication prompt for SSO-enforced organizations. * Fixed GitLab login and webhook failures on self-hosted GitLab — a null avatar field could crash sign-in, and webhooks carrying an internal hostname failed to match configuration. * Fixed SSO login dropping users with no source control installations into a broken create-team screen. * Fixed Asana incremental sync silently stopping for some workspaces when project discovery cleared the sync token. * Fixed context research API errors from the CLI when result URLs contained spaces. * Fixed API calls failing in Firefox. * Fixed duplicate attachment content appearing in follow-up answer turns. * Fixed link and icon rendering glitches in the message view and editor. ## Improvements * **Aligned tables in Slack answers**: Markdown tables in Unblocked's Slack answers now render as fixed-width ASCII inside a code block, so columns line up instead of wrapping. Padding accounts for emoji and CJK characters. * **Faster Asana ingestion for large workspaces**: Asana ingestion now caps deep subtask hierarchies, batches subtask fetches, and skips auto-generated system activity, improving speed and reliability for large projects. ## Bug fixes * Fixed the Data Shield settings link missing from mobile navigation, which made the page unreachable on small screens. ## New features * **[Skills](/skills)**: Give Unblocked reusable instructions for answering specific kinds of questions. Create personal skills that apply only to your questions, or shared team skills that apply to everyone. Team admins can promote a personal skill to a shared team skill from Settings › Skills. * **Google Sheets in [Google Drive](/data-sources/google-drive)**: Unblocked now ingests Google Sheets, converting spreadsheets (including cell hyperlinks) to searchable content. Google Slides extraction also now captures speaker notes and grouped elements. ## Improvements * **Code review considers existing PR comments**: The reviewer now reads existing pull request comment threads before generating a review, so it avoids repeating findings that people have already resolved or that it has already made. * **Confluence macro content**: [Confluence](/data-sources/confluence) pages and blog posts that use macros (such as `excerpt-include`) now have their rendered content ingested, making it visible to search and answers. * **SCIM enterprise user fields**: SCIM provisioning now supports the Enterprise User Schema Extension fields `employeeNumber`, `costCenter`, `organization`, `division`, and `department`. * **Clearer Slack feedback for disabled Q\&A**: @mentioning Unblocked in an externally shared Slack channel where Q\&A is disabled now returns a notification explaining why, instead of silently doing nothing. ## Bug fixes * Fixed the CLI silently deleting a stored personal access token when running a context command, which forced repeated re-authentication. * Fixed image attachments on a Slack thread's parent message not being included as context when Unblocked is @mentioned later in a thread reply. * Improved Google Drive ingestion reliability under memory pressure, reducing failures on large sheets and slides. * Fixed a billing race condition that could return an incorrect plan. ## New features * **Risk-based auto-approval in code review**: Customers can optionally enable [Code review](/code-review/risk-assessment) auto-approval based on a pull request's risk score. Only low-risk changes can be auto-approved; medium, high, and highest risk changes always require human review. A failed risk assessment blocks auto-approval. ## Improvements * **Repo-level risk policies**: [Risk assessment](/code-review/risk-assessment) reads policies from a repo-level `.unblocked/risk-policies.yaml` file, with an optional free-text `context` field to ground the model in repo-specific context. * **Data Shield re-authorization for Jira and Confluence**: Enabling or verifying [Data Shield](/team-settings/data-shield) for Atlassian integrations now checks for a valid OAuth connection and prompts you to reconnect if your authorization has expired or points to the wrong account. ## Bug fixes * Fixed Slack context resolution for Enterprise Grid: org-shared channels and direct messages now resolve to the correct workspace, fixing cases where code reviews, repo access, and answers were wrongly denied for valid members. ## New features * **Datadog log discovery**: The [Datadog](/data-sources/datadog) integration can now discover available services and facets in your log data automatically, producing more accurate log queries without manual configuration. ## Improvements * **Slack attachment context**: Bot messages in Slack (e.g., Datadog alerts, internal bot tools, PagerDuty notifications) are now included as context when you @mention Unblocked in a reply thread. * **Code review fact-checking**: The code reviewer now uses web search to verify claims about package dependencies and external facts before reporting findings, reducing false positives from stale training data. * **Source code ingestion coverage**: Common project directories like `tools/` are no longer excluded from source code ingestion, so Unblocked can surface more of your codebase in answers and reviews. * **Integration settings UX**: Navigating away from Data source configuration pages with unsaved changes now prompts you to save or discard. ## Bug fixes * Fixed Jira onboarding workflows not completing initial ingestion, leaving setup stuck in a loading state. * Fixed GitLab repository onboarding throwing unnecessary retries when repos are deselected during setup. * Fixed Datadog log search returning false "no results" responses due to query syntax issues. ## Improvements * **Audit logging for Datadog and Sentry**: Credential changes and Sentry project selection updates for [Datadog](/data-sources/datadog) and [Sentry](/data-sources/sentry) now emit entries in the [audit log](/team-settings/audit-logs). ## Bug fixes * Fixed Slack tools in Unblocked MCP not working for orgs with multiple connected Slack workspaces; channel resolution, search, and user lookup now iterate across all installations. * Fixed broken `@mentions` in Slack answers due to Slack mutating changed usernames — Unblocked now detects unresolvable usernames and corrects them before posting, and prevents Slack from auto-linking literal `@` symbols (such as in email addresses) in answer text. * Fixed code fence language labels (e.g. ` ```bash `) rendering as literal text inside Slack code blocks. * Fixed API token data source presets where changing the installation scope could wipe per-repo configurations or fight with checkbox state. * Fixed duplicate answers being created when clicking "Create Account" on an auto-answer, and ensured ephemeral cleanup runs for users who connect via the invite-link flow. ## Major update: Incident management, MCP, and CLI are now GA * **[Datadog](/data-sources/datadog) and [Sentry](/data-sources/sentry) are GA**: Connect either source from Settings › Data Sources › Incident Management. Unblocked indexes incidents, logs, metrics, monitors, errors, and events from these sources and references them in answers in Slack, Microsoft Teams, the desktop app, and the dashboard. * **[Unblocked MCP](/unblocked-mcp/mcp-overview) is GA**: Two tools, [`context_research`](/unblocked-mcp/mcp-context-research) and [`context_get_urls`](/unblocked-mcp/mcp-context-get-urls), replace the previous five. * **[Unblocked CLI](/unblocked-cli/cli-overview) is GA**: The `unblocked` binary exposes [`context-*` commands](/unblocked-cli/cli-query) you can run directly or wire into scripts and CI. ## Improvements * **Code review suggested changes on by default**: Suggested changes in code review are now enabled by default for organizations without an explicit setting. You can still toggle this from your code review settings. * **Bot mention awareness across SCMs**: Unblocked now correctly identifies its own handle on platforms where the display name and tagging syntax differ (notably Bitbucket and Azure DevOps). * **CLI deprecation messaging**: When a CLI version is no longer supported, every CLI and MCP entry point now surfaces a single, consistent "run `unblocked update`" message instead of failing silently or with cryptic errors. ## Bug fixes * Fixed Confluence group membership refresh failing. * Fixed code review attempting to process pull requests on repositories whose initial ingestion had started but not yet completed. * Fixed mismatched OAuth states that could cause account linking to fail intermittently. ## Major update: MCP and CLI * **Standalone [Unblocked CLI](/unblocked-cli/cli-overview)**: The `unblocked` binary now exposes Unblocked's organizational context as standalone [`context-*` commands](/unblocked-cli/cli-query) you can run yourself or wire into scripts and CI. * **Consolidated MCP tools**: [`context_research`](/unblocked-mcp/mcp-context-research) and [`context_get_urls`](/unblocked-mcp/mcp-context-get-urls) replace the previous five-tool MCP surface with a single research tool and a direct URL resolver. ## New features * **CLI research and search commands**: `unblocked context-research` runs a multi-source query; `context-search-code`, `context-search-documentation`, `context-search-issues`, `context-search-messages`, and `context-search-prs` scope results to a single source type. See the [query guide](/unblocked-cli/cli-query). * **CLI structured queries**: `unblocked context-query-issues` and `context-query-prs` return filtered lists of issues and PRs by project, author, or status — finer-grained than the search commands and only available on the CLI. * **CLI URL resolver**: `unblocked context-get-urls` hydrates one or more known URLs directly, without a search step. * **GitHub Copilot on IntelliJ MCP installer**: `unblocked install` now configures the Unblocked MCP server for GitHub Copilot inside JetBrains IDEs, alongside the existing installers for Claude Code, Claude Desktop, Cursor, Windsurf, and Codex. ## Breaking changes * **Legacy MCP tools removed**: `unblocked_context_engine`, `research_task`, `data_retrieval`, `historical_context`, and `link_resolver` have been replaced. Agents or configurations that reference these names by hand need to migrate to [`context_research`](/unblocked-mcp/mcp-context-research) or [`context_get_urls`](/unblocked-mcp/mcp-context-get-urls). ## Improvements * **Link Accounts Administration**: The Link Accounts page has an improved user experience in scenarios where many data sources have been connected. * **MCP resilience**: Overlong or malformed tool names from upstream models are now truncated safely instead of crashing the MCP session. ## Bug fixes * Fixed issue where Data Shield approval was needed for messages within the same private channel as the question * Fixed manual code review requests failing silently when the PR had been merged or closed; manual reviews are now always published. * Fixed the Link Accounts dialog leaving users on an empty screen after all installations were connected or dismissed. * Fixed Mermaid diagram rendering races that could reorder or drop renders when two diagrams rendered back-to-back. ## New features * **Refer to past Unblocked conversations**: Post a link to a past Unblocked conversation as context and Unblocked MCP will read it and deliver the relevant context to your agents. ## Improvements * **SCM URLs in source code results**: Context search results for source code now include links back to the file in your SCM, making it easier to jump from a result to the repo. * **Improved GitLab review correctness**: Code review on GitLab now produces more accurate comments across a wider range of merge requests. * **Onboarding and settings UI polish**: Link Accounts views, the shared data sources and API-token tables, and Data Shield settings now use denser, paginated table layouts with search. ## Bug fixes * Fixed the analytics "Add channel" and "Add repositories" buttons landing on an empty chooser when only one installation of that type exists * Fixed a spurious "no repos selected" error for SCM installations that legitimately have no repos available * Fixed incorrect login UI when a user joined a team mid Code Review onboarding ## New features * **Sentry and Datadog as context sources**: Sentry issues and Datadog monitors can now be ingested and embedded as context, allowing Unblocked to surface relevant error tracking and monitoring data in answers and reviews. ## Improvements * **Improved MCP citation grouping**: Citations in MCP context search results are now grouped by URL for clearer attribution, with graceful recovery when citation IDs are invalid. * **Expanded repo rule discovery**: Code review can now discover custom repo rules from additional directories, improving convention enforcement for monorepos and non-standard project layouts. Using repo rules is a configurable setting in the [code review settings](/code-review/setup-and-configuration#custom-rules). ## Bug fixes * Fixed code review failing to generate inline comments for issues found in large or redacted files * Fixed answer output producing empty results in certain edge cases when structured output was enabled * Fixed continued answers wasting context tokens by including messages already captured in compaction summaries * Fixed edited Slack and Microsoft Teams replies not being updated in Unblocked's data store * Fixed GitHub PR comments not returning both issue-style and code-level comments ## New features * **License assignment before sign-up**: Admins can now assign licenses to team members who haven't yet created an account, simplifying onboarding for new hires. * **Self-assignment of seats**: Users can now claim an available seat themselves without requiring an admin to assign it. ## Improvements * **MCP quota increase**: MCP tool call quotas have been raised 10x, giving agents significantly more headroom for complex workflows. * **Refreshed SCM settings UI**: The source code management settings page has been redesigned with improved layout and pagination support. * **Code review author sorting**: The code review authors list now sorts by display name instead of username. ## Bug fixes * Fixed broken Jira/Confluence links that resulted in erroneous access errors when clicked ## New features * **Expanded Slack tools in MCP**: New Slack tools give MCP agents richer access to Slack messages and channels, controlled by a new org-level setting. * **File citations in MCP**: The read file tool now returns citations and supports file seek, making it easier for agents to reference specific parts of source files. * **Tool-powered answer refinement**: Follow-up questions now have access to the same tools as initial queries, producing more accurate and complete refined answers. ## Improvements * **Slack Auto-answer quality**: By leveraging tool-powered answer refinement steps Unblocked can answer more questions with higher accuracy. * **Diff comparison links**: Unblocked now understands source code diff comparison links which work with branch names, tags, and commit hashes. * **Asana project names**: Asana tasks now include their project name when surfaced as context. ## Bug fixes * Fixed link hydration failing for URLs with a `www.` prefix (e.g., `www.github.com`) * Fixed Add Integration dialog clipping on smaller screens * Fixed bootstrapping UI content getting cut off * Fixed follow-up message formatting losing structure after multiple exchanges ## New features * **Analytics dashboard redesign**: The analytics dashboard now includes user adoption charts, per-repository review breakdowns, review failure category breakdowns, and the ability to filter analytics by individual team member. * **Issue search tools in MCP**: New search tools for Jira, GitHub Issues, Linear, and Asana let MCP agents find and reference issues across your connected project trackers. ## Improvements * **Code review repo rules severity**: Custom repo rules are no longer automatically elevated to must fix severity by default, reducing noise from convention-based comments * **Manual review re-runs**: Requesting a manual review via PR Chat now always triggers a new review, even if one already exists for the same commit * **PR Chat review replies**: PR Chat now always posts a visible reply comment when it completes a manually requested review, linking back to the original request ## Bug fixes * Fixed code review footer rendering * Fixed Microsoft Teams integration UI getting stuck in a loading state * Fixed member name search returning the wrong person when no close match exists * Fixed analytics time-series chart x-axis labels not displaying correctly across timezones * Fixed Asana event history syncing * Fixed GitHub Issues bulk ingestion not updating timestamps ## New features * **Code review custom instructions**: Customize how Unblocked reviews code by providing repository-specific instructions. Define conventions via an ⁠AGENTS.md file in the root of each repository, or other supported repo rule files. Manage repository instructions from the code review settings UI. * **Code review sentiment analytics**: New sentiment analytics graph in the code review dashboard shows trends in review feedback over time * **Code review automated approvals**: Teams can now choose between three modes in settings when Unblocked finds no issues on your PR: automatically approve the pull request, leave a comment saying “No issues found”, or take no action. ## Improvements * **PR Chat access to current PR**: PR Chat now has full access to the diff of the PR being discussed, enabling more accurate and context-aware responses * **Improved Microsoft Teams rendering**: Teams messages and replies are now rendered more clearly when surfaced as context * **Linear refresh token support**: Linear integration now uses refresh tokens for more reliable long-lived connections ## Bug fixes * Fixed archive threads flickering in My Questions when archiving a conversation * Fixed code review repo auto-selection not working when a repo had been recently uninstalled * Fixed Microsoft Teams private channel messages not being properly embedded ## Improvements * **Improved conversation context in code review**: Related Slack and Teams conversations surfaced during code review are now formatted more clearly, making them easier for the reviewer to read and act on ## Bug fixes * Fixed Jira custom fields not being properly ingested for both Cloud and Data Center instances * Fixed MCP service not resolving the correct user when authenticating with Personal Access Tokens ## Improvements * **Code review for public repositories**: Code review on public/open-source repos no longer brings in context from protected data sources like internal docs or Slack, keeping review comments appropriate for public visibility * **Cross-PR context in code review**: Code review now considers related changes from other PRs by default, catching issues that span multiple pull requests * **Web URL fetching in code review**: The code review and PR Chat agents can now fetch public web URLs by default, improving their ability to verify references and understand linked context * **Smarter Slack search in MCP**: Slack channel queries now use a breadth-first approach with ML-powered thread selection, returning more relevant results faster instead of getting buried in old reply chains * **Opus 4.6 model support**: Added support for Anthropic's latest Opus 4.6 model ## Bug fixes * Fixed GitLab code review not processing single-line comments for adaptive learning feedback * Fixed GitLab code review failing on some merge requests with image comments * Fixed Bitbucket PR comment ingestion failing when comment author is null * Fixed Jira Data Center dashboard showing incorrect site when multiple instances are connected * Fixed Jira Data Center not setting the correct base URL when fetching roles * Fixed Confluence Data Center ingestion failing when a space does not include permissions * Fixed orphaned Slack replies not being associated with their parent threads * Fixed Linear link hydrator and Jira Cloud link hydrator not falling back to the API when content isn't locally available ## Announcement * **We're live on Product Hunt!** Check out our launch and show your support: [Upvote Unblocked Code Review on Product Hunt](https://www.producthunt.com/posts/unblocked-code-review/) ## Major feature launch * **[Code Review for GitLab](/code-review/setup-and-configuration)**: AI-powered code review is now generally available for GitLab. Unblocked reviews your merge requests for bugs, logic errors, and security vulnerabilities, posting inline comments directly in GitLab. Like GitHub, the AI learns your team's conventions over time through adaptive learning. ## New features * **Slack settings in private channels**: All users can now use the `/unblocked-settings` command in private Slack channels to make adjustments, even when [role-based access control](/team-settings/role-based-access) is enabled ## Podcast release * **Unblocked Podcast Available**: We recorded 7 episodes covering context engines, MCP, code review, and more. Available on the [Unblocked YouTube channel](https://www.youtube.com/channel/UCiVF-oTr-tguPA1KGZdWRNg) ## Bug fixes * Fixed Linear integration fetching archived issues and not updating issue keys when moved between teams * Fixed Confluence Data Center page reingest and child page purging issues * Fixed GitLab line-range comment support for older GitLab versions ## New features * **New API endpoints**: Added List Answers and Delete Answer API endpoints to the Public API, allowing you to list answers to questions, get a specific answer by ID, and programmatically delete answers ## Bug fixes * Fixed code review auto-approval to only apply to GitHub (not other SCM providers) * Fixed non-admin users being unable to delete their own Personal Access Tokens * Fixed API token page not showing error notifications when operations failed ## New features * **Code review conversation context**: Code review now surfaces related Slack and Microsoft Teams conversations that reference the PR being reviewed, giving reviewers additional context about discussions surrounding the changes ## Improvements * **Code Review Auto-approval**: New organizations now have code review auto-approval enabled by default, if we have no comments to make Unblocked will approve the PR. Note: this does not bypass branch protection rules and human reviewers are still required before the PR can be merged. ## Bug fixes * Fixed intermittent code review failures caused by diff hunk header parsing issues * Fixed Microsoft Teams authentication flow using incorrect redirect URLs during sign-in * Fixed Bitbucket webhook registration being rejected at workspace level * Fixed GitHub pull request embeddings not including full document content * Fixed PR ingestion status incorrectly updating when ingestion was skipped * Fixed Microsoft Teams warning cards and billing enrollment display issues ## New features * **PR Chat generally available**: Enabling conversational interactions with pull requests. You can steer unblocked with `@unblocked` and ask a question, including asking for PR summaries, a re-review with a focus area, or anything else you can imagine. ## Improvements * **Better error messages in MCP**: Returns detailed error messages when URLs cannot be hydrated, helping agents understand and handle failures more effectively * **Confluence homepage support**: Unblocked now properly handles Confluence space homepage links specified in questions * **Enhanced Notion integration**: Added support for hydrating and resolving Notion document links through the unblocked MCP ## Bug fixes * Fixed code review engine incorrectly flagging valid dates as being in the future when reviewing dependency update PRs ## New features * **Microsoft Teams integration**: MS Teams is now generally available as a data source, allowing teams to connect and search their Teams conversations * **Personal Access Tokens**: Create your own API tokens with fine-grained permissions for programmatic access to Unblocked * **MCP feedback tool**: New MCP tool lets you provide feedback about your experience with Unblocked directly from supported MCP clients ## Improvements * **Faster response times**: Optimized thread and message creation for significantly improved P99 latency * **Answer refinement**: Improved Q\&A responses with multi-turn answer revision for more accurate and complete answers * **Plan expiration visibility**: New UI indicators show when your team's plan subscription is expiring * **GPT-5.2 support**: Added support for OpenAI's latest GPT-5.2 model in appropriate workflows ## Bug fixes * Fixed Jenkins integration handling of optional repository URLs * Fixed tab switching causing unnecessary loading states in the dashboard * Fixed row click behavior for personal API tokens table ## Progress * **Sentry integration work**: Progress on Sentry integration for error tracking context * **Infrastructure improvements**: Upgraded Temporal workflow engine and improved auto-scaling ## New features * **Asana integration for Code Review**: Connect Asana to automatically create and track issues from code review findings * **MCP semantic search tools**: New MCP tools for semantic and ML-powered search capabilities * **MCP link resolver**: Replaced 4 other document retrieval tools with a single link resolution tool improving context engine performance ## Improvements * **Google Drive sync**: Improved handling of trashed and deleted files in Google Drive ## Bug fixes * Fixed Confluence Data Center metadata handling for malformed URLs and encoding issues * Fixed Jira Data Center support for code review issue providers * Fixed GitLab user lookup functionality ## Progress * **New integration work**: Expanded integration capabilities for high priority platforms * **API token scopes**: Expanded API token scopes for more granular control over data source access ## Major feature launch * **[Code Review](/code-review)**: Automated AI code review for pull requests is now available. Unblocked analyzes your PRs for bugs, logic errors, and security vulnerabilities, posting inline comments directly in GitHub. The AI learns your team's conventions over time through [adaptive learning](/code-review/how-it-works#adaptive-learning), making reviews increasingly precise as you provide feedback. Customize your experience with [user preferences](/code-review/how-it-works#user-preferences) and request reviews or summaries on-demand by mentioning `@unblocked` in PR comments (e.g., `@unblocked summarize this PR`). * **[Get started](https://getunblocked.com/code-review/?ref=docs)** with free code reviews for your first 3 PRs per month. ## New features * **Google Slides support**: Google Drive integration now includes text extraction from Google Slides ## Progress * **New major release work**: Progress on our next major release, launching soon * **New integration work**: Expanded integration capabilities for high priority platforms ## New features * **New major release work**: Progress on our next major release, launching soon * **New integration work**: Progress on high priority integrations customers have requested ## Improvements * **Error messaging**: Clearer, actionable error messages when bot answers fail due to SCM disconnection issues ## Bug fixes * Fixed a race condition that would occasionally impact onboarding * Fixed application dashboard redirect issues ## New features * **New major release work**: Continued progress on our next major release * **New integration work**: Expanded integration capabilities for high priority platforms * **Mermaid diagram repair**: Automatic detection and repair of rendering errors in Mermaid diagrams ## Improvements * **Search filtering**: Deprecated, archived, and outdated documents are now filtered from search results ## Bug fixes * Fixed table scroll context in dialogs * Fixed licensed members sorting in team management * Fixed feedback submission for direct message chats # Overview Source: https://docs.getunblocked.com/code-review Unblocked Code Review uses AI and your team's context to review pull requests, catch bugs and security issues before they ship, and learn your conventions. ## Overview Unblocked Code Review uses AI to review your pull requests and catch real issues before they ship. It focuses on correctness and learns your team's conventions over time. As you connect more context to your Unblocked workspace, reviews become increasingly precise and helpful. The AI reviewer analyzes code changes for potential bugs, logic errors, security vulnerabilities, and adherence to best practices. It supports all major programming languages and integrates seamlessly with your existing pull request workflow. # How it works Source: https://docs.getunblocked.com/code-review/how-it-works See how Unblocked Code Review analyzes each pull request, posts inline comments and suggested changes, skips generated files, and approves PRs with no issues. ## How Code Review works Once enabled, Unblocked automatically reviews each open pull request when it's created or updated. The AI analyzes code changes for potential bugs and issues, then posts inline code comments directly in your PR when issues are found. Before generating a review, Unblocked reads existing comment threads on the pull request, so it avoids repeating findings that people have already resolved or that it has already made. It also surfaces related Slack and Microsoft Teams conversations that reference the PR, and uses web search to verify claims about package dependencies and external facts before reporting findings. Reviews typically complete within three minutes, depending on the size of the changes. Binary files are automatically skipped to focus on reviewable code. If Unblocked completes its review and finds no actionable issues, it will leave an approved review on the PR. ### Suggested changes on GitHub For small, straightforward fixes on GitHub pull requests, Unblocked includes a [suggested change](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request#applying-suggested-changes) block in its inline comment so you can apply the fix with a single click. For larger or more complex fixes, Unblocked describes the change in the comment instead, so you can decide how to apply it. Suggested changes are enabled by default for GitHub and GitHub Enterprise pull requests. ### Generated and vendored files Unblocked automatically skips generated and vendored files so reviews stay focused on the code you actually maintain. It reads your repository's `.gitattributes` and honors the same GitHub Linguist markers you may already use. If a file is marked as generated or vendored, Unblocked leaves it out, reducing noise and avoiding comments on machine-produced or third-party code. This includes common patterns like compiled assets, dependency files, and auto-generated documentation. If you already use Linguist to tidy language stats or collapse large diffs on GitHub, you don't need to change anything—Unblocked follows those signals. Otherwise, you can add simple rules like: ```gitattributes theme={null} generated/** linguist-generated vendor/** linguist-vendored ``` Learn more about [Git attributes](https://git-scm.com/docs/gitattributes) and GitHub [Linguist overrides](https://github.com/github/linguist/blob/master/docs/overrides.md). ### Bot-authored pull requests Unblocked automatically excludes pull requests authored by bots — including Dependabot and other service accounts — from automated code review. This keeps review activity focused on changes made by your team. You can still request a manual review on a bot-authored pull request by mentioning `@unblocked` in a comment. See [PR Chat](/code-review/pr-chat) for details. ### Draft pull requests By default, Unblocked does not review draft PRs, so you can keep working without automated feedback until you're ready. Team admins can change this default for everyone by enabling automatic reviews for draft PRs in **Settings** > **Code Review**. Individual developers can override the team default in their [user preferences](#user-preferences) by changing the **Review my draft pull requests** setting. ### Requesting a review or summary with @unblocked You can ask Unblocked to review or summarize your PR by leaving a comment that mentions `@unblocked` with a natural language request, for example: "@unblocked review this PR" or "@unblocked summarize this change." Unblocked will react to your comment with 👀 to confirm it's running, then post its response when complete. For more ways to interact with Unblocked in your pull requests — including focused re-reviews, questions, and diagrams — see [PR Chat](/code-review/pr-chat). ## User preferences Each developer can customize their code review experience from their personal preferences page. To update these settings, go to **Settings** > **Personal Settings** > **Preferences**. * **Receive automated code reviews as comments on my pull requests** — You can receive automated code reviews as comments on your pull requests. Turn this on or off to control whether you get automated feedback. When disabled, you won't receive automated comments, but team-level reviews still run for other team members. * **Review my draft pull requests** — If you want early feedback during development, enable review of your draft pull requests. Unblocked will review drafts in addition to regular PRs. * **Automatically generate pull request descriptions** — Turn this on to let Unblocked fill in your pull request description when you open a pull request with a blank description. ## Providing feedback Provide feedback on code review comments by reacting with 👍 or 👎 emojis or by replying directly with additional context. Unblocked uses this feedback to refine its understanding of your team's preferences and improve the quality of future reviews. Your feedback helps tune Unblocked to better understand your team's coding standards and preferences. Positive feedback reinforces good suggestions, while negative feedback helps the system learn what types of comments aren't helpful for your codebase. To get the most out of feedback, add a brief explanation when a comment isn't helpful. That context helps the AI understand nuanced preferences and reduces similar comments in the future. ## Adaptive learning Unblocked Code Review learns from your team's historical pull request conversations to understand your coding conventions and best practices. This includes patterns your team prefers, architectural decisions, and conventions that have evolved over time. Unblocked cites the original pull request conversation when a review comment draws on past discussions. This transparency lets you see exactly where the insight came from. As your team continues to use Unblocked, reviews become more aligned with your specific practices. # PR Chat Source: https://docs.getunblocked.com/code-review/pr-chat Use PR Chat to ask questions, request focused reviews, get PR summaries, update pull request descriptions, and generate diagrams directly in your pull requests ## What is PR Chat? PR Chat lets you interact with Unblocked directly in your pull request by mentioning `@unblocked` in a comment. Beyond requesting standard reviews and summaries, you can have a conversation with Unblocked to get deeper insight into the code, request targeted re-reviews, or generate visual diagrams. PR Chat understands natural language — not just keywords or fixed commands. A short prompt like `@unblocked review` works, and so does `@unblocked can you review just the python code`. You can include arbitrary guidance to shape the response. Unblocked reacts to your comment with 👀 to confirm it's working, then posts its response when complete. ## Request a focused review After an initial review, you may want Unblocked to look at your PR again with a different focus. Mention `@unblocked` with specific instructions to guide the review. **Quick review** ```text theme={null} @unblocked review ``` **Provide additional context** Give Unblocked more information about intent or constraints so it can refine its feedback: ```text theme={null} @unblocked review this again with more focus on input validation and error handling. ``` **Focus on a specific area** Ask Unblocked to concentrate on a particular aspect of the changes: ```text theme={null} @unblocked can you review just the python code ``` **Re-review after new commits** When you've pushed additional commits to address earlier feedback, ask for a fresh look at specific files: ```text theme={null} @unblocked review just src/auth/session.ts again. ``` A manually requested review always triggers a new review, even if one already exists for the same commit. Unblocked posts a reply comment when the review completes, linking back to your request. ## Ask questions Use PR Chat to ask Unblocked questions about the code in your pull request, the broader system, or the intent behind the changes. Unblocked draws on the context connected to your workspace to provide informed answers. **Understand the changes** ```text theme={null} @unblocked what does this PR change about retry logic? ``` **Explore the broader system** ```text theme={null} @unblocked how does the auth middleware work in this repo? ``` **Clarify intent or design decisions** ```text theme={null} @unblocked why was this service split into two modules? ``` Because Unblocked has access to your connected context — including past pull requests, documentation, and team discussions — answers go beyond what's visible in the diff. ## Get a PR summary Ask Unblocked to summarize a pull request and it will post a concise explanation of what changed and why, directly in the PR comment thread. This is useful when you want a quick overview before reviewing, or need to catch up on a PR you've been tagged on. ```text theme={null} @unblocked summarize this PR ``` You can also narrow the scope: ```text theme={null} @unblocked create a summary of the changes to the infra module ``` ## Write or update the PR description Ask Unblocked to write or update the pull request description field itself — not just post a summary in chat. Unblocked generates a description based on the diff and any connected context, then edits the PR description in place. If your repository has a pull request template, Unblocked follows it. ```text theme={null} @unblocked update PR description ``` This is useful when you've opened a PR without a description, or want to replace a placeholder with something more informative before requesting review. ## Request diagrams Ask Unblocked to generate diagrams that visualize data flows, architecture, or relationships in the codebase. Diagrams are rendered directly in the PR comment thread. ```text theme={null} @unblocked draw the data flow for order processing in this PR. ``` ```text theme={null} @unblocked illustrate how the API gateway interacts with the downstream services touched here. ``` Diagrams are useful for onboarding reviewers, documenting complex flows, and confirming that your mental model matches the actual implementation. # Risk Assessment Source: https://docs.getunblocked.com/code-review/risk-assessment Configure risk policies for Unblocked Code Review Code Review Risk Assessment adds a risk signal to Unblocked's automated pull request reviews. You define the kinds of changes your team considers risky, and Unblocked scores each PR against those policies. Teams can use that score to approve routine changes faster while keeping human reviewers focused on work that needs closer judgment. ## How it works Every time Unblocked runs a code review on a pull request, it also runs a risk assessment. Unblocked reads the risk policy file that you define from your repository and checks the PR changes against each policy. It then adds a report with a risk score — `lowest`, `low`, `medium`, `high`, or `highest` — and an explanation for the score. Example of an Unblocked risk assessment comment on a pull request Example of an Unblocked risk assessment comment on a pull request With **Auto-approve low risk Pull Requests** enabled in [Code Review settings](/code-review/setup-and-configuration#approval-workflow), Unblocked approves the pull request if the risk score is `low` or `lowest` and the code review finds no issues. Otherwise, Unblocked just posts the report so reviewers can see what needs attention. When Unblocked re-reviews a PR, it reruns the risk assessment on the entire PR and updates the existing risk assessment comment with the new result. Unblocked uses the policy from the default branch, not policy changes proposed by PRs. This keeps the risk score tied to the rules your team has already accepted. ## Risk labels On GitHub and GitHub Enterprise, Unblocked also adds a label to each PR that reflects its current risk score: `risk: lowest`, `risk: low`, `risk: medium`, `risk: high`, or `risk: highest`. Labeling is best effort — the matching label must already exist in the repository for Unblocked to apply it. ## Setup Risk assessment is enabled per repository. To turn it on for a repository, add a policy file that describes which kinds of changes your team considers risky. For the best results, review and tune the file before committing, whether you write it yourself or ask Unblocked for a draft. Create `.unblocked/risk-policies.yaml` in the root of your Git repository, using the [guidance and examples](#writing-effective-policies) and [policy file schema](#policy-file-schema) below. If you are unsure which risks to include, ask Unblocked to draft a new policy or improve an existing one: ```text theme={null} Draft or improve the risk assessment policy for acme/payments-service ``` Unblocked uses the repository and relevant connected context, such as past incidents, team discussions, and [shared memories](/unblocked-chat/shared-memories), to return a YAML draft that follows the required schema. Review every policy and risk level. An Unblocked-generated policy is a starting point based on the context available to it, so ask Unblocked for changes or edit the YAML until it matches how your team thinks about risk. If Unblocked generated the policy, copy the YAML into `.unblocked/risk-policies.yaml`. Commit and push the file to the default branch. Continue refining the policy as your team uses it. If an assessment does not reflect your expectations, update the policy directly or ask Unblocked to improve it. ### Writing effective policies Unblocked can reason about common software risks from the change itself. Use policies to provide context it cannot infer, such as critical components, irreversible workflows, coordination requirements, or risks learned from past incidents. Broad policies can match routine work and produce consistently conservative scores. Add them only when they reflect an intentional team standard. For example: * **Too broad:** `Database schema changes are high risk.` * **More useful:** `Changes to the ledger_entries schema are highest risk because settled entries cannot be repaired automatically.` Start with a small set of specific policies. Write each one so it can be evaluated on its own, without relying on another policy or an external definition. If you need to add general guidance or background information, add it to the optional `context` section. ```yaml theme={null} # .unblocked/risk-policies.yaml context: > This repository owns payment settlement. Settled ledger entries cannot be edited, and payment-provider webhook changes must remain compatible with the reconciliation worker. policies: - policy: Settlement ledger changes risk: highest criteria: > The PR changes the ledger_entries schema, LedgerWriter, or code that orders ledger events before settlement. - policy: Payment webhook compatibility risk: high criteria: > The PR changes payment-provider webhook parsing, acknowledgement, retry behavior, or the contract shared with the reconciliation worker. ``` ### Policy file schema The policy file is YAML. It can include optional repository context and one or more independent policies. Each policy names a kind of change and the risk Unblocked should assign when it matches. ```yaml theme={null} title: Unblocked Risk Policies type: object required: - policies additionalProperties: false properties: context: description: > Optional repository background for interpreting policies. Use this for stable domain context, key systems, ownership boundaries, or terminology. type: string minLength: 2 maxLength: 4000 policies: description: > Risk policies evaluated against a pull request. Each policy is evaluated independently. When multiple policies match, Unblocked uses the highest risk. type: array minItems: 1 items: type: object required: - policy - risk - criteria additionalProperties: false properties: policy: description: > Short, human-readable name for this policy. Use a name that makes the policy easy for your team to recognize and maintain. type: string minLength: 2 maxLength: 80 risk: description: > Risk level assigned when this policy matches. When multiple policies match, Unblocked uses the highest risk. type: string enum: - lowest - low - medium - high - highest criteria: description: > Self-contained condition for when this policy applies. Describe only the PR changes that should trigger it. type: string minLength: 2 maxLength: 4000 ``` # Set up and configuration Source: https://docs.getunblocked.com/code-review/setup-and-configuration Configure Code Review settings for your team ## Setting up Code Review To set up Code Review for your Unblocked team, select Code Review from the left sidebar. Next, click **Set Up Code Review**. If you haven't connected your issue tracker, you'll be prompted to do so. Enable Code Review ## Configure Code Review Once Code Review is enabled, you can adjust the settings to control how reviews are conducted. Click **Settings** in the sidebar, then select **Code Review**. ### Select repositories Unblocked will automatically review pull requests only for repositories you select. Select Repositories ### Code Review user access Use the **Code Review User Access** setting to control which users are eligible to receive automated code reviews. By default, **All Users** is selected, so Unblocked will review pull requests for everyone in your workspace. To limit reviews to specific people, choose **Specific Users** and select the users you want from the list. Only pull requests authored by those users will receive automated code reviews. Users who are not selected can still request a review manually by mentioning `@unblocked` in a PR comment. See [Requesting a review](/code-review/how-it-works#requesting-a-review-or-summary-with-%40unblocked) for details. User Access ### Approval workflow Use the **Approval Workflow** settings to control what happens when Unblocked reviews a pull request and finds no issues. Approval Workflow settings * **Risk Assessment** — learn how to [define risk policies](/code-review/risk-assessment) that Unblocked evaluates against every pull request. * **Comment** — post a comment when no issues are found. Turn this off if you want Unblocked to take no action on pull requests that do not qualify for auto-approval. * **Auto-approve low risk Pull Requests** — approve pull requests that have no issues and a risk score of `low` or `lowest`. This setting appears when your source control integration supports approvals that count toward pull request requirements. * **Legacy Approvals** — approve pull requests that have no issues for GitHub organizations whose Unblocked integration does not have the `contents:write` permission. These approvals do not count toward required approvals. Low-risk auto-approvals count toward the number of approvals required by branch protection rules. If your rules require only one approval, an Unblocked auto-approval can satisfy that requirement. Configure additional required approvals if you also require a human reviewer to approve the pull request. Legacy Approvals do not count toward required approvals. ### Custom rules To have Unblocked follow repository instructions during code review, enable repository rules under **Settings** > **Code Review**. Unblocked supports a broad range of instruction files and paths; expand the list below to see which ones it recognizes. **Markdown instruction files** ```text theme={null} AGENT.md AGENTS.md AGENTS.override.md ARCHITECTURE.md CLAUDE.md CODE_STYLE.md CONTRIBUTING.md CONVENTIONS.md GEMINI.md replit.md STYLE.md STYLEGUIDE.md TESTING.md ``` Lowercase forms are also recognized for AGENT.md, AGENTS.md, ARCHITECTURE.md, CLAUDE.md, CONTRIBUTING.md, CONVENTIONS.md, and GEMINI.md. **Tool rule files** ```text theme={null} .augment-guidelines .clinerules .continuerules .cursorrules .goosehints .roorules .rules .windsurfrules ``` ```text theme={null} .claude/CLAUDE.md .gemini/styleguide.md .github/copilot-instructions.md .idx/airules.md .junie/guidelines.md .vscode/cody.json ``` | Directory | Pattern | | - | - | | `.agent/rules` | `*.md` | | `.agents` | `*.md` | | `.aiassistant/rules` | `*.md` | | `.amazonq/rules` | `*.md` | | `.augment/rules` | `*.md` | | `.claude/rules` | `*.md` | | `.clinerules` | `*.md` | | `.continue/rules` | `*.md` | | `.cursor/rules` | `*.md`, `*.mdc` | | `.github/instructions` | `*.instructions.md`, `*.md` | | `.github/rules` | `**/*.md` | | `.qdeveloper` | `*.md` | | `.roo/rules` | `*.md` | | `.roo/rules-architect` | `*.md` | | `.roo/rules-ask` | `*.md` | | `.roo/rules-code` | `*.md` | | `.roo/rules-debug` | `*.md` | | `.tabnine/guidelines` | `*.md` | | `.windsurf/rules` | `*.md` | ```text theme={null} **/AGENT.md **/AGENTS.md **/AGENTS.override.md **/CLAUDE.md **/GEMINI.md **/.agents/*.md **/.rules/* ``` #### Examples For best results, write concise, actionable instructions that reflect your repository and organization’s specific practices rather than general truisms. Good examples: * “Use `event.id` for idempotent event processing.” * “In customer-facing views, format dates with `formatNorthstarDate` and the account’s timezone.” * “Use `Money` for monetary values; avoid floating-point arithmetic.” Avoid vague review instructions that do not give the reviewer factual guidance: * “Review API changes carefully.” * “Check for security and correctness issues.” * “Make sure database changes are safe.” ### Excluded paths You can configure custom path exclusion patterns to exclude specific files or directories from review. These patterns use glob syntax and are applied when processing pull requests. Common exclusion patterns include `*.md` to exclude all Markdown files at any depth, `src/test/**` to exclude all files under a specific directory from the repository root, and `package-lock.json` to exclude specific files. You can also exclude entire directories like `node_modules/**` or file types like `*.generated.js`. Exclusion Patterns ### Select a bot account For Azure DevOps repositories, code review comments need to be posted on behalf of an Azure DevOps user account. We recommend creating an Unblocked bot account for this specific purpose. * In the Microsoft Entra admin center, go to **Entra ID** > **Users**. * Click **New user**, then select **Create new user**. * Create a new user with the following information: * **Name:** Unblocked * **Avatar:** download and use the Unblocked logo below Unblocked logo Download PNG * In Azure DevOps, sign in to your organization as a *Project Collection Administrator*. * Click **Organization settings** > **Users**, then click **Add users**. * Enter the bot user's email address. * Set **Access level** to **Basic**. * Under **Add to projects**, select each project where Unblocked should review pull requests. * Set **Azure DevOps Groups** to **Project Contributors**. * Click **Add**. In Unblocked, search for the bot account you just created and select it. You may be required to authorize this account with Unblocked. In order to successfully authorize your bot account, you need to be logged in with that account in Azure DevOps. Select Bot For Bitbucket Cloud repositories, code review comments need to be posted on behalf of a Bitbucket user account. We recommend creating an Unblocked bot account for this specific purpose. * [Create a new account](https://id.atlassian.com/signup?application=bitbucket\&continue=https%3A%2F%2Fbitbucket.org\&prompt=select_account) in Bitbucket with the following information: * **Name:** Unblocked * **Avatar:** download and use the Unblocked logo below Unblocked logo Download PNG * [Switch accounts](https://id.atlassian.com/login/select-account?application=bitbucket\&continue=https%3A%2F%2Fbitbucket.org) and sign in to your Bitbucket Workspace as a Workspace admin. * Click the gear icon in the top right of the navigation bar, and select **User Management**. * Invite your new bot user to your workspace. * Accept the email invitation that was sent to your bot account. In Unblocked, search for the bot account you just created and select it. You may be required to authorize this account with Unblocked. In order to successfully authorize your bot account, you need to be logged in with that account in Bitbucket Cloud. Select Bot For Bitbucket Data Center repositories, code review comments need to be posted on behalf of a Bitbucket Data Center user account. We recommend creating an Unblocked bot account for this specific purpose. * **Sign in** as an administrator in your Bitbucket Data Center instance. * In the top navigation bar, click the admin icon. * Under **Accounts**, select **Users**, then **Create user**. * Create a new user account in Bitbucket Data Center with the following information: * **Name:** Unblocked * **Avatar:** download and use the Unblocked logo below Unblocked logo Download PNG * Before the bot can access a project, it must be able to sign in to Bitbucket Data Center. * Go to **Administration** > **Users**. * Find your bot user and ensure it is assigned to a group. * Go to **Administration** > **Global Permissions**. * Ensure that group has the **Bitbucket User** permission. * For each project Unblocked should review, navigate to **Project settings** > **Permissions**. * Add the bot user and set the permission as "**Developer**" or above. In Unblocked, search for the bot account you just created and select it. You may be required to authorize this account with Unblocked. In order to successfully authorize your bot account, you need to be logged in with that account in Bitbucket Data Center. Select Bot For GitLab Cloud repositories, code review comments need to be posted on behalf of a GitLab account. We recommend creating an Unblocked bot account for this specific purpose. You can use either a GitLab service account or a regular GitLab user account. Regular users connect with OAuth, while service accounts connect with a token. Decide which GitLab account type Unblocked should use for code review, then follow the matching instructions. **GitLab service account** * Create a [GitLab service account](https://docs.gitlab.com/user/profile/service_accounts/) for the top-level group. * Create a token for the service account: * From the service account page, select **Manage access tokens**. * Click **Add new token**. * Select the **api** and **read\_user** scopes. * Click **Generate token** and copy the token. **Regular GitLab user account** * Create a new account in GitLab. * In GitLab, set the regular user's profile information: * **Name:** Unblocked * **Avatar:** download and use the Unblocked logo below Unblocked logo Download PNG * In GitLab, **sign in** as an Owner for the top-level group that contains the repositories Unblocked should review. * In the top-level group, click **Manage** in the left navigation and select **Members**. * Click **Invite members**. * Invite the GitLab account you created for code review. * Set the role as "**Developer**" or above and click "**Invite**". In Unblocked, search for the GitLab account you created for code review and select it. If you select a regular user account, Unblocked will prompt you to authorize that account with GitLab. If you select a service account, Unblocked will prompt you to enter the token you created in GitLab. Service accounts connect with a token and do not use the GitLab OAuth flow. Regular user accounts still use OAuth, so you need to be logged in to GitLab with that account when authorizing it. Select Bot For GitLab Self-Managed repositories, code review comments need to be posted on behalf of a GitLab account. We recommend creating an Unblocked bot account for this specific purpose. You can use either a GitLab service account or a regular GitLab user account. Regular users connect with OAuth, while service accounts connect with a token. Decide which GitLab account type Unblocked should use for code review, then follow the matching instructions. **GitLab service account** * Create a [GitLab service account](https://docs.gitlab.com/user/profile/service_accounts/) in your GitLab instance. * Create a token for the service account: * From the service account page, select **Manage access tokens**. * Click **Add new token**. * Select the **api** and **read\_user** scopes. * Click **Generate token** and copy the token. **Regular GitLab user account** * Create a new account in your GitLab instance. * In GitLab Self-Managed, set the regular user's profile information: * **Name:** Unblocked * **Avatar:** download and use the Unblocked logo below Unblocked logo Download PNG * In GitLab Self-Managed, **sign in** as an Owner or instance administrator for the top-level group that contains the repositories Unblocked should review. * In the top-level group, click **Manage** in the left navigation and select **Members**. * Click **Invite members**. * Invite the GitLab account you created for code review. * Set the role as "**Developer**" or above and click "**Invite**". In Unblocked, search for the GitLab account you created for code review and select it. If you select a regular user account, Unblocked will prompt you to authorize that account with GitLab Self-Managed. If you select a service account, Unblocked will prompt you to enter the token you created in GitLab. Service accounts connect with a token and do not use the GitLab OAuth flow. Regular user accounts still use OAuth, so you need to be logged in to GitLab with that account when authorizing it. Select Bot # Configuring Data Sources Source: https://docs.getunblocked.com/configuring-data-sources Connect the documentation, messaging, issue tracking, and CI tools your team uses so Unblocked has full context about your application and gives better answers. While Unblocked is designed to build its primary data index from your [source code](/connecting-source-code), granting Unblocked access to other systems you use to build your application improves the quality of answers for you and your team. Unblocked has pre-built integrations with knowledge management systems, messaging platforms, bug and issue trackers, and more. If there is public content that can give additional context to your Unblocked instance, you can point it at any publicly accessible website. Or, you can even build your own integration with Unblocked's API. In order to connect Unblocked with the tools your team uses, review the documentation for the specific data sources you want to use. Then, set up Unblocked to process all of the material you've shared with it. ## Available Data Sources ### Source Code Management * [GitHub.com](/data-sources/github) and [GitHub Enterprise](/data-sources/github-enterprise) * [Bitbucket](/data-sources/bitbucket) and [Bitbucket Data Center](/data-sources/bitbucket-data-center) * [GitLab](/data-sources/gitlab) and [GitLab Self-Managed](/data-sources/gitlab-self-managed) * [Azure DevOps](/data-sources/azure-devops) ### Documentation * [Coda](/data-sources/coda) * [Confluence](/data-sources/confluence) and [Confluence Data Center](/data-sources/confluence-data-center) * [External Websites](/data-sources/external-websites) * [Google Drive](/data-sources/google-drive) and [Google Drive for Workspaces](/data-sources/google-drive-for-workspaces) * [Microsoft SharePoint](/data-sources/microsoft-sharepoint) * [Notion](/data-sources/notion) * [Stack Overflow for Teams](/data-sources/stack-overflow) ### Project Management * [Asana](/data-sources/asana) * [Jira](/data-sources/jira) and [Jira Data Center](/data-sources/jira-data-center) * [Linear](/data-sources/linear) * [Zendesk](/data-sources/zendesk) ### Data & Analytics * [PostHog](/data-sources/posthog) * [Snowflake](/data-sources/snowflake) ### Messaging Platforms * [Slack](/data-sources/slack) * [Microsoft Teams](/data-sources/microsoft-teams) ### Incident Management * [Datadog](/data-sources/datadog) * [Sentry](/data-sources/sentry) ### Continuous Integration * [Bitbucket Pipelines](/data-sources/bitbucket-pipelines) * [Buildkite](/data-sources/buildkite) * [CircleCI](/data-sources/circleci) * [GitHub Actions](/data-sources/github-actions) * [GitLab Pipelines](/data-sources/gitlab-pipelines) # Connecting Source Code Source: https://docs.getunblocked.com/connecting-source-code Connect GitHub, GitLab, Bitbucket, or Azure DevOps to Unblocked, choose which repositories it indexes, and control access with Data Shield and source settings. Unblocked is built to answer questions about your codebase, and as you might expect, requires access to your source code management system. At present, Unblocked supports most major Git-based hosting solutions, including: * [GitHub.com](/data-sources/github) and [GitHub Enterprise](/data-sources/github-enterprise) * [Bitbucket](/data-sources/bitbucket) and [Bitbucket Data Center](/data-sources/bitbucket-data-center) * [GitLab](/data-sources/gitlab) and [GitLab Self-Managed](/data-sources/gitlab-self-managed) * [Azure DevOps](/data-sources/azure-devops) Provide Unblocked with access to any code you want to be able to ask questions about. The Code Review and Platform plans support one source code management system. The Enterprise plan can [connect multiple source code systems](/team-settings/multi-scm) to Unblocked. If there are specific repositories you don't want Unblocked to use as it answers questions, you can: * Remove these repositories from Unblocked after processing is complete through [Data Source](/data-sources/data-sources-overview) configurations * Use [Data Shield](/team-settings/data-shield) - which uses the identity of the user asking the questions to ensure they have access to the underlying data store (like repository, workspace, project, channel, etc.) For more information about how Unblocked manages the security of your code and its systems, see our [security page](https://getunblocked.com/security/). # Custom integrations Source: https://docs.getunblocked.com/custom-integrations Choose between a Public API Collection and Custom MCP Unblocked offers two ways to bring in a system that doesn't have a built-in data source, and both appear under **Settings** › **Data Sources** › **Custom**. They work in opposite directions: * **Public API Collection** is a push model. You create a collection with the [Unblocked REST API](/api-reference/quickstart) and upload documents to it. Unblocked indexes what you send and cites those documents in answers. * **[Custom MCP](/data-sources/custom-mcp)** is a pull model. You connect a Model Context Protocol (MCP) server that is reachable over public HTTPS, and Unblocked calls its read-only tools while it answers a question. Nothing is ingested or indexed. If Unblocked already has a built-in data source for the system — such as [Datadog](/data-sources/datadog) or [Sentry](/data-sources/sentry) — connect that instead. Built-in data sources are indexed, kept in sync, and cited in answers, so a Custom MCP passthrough to the same system gives you less. ## Compare the two options | | Public API Collection | Custom MCP | | - | - | - | | Direction | You push documents to Unblocked. | Unblocked pulls from your server. | | Freshness | A snapshot that is only as current as your last upload. | Live at the time the question is asked. | | Storage | Documents are indexed by Unblocked. | Nothing is ingested or indexed. | | Answers | Uploaded documents appear as cited references. | Tool results are used while answering. | | What you operate | A job or script that builds and uploads documents. | An MCP server reachable over public HTTPS. | | Network exposure | None. Your systems stay private. | The MCP endpoint must be reachable from the public internet. | | Authentication | An Unblocked API token in the `Authorization` header. | OAuth or HTTP headers that Unblocked sends to your server. | | Access | Whatever you choose to upload. | Read-only tools that you select. | | Limits | Up to 25 collections per team and 10 MB per request. | HTTPS only, and only tools Unblocked determines are read-only. | ## When to use a Public API Collection Use a Public API Collection when the content behaves like a document set you can hand over: * The data is static or changes slowly, such as internal documentation, runbooks, policies, or exported reports. * You can build and upload the content on a cadence, for example nightly or after a publish step. * You don't want to expose any infrastructure to the public internet. * Answers don't need to reflect the state of a system at the moment the question is asked. * You want the content to appear as a cited reference in answers. Start with the [API quickstart](/api-reference/quickstart) to create a token, create a collection, and add documents. A team can have up to 25 collections, and each request can be up to 10 MB. See [rate limits](/api-reference/rate-limits) for the request limits that apply to API tokens. ## When to use Custom MCP Use Custom MCP when the answer depends on the current state of a running system: * You need live context, such as querying a database, a dashboard, or an internal tool on demand. * No built-in Unblocked data source exists for the system. This covers internal tools, proprietary APIs, and platforms Unblocked doesn't support yet, such as PagerDuty, Grafana, Backstage, LaunchDarkly, or Splunk. * The system can expose an MCP server over public HTTPS. Local, private-network, and plain-HTTP servers aren't supported. * The server authenticates with OAuth or HTTP headers. * The tools you need are read-only. Unblocked uses `annotations.readOnlyHint` when the server provides it, and otherwise evaluates the tool description and excludes tools that might modify data. See [Custom MCP](/data-sources/custom-mcp) for the connection steps and troubleshooting. ## Rule of thumb If you have a snapshot you can upload, use a Public API Collection. If you have a live system you have to query, use Custom MCP. Some teams use both: Public API Collections for reference material that rarely changes, and a Custom MCP server for the systems that have to be checked in the moment. # Asana Source: https://docs.getunblocked.com/data-sources/asana Connecting your Asana Workspace to Unblocked Unblocked exists to answer questions about your application, so it takes into account the context, data, and discussions that live across the systems your team uses. When you connect Unblocked with your Asana Workspace, you'll provide Unblocked with important context on projects and tasks related to your codebase. Unblocked will be able to use the details in your Asana Workspace to answer questions you ask, and it will provide links back to the tasks it used to find those answers for easy reference. ## Data sync Projects you connect start syncing within minutes. After the initial sync, Unblocked checks Asana for new and updated tasks every 12 hours using Asana's change events. ## Connect your Asana Workspace ### Sign in to Unblocked Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked. Once you've signed in, click **Settings** in the sidebar, then select **Data Sources**. Select **Connect another data source**. Scroll to the project management section and select Asana. Next, you'll be redirected to Asana where you will sign in and grant Asana access to Unblocked. ## Selecting your Workspace After granting Unblocked access to your Asana account, you’ll be redirected back to Unblocked. Next, select the Workspace you would like to index. add-asana-workspaces ## Selecting your Projects Once you have selected a Workspace, select the Projects you want Unblocked to index. add-asana-projects When you're done, click **Save Settings**. Unblocked will begin referencing the projects in your Asana workspace in its answers. ## Connecting Private Projects When the first Unblocked user connects Asana as a data source, Unblocked can only access projects that the user is a member of—either directly or through a Team. For additional Unblocked users to add their own private projects, they must first navigate to their Asana settings in the Unblocked web dashboard. Under the "Don't see your projects?" banner, click **Link Your User Account**. After linking your user account, you'll be redirected back to Unblocked, where you can select your private projects. Note: *Personal Projects* are not indexed by Unblocked and will not appear in the list of selectable projects. asana-private-projects # Azure DevOps Source: https://docs.getunblocked.com/data-sources/azure-devops Connect your Azure DevOps organization to Unblocked (Enterprise plan) so it can index repositories and pull requests across projects and cite them in answers. To connect Azure DevOps with Unblocked, you need to be on the Enterprise Plan. You can view all the features of Unblocked's plans on our [pricing page](https://www.getunblocked.com/pricing). Connecting your Azure DevOps organization gives Unblocked access to your repositories and pull requests across your projects. Unblocked uses this data to answer questions about your code and surface relevant context from PR discussions. Pull requests from Azure DevOps appear as cited sources in Unblocked's answers. ## Data sync Pull requests are synchronized in real time, so they are always up to date. [Code Review](/code-review) always works with the current state of your pull request. Unblocked indexes source code from your repository's default branch at least once every 8 hours. Answers and search — including through [Unblocked MCP](/unblocked-mcp/mcp-overview) — use this index, so changes on other branches appear after they merge to the default branch. Unblocked supports Git repositories in Azure DevOps. TFVC repositories aren't supported, and Azure DevOps work items aren't indexed. ## Connect your organization and repositories ### Enable third-party application access via OAuth In order to authenticate Unblocked with your Azure DevOps site, you need to first enable third-party application access via OAuth. Navigate to your Azure DevOps site, and click on **Organization Settings**. ADO
Organization Settings In the sidebar, click on Policies, then turn on **Third-party application access via OAuth**. ADO Policies ### Sign in to Unblocked Whether you sign in with Azure DevOps credentials, another code repository, or [your SSO provider](/team-settings/sso), you first need to authenticate to Unblocked. If you have an existing Unblocked account, you'll need to select **Settings** in the sidebar, then **Data Sources**, then **Azure DevOps** once you've logged in. Otherwise, you'll be immediately prompted to authorize the Unblocked app. ### Authorize the Unblocked app If you aren't logged into Azure DevOps, you'll be prompted to do so. Once you're authenticated to Azure DevOps, you'll be asked to grant access to Unblocked. This access will allow Unblocked to read the Azure DevOps organizations and projects you are a part of as well as check for repositories in those projects, but it won't begin indexing those repositories yet. ADO User Auth ### Connect your repositories Once you've given access to your Azure DevOps account, Unblocked still needs to know which repositories you want it to answer questions about. After authorizing access to Azure DevOps, you'll be redirected back to Unblocked, where you'll be prompted to select the project you want to use with Unblocked. ADO Select Project Unblocked preselects the repositories that have been active in the last 6 months. Forked and archived repositories are not preselected. ## Generating a model for answering questions Unblocked is able to answer questions for the repositories that it has ingested into its model. After giving Unblocked initial access to your organization and project, you'll choose which repositories it should ingest. You can also select whether all new repositories should be automatically ingested into your Unblocked model. ADO Select Repos Once you select the repositories you want to ask questions about, click **Save and Continue**, and Unblocked will get to work. While it is certainly possible to use Unblocked without incorporating any further [data sources](/configuring-data-sources), we strongly encourage you to include as many other systems in which you have documented or even discussed your applications. # Bitbucket Source: https://docs.getunblocked.com/data-sources/bitbucket Connect your Bitbucket workspace to Unblocked so it can index repositories and pull requests, keep them in sync, and cite PR discussions in its answers. Running your own Bitbucket Data Center self-managed solution? Go take a look at the [Bitbucket Data Center documentation](/data-sources/bitbucket-data-center) instead. If you are using Bitbucket.org, this is how you can get started. Connecting your Bitbucket workspace gives Unblocked access to your repositories and pull requests. Unblocked uses this data to answer questions about your code, explain why changes were made, and surface relevant PR discussions. Pull requests and their discussions appear as cited sources in Unblocked's answers. ## Data sync Pull requests are synchronized in real time, so they are always up to date. [Code Review](/code-review) always works with the current state of your pull request. Unblocked indexes source code from your repository's default branch at least once every 8 hours. Answers and search — including through [Unblocked MCP](/unblocked-mcp/mcp-overview) — use this index, so changes on other branches appear after they merge to the default branch. ## Connect your organization and repositories You need to be a Bitbucket workspace administrator to install Unblocked into your Bitbucket account ### Sign in to Unblocked Whether you sign in with Bitbucket credentials, another code repository, or [your SSO provider](/team-settings/sso), you first need to authenticate to Unblocked. ### Authorize the Unblocked app If you aren't logged into Bitbucket, you'll be prompted to do so. Once you're authenticated to Bitbucket, you'll be asked to grant access to Unblocked. This access will allow Unblocked to read the workspaces you are a part of as well as check for repositories in those workspaces, but it won't begin indexing those repositories yet. Bitbucket-connect ### Connect your repositories Once you've given access to your Bitbucket account, Unblocked still needs to know which repositories you want it to answer questions about. After granting access to your Bitbucket account, you'll be redirected back to Unblocked, where you'll be prompted to select the workspace you want to use with Unblocked. Bitbucket-workspace While you can install Unblocked in any Bitbucket workspace, Unblocked works best with your work organization and repositories. Unblocked preselects the repositories that have been active in the last 6 months. Forked and archived repositories are not preselected. ## Generating a model for answering questions Unblocked is able to answer questions for the repositories that it has ingested into its model. After giving Unblocked initial access to your workspace, you'll choose which repositories it should ingest. You can also select whether all new repositories should be automatically ingested into your Unblocked model. Bitbucket-repos-save Once you select the repositories you want to ask questions about, click **Save and Continue**, and Unblocked will get to work. If your repositories have a lot of code, documentation, and discussions, then data ingestion may take longer to process. However, Unblocked will keep you updated as it builds an understanding of your codebase and documentation. ## Managing repositories If you decide at a later time that you want to adjust the repositories that Unblocked can access, you can always add or remove connected sources. First, click **Settings** in the sidebar, then **Data Sources**. Next select the **Bitbucket**. From here, you can add any repository that was not previously a part of Unblocked's data index, or remove any that you no longer want to include. Click **Save Settings**, and Unblocked will reindex your code so you can get answers only on the code from your selected repositories. Bitbucket-repos ## Continuing Set Up While it is certainly possible to use Unblocked without incorporating any further [data sources](/configuring-data-sources), we strongly encourage you to include as many other systems in which you have documented or even discussed your applications. If you're using Unblocked’s Enterprise plan, you can also connect other source code management systems to your Unblocked workspace. If you have restricted network access to your repositories, you may need to [allow Unblocked's IP address ranges](/data-sources/ip-range). # Bitbucket Data Center Source: https://docs.getunblocked.com/data-sources/bitbucket-data-center Connect your Bitbucket Data Center server to Unblocked (Enterprise plan) so it can index self-hosted repositories and pull requests and cite them in answers. Using Bitbucket.org? Go take a look at the [Bitbucket.org documentation](/data-sources/bitbucket) instead. If you are running your own Bitbucket Data Center self-managed server, this is how you can get started. To connect Bitbucket Data Center with Unblocked, you need to be on the Enterprise Plan. You can view all the features of Unblocked's plans on our [pricing page](https://www.getunblocked.com/pricing). Connecting your Bitbucket Data Center instance gives Unblocked access to your self-hosted repositories and pull requests — the same integration as Bitbucket Cloud, configured for your private server. Pull requests from your Bitbucket Data Center instance appear as cited sources in answers. ## Data sync Pull requests are synchronized in real time, so they are always up to date. [Code Review](/code-review) always works with the current state of your pull request. Unblocked indexes source code from your repository's default branch at least once every 8 hours. Answers and search — including through [Unblocked MCP](/unblocked-mcp/mcp-overview) — use this index, so changes on other branches appear after they merge to the default branch. ## Connect your organization and repositories You need to be a Bitbucket Data Center administrator to install Unblocked into your Bitbucket server. ### Sign in to Unblocked Whether you sign in with Bitbucket credentials, another code repository, or [your SSO provider](/team-settings/sso), you first need to authenticate to Unblocked. To authenticate with your Bitbucket Data Center server, click to **View enterprise options**. ### Authorize the Unblocked app Before proceeding to your Bitbucket Data Center server, you need to provide Unblocked with the hostname and port where you are hosting it. Bitbucket-Data-Center-Host If you have restricted network access to your host, you may need to [allow Unblocked to access it](/data-sources/ip-range). Once Unblocked connects to your Bitbucket server, it will prompt you with instructions to configure a new Bitbucket Application Link. Copy the redirect URL from step 1 and click **Create a Bitbucket Application** Link in step 2. When you access your Bitbucket Data Center server, you will need to enter an administrator password to access the Application Links page. Click **Create link** and complete the form as instructed by Unblocked. 1. Application type: **External application** 2. Direction: **Incoming** Click **Continue**. Enter the Name and Redirect URL for the Application link. In the Application permissions section, check the **Admin** box under **Projects**. Click **Save**. Bitbucket Data Center will provide a Client ID and a Client secret as credentials. Copy the Client ID and secret, then paste them into the form on Unblocked. Bitbucket-Data-Center-Form Click **Create Application** and **Continue**. Now that you have configured an application link to your Bitbucket Data Center server, you can use that server to sign in. Bitbucket will ask if you'd like to provide Unblocked with access to your account. Click Allow. This access will allow Unblocked to read the workspaces you are a part of as well as check for repositories in those workspaces, but it won't begin indexing those repositories yet. Bitbucket-Data-Center-Permissions ### Connect your repositories Unblocked will need to know which repositories you want it to answer questions about. After granting access to your Bitbucket account, you'll be redirected back to Unblocked, where you'll be prompted to select the workspace you want to use with Unblocked. Bitbucket-Data-Center-Org While you can install Unblocked in any Bitbucket workspace, Unblocked works best with your work organization and repositories. Unblocked preselects the repositories that have been active in the last 6 months. Forked and archived repositories are not preselected. ## Generating a model for answering questions Unblocked is able to answer questions for the repositories that it has ingested into its model. After giving Unblocked initial access to your workspace, you'll choose which repositories it should ingest. You can also select whether all new repositories should be automatically ingested into your Unblocked model. Bitbucket-Data-Center-Repos Once you select the repositories you want to ask questions about, click **Save and Continue**, and Unblocked will get to work. While it is certainly possible to use Unblocked without incorporating any further [data sources](/configuring-data-sources), we strongly encourage you to include as many other systems in which you have documented or even discussed your applications. If you're using Unblocked’s Enterprise plan, you can also connect other source code management systems to your Unblocked workspace. # Bitbucket Pipelines Source: https://docs.getunblocked.com/data-sources/bitbucket-pipelines Connect Bitbucket Pipelines to Unblocked as a CI provider and enable the CI Failure Agent to diagnose failed pipeline runs on the repositories you select. ## Data sync Bitbucket notifies Unblocked through a webhook as soon as a pipeline finishes — there is no polling schedule or sync delay. When a build fails, the [CI Failure Agent](/unblocked-for-ci) analyzes the failure immediately and posts its report to the pull request once analysis completes. To connect Bitbucket Pipelines to Unblocked, follow these steps: In the left sidebar, click on **Settings** and then **Continuous Integration**. Then click on **Add CI Provider**. Click on the **Bitbucket Pipelines** tile. CI Add Click **Select Repositories** to choose the repositories you want to enable CI Failure Agent on. CI Configure Bitbucket Pipelines Toggle the repositories you want to enable by selecting them. CI reports from the CI Failure Agent need to be posted on behalf of a Bitbucket user account. We recommend creating an Unblocked bot account for this specific purpose.

Already have a bot account?

Some teams already have a bot account they use for posting automated messages. If you already have a bot account that you can repurpose for posting CI analysis reports, select it and skip to the next step.

* [Create a new account](https://id.atlassian.com/signup?application=bitbucket\&continue=https%3A%2F%2Fbitbucket.org\&prompt=select_account) in Bitbucket with the following information: * **Name:** Unblocked * **Avatar:** download and use the Unblocked logo below Unblocked logo Download PNG * [Switch accounts](https://id.atlassian.com/login/select-account?application=bitbucket\&continue=https%3A%2F%2Fbitbucket.org) and sign in to your Bitbucket Workspace as a Workspace admin. * Click the gear icon in the top right of the navigation bar, and select **User Management**. * Invite your new bot user to your workspace. * Accept the email invitation that was sent to your bot account.
Search for the Bot Account you just created and select it. You may be required to authorize this account with Unblocked. CI Configure Bitbucket Pipelines Click **Save Settings** to apply your changes. Now Unblocked will analyze CI failures in the selected repositories and post reports to pull requests.
# Buildkite Source: https://docs.getunblocked.com/data-sources/buildkite Connecting Buildkite to Unblocked ## Data sync Buildkite notifies Unblocked through a webhook as soon as a build finishes — there is no polling schedule or sync delay. When a build fails, the [CI Failure Agent](/unblocked-for-ci) analyzes the failure immediately and posts its report to the pull request once analysis completes. ## Connect Buildkite To connect Buildkite to Unblocked, follow these steps: In the left sidebar, click on **Settings**, then **Continuous Integration**. Then click on **Add a CI platform**. Click on the **Buildkite** tile. CI Add * Create a new [API Access Token](https://buildkite.com/user/api-access-tokens) in Buildkite: * Enter "Unblocked" as the **Description**. * Choose the appropriate organization in **Organization Access**. * Select the following **REST API Scopes**: * `read_build_logs` * `read_builds` * `read_organizations` * `read_pipelines` * `read_user` * Copy the following CIDR ranges into **Allowed IP Addresses**: * `34.212.246.90/32` * `44.235.109.70/32` * `44.236.252.193/32` * `52.88.232.82/32` * Click **Create New API Access Token**. Buildkite token * Go to the [Notification Services](https://buildkite.com/organizations/-/services) page. * Click Add Webhook. * In the **description** field, enter "Unblocked". * Copy and Paste the **Webhook URL** and **Token** from Unblocked into the corresponding fields in Buildkite. * Select the following event: * `build-finished` * Ensure that **All Pipelines** are selected. * Leave **Branch filtering** blank. * Click **Add Webhook Notification**. Toggle the repositories you want to enable by selecting them. Click **Save Settings** to apply your changes. Now Unblocked will analyze Buildkite failures in the selected repositories and post reports to pull requests. # CircleCI Source: https://docs.getunblocked.com/data-sources/circleci Connecting CircleCI to Unblocked ## Data sync CircleCI notifies Unblocked through a webhook as soon as a build finishes — there is no polling schedule or sync delay. When a build fails, the [CI Failure Agent](/unblocked-for-ci) analyzes the failure immediately and posts its report to the pull request once analysis completes. ## Connect CircleCI To connect CircleCI to Unblocked, follow these steps: In the left sidebar, click on **Settings**, then **Continuous Integration**. Then click on **Add a CI platform**. Click on the **CircleCI** tile. CI Add * Create a new [Personal API Token](https://app.circleci.com/settings/user/tokens) in CircleCI: * Enter "Unblocked" as the **Description**. * Click **Add API Token**. * Paste the token into Unblocked. CircleCI token Select the CircleCI projects you want to enable. Unblocked lists recently used projects and projects that you follow in CircleCI. If a project is not listed, you can add it by entering the project slug, which you can find in the project settings in CircleCI. Unblocked will automatically install an outgoing webhook in CircleCI for each project you select, so that it can receive notifications when builds fail. Toggle the repositories you want to enable by selecting them. Click **Save Settings** to apply your changes. Now Unblocked will analyze CircleCI failures in the selected repositories and post reports to pull requests. CircleCI token # Coda Enterprise Source: https://docs.getunblocked.com/data-sources/coda Connect your Coda Enterprise organization to Unblocked (Enterprise plan) so it can use your Coda docs to answer questions about how and why your code works. To connect Coda Enterprise with Unblocked, you need to be on the Enterprise Plan. You can view all the features of Unblocked's plans on our [pricing page](https://www.getunblocked.com/pricing). When you connect Unblocked with your Coda Enterprise organization, you'll provide Unblocked with important context on how and why your codebase works. Unblocked will be able to use the details in your Coda Enterprise organization to answer questions you ask, and it will provide links back to the docs it used to find those answers for easy reference. ## Data sync Unblocked receives updates from Coda through webhooks when docs change, so edits appear in answers shortly after they happen. A full workspace scan also runs once a day to catch anything a webhook may have missed. ## Connect your Coda Enterprise organization You need to be an admin in a Coda organization on a Coda Enterprise plan to connect Coda Enterprise with Unblocked. ### Sign in to Unblocked Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**. Select **Connect another Data Source**. Scroll to the documentation section and select Coda Enterprise. This will present you with a form for connecting Coda Enterprise with Unblocked. Coda-paste-token ### Generate an API Token Create an API token in Coda and paste the token into the above form in Unblocked. You can generate a token by clicking the Generate Token button in the API Settings section of your Coda [Account Settings](https://coda.io/account) page. Coda-generate-token ### Selecting Docs and Folders After successfully connecting your Coda Enterprise instance, you'll be directed to the configuration settings page. Here, you can choose the docs and folders you want Unblocked to reference as it answers your questions. Coda-add-files # Confluence Source: https://docs.getunblocked.com/data-sources/confluence Connect your Confluence spaces to Unblocked When you connect Unblocked with your Confluence spaces, you'll provide Unblocked with important context on how and why your codebase works. Most importantly, Unblocked will be able to use the details in your Confluence spaces to answer questions you ask it, and it will provide links back to the pages that it used for easy reference. ## Data sync Unblocked checks Confluence for new and updated pages every 15 minutes, so edits typically appear in answers within minutes. ## Connect your Confluence Site If your organization has [Data Shield](/team-settings/data-shield) enabled, we strongly recommend having a Confluence admin connect your site. Doing so will ensure that Unblocked has the ability to sync Confluence identities, removing the need for users to manually connect their account to receive answers containing Confluence references. ### Sign in to Unblocked Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**. Click **Connect Another**, scroll to the documentation section, and select **Confluence**. You'll then be redirected to Confluence and asked to authorize your account with Unblocked. Confluence-authorize ### Connecting Confluence Once you grant Unblocked access to your Confluence site, you'll be redirected back to Unblocked and prompted to install the Unblocked for Confluence app if you are a Confluence admin. Confluence-app After installing, return to the Unblocked tab and click **Verify Installation** to proceed to the Confluence configuration page to select spaces to share with Unblocked. ## Selecting your Spaces You have the option to grant access to specific spaces for Unblocked to index and search. You will be best served by granting access to all spaces, but you can always restrict the scope depending on your team's needs. Using [Data Shield](/team-settings/data-shield), you can also set access permissions that determine which content in your Confluence spaces will be used in Unblocked's answers. Confluence-Spaces Once you click **Save Settings**, Unblocked will begin referencing the pages in your Confluence spaces in its answers. ## Troubleshooting ### Unable to Connect Unblocked If you see the following error message, it means user installed apps have been blocked for your site. To work around this, ask your Confluence Admin to [log in to Unblocked](https://getunblocked.com/dashboard/login) and connect your Confluence Site. error Alternatively, your Confluence admin can temporarily allow user installed apps while you connect Unblocked to Confluence. Ask your admin to visit your Confluence site and click **Apps > Manage apps**. Confluence-manage-apps Then on the **Settings** tab of the **Connected Apps** page, click **Allow user apps** under the **User Installed Apps** section. You can now connect Unblocked to Confluence. Atlassian-allow-user-apps After connecting, your admin can re-enable blocking user installed apps. # Confluence Data Center Source: https://docs.getunblocked.com/data-sources/confluence-data-center Connect your Confluence Data Center instance to Unblocked (Enterprise plan) so it can use your Confluence spaces to answer questions about your codebase. To connect Confluence Data Center with Unblocked, you need to be on the Enterprise Plan. You can view all the features of Unblocked's plans on our [pricing page](https://www.getunblocked.com/pricing). When you connect Unblocked with your Confluence Data Center spaces, you'll provide Unblocked with important context on how and why your codebase works. Most importantly, Unblocked will be able to use the details in your Confluence Data Center spaces to answer questions you ask it, and it will provide links back to the pages and blog posts that it used for easy reference. ## Data sync Unblocked checks your Confluence Data Center instance for new and updated pages every 15 minutes using incremental sync, with a periodic full re-scan of each space to catch anything missed. User and group information syncs every hour. ## Connect Confluence Data Center We recommend having a site admin connect your Confluence Data Center site with Unblocked. [Data Shield](/team-settings/data-shield) for Confluence Data Center is only supported when the token used to connect with Unblocked belongs to a site admin. ### Sign in to Unblocked Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked to begin this integration. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**. Select **Connect another Data Source**. Scroll to the documentation section and select **Confluence Data Center**. This will present you with a form for connecting Confluence Data Center with Unblocked. Enter your team's Confluence Data Center site URL and your personal access token on this page. Confluence-DC-setup ### Creating a Personal Access Token In order to connect with Unblocked, you will need a Confluence Data Center personal access token. If you prefer to create a new personal access token, you can do so within Confluence Data Center. To create a personal access token, navigate to your Profile page, accessible by clicking on your avatar in the top right corner of your Confluence Data Center site. From your Profile page, select the Settings section, then Personal Access Tokens, and finally Create token. On the following page, provide a token name, ensure "Automatic expiry" is unchecked, and click Create. Copy the token then return to Unblocked to paste the code into the Personal Access Token (PAT) field. Confluence-DC-setup ### Connecting Confluence Data Center Confluence-DC-spaces Once you connect Confluence Data Center, you have the option to grant access to specific spaces for Unblocked to index and search. You will be best served by granting access to all spaces, but you can always restrict the scope depending on your team's needs. Using [Data Shield](/team-settings/data-shield), you can also set access permissions that determine which content in your Confluence spaces will be used in Unblocked's answers. Once you click **Save Settings**, Unblocked will begin referencing the pages and blog posts in your Confluence Data Center spaces in its answers. # Custom MCP Source: https://docs.getunblocked.com/data-sources/custom-mcp Connect an HTTP MCP server to Unblocked Connect any Model Context Protocol (MCP) server that is available over public HTTPS to let Unblocked use its tools when answering questions. This includes hosted MCP servers from services such as Grafana or Miro, as well as MCP servers created or operated by your team. Use this option when you need live context from a system that doesn't have a built-in Unblocked data source. Unblocked only makes read-only MCP tools available. You choose which of those tools Unblocked can use. If you are deciding between Custom MCP and a Public API Collection, see [Custom integrations](/custom-integrations). ## Before you connect Make sure you have: * The publicly reachable HTTPS endpoint for the MCP server you want to connect. Local, private-network, and HTTP endpoints aren't supported. * An MCP server that supports tool discovery and provides clear, accurate descriptions for its tools. This can be a hosted third-party server or one operated by your team. If your server uses HTTP headers for authentication, you also need the header names and values it expects, such as an API key or bearer token. You can also provide a public image URL if you want to override the generated data source icon. Unblocked uses `annotations.readOnlyHint` when the MCP server provides it. If the hint is missing, Unblocked evaluates the tool's description and excludes tools that might modify data. Only tools determined to be safely read-only are available for selection. To explicitly identify a tool as read-only, include the hint in its definition: ```json theme={null} { "name": "search_logs", "description": "Search application logs", "annotations": { "readOnlyHint": true } } ``` ## Connect a custom MCP server In the Unblocked sidebar, click **Settings**, then **Data Sources**, then **Connect another data source**. Select **Custom**, then select **Custom MCP**. Select Custom MCP from the Custom category Complete the connection form: * **MCP server URL:** The public HTTPS endpoint for the MCP server, including its MCP path when required. For example, `https://mcp.example.com/mcp`. * **Name:** Unblocked generates a name from the server URL. You can replace it with a more recognizable name. * **Icon URL:** Unblocked generates an icon from the server URL. You can replace it with another public image URL. Choose how Unblocked authenticates with the MCP server: * **OAuth:** Select this option if your MCP server supports OAuth. When you click **Connect**, you're redirected to the MCP server to authorize access. Connect to a Custom MCP server with OAuth * **HTTP Headers:** Select this option to send custom headers with every MCP request. Enter both a name and value for each header, and click **Add Header** if the server requires more than one. For bearer-token authentication, use `Authorization` as the header and `Bearer YOUR_TOKEN` as its value. Use the header names required by your MCP server for other authentication methods. Connect to a Custom MCP server with HTTP headers Click **Connect**. After you authorize with OAuth, or immediately when using HTTP headers, Unblocked validates the endpoint, connects to the server, and discovers its tools. Discovery can take up to a minute. Select the read-only tools that Unblocked can use. Use the filter to find a tool by its name or description, or use the **MCP Tools** checkbox to select or clear all tools. Tools that can modify data don't appear in this list. Select the read-only tools Unblocked can use from the connected MCP server Click **Save Settings**. Unblocked can now use the selected tools when they are relevant to a question. ## Authentication and access With OAuth, Unblocked redirects you to the MCP server to authorize access. With HTTP headers, Unblocked encrypts the values you provide and sends them with every request to the MCP server. Use a dedicated, least-privilege credential that grants access only to the data the selected tools need. The tool names and descriptions returned by your MCP server help Unblocked decide when to use each tool. Use clear descriptions that explain what each tool returns and when it is useful. ## Enable Data Shield [Data Shield](/team-settings/data-shield) lets each team member use a Custom MCP data source with their own account and permissions. It is available for connections that use **OAuth**. Connections that use **HTTP Headers** do not support Data Shield. With Data Shield off, Unblocked uses the shared credentials configured when the data source was connected. Team members can receive information accessible to that shared account without connecting their own accounts. With Data Shield on, each member must connect their own account. Unblocked calls the MCP server with that member's credentials, so the server applies their permissions. Only tools selected for the data source and available to that member can be used. If their account is disconnected or access is revoked, they must reconnect; Unblocked does not fall back to the shared account. Custom MCP data sources protected by Data Shield can only be used in personal threads. Start a personal thread to use these tools. ### Turn on Data Shield for a connection An Unblocked admin can enable Data Shield after connecting the MCP server with OAuth. 1. Go to **Settings** › **Data Shield**. 2. Find the **Custom MCP** row for your connection. Use the **Name** column to distinguish between multiple MCP servers. 3. Turn on its **Status** toggle, review the explanation, and click **Enable Data Shield**. Each Custom MCP connection has its own setting. In the example below, Data Shield is enabled for `miro.com`. Data Shield settings with the miro.com Custom MCP connection enabled ### How users connect their accounts After an admin enables Data Shield, each member completes these steps, including the person who originally connected the data source: 1. Go to **Settings** › **User Accounts** under **Personal Settings**. 2. Under **Unconnected Accounts**, find the **Custom MCP** connection by name and click **Connect My Account**. 3. Sign in to the service with your own account and authorize access. User Accounts showing Connect My Account for the miro.com Custom MCP connection Repeat this for each protected Custom MCP connection you want to use. Until you connect your account, Unblocked cannot use that connection's tools on your behalf. See [User Accounts](/user-settings/connecting-accounts) for more about managing connected accounts. ## Manage the connection To change the available tools, go to **Settings** › **Data Sources**, open the custom MCP data source, update the selection, and click **Save Settings**. Use the settings menu on the data source to manage or disconnect it. ## Troubleshooting ### The Connect button is unavailable Check that: * **MCP server URL** and **Name** aren't empty. * Every HTTP header row has both a name and a value, or is completely empty. * Header names are unique. Header-name matching isn't case-sensitive. ### Unblocked can't connect to the server Confirm that the URL: * Starts with `https://`. * Points to the MCP endpoint, not only the server's website or API root. * Resolves to a host that is reachable from the public internet. * Supports the selected authentication method and responds within one minute. ### The custom icon isn't displayed Unblocked generates an icon from the server URL. To override it, make sure the custom icon URL is publicly accessible and points directly to an image. If the image can't be loaded, Unblocked displays its default MCP icon instead. # Data Source Presets Source: https://docs.getunblocked.com/data-sources/data-source-presets Create data source presets to control which connected sources, channels, and documents Unblocked references when answering questions for you or your team. Data source presets allow you to configure specific data sources for Unblocked to reference when answering questions. This can be useful when you don't want Unblocked to reference every connected data source. For instance, if you are an engineer, you may want to receive answers only using data from the `#engineering` and `#general` Slack channels, and not include any data from the `#sales` channel, or from any Notion documents. ## Create a Data Source Preset To create a new data source preset, navigate to the **Settings** section of the [Unblocked web app](/using-unblocked/on-the-web). Under **Shared Presets**, select **Create Preset**. data-source-presets Every data source connected by your team is displayed in the **Data Sources** list. Simply click each individual row to include or exclude the data source from the preset. By default, all connected documents will be included with each selected data source. To specify particular documents to include with each data source, click the **Configure** button. data-source-presets-subsettings Click **Save** to save the preset. All saved data source presets are shared across all members of your team. ## Using a Data Source Preset To use a data source preset when asking a question, click on the **Answer Preferences** button, and select the preset you'd like to use in the **Data Sources** dropdown. The selected preset is saved as your preferred preset for future questions. data-source-select Preferred presets are unique to every individual user, and persisted across all Unblocked apps ([on the web](/using-unblocked/on-the-web), [in your messaging platform](/using-unblocked/in-messaging-platforms), and [in the Mac app](/using-unblocked/on-your-mac)). ## Presets and Unblocked MCP Data source presets apply to Q\&A answers on the web, in the Mac app, and in your messaging platform. They don't currently apply to [Unblocked MCP](/unblocked-mcp/mcp-overview) queries — when an agent calls `context_research`, it searches all data sources that the token or user can access. # Data Sources Overview Source: https://docs.getunblocked.com/data-sources/data-sources-overview Browse every data source Unblocked can connect: source code hosts, issue trackers, documentation tools, messaging platforms, CI systems, and the public API. Unblocked supports a wide range of data sources so you can easily connect the tools your team uses, whether that's source code management, bug and issue trackers, documentation, or some other kind of system. When connected, the data from these systems enhances and expands the kinds of answers you can get from Unblocked. In addition, if the following list of available data sources doesn't have the solution you're looking for, you can build your own integration using our [public API](/api-reference). ## Source Code Management You can connect one or more source code systems. Learn more about [Multiple Source Code Systems](/team-settings/multi-scm). Source code and pull requests from Bitbucket Cloud. Source code and pull requests from your Bitbucket Data Center instance. Source code, pull requests, and issues from GitHub.com. Source code, pull requests, and issues from your GitHub Enterprise instance. Source code and pull requests from GitLab.com. Source code and pull requests from your GitLab self-managed instance. Source code and pull requests from Azure DevOps. ## Cloud Infrastructure Compute, logs, and metrics from Google Cloud. ## Custom If your system doesn't have a data source in this list, you can connect it in one of two ways: push documents to Unblocked with the [public API](/api-reference/quickstart), or connect an MCP server that Unblocked queries live. See [Custom integrations](/custom-integrations) to decide which one fits. Read-only tools from any HTTP MCP server. Group of related documents, such as internal knowledge bases or wikis. ## Documentation Documentation from Coda. Pages and spaces from Confluence. Pages and spaces from your Confluence Data Center instance. Content from websites. Docs, text files, and PDFs from Google Drive. Docs, text files, and PDFs from your Google Drive Workspace. Pages and documents from Microsoft SharePoint. Documentation from Notion. Articles, questions and answers from your Stack Overflow for Teams instance. ## Project Management Workspaces, projects, tasks and comments from Asana. Issues and projects from Jira. Issues and projects from your Jira Data Center site. Issues from Linear. Tickets and support conversations from Zendesk. ## Data & Analytics Dashboards, notebooks, surveys, experiments, and feature flags from PostHog. SQL context from Snowflake databases. ## Messaging Platforms Messages and channels from Slack. Messages and channels from Microsoft Teams. ## Incident Management Incidents, logs, metrics, and monitors from Datadog. Issues, errors, and events from Sentry. ## Continuous Integration Automated CI reports from Bitbucket Pipelines. Automated CI reports from Buildkite. Automated CI reports from CircleCI. Automated CI reports from GitHub Actions. Automated CI reports from GitLab Pipelines. ## Keeping your data in sync Unblocked keeps every connected data source up to date automatically — you never need to trigger a re-sync after content changes. How quickly updates appear depends on the integration: * **Pull requests, CI results, and conversations** arrive in near real time, so products like [Code Review](/code-review) and the [CI Failure Agent](/unblocked-for-ci) always work with your team's latest activity. * **Source code, documentation, issues, and incidents** refresh on a regular schedule, so changes appear in answers and search — including through [Unblocked MCP](/unblocked-mcp/mcp-overview) — within minutes to hours depending on the source. For the exact sync behavior of a specific integration, see the **Data sync** section on that data source's page. # Datadog Source: https://docs.getunblocked.com/data-sources/datadog Connecting Datadog to Unblocked When you connect Datadog to Unblocked, Unblocked can reference incidents, logs, metrics, monitors, events, and hosts from your Datadog organization when answering questions about outages, alerts, and production issues. Unblocked provides links back to the original Datadog resources for easy reference. Unblocked discovers the available services and facets in your log data automatically, so log queries work without manual configuration. Unblocked doesn't currently reference Datadog traces or spans. ## Data sync Unblocked syncs incidents from Datadog every 15 minutes, and an initial sync starts as soon as you connect. Logs, metrics, monitors, and events are queried directly from Datadog at the time you ask a question, so those answers always reflect live data. ## Connect Datadog In the Unblocked sidebar, click **Settings**, then **Data Sources**, then **Connect another data source**. Scroll to the Incident Management section and select Datadog. In Datadog, go to **Organization Settings** › **API Keys** and create a new API key. In Datadog, go to **Organization Settings** › **Application Keys** and create a new application key with the following scopes: * `events_read` * `incident_read` * `logs_read_data` * `timeseries_query` * `monitors_read` * `hosts_read` * `apm_service_catalog_read` or `service_catalog_read` * `user_access_read` Paste the API key and application key into Unblocked, then select your Datadog region. If you're not sure which region to choose, US1 is the default. Datadog keys | Region | Base URL | | - | - | | US1 (default) | `https://api.datadoghq.com` | | US3 | `https://api.us3.datadoghq.com` | | US5 | `https://api.us5.datadoghq.com` | | EU1 | `https://api.datadoghq.eu` | | AP1 | `https://api.ap1.datadoghq.com` | | AP2 | `https://api.ap2.datadoghq.com` | | US1-FED (GovCloud) | `https://api.ddog-gov.com` | Click **Next**. Unblocked will begin referencing your Datadog incidents, logs, metrics, and monitors in its answers. Datadog connected # External Websites Source: https://docs.getunblocked.com/data-sources/external-websites Add external website content to Unblocked Unblocked uses the context, data, and discussions that live across the systems your team uses, including external websites that contain information related to your codebase. Unblocked is able to add any public website to its data index, meaning it can answer questions related to any web pages for which you provide the root URL. Only publicly accessible pages are supported. Websites that require authentication or sign-in — such as internal GitHub Pages sites restricted to logged-in users — can't be added. ## Data sync When you add a website, Unblocked crawls the site in full shortly after you save it. After that, each page is re-crawled about once every 7 days, so it can take up to a week for changes on a website to appear in answers. ### Add your Websites To get started, click **Settings** in the sidebar, then **Data Sources**, then **Connect another data source**. Scroll to the documentation section and select Websites. From this page, Unblocked presents you with a form to enter any URL you would like it to include in your team's data index for generating answers. You can connect a blog, a documentation site, or a marketing page, and as long as it is publicly accessible on the web, Unblocked can use relevant context from the site in its answers. web-form Once you add the URLs you'd like to include in your Unblocked answers, click **Save Settings**. Unblocked will begin incorporating those pages into its answers for all of the questions you and your team may ask. To remove websites in the future, or add others, simply return to this page and add or remove URLs as needed. # GitHub Source: https://docs.getunblocked.com/data-sources/github Connect your GitHub organization to Unblocked so it can index repositories, pull requests, issues, and discussions and cite them when answering questions. Running your own enterprise server? Go take a look at the [GitHub Enterprise documentation](/data-sources/github-enterprise) instead. If you are using GitHub Enterprise Cloud or GitHub.com, this is how you can get started. Connecting your GitHub organization gives Unblocked access to your repositories, pull requests, issues, and discussions. Unblocked uses this data to answer questions about how your code works, why decisions were made, and what's changed recently. Pull requests, issues, and discussions from GitHub appear as cited sources in Unblocked's answers. ## Data sync Pull requests are synchronized in real time, so they are always up to date. [Code Review](/code-review) always works with the current state of your pull request. Unblocked indexes source code from your repository's default branch at least once every 8 hours. Answers and search — including through [Unblocked MCP](/unblocked-mcp/mcp-overview) — use this index, so changes on other branches appear after they merge to the default branch. ## Connect your organization and repositories You need to be a GitHub organization owner to install the Unblocked GitHub App into your GitHub organization. ### Sign in to Unblocked Whether you sign in with GitHub credentials, another code repository, or [your SSO provider](/team-settings/sso), you first need to authenticate to Unblocked. ### Authorize the Unblocked app If you aren't logged into GitHub, you’ll be prompted to do so. GitHub-connect Once you're authenticated to GitHub, you’ll be asked to grant some basic permissions to Unblocked. This does not install Unblocked on your GitHub account, but rather sets up a user account on Unblocked. If you've already logged in to Unblocked, you will not need to do this. ### Connect your repositories Once you've given access to your GitHub account, Unblocked still needs to know which repositories you want it to answer questions about. After clicking **Grant Access in GitHub**, you'll be redirected back to GitHub, where you'll be prompted to select the organization or account you want to install Unblocked into. While you can install Unblocked on any GitHub account or organization, Unblocked works best with your work organization and repositories. GitHub-org If your GitHub organization has multiple repositories, you have the option to select the repositories shared with Unblocked. For ease of configuration in the future, we recommend sharing all repositories with Unblocked, but you can provide a narrower scope if necessary. Unblocked preselects the repositories that have been active in the last 6 months. Forked and archived repositories are not preselected. ## Generating a model for answering questions Unblocked is able to answer questions for the repositories that it has ingested into its model. After giving Unblocked initial access to your repositories, you'll then choose which ones it should ingest. You can also select whether all new repositories should be automatically ingested into your Unblocked model. GitHub-repos Once you select the repositories you want to ask questions about, click **Save Settings**, and Unblocked will get to work. If your repositories have a lot of code, documentation, and discussions, then data ingestion may take longer to process. However, Unblocked will keep you updated as it builds an understanding of your codebase and documentation. Once Unblocked has fully processed the information associated with your GitHub repositories, you can start asking questions. Unblocked’s responses include information from your code as well as discussions you’ve had with your teammates about it. ## Managing connected repositories If you decide at a later time that you want to adjust the repositories that Unblocked can access, you can always add or remove connected sources. First, select **Settings** in the sidebar. Then select **Data Sources**, then **GitHub**. In this view, you'll be able to select or unselect any repository that Unblocked has access to. If there is a repository you expect to see in the list but isn’t showing, click the GitHub repositories link. This will take you to the settings for the Unblocked GitHub application. From this page you can adjust the repository access settings to include all repositories on this GitHub account or organization, or select specific repositories. GitHub-select Once you save these settings, you can return to the Unblocked web interface and select the repositories you wish to include in your Unblocked instance. ## Domain Verification If your organization has Data Shield enabled, we strongly recommend verifying your email domain in GitHub. Doing so allows Unblocked to automatically sync user identities with your SSO and Slack, removing the need for users to manually connect their accounts to receive answers containing source code references. Read more about [GitHub Domain Verification](/data-sources/github-domain-verification). ## Continuing Set Up While it is certainly possible to use Unblocked without incorporating any further [data sources](/configuring-data-sources), we strongly encourage you to include as many other systems in which you have documented or even discussed your applications. If you're using Unblocked’s Enterprise plan, you can also connect other source code management systems to your Unblocked workspace. If you have restricted network access to your repositories, you may need to [allow Unblocked's IP address ranges](/data-sources/ip-range). # GitHub Actions Source: https://docs.getunblocked.com/data-sources/github-actions Connecting GitHub Actions to Unblocked ## Data sync GitHub notifies Unblocked through a webhook as soon as a workflow run finishes — there is no polling schedule or sync delay. When a build fails, the [CI Failure Agent](/unblocked-for-ci) analyzes the failure immediately and posts its report to the pull request once analysis completes. ## Connect GitHub Actions To connect GitHub Actions to Unblocked, follow these steps: In the left sidebar, click on **Settings**, then **Continuous Integration**. Then click on **Add a CI platform**. Click on the **GitHub Actions** tile. CI
    Add You may be prompted to accept additional permissions in GitHub if you haven't already. Click **Select Repositories** to choose the repositories you want to enable CI Failure Agent on. CI Configure GitHub
    Actions Toggle the repositories you want to enable by selecting them. Click **Save Settings** to apply your changes. Now Unblocked will analyze CI failures in the selected repositories and post reports to pull requests. # GitHub Domain Verification Source: https://docs.getunblocked.com/data-sources/github-domain-verification Why and how to verify your domain for GitHub When your team has [Data Shield](/team-settings/data-shield) enabled, Unblocked protects your sensitive information by ensuring we know exactly who is asking a question before sharing any source code. Normally, this means every person on your team has to individually connect their GitHub account to Unblocked. This extra step can be frustrating, especially if your team logs in using Single Sign-On (SSO) or if they just want to ask a quick question in Slack without thinking about account settings. By verifying your organization's email domain in GitHub, you can skip this manual setup for everyone on your team. Unblocked leverages your domain-validated emails to automatically match your team members' GitHub accounts with their Slack and SSO identities, giving them instant access to code-related answers right away. ## Requirements To take advantage of this feature, your GitHub organization needs to meet a few requirements: 1. **Enterprise plan:** Your GitHub organization must be on the "Enterprise" plan. 2. **Domain verification:** Your GitHub organization needs to verify its email domains using DNS. Simply "approving" the domain isn't enough. 3. **Terms of Service:** Your GitHub organization must have accepted the GitHub Corporate Terms of Service in Organization settings. 4. **Organization URL:** Your GitHub organization's profile must have the **URL** field set to your domain. ## Setup Instructions For step-by-step instructions on verifying your domain, please follow [GitHub's documentation](https://docs.github.com/en/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization). If your organization hasn't already accepted the Corporate Terms of Service: 1. Navigate to your organization's settings in GitHub. 2. Scroll down to the "Terms of Service" section. 3. Next to **Corporate**, follow the prompts to read and sign the agreement on behalf of your business. 1. Navigate to your organization's settings in GitHub. 2. In the **URL** field, enter your domain. 3. Save your changes. Once your domain is verified and the Terms of Service are accepted, Unblocked will automatically begin matching user identities, reducing friction for your team. # GitHub Enterprise Source: https://docs.getunblocked.com/data-sources/github-enterprise Connect your GitHub Enterprise server to Unblocked (Enterprise plan) so it can index self-hosted repositories, pull requests, issues, and discussions. Using GitHub Enterprise Cloud or GitHub.com? Go take a look at the [GitHub.com documentation](/data-sources/github) instead. If you are running your own GitHub Enterprise server, this is how you can get started. To connect GitHub Enterprise with Unblocked, you need to be on the Enterprise Plan. You can view all the features of Unblocked's plans on our [pricing page](https://www.getunblocked.com/pricing). Connecting your GitHub Enterprise server gives Unblocked access to your self-hosted repositories, pull requests, issues, and discussions — the same integration as GitHub.com, configured for your private instance. Pull requests, issues, and discussions from your GitHub Enterprise instance appear as cited sources in answers. ## Data sync Pull requests are synchronized in real time, so they are always up to date. [Code Review](/code-review) always works with the current state of your pull request. Unblocked indexes source code from your repository's default branch at least once every 8 hours. Answers and search — including through [Unblocked MCP](/unblocked-mcp/mcp-overview) — use this index, so changes on other branches appear after they merge to the default branch. ## Connect your organization and repositories You need to be an owner of a GitHub organization in your Enterprise to install the Unblocked GitHub App. You do not need to be an administrator of the Enterprise. ### Sign in to Unblocked Whether you sign in with GitHub credentials, another code repository, or [your SSO provider](/team-settings/sso), you first need to authenticate to Unblocked. To authenticate with your GitHub Enterprise server, click to View Enterprise Options to get started. ### Authorize the Unblocked app Before proceeding to your GitHub Enterprise server, you need to first provide Unblocked with the hostname where you are hosting it. GitHub-Enterprise-host If you have restricted network access to your host, you may need to [allow Unblocked to access it](/data-sources/ip-range). Once you provide the hostname of your GitHub server, you also need to tell Unblocked the name of the organization you will be using with Unblocked. GitHub-Unblocked-App Clicking **Create GitHub App** will redirect you to your GitHub Enterprise server, where you can create the GitHub App that Unblocked will use. After saving the name of the application, you'll be asked to grant some basic permissions to Unblocked. This does not install Unblocked on your GitHub account, but rather sets up a user account on Unblocked. ### Connect your repositories Once you've given access to your GitHub account, Unblocked still needs to know which repositories you want it to answer questions about. After clicking **Grant Access in GitHub**, you'll be redirected back to GitHub, where you'll be prompted to select the organization or account you want to install Unblocked into. GitHub-Enterprise-org If your GitHub Enterprise organization has multiple repositories, you have the option to select the repositories shared with Unblocked. For ease of configuration in the future, we recommend sharing all repositories with Unblocked, but you can provide a narrower scope if necessary. Once you save your settings here, Unblocked will start ingesting your code to build your team's data index for answering questions. GitHub-Enterprise-Repos ## Generating a model for answering questions Once Unblocked has fully processed the information associated with your GitHub Enterprise repositories, you can start asking questions. Unblocked's responses include information from your code as well as discussions you've had with your teammates about it. If your repositories have a lot of code, documentation, and discussions, then data ingestion may take longer to process. However, Unblocked will keep you updated as it builds an understanding of your codebase and documentation. ## Managing connected repositories If you decide at a later time that you want to adjust the repositories that Unblocked can access, you can always add or remove connected sources. First, select **Settings** in the sidebar. Then select **Data Sources**, then **GitHub Enterprise**. In this view, you'll be able to select or unselect any repository that Unblocked has access to. If there is a repository you expect to see in the list but isn’t showing, click the GitHub Repositories link. This will take you to the settings for the Unblocked GitHub application on your Enterprise server. From this page you can adjust the repository access settings to include all repositories on your GitHub Enterprise organization, or select specific repositories. GitHub-Enterprise-Repos Once you save these settings, you can return to the Unblocked web interface and select the repositories you wish to include in your Unblocked instance. ## Domain Verification If your organization has Data Shield enabled, we strongly recommend verifying your email domain in GitHub. Doing so allows Unblocked to automatically sync user identities with your SSO and Slack, removing the need for users to manually connect their accounts to receive answers containing source code references. Read more about [GitHub Domain Verification](/data-sources/github-domain-verification). ## Continuing Set Up While it is certainly possible to use Unblocked without incorporating any further [data sources](/configuring-data-sources), we strongly encourage you to include as many other systems in which you have documented or even discussed your applications. If you're using Unblocked’s Enterprise plan, you can also connect other source code management systems to your Unblocked workspace. # Update the GitHub Enterprise app Source: https://docs.getunblocked.com/data-sources/github-enterprise-app-upgrade Update Unblocked GitHub App permissions for Unblocked Code and Continuous Integration on GitHub Enterprise Server. Use this page to update the Unblocked GitHub App permissions required for [Unblocked Code](/unblocked-code) and the Unblocked Continuous Integration Agent on GitHub Enterprise Server. GitHub Enterprise admins or organization owners can update the app registration and accept the new permissions from Unblocked. ## Add the required permissions in GitHub Enterprise In your GitHub Enterprise Server, navigate to the Unblocked GitHub App and click **App settings** In the app settings sidebar, click **Permissions & events** Configure the required permissions and event: * Under **Repository permissions**, set **Contents** to **Read and write** for Unblocked Code * Under **Repository permissions**, set **Actions** and **Checks** to **Read-only** for the Continuous Integration Agent * Under **Subscribe to events**, select **Check suite** Click **Save changes** The owners of each installed GitHub Org will receive an email notification from your GitHub Enterprise Server instance to accept the new permissions. # GitLab Source: https://docs.getunblocked.com/data-sources/gitlab Connect your GitLab.com group to Unblocked so it can index repositories and merge requests, keep them in sync, and cite MR discussions in its answers. Running your own self-managed GitLab server? Go take a look at the GitLab Self-Managed documentation instead. If you are using GitLab.com, this is how you can get started. Connecting your GitLab group gives Unblocked access to your repositories and merge requests. Unblocked uses this data to answer questions about your code, trace decisions back to merge request discussions, and explain recent changes. Merge requests and their discussions appear as cited sources in Unblocked's answers. ## Data sync Merge requests are synchronized in real time, so they are always up to date. [Code Review](/code-review) always works with the current state of your merge request. Unblocked indexes source code from your repository's default branch at least once every 8 hours. Answers and search — including through [Unblocked MCP](/unblocked-mcp/mcp-overview) — use this index, so changes on other branches appear after they merge to the default branch. ## Connect your organization and repositories ### Sign in to Unblocked Whether you sign in with GitLab credentials, another code repository, or [your SSO provider](/team-settings/sso), you first need to authenticate to Unblocked. If you have an existing Unblocked account, you'll need to select **Settings** in the sidebar, then **Data Sources**, then **GitLab** once you've logged in. Otherwise, you'll be immediately prompted to authorize the Unblocked app. ### Authorize the Unblocked app If you aren't logged into GitLab, you'll be prompted to do so. Once you're authenticated to GitLab, you'll be asked to grant access to Unblocked. This access will allow Unblocked to read the GitLab groups you are a part of as well as check for repositories in those groups, but it won't begin indexing those repositories yet. ### Connect your repositories Once you've given access to your GitLab account, Unblocked still needs to know which account's or group's repositories you want it to answer questions about. After authorizing access to GitLab, you'll be redirected back to Unblocked, where you'll be prompted to select the group or account you want to use with Unblocked. GitLab-Group While you can install Unblocked on any GitLab account or organization, Unblocked works best with your work organization and repositories. Unblocked preselects the repositories that have been active in the last 6 months. Forked and archived repositories are not preselected. ## Generating a model for answering questions Unblocked is able to answer questions for the repositories that it has ingested into its model. After giving Unblocked initial access to your account or group, you'll choose which repositories it should ingest. You can also select whether all new repositories should be automatically ingested into your Unblocked model. GitLab-Repos Once you select the repositories you want to ask questions about, click **Save and Continue**, and Unblocked will get to work. While it is certainly possible to use Unblocked without incorporating any further [data sources](/configuring-data-sources), we strongly encourage you to include as many other systems in which you have documented or even discussed your applications. If you have restricted network access to your repositories, you may need to [allow Unblocked's IP address ranges](/data-sources/ip-range). # GitLab Pipelines Source: https://docs.getunblocked.com/data-sources/gitlab-pipelines Connecting GitLab Pipelines to Unblocked ## Data sync GitLab notifies Unblocked through a webhook as soon as a pipeline finishes — there is no polling schedule or sync delay. When a build fails, the [CI Failure Agent](/unblocked-for-ci) analyzes the failure immediately and posts its report to the pull request once analysis completes. To connect GitLab Pipelines to Unblocked, follow these steps: In the left sidebar, click on **Settings**, then **Continuous Integration**. Then click on **Add a CI platform**. Click on the **GitLab Pipelines** tile. CI Add Click **Select Repositories** to choose the repositories you want to enable the CI Failure Agent on. CI Configure GitLab Pipelines Toggle the repositories you want to enable by selecting them. CI analysis reports need to be posted on behalf of a GitLab user account. We recommend creating an Unblocked bot account for this specific purpose.

Already have a bot account?

Some teams already have a bot account they use for posting automated messages. If you already have a bot account that you can repurpose for posting CI analysis reports, select it and skip to the next step.

* [Create a new account](https://gitlab.com/users/sign_up) in GitLab. * Click on your avatar in the top left, and click **Edit Profile**. * Change the following information: * **Name:** Unblocked * **Avatar:** download and use the Unblocked logo below Unblocked logo Download PNG * **Sign out** of your GitLab bot account. * **Sign in** as a Group admin for your GitLab Group and navigate to it. * Click **Manage** in the left navigation and select **Members**. * Click **Invite members** * Set the role as "**Planner**" or above and click "**Invite**".
Search for the Bot Account you just created and select it. You may be required to authorize this account with Unblocked. In order to successfully authorize your bot account, you need to be logged in with that account in GitLab. CI Configure GitLab Pipelines Click **Save Settings** to apply your changes. Now Unblocked will analyze CI failures in the selected repositories and post reports to pull requests.
# GitLab Self Managed Source: https://docs.getunblocked.com/data-sources/gitlab-self-managed Connect your self-managed GitLab instance to Unblocked (Enterprise plan) so it can index private repositories and merge requests and cite them in answers. Using GitLab.com? Go take a look at the [GitLab.com documentation](/data-sources/gitlab) instead. If you are running your own self-managed GitLab server, this is how you can get started. To connect GitLab Self Managed with Unblocked, you need to be on the Enterprise Plan. You can view all the features of Unblocked's plans on our [pricing page](https://www.getunblocked.com/pricing). Connecting your self-managed GitLab instance gives Unblocked access to your private repositories and merge requests — the same integration as GitLab.com, configured for your own server. Merge requests and their discussions from your GitLab instance appear as cited sources in answers. ## Data sync Merge requests are synchronized in real time, so they are always up to date. [Code Review](/code-review) always works with the current state of your merge request. Unblocked indexes source code from your repository's default branch at least once every 8 hours. Answers and search — including through [Unblocked MCP](/unblocked-mcp/mcp-overview) — use this index, so changes on other branches appear after they merge to the default branch. ## Connect your organization and repositories You need to be an owner of a GitLab group in your self-managed server to install the Unblocked GitLab App. You do not need to be an administrator of the Enterprise. ### Sign into Unblocked Whether you sign in with GitLab credentials, another code repository, or your [SSO provider](/team-settings/sso), you first need to authenticate to Unblocked. To authenticate with your GitLab self-managed server, you must first click **View enterprise options**. ### Authorize the Unblocked app Before proceeding to your GitLab self-managed server, you need to first provide Unblocked with the hostname where you are hosting it. GitLab-SM-Host If you have restricted network access to your host, you may need to [allow Unblocked to access it](/data-sources/ip-range). Once you provide your hostname, you'll be prompted to sign in to your GitLab self-managed instance. Once you're authenticated to GitLab, you'll be given instructions on how to configure your GitLab application for Unblocked access. This access will allow Unblocked to read the GitLab groups you are a part of as well as check for repositories in those groups, but it won't begin indexing those repositories yet. GitLab-SM-Application When you click **Create a GitLab application** in step two, you'll be taken to the applications page of your GitLab self-managed instance's settings. There you will want to click **Add new application** to begin the configuration process and follow the instructions on the last page you had opened in Unblocked. When you save these settings, your GitLab self-managed instance will present you with the Application ID and Secret that you can paste back into Unblocked. GitLab-SM-Connect-App Once you click **Create Application and Continue**, you can sign back into your GitLab self-managed instance to continue configuring your integration. Although you've configured an application, you still need to grant Unblocked authorization to make use of that application. This will not begin the process of indexing any of your code, but just allow Unblocked to connect to your groups. ### Connect your repositories Once you've given access to your GitLab account, Unblocked still needs to know which account's or group's repositories you want it to answer questions about. After authorizing Unblocked to access GitLab, you'll be redirected back to Unblocked, where you'll be prompted to select the group or account you want to use with Unblocked. While you can install Unblocked on any GitLab account or group, Unblocked works best with your work organization and repositories. Unblocked preselects the repositories that have been active in the last 6 months. Forked and archived repositories are not preselected. ## Generating a model for answering questions Unblocked is able to answer questions for the repositories that it has ingested into its model. After giving Unblocked initial access to your account or group, you'll choose which repositories it should ingest. You can also select whether all new repositories should be automatically ingested into your team's Unblocked model. GitLab-SM-Repos Once you select the repositories you want to ask questions about, click **Save and Continue**, and Unblocked will get to work. While it is certainly possible to use Unblocked without incorporating any further [data sources](/configuring-data-sources), we strongly encourage you to include as many other systems in which you have documented or even discussed your applications. If your repositories have a lot of code, documentation, and discussions, then data ingestion may take longer to process. However, Unblocked will keep you updated as it builds an understanding of your codebase and documentation. ## Start asking questions Once Unblocked has fully processed the information associated with your GitLab repositories, you can start asking questions. Unblocked's responses include information from your code as well as discussions you've had with your teammates about it. ## Managing repositories If you decide at a later time that you want to adjust the repositories that Unblocked can access, you can always add or remove connected sources. First, select **Settings** in the sidebar. Then select **Data Sources**, then **GitLab Self-Managed**. From here, you can select any repository that has not been previously a part of your team's data index, or remove any that you no longer want to include. After making your selections, click **Save Settings**. Unblocked will reindex your code so you can get answers only on the code from your selected repositories. # Google Cloud MCP Source: https://docs.getunblocked.com/data-sources/google-cloud-mcp Connect Google Cloud to Unblocked MCP with Workload Identity Federation Use this integration to let Unblocked access selected Google Cloud MCP services through Workload Identity Federation. Unblocked does not need a Google service-account key or other long-lived Google credential. Choose one of these setup options: * [Terraform](#option-1-terraform) * [gcloud CLI](#option-2-gcloud-cli) * [Google Cloud Console](#option-3-google-cloud-console) ## Unblocked configuration values | Value | Setting | | - | - | | AWS account | **029574882031** (production) | | AWS broker role | **UnblockedGcpCustomerAccess** | | Service account | **unblocked-gcp-access** | | Workload Identity Pool | **unblocked-gcp-access-pool** | | AWS provider | **unblocked-gcp-access** | | Native MCP services | **compute.googleapis.com**, **logging.googleapis.com**, **monitoring.googleapis.com** | You may rename the Google-side resources, including the service account, Workload Identity Pool, and AWS provider, to match your naming conventions. The Unblocked AWS account ID and broker role are fixed values supplied by Unblocked. Do not change them. At the end of each setup option, you will have these two values to enter in the Google Cloud MCP connection form in Unblocked: * `service_account_email`, for example `unblocked-gcp-access@PROJECT_ID.iam.gserviceaccount.com` * `aws_workload_identity_provider`, in this format: `projects/{projectNumber}/locations/global/workloadIdentityPools/{poolId}/providers/{providerId}` ## Option 1: Terraform Use Terraform when you manage Google Cloud with Terraform. The module exposes both values Unblocked needs as outputs. The identity applying the configuration must be able to enable APIs, create service accounts and Workload Identity Federation resources, and manage project IAM. The module is available at [terraform-google-cloud-integration](https://github.com/unblocked/terraform-google-cloud-integration). Create `main.tf` with the following configuration. Replace `CUSTOMER_PROJECT_ID` with your Google Cloud project ID. ```hcl theme={null} terraform { required_version = ">= 1.5.0" required_providers { google = { source = "hashicorp/google" version = ">= 6.46.0" } } } provider "google" { project = var.project_id } variable "project_id" { type = string } module "gcp_mcp" { source = "git::https://github.com/unblocked/terraform-google-cloud-integration.git?ref=v0.1.0" project_id = var.project_id manage_required_services = true native_mcp_service_account_id = "unblocked-gcp-access" native_mcp_service_account_display_name = "Unblocked access to GCP MCP" native_mcp_allowed_services = [ "compute.googleapis.com", "logging.googleapis.com", "monitoring.googleapis.com", ] native_mcp_roles = [ "roles/logging.viewer", "roles/monitoring.viewer", "roles/serviceusage.serviceUsageConsumer", "roles/viewer", ] aws_account = { account_id = "029574882031" role_names = ["UnblockedGcpCustomerAccess"] } } output "unblocked_service_account_email" { value = module.gcp_mcp.service_account_email description = "Service account email to provide to Unblocked." } output "unblocked_aws_workload_identity_provider" { value = module.gcp_mcp.aws_workload_identity_provider description = "WIF provider resource name to provide to Unblocked." } ``` Run: ```bash theme={null} terraform init terraform plan -var='project_id=CUSTOMER_PROJECT_ID' terraform apply -var='project_id=CUSTOMER_PROJECT_ID' terraform output -raw unblocked_service_account_email terraform output -raw unblocked_aws_workload_identity_provider ``` Enter both output values in Unblocked. They contain no service-account key or long-lived Google credential. ## Option 2: gcloud CLI Run these commands from a local terminal authenticated with gcloud as a Google project administrator, or from Google Cloud Shell. Replace `CUSTOMER_PROJECT_ID` only. In Google Cloud Shell, open the customer project in Google Cloud Console and click **Activate Cloud Shell**. Confirm that the active account is a project administrator with `gcloud auth list --filter=status:ACTIVE`. Do not run `gcloud auth application-default login`; Cloud Shell already uses the signed-in Google identity for gcloud commands. ```bash theme={null} export PROJECT_ID="CUSTOMER_PROJECT_ID" export AWS_ACCOUNT_ID="029574882031" export BROKER_ROLE="UnblockedGcpCustomerAccess" export SA_ID="unblocked-gcp-access" export POOL_ID="unblocked-gcp-access-pool" export PROVIDER_ID="unblocked-gcp-access" # Set the active project and derive its project number and the service-account email. gcloud config set project "$PROJECT_ID" export PROJECT_NUMBER="$(gcloud projects describe "$PROJECT_ID" --format='value(projectNumber)')" export SA_EMAIL="${SA_ID}@${PROJECT_ID}.iam.gserviceaccount.com" # Enable the APIs needed for federation and the native MCP services. gcloud services enable \ iam.googleapis.com \ iamcredentials.googleapis.com \ sts.googleapis.com \ compute.googleapis.com \ logging.googleapis.com \ monitoring.googleapis.com \ --project="$PROJECT_ID" # Create the service account Unblocked will impersonate. gcloud iam service-accounts create "$SA_ID" \ --display-name="Unblocked access to GCP MCP" \ --project="$PROJECT_ID" # Grant the service account read-only access to project data. for ROLE in \ roles/logging.viewer \ roles/monitoring.viewer \ roles/serviceusage.serviceUsageConsumer \ roles/viewer do gcloud projects add-iam-policy-binding "$PROJECT_ID" \ --member="serviceAccount:$SA_EMAIL" \ --role="$ROLE" done # Grant MCP Tool User, restricted to the approved native MCP services. gcloud projects add-iam-policy-binding "$PROJECT_ID" \ --member="serviceAccount:$SA_EMAIL" \ --role="roles/mcp.toolUser" \ --condition="title=native-mcp-services-only,description=Restrict MCP calls to approved services,expression=resource.service == 'compute.googleapis.com' || resource.service == 'logging.googleapis.com' || resource.service == 'monitoring.googleapis.com'" # Create the Workload Identity Pool that will trust AWS. gcloud iam workload-identity-pools create "$POOL_ID" \ --location="global" \ --display-name="Unblocked GCP MCP access" \ --project="$PROJECT_ID" # Add the AWS provider, trusting only the Unblocked account and broker role. gcloud iam workload-identity-pools providers create-aws "$PROVIDER_ID" \ --location="global" \ --workload-identity-pool="$POOL_ID" \ --account-id="$AWS_ACCOUNT_ID" \ --attribute-mapping="google.subject=assertion.arn,attribute.account=assertion.account" \ --attribute-condition="assertion.account == '$AWS_ACCOUNT_ID' && assertion.arn.startsWith('arn:aws:sts::$AWS_ACCOUNT_ID:assumed-role/$BROKER_ROLE/')" \ --project="$PROJECT_ID" # Let the federated AWS identities impersonate the service account. gcloud iam service-accounts add-iam-policy-binding "$SA_EMAIL" \ --role="roles/iam.workloadIdentityUser" \ --member="principalSet://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$POOL_ID/attribute.account/$AWS_ACCOUNT_ID" \ --project="$PROJECT_ID" # Print the two values to send to Unblocked. echo "service_account_email: $SA_EMAIL" echo "aws_workload_identity_provider: projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$POOL_ID/providers/$PROVIDER_ID" ``` Enter the two printed values in Unblocked. They contain no service-account key or long-lived Google credential. ## Option 3: Google Cloud Console The steps below use production AWS account `029574882031`. Select the customer project in Google Cloud Console. Open **APIs & Services** › **Library**. Enable IAM API, IAM Service Account Credentials API, Security Token Service API, Compute Engine API, Cloud Logging API, and Cloud Monitoring API. Open **IAM & Admin** › **Service Accounts**. Create `unblocked-gcp-access`. Open **IAM & Admin** › **IAM**. Grant the service account Logs Viewer, Monitoring Viewer, Service Usage Consumer, and Viewer. Add a separate **MCP Tool User** grant for the service account. Add an IAM condition named `native-mcp-services-only` with this expression: ```text theme={null} resource.service == 'compute.googleapis.com' || resource.service == 'logging.googleapis.com' || resource.service == 'monitoring.googleapis.com' ``` Open **IAM & Admin** › **Workload Identity Federation**. Create pool `unblocked-gcp-access-pool`, then add an AWS provider named `unblocked-gcp-access` for AWS account `029574882031`. Configure the provider mappings and condition exactly as shown: ```text theme={null} google.subject = assertion.arn attribute.account = assertion.account assertion.account == '029574882031' && assertion.arn.startsWith( 'arn:aws:sts::029574882031:assumed-role/UnblockedGcpCustomerAccess/' ) ``` Grant the provider access to impersonate `unblocked-gcp-access` using **Workload Identity User**. Select the principal set whose `attribute.account` equals `029574882031`. Collect these two values: * `service_account_email`: `unblocked-gcp-access@PROJECT_ID.iam.gserviceaccount.com`, shown on the Service Accounts page. * `aws_workload_identity_provider`: the provider resource name shown on the Workload Identity Federation provider page, in this format: `projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/unblocked-gcp-access-pool/providers/unblocked-gcp-access`. Enter both values in the Google Cloud MCP connection form in Unblocked. ## Connect in Unblocked After configuring Google Cloud, connect the project in Unblocked. In the Unblocked sidebar, click **Settings**, then **Data Sources**, then **Connect another data source**, and select Google Cloud MCP. Enter the `service_account_email` and full `aws_workload_identity_provider` resource name from your Google Cloud setup. Click **Connect**. After connecting, select the Google Cloud MCP services that Unblocked can query. Select **Compute**, **Logging**, and **Monitoring**, or only the services you need, then save your settings. All read-only tools from selected services are enabled automatically. ## Quick verification Confirm that the service account, pool, and provider exist: ```bash theme={null} gcloud iam service-accounts describe "$SA_EMAIL" --project="$PROJECT_ID" gcloud iam workload-identity-pools describe "$POOL_ID" \ --location="global" \ --project="$PROJECT_ID" gcloud iam workload-identity-pools providers describe "$PROVIDER_ID" \ --workload-identity-pool="$POOL_ID" \ --location="global" \ --project="$PROJECT_ID" ``` An end-to-end WIF test must run with an AWS session for `UnblockedGcpCustomerAccess`. Personal Google ADC does not test the AWS-to-Google federation path. # Google Drive Source: https://docs.getunblocked.com/data-sources/google-drive Connect Google Drive to Unblocked so it can reference Google Docs, text files, and PDFs when answering questions, with links back to the source documents. When you connect Unblocked with your Google Drive, Unblocked will be able to reference Google Docs, Google Sheets, Google Slides, Microsoft Word (`.docx`), Excel (`.xlsx`), and PowerPoint (`.pptx`) files, text files, and PDFs to find answers to your questions. As Unblocked responds, it will provide references to the documents it used to generate those answers. Sheets are converted to searchable content, including cell hyperlinks. Slides extraction includes text, speaker notes, and grouped elements. ## Data sync Unblocked checks Google Drive for new and updated files every 15 minutes, so changes typically appear in answers within minutes. ## Connect your Google Drive ### Sign in to Unblocked Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**, then **Connect another data source**. Scroll to the documentation section and select Google Drive. Unblocked will ask you to confirm that you want to share your Google Drive files for processing. Connect-Google-Drive Once you click **Accept and Continue**, you'll be redirected to Google Drive. Sign into your Google account and then authorize Unblocked to access your Google Drive files. After granting Unblocked access, you'll be redirected back to Unblocked. Here, you can choose the files, folders, and shared drives you want Unblocked to reference as it answers your questions. Select-Google-Drive-Projects Unblocked displays who connected Google Drive for your team on the data sources page, as this user is the only one who can add additional files from Google Drive. Any Admin can remove connected files. After you've selected all the folders and files you want Unblocked to reference, click **Save Settings**. Unblocked will begin using these resources to answer your team’s questions. ### Exclude folders To exclude specific folders (and their contents) from ingestion, or to remove documents already ingested from a folder, [contact us](https://getunblocked.com/dashboard?showIntercom=true). # Google Drive for Workspaces Source: https://docs.getunblocked.com/data-sources/google-drive-for-workspaces Connect your Google Workspace Drive to Unblocked as a Super Admin to index shared and personal drive content with permission-aware, identity-based access. Connecting your Google Workspace's Drive to Unblocked unlocks the following capabilities: * **Content Configurability:** Select all current and future content in your workspace, or specific files, folders, or drives to connect to Unblocked. * **Identity Awareness:** Understand the permission structure of each document without requiring every individual user to link their account. * **Personal Drive Content:** Allow users to ask Unblocked about their personal drive content, provided that [Data Shield](/team-settings/data-shield) is enabled. ## Data sync Unblocked checks your Workspace's Drive for new and updated files every 15 minutes, so changes typically appear in answers within minutes. Users, groups, and content permissions sync every hour, so access changes are reflected in [Data Shield](/team-settings/data-shield) within the hour. ## Connecting to Unblocked Connecting your Google Workspace must be done by a **Google Super Admin** in the organization. Navigate to the [Unblocked web app](/using-unblocked/on-the-web) and authenticate with Unblocked. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**, then **Connect another data source**. Scroll to the documentation section and select **Google Drive for Workspaces**. To connect your Google Workspace's Drive with Unblocked, you will need to follow a series of steps in the Google Cloud Admin Console. Follow the link to the **Google Cloud Console** and click **Create project**. Fill out the form, ensuring that the domain matches the email address of your organization, and click **Create**. Connect-Google-Drive Click **Select Project** to navigate to the project you just created. Connect-Google-Drive Copy your newly created Project ID. Connect-Google-Drive Head back to Unblocked and paste it into the Project ID field in the Unblocked form. This will reveal the additional steps necessary to connect Google Drive. Connect-Google-Drive Follow every link provided in the list and enable each API for your new project. This grants Unblocked the ability to process the contents of your Drive and sync user permissions. Connect-Google-Drive Follow the link to the **IAM & Admin Service Accounts** page, and click on your new project. On the Service Accounts page, click **Create service account**. Fill out the form and select **Done**. Connect-Google-Drive Click on your newly created Service Account, and navigate to the **Keys** tab. Click the **Add key** dropdown, and select **Create new key**. Connect-Google-Drive When prompted, choose the JSON option and click **Create**. Connect-Google-Drive A JSON key will be generated and downloaded to your machine. Open this key and **copy and paste the contents into Private Key field** in Unblocked. Connect-Google-Drive #### Troubleshooting Key Creation Depending on the settings of your Google Workspace, you may see the following error when trying to create a new Service Account key. Connect-Google-Drive Ensure that you have [enabled service account key creation](/data-sources/google-drive-for-workspaces#enabling-key-creation) for your workspace before proceeding. Follow the link to the **Domain-wide Delegation** section of your Google Cloud Console. Create a new API client by clicking **Add new**. Copy the `client_id` property of the generated Service Account key created in Step 3, and paste the id into the Client ID field. Paste the contents of the of OAuth scopes provided by Unblocked into the second input field. Connect-Google-Drive Unblocked recommends using a Super Admin email to sync all users, groups, group memberships, and content permissions from your Workspace. However, if you prefer to use a non-Super Admin email, you can instead [create a custom admin role](/data-sources/google-drive-for-workspaces#creating-a-custom-admin-role). Lastly, enter a valid email address into the Email field of the Unblocked form. Click **Validate Connection** to complete setup and connect your Google Workspace with Unblocked. ## Configuring Google Drive By default, Unblocked will reference **all the contents** of the connected Google Workspace to answer questions. Choose **Specific Files, folders, and drives** to search for and select specific content for Unblocked to reference. Connect-Google-Drive Click **Save Settings** to save your changes. Unblocked will begin using these resources to answer your team’s questions. ## Additional Guides ### Enabling Key Creation If you see following error when trying to create a new Service Account key, you will need to enable Service Account key creation for your workspace. Connect-Google-Drive To enable Service Account key creation, navigate to the **Organizational Policies** of your Google Cloud Console (this can be found in the left menu). In the search filter, enter `iam.disableServiceAccountKeyCreation` to search for the "Disable service account key creation" policy. Click the context menu of the policy row and select **Edit Policy**. Connect-Google-Drive On the Edit policy page, choose **Override parent's policy**, ensuring **Not enforce** is selected before clicking **Set policy**. Connect-Google-Drive After overriding this policy, you can return to the Service Accounts page to generate the key. The policy override may take a few minutes to take effect before key generation is allowed. ### Creating a Custom Admin Role If you prefer to provide a non-Super Admin account to connect with Unblocked, you can create a custom admin role and assign the role to the account you wish to use instead. Navigate to [https://admin.google.com/ac/roles](https://admin.google.com/ac/roles) and create a new role with the following privileges enabled: * Admin Console Privileges > Organizational Units > Read * Admin Console Privileges > Users > Read * Admin API Privileges > Groups > Read * Admin API Privileges > Organizational Units > Read * Admin API Privileges > Users > Read Assign this new role to the preferred account and enter the email into the Super Admin Email field in Unblocked. The assignment of the new role may take a few minutes to take effect. # Unblocked IP Address Ranges Source: https://docs.getunblocked.com/data-sources/ip-range How to allow Unblocked to access your services Some systems that Unblocked connects to, such as GitHub, GitLab, and Bitbucket, require you to allow incoming traffic from specific IP address ranges. This security measure ensures that only authorized services can access your data. To allow Unblocked services to connect to your systems, you may need to permit incoming HTTPS traffic from its IP address ranges. Use the URL below to find the most up-to-date list of IP addresses used by Unblocked: * [Unblocked IP Address Ranges](https://getunblocked.com/api/meta) # Jira Source: https://docs.getunblocked.com/data-sources/jira Connect your Jira site to Unblocked so it can reference projects, issues, and discussions when answering questions, with Data Shield support for permissions. When you connect Unblocked with your Jira site, you'll provide Unblocked with important context on how and why your codebase works. Most importantly, Unblocked will be able to use the Projects, Issues, and discussions your team has in your Jira site to answer questions you ask it, and it will provide links back to the information that it used for easy reference. Unblocked also reads sprint data from Jira's custom fields, so you can ask about a named sprint, the current or active sprint, or which sprint an issue is in. ## Data sync Unblocked checks Jira for new and updated issues every 15 minutes. The first sync ingests your full project history; after that, syncs are incremental, so changes appear in answers shortly after they land in Jira. ## Connect your Jira Site If your organization has [Data Shield](/team-settings/data-shield) enabled, we strongly recommend having a Jira admin connect your site. Doing so will ensure that Unblocked has the ability to sync Jira identities, removing the need for users to manually connect their account to receive answers containing Jira references. ### Sign in to Unblocked Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**. Click **Connect Another**, scroll to the issues section, and select **Jira**. You'll then be redirected to Jira and asked to authorize your account with Unblocked. Jira-authorize ### Connecting Jira Once you grant Unblocked access to your Jira site, you'll be redirected back to Unblocked and prompted to install the Unblocked for Jira app if you are a Jira admin. Jira-app After installing, return to the Unblocked tab and click **Verify Installation** to proceed to the Jira configuration page to select projects to share with Unblocked. ## Selecting your Projects You have the option to grant access to specific projects for Unblocked to index and search. You will be best served by granting access to all projects, but you can always restrict the scope depending on your team's needs. Using [Data Shield](/team-settings/data-shield), you can also set access permissions that determine which content in your Jira projects will be used in Unblocked's answers. add-jira-projects Once you click **Save Settings**, Unblocked will begin referencing the issues in your Jira projects in its answers. ## Troubleshooting ### Unable to Connect Unblocked If you see the following error message, it means user installed apps have been blocked for your site. To work around this, ask your Jira Admin to [log in to Unblocked](https://getunblocked.com/dashboard/login) and connect your Jira Site. error Alternatively, your Jira admin can temporarily allow user installed apps while you connect Unblocked to Jira. Ask your admin to visit your Jira site and click **Apps > Manage apps**. Jira-manage-apps Then on the **Settings** tab of the **Connected Apps** page, click **Allow user apps** under the **User Installed Apps** section. You can now connect Unblocked to Jira. Atlassian-allow-user-apps After connecting, your admin can re-enable blocking user installed apps. # Jira Data Center Source: https://docs.getunblocked.com/data-sources/jira-data-center Connect your Jira Data Center instance to Unblocked To connect Jira Data Center with Unblocked, you need to be on the Enterprise Plan. You can view all the features of Unblocked's plans on our [pricing page](https://www.getunblocked.com/pricing). When you connect Unblocked with your Jira Data Center projects, you'll provide Unblocked with important context on how and why your codebase works. Most importantly, Unblocked will be able to use the details in your Jira Data Center projects to answer questions you ask it, and it will provide links back to the issues that it used for easy reference. ## Data sync Unblocked checks your Jira Data Center instance for new and updated issues every 15 minutes. The first sync ingests your full project history; after that, syncs are incremental, so changes appear in answers shortly after they land in Jira. ## Connect Jira Data Center We recommend having a site admin connect your Jira Data Center site with Unblocked. [Data Shield](/team-settings/data-shield) for Jira Data Center is only supported when the token used to connect with Unblocked belongs to a site admin. ### Sign in to Unblocked Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked to begin this integration. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**, then **Connect another data source**. Scroll to the documentation section and select Jira Data Center. This will present you with a form for connecting Jira Data Center with Unblocked. Enter your team's Jira Data Center site URL and your personal access token on this page. Jira-DC-setup ### Creating a Personal Access Token In order to connect with Unblocked, you will need a Jira Data Center personal access token. If you prefer to create a new personal access token, you can do so within Jira Data Center. To create a personal access token, navigate to your Profile page, accessible by clicking on your avatar in the top right corner of your Jira Data Center site. From your Profile page, select Personal Access Tokens and click Create token. On the following page, provide a token name, ensure "Automatic expiry" is unchecked, and click Create. Copy the token then return to Unblocked to paste the code into the Personal Access Token (PAT) field. Jira-DC-setup ### Connecting Jira Data Center Jira-DC-projects Once you connect Jira Data Center, you have the option to grant access to specific projects for Unblocked to index and search. You will be best served by granting access to all projects, but you can always restrict the scope depending on your team's needs. Using [Data Shield](/team-settings/data-shield), you can also set access permissions that determine which content in your Jira projects will be used in Unblocked's answers. Once you click **Save Settings**, Unblocked will begin referencing the issues in your Jira Data Center projects in its answers. # Linear Source: https://docs.getunblocked.com/data-sources/linear Connecting context about your codebase to Unblocked When you connect Unblocked with Linear, you'll provide Unblocked with important context on how and why your codebase works. Most importantly, Unblocked will be able to use context from the projects, issues, and pages your team has in your Linear site to answer questions you ask it, and it will provide links back to the information that it used for easy reference. ## Data sync Unblocked receives updates from Linear in real time through webhooks, so new and updated issues and comments appear in answers shortly after they change. A scheduled sync also runs every 12 hours as a backstop to catch anything a webhook may have missed. ## Connect your Linear workspace ### Sign in to Unblocked Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**, then **Connect another data source**. Scroll to the project management section and select Linear. From there, you'll be redirected to Linear to sign in. Then, you'll be asked to grant workspace access to Unblocked. Linear-authorize ### Connect Unblocked to Linear Make sure you have selected the correct Linear workspace from the top left menu. Click the **Authorize Unblocked** button. You will then be redirected back to Unblocked, where you can select the teams you want Unblocked to access. We recommend providing access to All Teams in your Linear workspace. If you would like to select Specific Teams in Linear, Unblocked will use only those selected teams to answer the questions you ask. Linear-teams Click **Save Settings**, and Unblocked will immediately begin including these Linear resources when finding its answers for you. # Microsoft SharePoint Source: https://docs.getunblocked.com/data-sources/microsoft-sharepoint Connect Microsoft SharePoint to Unblocked as a SharePoint admin, select the sites to index, and let Unblocked cite your SharePoint content in its answers. When you connect Unblocked with your Microsoft SharePoint sites, you'll provide Unblocked with important context on how and why your codebase works. Most importantly, Unblocked will be able to use the details in your SharePoint sites to answer questions you ask it, and it will provide links back to the documents and pages that it used for easy reference. ## Data sync Unblocked receives change notifications from Microsoft as documents and pages change, and runs an incremental sync periodically to catch anything missed. Updates typically appear in answers within minutes. ## Connect your Microsoft SharePoint site A Microsoft SharePoint admin is required to connect your site to Unblocked. Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**. Click **Connect Another**, scroll to the documentation section, and select **Microsoft SharePoint**. You'll then be redirected to Microsoft and asked to authorize your account with Unblocked. SharePoint-authorize Once you grant Unblocked access to your SharePoint site, you'll be redirected back to Unblocked and prompted to select sites to share with Unblocked. ## Selecting your sites You have the option to grant access to specific sites for Unblocked to index and search. You will be best served by adding all sites, but you can restrict the scope depending on your team's needs. Using [Data Shield](/team-settings/data-shield), you can also set access permissions that determine which content in your SharePoint sites will be used in Unblocked's answers. SharePoint-sites Once you click **Save Settings**, Unblocked will begin referencing the documents and pages in your SharePoint sites in its answers. ## What gets indexed By default, Unblocked only indexes documents that were created or modified within the last five years. [Contact us](https://getunblocked.com/dashboard?showIntercom=true) if you want a narrower window, down to one year. Unblocked indexes the following content from your connected SharePoint sites: **Site pages** — All SharePoint site pages are indexed. Unblocked extracts the text from the text web parts on each page. **Files in document libraries** — Files with the following extensions are indexed: * PDF (`.pdf`) * Word (`.docx`) * PowerPoint (`.pptx`) * Excel (`.xlsx`) * Plain text (`.txt`) * Markdown (`.md`) * CSV (`.csv`) * Log files (`.log`) * HTML (`.htm`, `.html`) * Images (`.png`, `.jpg`, `.jpeg`) Files with extensions that aren't in this list are skipped. Legacy Office formats (`.doc`, `.ppt`, `.xls`) and other formats are not supported. ## Troubleshooting ### Non-admin users cannot connect SharePoint If you're not a Microsoft SharePoint admin, you'll see an error screen when trying to connect your SharePoint site to Unblocked. SharePoint-non-admin-error To resolve this, contact your Microsoft SharePoint admin and ask them to either: * Connect the SharePoint site to Unblocked themselves, or * Grant you admin permissions so you can complete the connection # Microsoft Teams Source: https://docs.getunblocked.com/data-sources/microsoft-teams Connect Microsoft Teams to Unblocked to index channel conversations for better answers and let your team ask questions by mentioning @Unblocked in Teams. When you connect Unblocked with your Microsoft Teams organization, Unblocked uses your team's Teams conversations to improve answers. Connecting also enables: 1. Unblocked refreshes your team's data index as your team has conversations about your codebase. This means that answers to questions will reflect all conversations in the Teams channels that you authorize Unblocked to access. 2. Your team will be able to ask questions with the Unblocked bot. It will respond to questions in the channels it has been added to upon @-mentioning **@Unblocked**. You can also DM with Unblocked to ask questions privately. ## Data sync When you first connect, Unblocked syncs the existing history of your selected channels. Ongoing updates then arrive continuously as your team talks. ## Connect your Teams Organization You need to be a Teams Org Admin or Owner to connect Unblocked to your Teams organization. ### Sign into Unblocked Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**, then **Connect another data source**. Scroll to the messaging platforms section and select Microsoft Teams. ### Sign into Microsoft You'll be redirected to Microsoft to identify the account you intend to use with Unblocked. If you aren't already signed in, you’ll need to do so. Make sure you sign into a Teams account that has Admin or Owner privileges. After signing in, Microsoft will ask if you want to grant permission to Unblocked to see your channels and chats, and interact in them. Click **Accept** to continue. Allow-Teams ### Select channels to connect You can add Unblocked to both public and private Teams channels. When a question is asked, Unblocked will respect the access permissions for private channels, and not include that context in answers provided outside the private channel. You will be redirected back to Unblocked where you can select the Teams channels to use with Unblocked. Although you can add Unblocked to any channels you like, Unblocked can provide the most helpful context when you use it in channels where code-specific conversations happen. If [Data Shield](/team-settings/data-shield) is enabled for your team, all members will be required to connect their Microsoft accounts with Unblocked. Once connected, Unblocked will respect individual access permissions, meaning team members will only see the channels that they have access to. Teams-channels Once you've selected all of the channels you want Unblocked to access, click **Save Settings**. # Notion Source: https://docs.getunblocked.com/data-sources/notion Connect your Notion workspace to Unblocked, select the pages to index, and let Unblocked use your Notion documentation to explain how and why your code works. When you connect Unblocked with your Notion workspace, you'll provide Unblocked with important context on how and why your codebase works. Unblocked will be able to use the details in your Notion workspace to answer questions you ask, and it will provide links back to the pages it used to find those answers for easy reference. ## Data sync Unblocked receives updates from Notion through webhooks when docs change, so edits appear in answers shortly after they happen. Content from a newly connected workspace can take a few hours to fully appear while Notion's search index catches up. ## Connect your Notion workspace ### Sign in to Unblocked Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**, then **Connect another data source**. Scroll to the documentation section and select Notion. You'll be redirected to Notion to sign in and confirm the workspace you intend to use with Unblocked. In the top right menu, select the workspace you want Unblocked to access. Then, click **Select pages**. Notion ### Selecting Notion pages Notion will ask you to select the pages you want to include in your team's data index. If you select a parent node on this page, any pages added to that space in the future will be automatically indexed by Unblocked. If you select individual pages, then you will need to return to Notion any time you want to grant access again. Notion-pages Click **Allow access**. You'll be brought back to Unblocked. From there, Unblocked will use any of the pages you've selected in Notion to answer your questions. ## Configuring or updating access to Notion Unblocked displays who connected Notion for your team on the data sources page, as this user is the only one who can add additional files from Notion. To update the pages Unblocked can access in your Notion workspace, you'll need to sign in to Notion and make the necessary changes. After logging into Notion, select **Settings** from the Notion sidebar. This will open a modal menu, where you can click **Connections** to open integrations you've configured with your Notion workspace. On the right side of the Unblocked connection, click the three dot menu, then **Select page access**. This will open another modal menu where you can modify the documents to which you have given Unblocked access. Make the necessary changes, and then click **Save**. Notion-pages You can now return to Unblocked, and it will use the updated pages you've selected as a source for answers. # PostHog Source: https://docs.getunblocked.com/data-sources/posthog Connect your PostHog organization to Unblocked When you connect PostHog to Unblocked, Unblocked syncs dashboards, notebooks, surveys, experiments, and feature flags from the PostHog projects you select. Unblocked provides links back to the original PostHog resources for easy reference. The PostHog integration is available on paid plans. A team admin must connect and configure the data source. PostHog Cloud organizations hosted in the US and EU regions are supported. ## PostHog in Unblocked By connecting PostHog to Unblocked, you can ask questions about how customers use your product and connect that to your code, issues, incidents, and documentation. For example, start with: ``` Where are users dropping out of onboarding? ``` Then ask: * Which platforms account for the drop-off? * How many users are affected? * What code handles that step? * Were there relevant pull requests or incidents during that period? * How does our documentation describe the intended experience? You can also investigate trends and inform what to improve next: * How has activation changed this quarter? * Is adoption of the new editor increasing week over week? * Which onboarding step has the greatest drop-off? * How did usage change after July 15? * How does our PostHog dashboard define activation? ## Connect PostHog In the Unblocked sidebar, click **Settings**, then **Data Sources**, then **Connect another data source**. Scroll to the Analytics section and select **PostHog**. You'll be redirected to PostHog. Sign in if needed, then approve Unblocked's access to your PostHog account. Unblocked uses OAuth to connect, so you don't need to create or copy an API key. After authorizing, you'll return to Unblocked. Select the PostHog organization you want to connect. Select the PostHog projects you want Unblocked to reference. If some projects are still syncing, Unblocked displays a banner and adds them to the list when they're available. Click **Save Settings**. Unblocked will begin ingesting dashboards, notebooks, surveys, experiments, and feature flags from the projects you selected. ## Manage project access You can change which projects Unblocked references at any time from **Settings** › **Data Sources** › **PostHog**. To automatically include projects created after you connect PostHog, open the menu on the PostHog settings page, select **Manage Preferences**, and enable **Automatically include newly created projects**. When [Data Shield](/team-settings/data-shield) is enabled for PostHog, Unblocked respects each user's access to PostHog projects and resources when answering questions. # Sentry Source: https://docs.getunblocked.com/data-sources/sentry Connecting Sentry to Unblocked When you connect Sentry to Unblocked, Unblocked can reference issues, errors, and events from the Sentry projects you select when answering questions about production problems. Unblocked provides links back to the original Sentry issues for easy reference. Self-hosted Sentry is not supported. ## Data sync Unblocked syncs issues from your selected Sentry projects every 15 minutes, so new and updated issues appear in answers shortly after they change in Sentry. ## Connect Sentry In the Unblocked sidebar, click **Settings**, then **Data Sources**, then **Connect another data source**. Scroll to the Incident Management section and select Sentry. In Sentry, go to [User Auth Tokens](https://sentry.io/settings/account/api/auth-tokens/new-token/) and click **Create New Token**. Select the following read-only scopes: * `org:read` * `project:read` * `event:read` Copy the token. Paste the token into Unblocked, then click **Next**. Sentry auth token Select the Sentry organization you'd like to connect to Unblocked, then click **Connect**. Sentry organizations Select the projects you'd like Unblocked to index, then click **Save Settings**. Sentry projects Unblocked will begin referencing your Sentry issues in its answers. You can change which projects are indexed at any time from **Settings** › **Data Sources** › **Sentry**. # Slack Source: https://docs.getunblocked.com/data-sources/slack Connect your Slack workspace to Unblocked to index channel conversations for better answers and let your team ask questions by mentioning @Unblocked in Slack. Looking to learn how to use Unblocked in Slack? See the article on [Unblocked for messaging platforms](https://docs.getunblocked.com/unblocked-for-messaging-platforms#asking-questions). Need to add Unblocked to your Slack workspace? This page is for you. When you connect Unblocked with your Slack Workspace, Unblocked uses your team's Slack conversations to improve answers. Connecting also enables: 1. Unblocked refreshes your team's data index as your team has conversations about your codebase. This means that answers to questions will reflect all conversations in the Slack channels that you authorize Unblocked to access. 2. Your team will be able to ask questions with the Unblocked bot. It will respond to questions in channels it has been added to, both when your team [@mentions it](https://docs.getunblocked.com/unblocked-for-messaging-platforms#asking-questions) or when it has a relevant answer to an open question. You can also [DM with Unblocked](https://docs.getunblocked.com/unblocked-for-messaging-platforms#direct-messages-with-unblocked) to ask questions privately. To learn more about how to interact with Unblocked in Slack, take a look at the article on [Using Unblocked in your messaging platform](/using-unblocked/in-messaging-platforms). ## Data sync Unblocked ingests new messages in connected channels continuously through real-time Slack events, so recent conversations become available in answers shortly after they happen. When you first connect a channel, Unblocked backfills the channel's history. Backfill speed depends on the channel's volume and Slack's API rate limits — very large channels can take several hours — and answers can draw on the channel's content as it's ingested. ## Connect your Slack Workspace You need to be a Slack Workspace Admin to connect Unblocked to your Slack workspace. ### Sign into Unblocked Whether you sign in with a source code manager or your SSO provider, you first need to authenticate to Unblocked. Once you've signed in, click **Settings** in the sidebar, then **Data Sources**, then **Connect another data source**. Scroll to the messaging platforms section and select Slack. ### Sign into Slack You'll be redirected to Slack to identify the workspace you intend to use with Unblocked. If you aren't already signed in to Slack, you’ll need to do so. Make sure you sign into a Slack account that has Workspace Admin privileges. After signing in to Slack, Slack will ask if you want to grant permission to Unblocked to see your channels and interact in them. Click **Allow** to continue. Allow-Slack ### Select Slack Channels to connect You can add the bot to both public and private Slack channels. When an answer is found using context from a private channel you're a member of, you'll receive an ephemeral message (visible only to you) asking you to review and approve the answer before it's posted to a public channel. This ensures private channel content is never shared without explicit approval. You will be redirected back to Unblocked where you can select the Slack channels to use with Unblocked. Although you can add Unblocked to any channels you like, Unblocked can provide the most helpful context when you use it in channels where code-specific conversations happen. Slack-channels Once you've selected all of the channels you want Unblocked to access, click **Save Settings**. ### Invite Unblocked to Slack In order to answer your team's questions and reference previous conversations from Slack as context, Unblocked needs to be added to the channels you've selected. Upon selecting a new channel in the Slack settings of the web dashboard, you will be prompted to invite Unblocked before saving. Click **Add and Continue** to ensure that Unblocked is added to the selected channels. You can verify that Unblocked has been added to any configured channel by posting the question, 'Is Unblocked listening?' in the channel. If Unblocked is, in fact, listening, you will receive a response after a few seconds. ### Connecting private channels Private channel support requires a paid plan. Visit our [pricing page](https://www.getunblocked.com/pricing) to learn more. Both public and private channels are supported. When the first user connects Slack as a data source, the bot can only be added to private channels where that user is a member. For additional users to add their own private channels, navigate to your Slack settings in the web dashboard. Under the "Add private channels" banner, click "Grant access". App installations can be gated by Slack Workspace Admins. If this is the case for your Slack Workspace, you'll need to request to install the app to add your private channels. #### Data Shield behavior [Data Shield](/team-settings/data-shield) is always enabled for Slack, regardless of your team's org-level Data Shield settings. Unlike other data sources, where Data Shield can be toggled on or off, Slack's Data Shield protections are always active and can't be disabled. Slack's channel privacy determines what Unblocked will use in an answer: * **Private channels**: Unblocked enforces channel membership at retrieval time, so non-members cannot retrieve private-channel conversations directly. A member may explicitly approve an answer using that context before it is posted outside the private channel. * **Public channels**: Content shared in public channels is treated as public knowledge. Anyone in the workspace can join a public channel at any time, so public channel conversations are treated the same as other public data sources. [Data Shield](/team-settings/data-shield) protects all of your team's data, including private channels. When Data Shield is enabled, users are asked to link their accounts so Unblocked can use your team's data to provide personalized answers based on the data you have access to. If you haven't linked all of your accounts, any question you ask will request that you complete this step. In Slack, you'll receive: 1. An ephemeral message (visible only to you) asking you to link your accounts 2. After linking, an ephemeral message containing the answer to your question 3. A request to review the answer and verify it's safe to share publicly 4. An **Approve** button to authorize posting After approval, the answer posts to the channel. When Slack bots or workflows ask questions, Unblocked responds with publicly available content only, such as content from public Slack channels. ## What Unblocked indexes from Slack Unblocked indexes messages in the channels you select, including text from bot message attachments, such as alert content from Datadog or PagerDuty. Files uploaded to Slack, including PDFs, CSVs, and other documents, aren't indexed. To include a file's content in a specific question, attach it directly in [chat](/unblocked-chat/file-uploads). ## Channel Preferences You can configure how Unblocked responds to questions for every connected channel, ensuring optimal behavior for the specific needs of each channel. This includes: * [Customizing answer preferences](/data-sources/slack#customizing-answer-preferences) * [Configuring auto-response frequency](/data-sources/slack#configuring-auto-responses) You can configure channel preferences from the [web dashboard](/using-unblocked/on-the-web) or from Slack. In the web dashboard, hover over a selected channel and click the **pencil icon** to bring up channel settings. Slack-Channel-Preferences In Slack, type in `/unblocked-settings` to bring up channel settings. Slack-Channel-Preferences The `/unblocked-settings` command is available to all users in private channels, even when [role-based access control](/team-settings/role-based-access) is enabled. This allows any team member to configure channel preferences for private channels they belong to. ### Customizing Answer Preferences The custom Answer Preferences feature lets you tailor responses for each selected channel. You can control four main aspects of the answers: 1. **Data Sources**: Choose a [Data Sources Preset](/data-sources/data-source-presets) to determine which data sources you want to include in your answer. 2. **Answer Length**: Choose concise or detailed responses, determining how much information is included. 3. **Answer Tone**: Select a tone that suits the needs of the channel, from casual to technical, affecting the level of technical detail and inclusion of code examples. 4. **Research Depth**: Opt for quick or thorough research. A thorough setting enables Unblocked to handle complex questions with multiple retrieval and reasoning steps, though it may increase response time. ### Configuring Auto-Responses The [Auto-response feature](https://docs.getunblocked.com/unblocked-for-messaging-platforms#unblocked-auto-responses) is automatically enabled for every channel you select. This feature allows Unblocked to respond to questions asked in Slack channels, even when Unblocked is not @mentioned. Unblocked will only respond to questions when it has an answer. You can configure when Unblocked should auto-respond by selecting one of the following options: * **High confidence**: Unblocked will only respond when it is highly confident it has a good answer. This may result in a lower volume of questions answered. * **Moderate confidence**: Unblocked will respond with moderate confidence to more questions. Choose this setting if you want Unblocked to respond to a higher volume of questions. * **Don't auto-respond**: Unblocked will not automatically respond. (Unblocked will still respond if a user @mentions it.) Auto-response settings apply per channel. There is no thread-level setting — to stop Unblocked from responding in a specific thread, set its channel to **Don't auto-respond**. Unblocked will then only reply in that channel when @mentioned. To start, we recommend enabling the Auto-response feature for support-related or cross-platform channels, such as **#customer-questions** or **#ask-devops**. ### Managing Default Preferences When a channel is selected and connected to Unblocked, it inherits the following set of default preferences: * **All sources**: Unblocked will respond to questions using all connected data sources as references. * **Default Answer Length**: Unblocked will respond to questions with balanced conciseness. * **Default Answer Tone**: Unblocked will respond to questions with balanced technical detail. * **Default Research Depth**: Unblocked will respond to questions with balanced research depth. * **High confidence**: Unblocked will only respond to questions when it is highly confident it has a good answer. To modify the default preferences, click the context menu at the top of the page, and select **Manage Channel Preferences** to bring up the default channel settings. Slack-default-settings Update the settings to your preferred configuration and click **Done**. Your changes will then be inherited by all newly selected channels. Additionally, you can apply the default preferences to all currently selected channels. In the default channel settings, check **Apply to all currently selected channels**, and click **Done**. Slack-default-settings-checkbox Save all changes made to the default channel settings by clicking **Save Settings**. ## Connecting user accounts After Slack has been connected to your Unblocked workspace, each team member will also need to associate their Slack user account with their Unblocked account. Unblocked personalizes answers based on identity, so connecting your user account will improve the quality of answers you receive from Unblocked. It will also enable the discussions you have with Unblocked on Slack to appear under [My Questions](/unblocked-chat/my-discussions). To connect your Slack user account, click on **Settings** in the sidebar of the Unblocked web dashboard. Under **Personal Settings**, click on **User Accounts**. In the **Unlinked Accounts** section, find the row for Slack, and click **Link my account**. You will be redirected to Slack to connect your account. Click **Allow** to grant Unblocked the necessary permissions to associate and connect your Slack identity. After redirecting back to the **User Accounts** page, you should now see your Slack account under the **Linked Accounts** section. Slack-Account-Confirmation When you view discussions with Unblocked in Slack on the web dashboard, your GitHub username will be displayed rather than your Slack name. ### Troubleshooting #### "Not authorized" error when adding Unblocked If you see a message that you are not authorized to add Unblocked, your Slack workspace administrator may have restricted which apps can be installed. Ask your Slack workspace administrator to approve the Unblocked app, or request installation through Slack's app approval flow. #### Sign in with Slack not working If you have trouble signing in, ensure that your Slack workspace administrator has enabled **Sign in with Slack** for your Slack workspace. If this setting is not enabled, you will not be able to connect your Slack user account. Sign in with slack Settings #### Not receiving the 6-digit verification code When connecting your Slack account, Slack sends a 6-digit verification code to the email address associated with your Slack profile. If you're not receiving this email: 1. **Check your spam or junk folder** — the verification email may have been filtered automatically. 2. **Check inbox filters and rules** — custom email rules may be redirecting or deleting the email. 3. **Ask your IT team to allow emails from Slack** — your organization's email system may be blocking emails from Slack. Ask your IT team to ensure that emails from `@slack.com` and `@slack-mail.com` are not being blocked or quarantined. 4. **Verify your email address** — confirm that the email shown on the verification screen matches the email you have access to. If it doesn't, update your email address in your Slack profile. 5. **Wait and retry** — the code expires after 15 minutes. If you still don't receive it, try clicking the connect button again to request a new code. 6. **Contact Slack support** — if none of the above steps resolve the issue, reach out to [Slack support](https://slack.com/help) for further assistance with email delivery. For additional tips on email deliverability, see Slack's guide on [Trouble receiving emails from Slack](https://slack.com/help/articles/218876627-Trouble-receiving-emails-from-Slack). ## Automating with Slack Workflows and Bots You can use Slack's built-in [Workflow Builder](https://slack.com/help/articles/360035692513-Guide-to-Slack-Workflow-Builder) to automatically send questions to Unblocked on behalf of your team. This is useful for routing form submissions, support requests, or other automated messages to Unblocked for answers. When Slack workflows or bots ask questions, Unblocked responds with publicly available content only, such as content from public Slack channels. ### Setting Up a Workflow To create a workflow that sends questions to Unblocked, follow these steps: Open Slack and navigate to **Tools** > **Workflow Builder**. Click **Create Workflow** and choose your trigger — for example, a form submission or a new message in a channel. If you want users to submit questions through a form, add a **Collect info in a form** step. Add a text field for the question, such as "What is your question for Unblocked?". Add a **Send a message to a channel** step to your workflow. Configure it as follows: * **Select a channel**: Choose the variable **Channel where the workflow was used**, or select a specific channel where Unblocked has been added. * **Add a message**: Compose your message to include: 1. An `@mention` of the person who submitted the form (use **Insert a variable** > **Person who submitted the form**). This `@mention` is **required** — Unblocked uses it to identify the user who asked the question. 2. An `@Unblocked` mention to trigger Unblocked 3. The question variable (use **Insert a variable** > **Answer to: What is your question for Unblocked?**) Your message should look something like: `{Person who submitted the form} @Unblocked {Answer to: What is your question for Unblocked?}` Slack Workflow Message Step Click **Save** to save the step, then **Publish** the workflow. Your team can now use it to submit questions to Unblocked automatically. Make sure Unblocked has been added to any channel where the workflow will post messages. You can verify this by posting 'Is Unblocked listening?' in the channel. ### Setting Up a Slack Bot If you have a custom Slack bot that needs to ask Unblocked questions on behalf of users, the bot can post messages to any channel where Unblocked has been added. To trigger a response, the bot's message must `@mention` Unblocked. When composing the message, include: 1. **An `@mention` of the user who asked the question** — this is **required**. Unblocked uses this to identify the user on whose behalf the question is being asked. 2. **An `@Unblocked` mention** — this triggers Unblocked to respond in a thread. 3. **The question** — the actual question text. For example, using the Slack API's [`chat.postMessage`](https://api.slack.com/methods/chat.postMessage) method: ``` <@USER_ID> <@UNBLOCKED_BOT_ID> How do I set up CI for this repo? ``` To mention Unblocked in a bot message, you'll need Unblocked's bot user ID. You can find this by looking up the Unblocked app in your Slack workspace's app directory, or by right-clicking the Unblocked bot in any channel and selecting **Copy member ID**. Make sure Unblocked has been added to any channel where your bot will post messages. You can verify this by posting 'Is Unblocked listening?' in the channel. ## Using Unblocked in Slack At this point, you can now interact with Unblocked in Slack. Unblocked will incorporate past and future conversations about your codebase to answer any questions that you and your team ask. You'll be able to add more channels for Unblocked to access or manage the current set of channels configured with Unblocked by returning to the Unblocked data source page for Slack. # Snowflake Source: https://docs.getunblocked.com/data-sources/snowflake Connecting Snowflake to Unblocked When you connect Snowflake to Unblocked, Unblocked can reference data from the Snowflake databases you select when answering questions. Unblocked provides links back to the original Snowflake resources for easy reference. See Snowflake with Unblocked in action: