GitLab’s open-core licensing splits one code base between an open source licence and a proprietary one. The contributor documentation says it plainly: GitLab Community Edition (CE) “is licensed under the terms of the MIT License”, while GitLab Enterprise Edition (EE) is under “The GitLab Enterprise Edition (EE) license” with more restrictions.[3] Paid features live in the EE code and are unlocked by a subscription. The subscription and all use of the Software, Free use included, are governed by the GitLab Subscription Agreement.[5][6]
Editions
The repository’s top-level LICENSE file assigns licences by directory.[1]
| Part of the code base | Licence |
|---|---|
| Everything outside the directories below | MIT Expat |
ee/ directory | GitLab Enterprise Edition (EE) license |
jh/ directory | The licence in jh/LICENSE |
doc/ directory | Creative Commons CC BY-SA 4.0 |
| Client-side JavaScript, as served or compiled | MIT Expat |
| Third-party components | Their original licences |
The LICENSE file states the default rule: “Content outside of the above mentioned directories or restrictions above is available under the “MIT Expat” license as defined below.”[1] The EE License covers only the parts “not distributed as part of GitLab Community Edition (CE)”. Anything that is part of CE, or served client-side as an image, font, stylesheet or JavaScript, stays under MIT Expat.[2] Catalog proof: Code outside ee/ is MIT licensed.
A new Self-Managed installation without a licence enables only Free features. Activating a subscription in the EE package enables Premium or Ultimate features, and a CE installation can be upgraded to EE.[5] If a customer does not renew, GitLab says its “key will no longer work and GitLab Enterprise Edition will not be functional anymore”, and the customer can downgrade to the free Community Edition.[4]
Metrics
The EE License does not define its own unit. It ties production use to “a valid GitLab Enterprise Edition subscription for the correct number of user seats”, which brings in the Agreement’s User.[2][6] The Agreement defines a User as a person or machine authorized by the customer that needs a seat and can access the Software, whether or not it uses it.[6]
Counting / floors
EE License conditions
The EE License allows production use only “if you (and any entity that you represent) have agreed to, and are in compliance with” GitLab’s subscription terms or another agreement with GitLab, and hold a valid EE subscription for the correct number of user seats.[2] On those conditions the licensee may modify the Software and publish patches. GitLab and its licensors keep all rights in such modifications, which may be used only with a valid subscription.[2] There is a development exception: “you may copy and modify the Software for development and testing purposes, without requiring a subscription”.[2] Beyond what is granted, “it is forbidden to copy, merge, publish, distribute, sublicense, and/or sell the Software”.[2] For licence managers, running EE features in production on more users than subscribed breaches both the EE License and the Agreement. A non-production copy for development and testing does not need a subscription under the EE License. A production activation code may also be applied to a development environment, with the same user restrictions.[11] Catalog proof: EE code needs a subscription for production use.
Activation and licence keys
Self-Managed subscriptions are activated with a 24-character activation code through Cloud Licensing, which keeps subscription data synchronized with GitLab. Offline environments use a license file instead.[5] The pricing FAQ calls license keys a legacy method replaced by activation codes for most paid subscriptions since 2022, and says Cloud Licensing “is required for all customers on version 14.1 or higher”.[4] When a licence expires, the instance becomes read-only and features such as Git pushes and issue creation are locked until a new subscription is activated. Removing the expired licence returns the instance to Free features.[10] Catalog proof: Expired Self-Managed licence makes the instance read-only.
Subscription Agreement terms
Scope and precedence. The Agreement applies whether the customer buys from GitLab, a GitLab Affiliate or an Authorized Partner. For partner purchases, GitLab has no obligations beyond the Agreement unless agreed in writing.[6] Additional Terms govern particular features and Supplemental Services, including AI functionality, and control over the Agreement where they conflict.[6] The Terms of Use page lists the Additional Terms in force: the GitLab Duo AI Terms, the Testing Agreement for beta features, the Agile Planning Terms, the Professional Services Terms and the EU Data Act Supplemental Terms.[7] Terms on a customer purchase order are “null and void and are expressly rejected”.[6] Catalog proof: Agreement version follows the purchase date.
Free Software. The Agreement defines Free Software as “the free, feature-limited version of Software”, including the lowest tier and evaluation software. Free Software, third-party products and trials are provided as-is, without warranty or indemnity. Where that exclusion cannot be enforced, GitLab’s liability for Free Software is capped at USD 1,000.[6]
Use restrictions. Section 5.1 bars using the Software beyond the Documentation and the Agreement, in breach of the Acceptable Use Policy, or “for time sharing or service bureau purposes (including without limitation, sublicensing, distributing, selling, reselling any Software)”. It also bars any purpose “other than its and its Affiliates’ own internal use”.[6] It prohibits reverse engineering to build a competing product or copy features. Section 5.2 expressly allows benchmark testing and comparative analysis.[6] Section 5.6 confirms that the Agreement is “not intended to limit Customer’s right to software code under the terms of an open source license”.[6] Catalog proof: Internal use only; no service bureau.
Term, renewal and fees. A Subscription Term runs twelve months unless the Order Form says otherwise. It renews automatically for twelve-month terms with the same users, tier and services plus Add-On Users, unless notice is given 30 days before expiry.[6] Fees, including prepaid amounts, are non-refundable except as the Agreement provides. Undisputed invoices are due within 30 days, and web-portal purchases are payable immediately.[6] If the customer terminates for GitLab’s uncured material breach, GitLab refunds prepaid fees for the unused term. If GitLab terminates for the customer’s breach, the customer owes the fees for the rest of the term.[6] GitLab may suspend access for payments 30 or more days overdue or for breach of the use restrictions.[6] Catalog proof: Automatic renewal includes add-on users.
Verification and audit. GitLab may verify use electronically or require usage reports. Customer Records must be kept for two years after the Agreement, and an independent audit may follow on 30 days’ notice. The customer pays the audit cost when underpayment exceeds 5%.[6] Catalog proof: Usage verification and audit.
Agile Planning Terms
Enterprise Agile Planning seats come with their own Additional Terms. They grant “a limited, non-exclusive, non-transferable, non-sublicensable license” to the Agile Planning Software, for using Agile Planning Features such as epics, issues, tasks, milestones, roadmaps and boards during the Subscription Term.[8] Plan Users may not use other Ultimate features. To give them more, the customer buys full Ultimate licences at the Upgrade Price, prorated for the rest of the term.[8] The customer must keep the “Optional Data” usage ping enabled for the whole term and implement reasonable technical controls GitLab provides. Failing to do so is a breach.[8] GitLab may ask for screenshots or scripts to verify compliance. Plan Users found using other features are invoiced at the Upgrade Price even without a signed Order Form.[8] In seat terms, a Planner who is given a higher role anywhere occupies an Ultimate seat.[9] Catalog proof: Plan Users are limited to Agile Planning Features; A Planner with a higher role uses an Ultimate seat.
Virtualization & partitioning
Neither the EE License nor the Agreement counts processors or hosts. Instance-level rules are in GitLab’s licensing policy: separate instances may run different tiers, but features of a higher-tier instance may not be used on code developed in a lower-tier one.[11] Catalog proof: Prohibited commingling of tiers.
Cloud / BYOL
The Agreement’s SaaS appendix covers GitLab.com and GitLab Dedicated. A Dedicated subscription runs only on infrastructure GitLab selects and manages, and on termination the customer must migrate its own content.[6] The licensing policy also restricts use outside a “Geographical Region” of 4,000 miles from the Sold To address unless GitLab approves in writing.[11] Catalog proof: GitLab Dedicated runs only on GitLab-selected infrastructure; Geographical Region for licence deployment.
Programs
The Subscription Term and automatic renewal is the contractual wrapper for every paid tier. Seat overage programs are covered in GitLab quarterly reconciliation and true-ups.
Out of scope
This page does not interpret the MIT Expat licence beyond what GitLab’s LICENSE file says, and does not cover JiHu GitLab (the jh/ directory), the GitLab Duo AI Terms, the Data Processing Addendum or the Partner Program agreements listed on the Terms of Use page.[1][7] No court case about GitLab’s software licensing was found in primary court records for this article.