GitHub App
GitHub — the agent opens a pull request and never merges it
A first-party GitHub App installed into your account, granted three permissions, that opens one pull request per finding against the repository the page lives in.
Karl-Gustav Kallasmaa, Founder & CEOLast updated Connecting it
In order, with the reason each step exists rather than only the instruction.
- 1
Install the App into your account or organisation
From the project's GitHub settings, press Connect GitHub. GitHub takes over and asks which account or organisation to install into. This is a first-party GitHub App rather than an OAuth app or a third-party connector, so the installation is visible and revocable from GitHub's own settings.
- 2
Grant only selected repositories
Pick the repositories whose content you want changed. GitHub holds that list, not Attensira, so changing it later happens on GitHub's installation page rather than inside the product.
- 3
Attach the repositories to the project
Back in Attensira, choose which of the installed repositories this project may open pull requests against. A project can have several, which is the normal case — a marketing site, a docs site and the app are often three repos, and a finding goes to the one its page lives in.
- 4
Review what arrives
Each pull request is opened against your default branch on a fresh branch, carries the attensira label, and explains which page, which finding and why the edit answers it. Attensira then tracks whether it was merged or closed and what CI said, and shows that on the inbox row.
What it lets you do
- Turns a finding about a page into a diff in the repository that produces that page, rather than a recommendation in a dashboard somebody has to implement.
- Routes each change to the right repository when a project spans several, so a fix to a docs page does not arrive as a pull request against the marketing site.
- Reports back on what happened to the pull request — merged, closed, and what CI said — on the inbox row it came from.
What it cannot do
An integration page that lists only capabilities is an advertisement. This is the half you are evaluating.
- It never merges and never pushes to your default branch. Every change is on a fresh branch of ours, so nothing reaches production without a human pressing merge.
- It never pushes twice to the same branch. One finding, one branch, one push, which means a pull request is final from our side and reviewing the diff is reviewing the final thing.
- It cannot fix a red build or a merge conflict. Both are surfaced to you and left there, because pushing again would break the guarantee that the diff you reviewed is the diff that exists.
- It cannot touch CI configuration, workflow files or anything that changes how your builds run, and it requests no Actions permission and no access to secrets.
Finding something wrong with a page is the easy half. The hard half is that the fix has to end up in the repository that produces the page, reviewed by somebody who can say no. This integration is that half.
What it actually is
A first-party GitHub App. Not an OAuth app, not a connector brokered by a third party. You install it into your own account or organisation, GitHub holds the list of repositories it can see, and you can inspect or remove it from GitHub's own settings at any time without asking us.
That distinction has a practical consequence people trip over: the App does not appear in Attensira's list of connected applications and cannot be revoked from there. Revoking an OAuth connection has no effect on it, and uninstalling it has no effect on anything in that list. They are separate systems with separate controls.
Three permissions, and nothing else
Contents, read and write, so it can read the files behind a page and push a branch. Pull requests, read and write, so it can open one and read its state afterwards. Metadata, read, which every GitHub App requires and which lists the repositories you granted.
There is no Actions permission, no Administration permission, and no access to secrets. That list is short enough to check on GitHub's consent screen, and the documentation is explicit that if the screen shows you something outside it, you are not installing our App.
Four rules that make the diff trustworthy
The App never merges. It never pushes to your default branch. It never pushes twice to the same branch. And it never touches CI configuration, workflow files, or anything that changes how your builds run.
Taken together those turn the pull request into the whole surface of the integration. Nothing we do can change after you start looking at it, which means reviewing the diff is reviewing the final thing rather than a snapshot of something still moving. That is a stronger property than it sounds, and it is the reason the rules are absolute rather than defaults.
The cost of that guarantee is visible when something goes wrong. A red build or a merge conflict is surfaced on the inbox row and left there. We do not push a fix, because a second push would break exactly the property that makes the first one safe to review.
From finding to branch
The sequence is short. The agent identifies something to fix on a page. It locates the file that produces that page in one of the attached repositories — and where it cannot find the source, that becomes an inbox row saying so rather than a speculative pull request. It writes the change onto a fresh branch used once. Then it opens the pull request against your default branch, with a body naming the page, the finding and why this edit answers it, and applies the attensira label.
Where a project requires approval before an outward write, none of that reaches GitHub until you have given it.
Several repositories is the normal case
A marketing site, a docs site and the application itself are commonly three repositories, and a finding on a pricing page belongs in a different one from a finding on a quickstart. Attach all of them and each pull request goes where its page lives. This is the ordinary configuration rather than an advanced one.
After the pull request
Attensira keeps watching. Whether the pull request was merged or closed, and what your CI said about it, both come back onto the inbox row it came from. That closes the loop between something being proposed and something being decided, which is the piece that is missing when the output of an analysis tool is a document.
Questions people ask
- What permissions does the App request?
- Exactly three — Contents read and write to read the files behind a page and push a branch, Pull requests read and write to open one and read its state, and the mandatory Metadata read that lists the repositories you granted. There is no Actions permission and no access to secrets.
- Can it merge its own pull request?
- No. Merging is outside what the App does, and pushing to your default branch is too. Every change arrives on a branch of ours for you to review.
- What happens if CI fails on one of its pull requests?
- It is surfaced on the inbox row and left there. Attensira does not push again to fix it, because a second push would mean the diff you reviewed is no longer the diff that exists.
- Can one project use several repositories?
- Yes, and that is the normal case. A finding is routed to the repository the page actually lives in, so a docs fix and a marketing fix land in different places.
- Is this an OAuth connection I can revoke in Attensira?
- No. It is a GitHub App you installed, so it does not appear under connected applications and is managed from the project's GitHub settings or from GitHub's own installation page.
Sources
Every factual statement above, with the page it came from and the date that page was read.
Attensira's documentation states that the GitHub connection is a first-party GitHub App installed by the customer, not an OAuth app and not brokered through a third-party connector.
docs.attensira.com · retrieved
“This is a first-party GitHub App, installed by you into your organisation or account. It is not an OAuth app, and it is not brokered through a third-party connector”
Attensira's documentation states that the App never merges a pull request, never pushes to the default branch, never pushes twice to the same branch, and never touches CI configuration.
docs.attensira.com · retrieved
“We **never push to your default branch**. Every change is on a fresh branch of ours.”
Attensira's documentation states that the App requests exactly three permissions — Contents, Pull requests and Metadata — with no Actions permission, no Administration permission and no access to secrets.
docs.attensira.com · retrieved
“There is no Actions permission, no Administration permission, and no access to secrets.”
Attensira's documentation states that GitHub is not an OAuth connection, does not appear under connected applications, and cannot be revoked from that page.
docs.attensira.com · retrieved
“It is not an OAuth connection and it is not brokered through a third-party connector, so it does not appear on this page and cannot be revoked from it.”