| title | Collaborating in a temporary private fork to resolve a repository security vulnerability | ||||||
|---|---|---|---|---|---|---|---|
| intro | You can create a temporary private fork to privately collaborate on fixing a security vulnerability in your public repository. | ||||||
| permissions | {% data reusables.permissions.security-repo-enable %} | ||||||
| redirect_from |
|
||||||
| versions |
|
||||||
| shortTitle | Collaborate in a fork | ||||||
| contentType | tutorials | ||||||
| category |
|
{% data reusables.security-advisory.repository-level-advisory-note %}
Before you can collaborate in a temporary private fork, you must create a draft security advisory. For more information, see AUTOTITLE.
To keep information about vulnerabilities secure, integrations, including CI, cannot access temporary private forks.
{% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-security %} {% data reusables.repositories.sidebar-advisories %}
-
In the "Security Advisories" list, click the name of the security advisory you'd like to create a temporary private fork in.
-
Scroll to the bottom of the advisory form and click Start a temporary private fork.
A private fork of the repository is created and shown on the advisory page.
The naming convention for the private fork is very similar to the convention used for advisories in the {% data variables.product.prodname_advisory_database %} and follows this format:
repo-ghsa-xxxx-xxxx-xxxx, where:repois the name of the repository. To stay under the 100 character limit on repository names, we truncate the original repository's name to 80 characters.xxxx-xxxx-xxxxis the unique identifier of the draft security advisory:xis a letter or a number from the following set:23456789cfghjmpqrvwx.- The numbers and letters are randomly assigned.
- All letters and numbers are lowercase.
For example, if you create a temporary private fork in a repository called octocat-repo, and the automatically generated ID for the draft advisory is GHSA-x854-cvjg-vx26, the temporary fork will be called octocat-repo-ghsa-x854-cvjg-vx26.
You can also use the REST API to create temporary private forks. For more information, see Create a temporary private fork in the REST API documentation.
Anyone with admin permissions to a security advisory can add additional collaborators to the security advisory, and collaborators on the security advisory can access the temporary private fork. For more information, see AUTOTITLE.
Anyone with write permissions to a security advisory can collaborate on a patch by committing changes to a temporary private fork.
{% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-security %} {% data reusables.repositories.sidebar-advisories %}
-
In the "Security Advisories" list, click the name of the security advisory you'd like to work on.
-
You can make your changes on {% data variables.product.github %} or locally:
- To make your changes on {% data variables.product.github %}, under "Collaborate on a patch", click the temporary private fork. Then, create a new branch and edit files. For more information, see AUTOTITLE and AUTOTITLE.
- To add changes locally, follow the instructions under "Clone and create a new branch" and "Make your changes, then push."
Anyone with write permissions to a security advisory can create a pull request from a temporary private fork.
{% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-security %} {% data reusables.repositories.sidebar-advisories %}
-
In the "Security Advisories" list, click the name of the security advisory you'd like to create a pull request in.
-
Scroll to the bottom of the advisory form. Then, under "Collaborate on a patch", click Compare & pull request to create a pull request for the associated branch.
The "Open a pull request" includes a header showing the branches that will be compared in a three-dot Git diff comparison when the pull request is created. For more information, see AUTOTITLE.
{% data reusables.repositories.create-pull-request %}
{% data reusables.repositories.merge-all-pulls-together %} For more information, see Merging changes in a security advisory.
Anyone with admin permissions to a security advisory can merge changes in a security advisory.
{% data reusables.repositories.merge-all-pulls-together %}
Before you can merge changes in a security advisory, every open pull request in the temporary private fork must be mergeable. To keep information about vulnerabilities secure, status checks do not run on pull requests in temporary private forks. For more information, see AUTOTITLE.
Additionally, there can be no merge conflicts, and {% data variables.product.prodname_dotcom %} won't enforce any of the protection rules that you may have set up for the branch you're trying to merge the changes in to.
{% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-security %} {% data reusables.repositories.sidebar-advisories %}
- In the "Security Advisories" list, click the name of the security advisory with changes that you'd like to merge.
- Scroll to the bottom of the advisory form. Then, under "This advisory is ready to be merged", click Merge pull request(s) to merge all open pull requests in the temporary private fork.
Note
You can only merge one pull request into the main branch of a temporary private fork. If more than one pull request targets the main branch, merging is blocked.
After you merge changes in a security advisory, you can publish the security advisory to alert your community about the security vulnerability in previous versions of your project. For more information, see AUTOTITLE.


