◀ Playbook index
NO.29.2

🌏 EMU & Data Residency

Updated: 2026-10-26

In a nutshell

GitHub Enterprise Cloud comes in three setups, depending on who manages the accounts and where the data lives.

EMU issues accounts from your company IdP. Data residency builds on EMU and hosts your enterprise on a dedicated GHE.com subdomain, storing code and data in a region of your choice, such as Japan. To host it yourself, there is also GitHub Enterprise Server (GHES).

Four GitHub Enterprise setups 📖 Docs

For GHEC you pick the account type and data location at creation. GHES is GitHub you host yourself, on-prem or in your cloud.

PersonalEMUData residencyGHES
🏠 Hosted atgithub.comgithub.com*.ghe.comSelf-hosted
👤 AccountsSelf sign-upIdP (SCIM)IdP (SCIM)On the instance
🔐 Sign-inPassword (+SAML)SAML / OIDCSAML / OIDCLDAP, CAS, SAML
🗾 Data locationUSUSEU, AU, US, JPYour choice
📢 Public repos✅❌❌⚠️ Instance only
🤝 Outside collab✅❌ Read-only❌❌
🔄 UpdatesAutoAutoAutoAdmin-run
🤖 Copilot✅✅✅⚠️ IDE / CLI only
⚙️ Hosted runners✅✅⚠️ No macOS❌ Self-hosted

Features unavailable on GHE.com and GHES 📖 Docs

Gaps compared with EMU on GitHub.com. ❌ unavailable, ⚠️ with conditions.

📖 GHE.com feature overview ↗ 📖 About GHES ↗

▸ CLICK + FOR DETAILS

ActionsmacOS, hosted runners

🌏 GHE.com❌ macOS runners ↗
❌ Marketplace ↗ (install actions and apps from source)

🏢 GHES❌ GitHub-hosted runners ↗ (self-hosted only)
⚠️ GitHub.com actions ↗ need GitHub Connect

PackagesMaven / Gradle

🌏 GHE.com❌ Maven / Gradle ↗ (Java)

🏢 GHES✅ Maven / Gradle ↗ supported (admin enables Packages)

DependenciesInsights, Dependabot

🌏 GHE.com❌ Org and enterprise dependency insights ↗
❌ License data in SBOM ↗ exports

🏢 GHES⚠️ Dependabot ↗ needs GitHub Connect and self-hosted runners

CopilotRegion, web features

🌏 GHE.com⚠️ Data leaves the region by default ↗ (in-region inference: US and EU only)

🏢 GHES❌ Chat on the web ↗, cloud agent ↗, code review ↗, Spaces ↗
⚠️ License assigned in the cloud; offline CLI is in preview

SecurityAI secret detection

🌏 GHE.com— No gap

🏢 GHES❌ AI-powered generic secret detection ↗

Dev environmentsCodespaces

🌏 GHE.com✅ Codespaces ↗ (VS Code settings required)

🏢 GHES❌ Codespaces ↗

Identity, otherEMU, gists, Importer
New featuresRelease timing

🌏 GHE.com⚠️ Some preview features ↗ unavailable until GA

🏢 GHES⚠️ Ship on GitHub.com first, arrive via feature releases ↗

Personal accounts at a glance 📖 Docs

Personal accounts live outside the enterprise and join organizations by invitation.

github.com Enterprise ⚠️ Outside admin reach ✅ Can join (invited) 📁 Organization 🗄️ repo ⋮ 🗄️ repo 📁 Organization 🗄️ repo ⋮ 🗄️ repo 👤 User 🌐 public repo 🔒 private repo Can join 📁 Organization 🗄️ repo ⋮ 🗄️ repo
  • ✅ Admins control only what is inside the enterprise, e.g. whether orgs can create public repos
  • ⚠️ Outside admin reach: outside orgs and their policies, personal repos (public or private), gists, PRs and stars on outside repos

EMU at a glance 📖 Docs

Managed users are created inside the enterprise.

github.com Enterprise ✅ Can join 📁 Organization 🗄️ repo ⋮ 🗄️ repo 📁 Organization 🗄️ repo ⋮ 🗄️ repo 👤 User 🔒 private repo ✕ ❌ Can't join outside 📁 Organization 🗄️ repo ⋮ 🗄️ repo
  • ✅ Joins any org in the enterprise. Personal repos are private only, allowed or blocked by policy
  • 🚫 No public repos or gists, no outside orgs. Public repos on github.com are read-only (no PRs, issues, stars)

EMU vs SAML-only 📖 Docs

Personal accounts can still use SAML SSO. The difference is who owns the account and how people sign in.

