Frequently Asked Questions
How do I completely block merging?
Create a freeze with a rule that has block_type set to merge (or both) and repo_pattern set to *. This blocks all pull request merges across every repo in your organization.
For this to be enforced, each repository must have NoShip configured as a required status check in its branch protection rules or rulesets. Without this, the PR will show a failing check but can still be merged.
Does NoShip access my source code?
No. NoShip does not request or require read access to your repository contents, pull request diffs, or source files. The GitHub App permissions are limited to:
- Commit statuses (write) -- to set the NoShip pass/fail check
- Deployments (read/write) -- to act as a deployment protection rule
- Organization members (read) -- to sync your team roster
NoShip operates purely at the CI/CD control plane level. It never clones, reads, or stores your code.
How do I unfreeze a single PR?
Use an emergency override scoped to a specific PR:
- Go to Overrides in the dashboard (or use the AI assistant).
- Click Request Override.
- Select the active freeze window.
- Set the PR number and repository.
- Provide a reason and submit.
- An admin approves the request.
- The specific PR's NoShip status check is set to passing, allowing it to merge.
The override is single-use and expires after the configured TTL. Only the specified PR is unblocked; all other PRs remain frozen.
Can I freeze specific environments?
Yes. Use the environment_pattern field on a freeze rule to target specific deployment environments. For example:
# Block production deployments only
block_type: deployment
environment_pattern: production
# Block all staging and production environments
block_type: deployment
environment_pattern: {staging,production}
# Block any environment starting with "prod"
block_type: deployment
environment_pattern: prod*Environment-scoped freezes require that the target environments have NoShip configured as a deployment protection rule in GitHub.
Does NoShip work with GitHub Merge Queues?
Yes. NoShip works with GitHub Merge Queues. When a freeze is active, the NoShip status check fails, which prevents PRs from being added to the merge queue. PRs already in the queue will fail the required check and be removed.
No special configuration is needed beyond adding NoShip as a required status check, which you should already have configured.
How do I migrate from Merge Freeze?
NoShip is designed as a drop-in replacement for Merge Freeze with expanded capabilities. To migrate:
- Install the NoShip GitHub App on your organization following the Getting Started guide.
- Update branch protection -- replace the Merge Freeze required status check with
NoShipin your branch protection rules. - Update API calls -- if you use the Merge Freeze API in CI/CD pipelines, point them at NoShip. The URL structure is identical, so only the hostname and bearer token change. Generate a token in Dashboard → Settings → API tokens.
# Merge Freeze (old) GET https://app.mergefreeze.com/api/branches/:owner/:repo/:branch Authorization: Bearer <merge-freeze-token> # NoShip (new) — same path, new host + token GET https://www.noship.io/api/branches/:owner/:repo/:branch Authorization: Bearer <noship-token> - Recreate schedules -- set up your recurring freeze windows in NoShip using the Schedules feature.
- Remove Merge Freeze -- once everything is verified, uninstall the Merge Freeze GitHub App.
How are timezones handled?
Each organization has a default timezone configured in Settings. This timezone is used for:
- Displaying freeze window times in the dashboard
- Interpreting schedule recurrence rules
- Audit log timestamps
You can set a different timezone per schedule if needed. All times are stored internally as UTC.
Can I manage multiple GitHub organizations?
Yes. Install the NoShip GitHub App on each organization separately. When you sign in to the dashboard, use the organization selector to switch between them. Each organization has its own freezes, schedules, members, and settings.
What happens if I don't have permission?
NoShip uses role-based access control. If you try to perform an action you do not have permission for (e.g. creating a freeze as a member when access control is set to admins-only), the API returns a 403 Forbidden error and the dashboard shows an appropriate message. Contact your organization owner to adjust your role.