Overview
Apps is where you manage authorized external applications. Each external application appears as a card — you authorize it, manage its installations, and enable / disable or revoke it right from its card. Apps today has two applications — GitHub and GitLab — covering the most common code-hosting platforms. Once you authorize one, AI SRE can work directly inside your code repositories during a session: understand and explore code, investigate recent changes / commits / PRs (MRs on GitLab), trace a PR / MR from a change ticket, answer questions about a codebase, and — when you ask — fix a bug, open a PR / MR, or file an issue. It all runs through native
gh / glab / git, like an engineer working in a terminal.
Main Scenario: Letting the Cloud Sandbox Reach Your Repositories
AI SRE sessions run in a Flashduty cloud sandbox by default. The sandbox is a clean, isolated, ephemeral environment that carries none of your git credentials — which is exactly what an App solves. Once you authorize the GitHub App or the GitLab App, the agent inside the sandbox can clone your repositories, read diffs, and open PRs / MRs, without you handing it any password or token; its access is limited to the repositories you granted, with only the least privilege needed to do the work. This is what both Apps are mainly for.
gh / glab / git credentials configured (you work with repositories on it every day). In that case the agent just uses the host’s own credentials — no App authorization needed. (If the host happens to have no credentials configured, authorizing the App lets BYOC sessions use it too.) For the differences between environments, see Environments (BYOC).Where to Find It
Go to Plugins → Apps. Apps is the first and default tab in the Plugins area — opening Plugins lands you here.
The GitHub App
The following walks through GitHub first — authorization, installation management, and adjusting repository access; GitLab follows in the next section.
Connecting a GitHub Organization
Start the authorization from the GitHub card. The whole install completes in a popup through GitHub’s official install page, and the list refreshes automatically after the callback.Start the authorization
Pick the organization and repositories on GitHub
Auto-refresh after you confirm
Managing Installations
Each authorized organization adds one installation row under the GitHub card. Each row shows:Enable / Disable (suspend / resume)
Enable / Disable (suspend / resume)
Revoke
Revoke
Adding or Adjusting Repository Access
The organization is already connected, but you want AI SRE to reach more of its repositories — you don’t need to revoke and reconnect. In Plugins → Apps, click More repositories again for that organization (or open the App’s Configure page on GitHub directly). GitHub shows the Repository access screen; select the additional repositories and save, and AI SRE re-syncs the granted repository list automatically — the new repositories become available without re-creating the connection.github.com/apps/flashduty) → Configure → select the organization → scroll to the Danger zone → Uninstall. Then return to Plugins → Apps in Flashduty and authorize the organization again, granting all the repositories you need in one pass.The GitLab App
The GitLab App connects a GitLab instance — GitLab.com, JihuLab (GitLab’s China distribution, SaaS at jihulab.com or a private deployment), or any other self-managed instance of your own. The connection method is exactly the same for all of them: register an OAuth application on that instance first, then authorize. Once authorized, AI SRE can read code and investigate changes / MRs, and — when you ask — file an issue or open an MR, in the repositories you authorized. Just like GitHub, you never paste a personal token: once Flashduty gets an OAuth grant, it provisions a dedicated bot identity for your account to do the actual work.
Connecting a GitLab Instance
Choose the GitLab instance to connect
- GitLab.com — the address is fixed to
https://gitlab.com; nothing to fill in. - JihuLab — the address is fixed to
https://jihulab.com; nothing to fill in. - Self-managed — enter the instance’s root address: the part of the URL before the group / project path, for example
https://gitlab.example.com. If the instance is deployed under a subpath, include it, for examplehttps://example.com/gitlab.
Choose the connection environment
Register an OAuth application on that instance
Authorize in the popup
Pick the groups and projects to authorize
Bot Identity and Permissions
After you save the repository selection, Flashduty provisions a dedicated bot for the account inside those groups / projects (a service account where the instance supports it, falling back to a group- or project-level access token otherwise) for AI SRE sessions to use. Either way, the bot’s permissions are capped at Developer level — the same minimum access you’d grant it in GitLab yourself. Tokens are rotated automatically before they expire; there’s nothing for you to manage. If the instance doesn’t support service accounts, the bot falls back to a group- or project-level token — and a token like that can only ever bind to a single group or project, so the repository picker limits you to selecting at most one group or project. If you select multiple groups / projects while in multi-select mode and save, Flashduty shows “This GitLab instance doesn’t support service accounts; select only one group or project and retry,” and switches the picker to single-select mode: checking a new group or project after that automatically clears any other selection, so you need to leave just one group or project checked before saving again.Managing a Connected Instance
The GitLab card shows the connected instance’s address and status.Manage repos
Manage repos
Disconnect
Disconnect
How AI SRE Works Inside a Repository
After authorization, you need no extra configuration. When you ask AI SRE to work on a task in a repository during a session, it works like an engineer joining the project — understand first, then change, then verify. This behavior is governed by the built-in
github Skill and gitlab Skill respectively.
Typical actions
- Enter the repository: clone it into its own workspace and read the repo’s own conventions first (
CLAUDE.md,AGENTS.md,README,CONTRIBUTING). - Investigate changes / PRs / MRs: use
git log, plusgh pr list/gh pr view/gh pr diff/gh search prson GitHub, or the equivalentglab mr list/glab mr view/glab mr diffon GitLab, to trace a PR / MR named in an incident or change ticket, see what a release shipped, or read a diff before deciding anything. - Change and propose: create a branch, make a minimal diff, open a reviewable PR / MR with
gh pr createorglab mr create, or file an issue withgh issue create/glab issue create, and report the link back to you.
- Never force-push (
git push --force), and never push the default branch directly — always a branch + PR / MR. - One logical change per PR / MR, kept reviewable; if a change balloons beyond a focused diff, it stops and hands the analysis back to you.
- Never delete branches, close others’ issues / PRs / MRs, or change repository settings; never commit secrets, credentials, or build artifacts.
Permissions & Scope
Authorize and revoke / disconnect are account-level operations for both the GitHub App and the GitLab App. The account is the only security boundary; the team here is just an ownership / audit tag: any account member with the corresponding permission can authorize, revoke / disconnect, or enable / disable the whole App; when a session needs a repository, it obtains access from the account’s currently active installation. Members of an account share one authorization — consistent with AI SRE’s “usage = account-level, ownership = team tag” model for other resources. The two Apps’ scope models differ slightly: the GitHub App lets the same account install multiple organizations, each enabled / revoked independently; the GitLab App lets an account connect only one GitLab instance at a time — switching to a different instance requires disconnecting the current one first.