Personal accounts + SAMLEMU
🔐 SSO protocolSAML onlySAML, or OIDC (Entra ID only)
🔗 SSO scopeEnterprise or orgEnterprise only
🔄 SCIMOptional, manages org access onlyRequired, creates and suspends the accounts
🚪 Sign-inGitHub password, then IdPIdP from the start
🏷️ UsernameManaged by the userManaged by the IdP (mona_octocorp)

EMU restrictions 📖 Docs

Tighter control comes with trade-offs. Check these four points before adopting.

▸ Click + for details

Everyone is a managed userExternals live in the IdP tooDocs

ScopeContractors and outside developers also need an account in Entra ID or Okta

FixProvision them from the IdP and use the guest collaborator role to limit internal repo access

One IdP onlySame IdP for auth and SCIMDocs

PartnersEntra ID (SAML / OIDC), Okta (SAML), PingFederate (SAML)

NoteMixing Okta and Entra ID (one for auth, the other for SCIM) is not supported

No public contentPublic repos, gists, public PagesDocs

VisibilityOnly private and internal repos. Use internal repos for InnerSource

OtherCannot create or comment on gists, no GitHub Pages visible outside the enterprise

No outside collaborationOSS needs a second accountDocs

ScopeCannot push, open PRs or issues, star, or fork outside the enterprise (public repos are read-only)

ImpactOSS contributors keep a personal account too. Watch for leaks when switching accounts

What is data residency (GHE.com)? 📖 Docs

GitHub.com stores data in the US by default. With data residency, your enterprise lives on a dedicated GHE.com subdomain (e.g. octocorp.ghe.com) in the region you choose.

  • 🗺️ Regions: EU, Australia, US, Japan (GA Dec 2025)
  • 🔐 Identity: EMU only, isolated from the GitHub.com community
  • ☁️ vs GHES: Latest features like Copilot, no upgrade downtime
📍 Stored in region🌐 May leave the region
Repos, code, PRs, commentsTelemetry with pseudonymous IDs
Actions data and logs, BCDRBilling, license, support data
Email, username, name, IPCopilot data (default), secret validity checks

Differences from GitHub.com 📖 Docs

Features are close to EMU on GitHub.com. A few are unavailable, and URLs change.

  • 🛒 No GitHub Marketplace: install actions and apps from source
  • 🍎 No macOS runners or Maven / Gradle packages yet
  • 📊 No org or enterprise dependency insights yet
UseGitHub.comGHE.com
APIapi.github.comapi.SUBDOMAIN.ghe.com
Container registryghcr.iocontainers.SUBDOMAIN.ghe.com
SSH clonegit@github.com:SUBDOMAIN@SUBDOMAIN.ghe.com:

⚠️ IP ranges and SSH fingerprints also differ from GitHub.com. Update firewall, IdP, and storage allowlists for GHE.com.

Copilot with data residency 📖 Docs

Assign Copilot Business or Enterprise to use Copilot on GHE.com (no Pro or Free). Copilot data is processed outside your region by default. To keep it in region, enable the Restrict Copilot to data residency compliant models policy (off by default).

DefaultPolicy enabled
🧠 Inference, prompts, logsMay leave the regionStays in region
🤖 Available modelsAll modelsRegion-certified models only
💰 AI credit consumptionStandard+10%
🗺️ Supported regionsAll regionsUS and EU only

⚠️ The Japan region does not yet support in-region Copilot inference. Japanese enterprises still have Copilot data processed outside the region.

★ Which one to choose? 📖 Docs

Decide before you create the enterprise. Three questions get you there.

flowchart LR
  Q1{"Must you choose<br/>where data is stored?"}
  Q2{"Need public repos, gists,<br/>or outside OSS work?"}
  Q3{"Can the IdP be the source<br/>of truth for users?"}
  DR(["🌏 Data residency<br/>GHE.com + EMU"])
  EMU(["🏢 EMU<br/>github.com"])
  PA(["👤 Personal accounts<br/>+ SAML SSO"])
  Q1 -->|"Yes"| DR
  Q1 -->|"No"| Q2
  Q2 -->|"Yes"| PA
  Q2 -->|"No"| Q3
  Q3 -->|"Yes"| EMU
  Q3 -->|"No"| PA

  classDef q fill:#0a0e27,stroke:#00f0ff,color:#00f0ff,stroke-width:2px
  classDef dr fill:#1a0a2e,stroke:#ff2e88,color:#ff2e88,stroke-width:2px
  classDef emu fill:#1a1500,stroke:#ffb000,color:#ffb000,stroke-width:2px
  classDef pa fill:#0a1a14,stroke:#9bbc0f,color:#9bbc0f,stroke-width:2px
  class Q1,Q2,Q3 q
  class DR dr
  class EMU emu
  class PA pa

⚠️ You cannot switch types after creation. Moving from a personal-account enterprise to EMU or GHE.com means creating a new enterprise and migrating (for example with GitHub Enterprise Importer).

Slides 日本語