Skip to content
Documentation
Accounts

GitHub access token

Create a GitHub token and save it for deployment.

View Markdown

By the end of this guide, your GitHub token will be saved in the starter's root .env file. Deployment Kickstart uses it to create your app's private repository and publish your source code.

You can do this after your local app works. For downloading the starter, follow Setup; the deployment token isn't needed for your first Kickstart.

Create and save the token

Open Fine-grained tokens

Sign in to GitHub, or create an account. Open Settings → Developer settings → Personal access tokens → Fine-grained tokens, or go directly to Fine-grained tokens.

Click Generate new token. If GitHub asks you to confirm access, complete its verification to continue.

GitHub Developer settings with Fine-grained tokens selected and the green Generate new token button.
GitHub · Fine-grained tokens → Generate new token. Existing accounts may show a token list here.

Choose the owner and repository access

Fill in the token form:

  1. Token name: enter Ship & Scale deployment.
  2. Resource owner: choose the account or organization that will own the app repository. It must match GITHUB_OWNER.
  3. Expiration: choose 90 days. That covers deployment and retries; Kickstart only uses this token during deployment.
  4. Repository access: automatic repository creation needs All repositories, which also covers every current and future repo under that owner. To limit access to one repository, first create the exact empty private repository in GitHub, then choose Only select repositories and select that repository.

Leave Description blank unless you want to add a note.

GitHub token form with the deployment name, repository owner, 30-day expiration and All repositories selected.
GitHub - choose the account that owns the repo. The example shows All repositories for automatic creation and a 30-day expiry.

Automatic creation needs broad repository access

All repositories includes every current and future repository under the selected owner. A fine-grained token can select one owner only. For least access, precreate the exact empty private repository and use Only select repositories; set GITHUB_OWNER, GITHUB_REPO_NAME and its numeric GITHUB_REPO_ID to that repository before checking deployment.

Add the repository permissions

Scroll to Permissions. With Repositories selected, click Add permissions. Search for and select Administration, then Contents. Close the menu and change each permission's Access to Read and write.

GitHub Add permissions menu with Administration entered in the search field and its checkbox ready to select.
GitHub · Add permissions → search for a permission → select it. Repeat for Contents.

Your permissions should match this table:

PermissionAccess
AdministrationRead and write (create/manage the repository)
ContentsRead and write (publish source)
MetadataRead-only, added automatically
WorkflowsRead and write only when publishing .github/workflows files

Leave Account permissions unchanged. A fine-grained token for an organization may need owner approval before it works.

GitHub repository permissions with Administration and Contents set to Read and write, Metadata set to Read-only, and the green Generate token button below.
GitHub · Check the access levels, then click Generate token.

Click Generate token, then copy the token immediately. You won't be able to view the full value again after leaving the page.

Save it in .env

Open the root .env file beside package.json. If it doesn't exist, copy .env.example to .env. Find the existing GITHUB_TOKEN= line, paste your token after the equals sign and save:

Your private .env
GITHUB_TOKEN=replace_with_your_github_token

Replace the example value with your token. Keep one active GITHUB_TOKEN line and preserve the file's other settings. On Windows, make sure the file is named .env, not .env.txt.

Keep this token only in your local .env. It's a setup credential, so it never goes into Vercel's environment variables either.

You are finished when

  • GITHUB_TOKEN has one saved value in the root .env file.
  • For a new automatic deployment, GITHUB_OWNER, GITHUB_REPO_NAME and GITHUB_REPO_ID remain blank. Kickstart fills them in. Keep existing values if you've already started deployment.

Next, prepare your Vercel token and GitHub App connection. Vercel needs that connection to build from your repository. If you limit the App to selected repositories, add the new repository when Kickstart pauses for authorization, then rerun with the same saved settings.

Once all deployment accounts are ready, run this read-only check:

npm run kickstart:deploy -- --check

Resolve any errors before deploying. This command checks your configuration and account access; it doesn't create a repository or prove that a future push will succeed.

Use a precreated empty repository

Template 0.0.1 · September 2026 source snapshot