GitHub: license compliance results block the merge
A branch ruleset can require license compliance results ("Require license compliance results before merging"). License compliance checks the dependencies a pull request adds or changes against a policy of permitted licenses, and blocks pull requests that add dependencies whose licenses are not allowed (GitHub's available rules for rulesets and about open source license compliance). Classic branch protection has no such setting; it is the ruleset rule license_compliance_scanning, which takes no parameters (checked October 26, 2026).
GET /repos/OWNER/REPO/rules/branches/BRANCH
[{ "type": "license_compliance_scanning" }]
What the rule checks
- Dependency changes: when a pull request changes package manifests, GitHub compares the dependency changes between the base and pull request branches, evaluates the detected licenses against the policy, and reports violations. The evaluation uses the repository's dependency data, transitive dependencies detected in the dependency graph included.
- The policy: the permitted licenses are set in an enterprise policy, picked from a built-in list or entered as SPDX license identifiers, and repository-specific exceptions can be layered on it. Developers with write access can view the policy and exceptions in effect for a repository in its settings, under "License policy" (GitHub's configuring open source license policies).
- Who can use it: license compliance is available for GitHub Enterprise Cloud, including data resident GHEC. Enforcing its policy on a repository needs a GitHub Code Security license, and the dependency graph has to be enabled for the repositories evaluated.
- Active or evaluate: a ruleset in Active mode with this rule blocks pull requests that introduce noncompliant dependencies until the violations are resolved; a ruleset in Evaluate mode runs the license checks and annotates the pull request, but does not block merges. "Get rules for a branch" returns only active rules, not those in rulesets that only evaluate or are disabled (GitHub's REST API endpoints for rules).
Where it shows on the pull request
- Annotations: if a dependency's license is not in the policy, the findings appear in pull request annotations. They do not generate an exception request by themselves, because the developer may change the code to avoid the noncompliant dependency.
- Exception requests: to use the dependency anyway, GitHub prompts the developer for more information and sends the request to the Enterprise Open Source License Managers, who see pending requests in the enterprise security views and get them as email notifications.
- Conversation resolution: a branch protection rule that requires comment resolution before merging tracks the annotations from license checks, so even alerts from a ruleset in Evaluate mode are subject to it (see unresolved conversations block the merge).
What to do
- A dependency's license is not allowed: update the pull request to use compliant dependencies, then push.
- The dependency is needed: request an exception. An Enterprise Open Source License Manager can approve it for a package, a license or a package pattern, at repository or enterprise scope. Once it is approved, the alert is closed and the pull request is unblocked, as long as no other required checks are failing.
- The license should be allowed: update the policy where appropriate. Entries set at the enterprise level cannot be edited in a repository's policy.
- Annotations but no block: the ruleset is probably in Evaluate mode; only an Active ruleset blocks the merge, unless the branch also requires conversations resolved.
GitHub pull requests in IntelliJ IDEA
Pull Request Inbox for GitHub, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, shows a pull request's reviews, checks and conversations next to the diff, and merges it with the methods the target branch allows. When GitHub calls the pull request blocked, its merge checks name what they can read: required checks that have not reported, a review still required, unresolved conversations and unsigned commits the rules hold against it, the rule on the most recent push, and the code scanning tools, code quality severity and code coverage thresholds the rulesets require. When the branch's rulesets require license compliance results, the merge checks of a blocked pull request say so, with what the rule holds back and how a violation is resolved. The review inbox, diffs and conversations are free; approving, commenting, resolving and merging are Pro (US$1.50 a month, with a 30-day trial).
GitHub is a trademark of GitHub, Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with or endorsed by GitHub, Inc. or JetBrains.
More: GitHub merge refused (405, 409) · GitHub review refused (422) · GitHub search 422 "Validation Failed" · "Resource not accessible by personal access token" · 401 "Bad credentials" · "Resource protected by organization SAML enforcement" · "API rate limit exceeded" · GitHub diff 406 "too_large", 3,000 files · GitHub line comment 422 "must be part of the diff" · GitHub branch update refused (422) · GitHub pull request not created (422, 403) · GitHub auto-merge refused · GitHub draft, ready for review or close refused · GitHub conversation not resolved · GitHub checks not shown (check runs 403) · GitHub file contents not read · GitHub compare refused (404, 422) · GitHub comment or reply refused (403 locked, archived) · GitHub merge method not allowed (405) · GitHub branch not found (404, 301) · GitHub Enterprise Server not reached · GitHub review request not shown · GitHub pull request list incomplete · GitHub 404 Not Found, renamed repositories (301, 307) · GitHub line comment outdated or not on the diff · GitHub pull requests not updating, notifications late · GitHub suggested change cannot be applied · GitHub required check stuck at "Expected" · GitHub code owner review required · GitHub merge blocked by unresolved conversations · GitHub merge blocked by unsigned commits · GitHub branch that merges through a merge queue · GitHub merge waiting for an approval of the most recent push · GitHub merge waiting for code scanning results · GitHub merge waiting for code quality results · GitHub merge blocked by a code coverage threshold · GitHub branch locked or its updates restricted · GitHub branch not deleted after merging · GitHub merge waiting for a team's approval (Required reviewers) · GitHub merge blocked by secret scanning alerts · GitHub stacked pull request not merging · GitHub push blocked by push rules · GitHub merge blocked by commit metadata rules · GitHub force push blocked · GitHub issue not closed by a merged pull request · GitHub pull request not checked out locally · GitHub pull request has merge conflicts · GitHub changes requested and dismissing a review · GitHub co-author not credited for a commit · GitHub dependency review check failed · GitHub Dependabot not rebasing its pull request · GitHub fork not syncing with upstream · GitHub pull request base branch not changing · GitHub pull request not reverting · GitHub pull request template not showing · GitHub pull request labels or assignees not added · GitHub pull request not closing or reopening · GitHub push blocked by push protection · GitHub pull request comment hidden · GitHub pull request blocked until deployments succeed · GitHub team review request replaced by members · GitHub pull request file no longer marked Viewed · GitHub pull request marked merged without being merged · GitHub Copilot review does not count as an approval · GitHub checks not running on a pull request a workflow created · GitHub Update branch button not shown on a pull request · GitHub checks failing on a Dependabot pull request · GitHub checks failing on a pull request from a fork · GitHub checks skipped by [skip ci] in a commit message · GitHub checks gone after the retention period · GitHub code review limits in a public repository · GitHub pull requests turned off or limited in a repository · GitHub checks run on every pull request in a stack · GitHub pull request showing commits already squash merged · GitHub pull request not showing a file diff · GitHub push to a pull request branch from a fork refused · GitHub check cancelled on a pull request · GitHub Rebase and merge not available · GitHub merge commit message not what you expected · GitHub pull request shows every line changed · GitHub API request timed out · GitHub pull request image or document diff not shown · GitHub review request refused (422) · GitHub pull request from Copilot: checks not running, approval not counted · GitHub push refused: GH006 and GH013 on a protected branch · GitHub "At least 1 approving review is required", approvals that do not count · GitHub pull request plugins for IntelliJ IDEA, compared · 日本語