diff --git a/.github/workflows/changelog-agent.yml b/.github/workflows/changelog-agent.yml
index de8637dacef1..2d98327aeb5c 100644
--- a/.github/workflows/changelog-agent.yml
+++ b/.github/workflows/changelog-agent.yml
@@ -45,11 +45,20 @@ jobs:
)
runs-on: ubuntu-latest
steps:
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+ owner: github
+ repositories: docs-internal,docs-content
+
- name: Resolve PR data
id: resolve_pr
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
- github-token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ github-token: ${{ steps.app-token.outputs.token }}
script: |
let pr;
if (context.eventName === 'workflow_dispatch') {
@@ -77,7 +86,7 @@ jobs:
id: check_team
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
- github-token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ github-token: ${{ steps.app-token.outputs.token }}
script: |
const author = '${{ steps.resolve_pr.outputs.pr_author }}';
@@ -115,7 +124,7 @@ jobs:
env:
PR_BODY: ${{ steps.resolve_pr.outputs.pr_body }}
with:
- github-token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ github-token: ${{ steps.app-token.outputs.token }}
script: |
const body = process.env.PR_BODY || '';
@@ -150,7 +159,7 @@ jobs:
id: check_parent
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
- github-token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ github-token: ${{ steps.app-token.outputs.token }}
script: |
const issueNumber = parseInt('${{ steps.extract_issue.outputs.issue_number }}', 10);
@@ -231,7 +240,7 @@ jobs:
PR_BODY: ${{ steps.resolve_pr.outputs.pr_body }}
PR_URL: ${{ steps.resolve_pr.outputs.pr_url }}
with:
- github-token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ github-token: ${{ steps.app-token.outputs.token }}
script: |
const prNumber = parseInt('${{ steps.resolve_pr.outputs.pr_number }}', 10);
const prAuthor = '${{ steps.resolve_pr.outputs.pr_author }}';
@@ -272,7 +281,7 @@ jobs:
id: check_existing
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
- github-token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ github-token: ${{ steps.app-token.outputs.token }}
script: |
const branchName = `changelog-agent-${{ steps.resolve_pr.outputs.pr_number }}`;
const { data: pulls } = await github.rest.pulls.list({
@@ -295,7 +304,7 @@ jobs:
id: read_examples
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
- github-token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ github-token: ${{ steps.app-token.outputs.token }}
script: |
// Fetch changelog-internal.md from docs-content
const { data } = await github.rest.repos.getContent({
@@ -420,7 +429,10 @@ jobs:
uses: actions/ai-inference@17ff458cb182449bbb2e43701fcd98f6af8f6570 # v2.1.0
with:
provider: copilot
- model: gpt-4.1
+ # No model is pinned: actions/ai-inference forwards --model to the
+ # Copilot CLI only when it differs from its GitHub Models default, so
+ # omitting it lets the CLI pick its own current default (latest Sonnet)
+ # and avoids breaking when a pinned slug (e.g. gpt-4.1) is retired.
prompt-file: prompt.txt
system-prompt-file: system-prompt.txt
max-completion-tokens: 1000
@@ -462,7 +474,7 @@ jobs:
PARENT_AUTHOR: ${{ steps.check_parent.outputs.parent_author }}
PARENT_ASSIGNEES: ${{ steps.check_parent.outputs.parent_assignees }}
with:
- github-token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ github-token: ${{ steps.app-token.outputs.token }}
script: |
const branchName = `changelog-agent-${{ steps.resolve_pr.outputs.pr_number }}`;
const filePath = 'docs-content-docs/docs-content-workflows/changelog-internal.md';
@@ -623,7 +635,7 @@ jobs:
PARENT_AUTHOR: ${{ steps.check_parent.outputs.parent_author }}
PARENT_ASSIGNEES: ${{ steps.check_parent.outputs.parent_assignees }}
with:
- github-token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ github-token: ${{ steps.app-token.outputs.token }}
script: |
const author = process.env.PR_AUTHOR;
const changelogPrUrl = process.env.CHANGELOG_PR_URL;
@@ -718,7 +730,7 @@ jobs:
if: steps.create_pr.outputs.changelog_pr_url != '' && inputs.dry_run != true
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
- github-token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ github-token: ${{ steps.app-token.outputs.token }}
script: |
const changelogPrUrl = '${{ steps.create_pr.outputs.changelog_pr_url }}';
await github.rest.issues.createComment({
diff --git a/.github/workflows/count-translation-corruptions.yml b/.github/workflows/count-translation-corruptions.yml
index 8045fcc713c9..26fe00336e7c 100644
--- a/.github/workflows/count-translation-corruptions.yml
+++ b/.github/workflows/count-translation-corruptions.yml
@@ -23,12 +23,21 @@ jobs:
if: github.repository == 'github/docs-internal'
runs-on: ubuntu-latest
steps:
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+ owner: github
+ repositories: docs-internal,docs-internal.es-es,docs-internal.ja-jp,docs-internal.pt-br,docs-internal.zh-cn,docs-internal.ru-ru,docs-internal.fr-fr,docs-internal.ko-kr,docs-internal.de-de
+
- name: Checkout English repo
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
# Using a PAT is necessary so that the new commit will trigger the
# CI in the PR. (Events from GITHUB_TOKEN don't trigger new workflows.)
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
# It's important because translations are often a bit behind.
# So if a translation is a bit behind, it might still be referencing
@@ -36,7 +45,7 @@ jobs:
- name: Clone all translations
uses: ./.github/actions/clone-translations
with:
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
- uses: ./.github/actions/node-npm-setup
diff --git a/.github/workflows/index-autocomplete-search.yml b/.github/workflows/index-autocomplete-search.yml
index e30786b21de9..a27c6215d7da 100644
--- a/.github/workflows/index-autocomplete-search.yml
+++ b/.github/workflows/index-autocomplete-search.yml
@@ -27,12 +27,21 @@ jobs:
- uses: ./.github/actions/node-npm-setup
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+ owner: github
+ repositories: docs-internal,docs-internal-data
+
- uses: ./.github/actions/setup-elasticsearch
if: ${{ github.event_name == 'pull_request' }}
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
repository: github/docs-internal-data
path: docs-internal-data
@@ -53,4 +62,4 @@ jobs:
- uses: ./.github/actions/create-workflow-failure-issue
if: ${{ failure() && github.event_name == 'schedule' }}
with:
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
diff --git a/.github/workflows/index-general-search-pr.yml b/.github/workflows/index-general-search-pr.yml
index 885d637f2f89..531ee766fbdb 100644
--- a/.github/workflows/index-general-search-pr.yml
+++ b/.github/workflows/index-general-search-pr.yml
@@ -39,12 +39,21 @@ jobs:
- name: Check out repo
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+ owner: github
+ repositories: docs-internal-data
+
- name: Clone docs-internal-data
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
repository: github/docs-internal-data
# This works because user `docs-bot` has read access to that private repo.
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
path: docs-internal-data
- uses: ./.github/actions/setup-elasticsearch
diff --git a/.github/workflows/orphaned-features-check.yml b/.github/workflows/orphaned-features-check.yml
index 21f39d8cf2a4..82031beca343 100644
--- a/.github/workflows/orphaned-features-check.yml
+++ b/.github/workflows/orphaned-features-check.yml
@@ -25,12 +25,21 @@ jobs:
if: ${{ github.repository == 'github/docs-internal' }}
runs-on: ubuntu-latest
steps:
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+ owner: github
+ repositories: docs-internal,docs-internal.es-es,docs-internal.ja-jp,docs-internal.pt-br,docs-internal.zh-cn,docs-internal.ru-ru,docs-internal.fr-fr,docs-internal.ko-kr,docs-internal.de-de
+
- name: Checkout English repo
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
# Using a PAT is necessary so that the new commit will trigger the
# CI in the PR. (Events from GITHUB_TOKEN don't trigger new workflows.)
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
# It's important because translations are often a bit behind.
# So if a translation is a bit behind, it might still be referencing
@@ -38,14 +47,14 @@ jobs:
- name: Clone all translations
uses: ./.github/actions/clone-translations
with:
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
- uses: ./.github/actions/node-npm-setup
- name: Check for orphaned features
env:
# Needed for gh
- GITHUB_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
DRY_RUN: ${{ github.event_name == 'pull_request'}}
run: |
set -e
@@ -109,4 +118,4 @@ jobs:
- uses: ./.github/actions/create-workflow-failure-issue
if: ${{ failure() && github.event_name == 'schedule' }}
with:
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
diff --git a/.github/workflows/orphaned-files-check.yml b/.github/workflows/orphaned-files-check.yml
index 600efa06c2ca..22d757c106f5 100644
--- a/.github/workflows/orphaned-files-check.yml
+++ b/.github/workflows/orphaned-files-check.yml
@@ -29,12 +29,21 @@ jobs:
if: ${{ github.repository == 'github/docs-internal' }}
runs-on: ubuntu-latest
steps:
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+ owner: github
+ repositories: docs-internal,docs-internal.es-es,docs-internal.ja-jp,docs-internal.pt-br,docs-internal.zh-cn,docs-internal.ru-ru,docs-internal.fr-fr,docs-internal.ko-kr,docs-internal.de-de
+
- name: Checkout English repo
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
# Using a PAT is necessary so that the new commit will trigger the
# CI in the PR. (Events from GITHUB_TOKEN don't trigger new workflows.)
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
# It's important because translations are often a bit behind.
# So if a translation is a bit behind, it might still be referencing
@@ -42,14 +51,14 @@ jobs:
- name: Clone all translations
uses: ./.github/actions/clone-translations
with:
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
- uses: ./.github/actions/node-npm-setup
- name: Check for orphaned assets and reusables
env:
# Needed for gh
- GITHUB_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
DRY_RUN: ${{ github.event_name == 'pull_request'}}
run: |
set -e
@@ -117,4 +126,4 @@ jobs:
- uses: ./.github/actions/create-workflow-failure-issue
if: ${{ failure() && github.event_name == 'schedule' }}
with:
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
diff --git a/.github/workflows/reviewers-content-systems.yml b/.github/workflows/reviewers-content-systems.yml
index 7e9d4ba4a800..a3a4f5429de2 100644
--- a/.github/workflows/reviewers-content-systems.yml
+++ b/.github/workflows/reviewers-content-systems.yml
@@ -32,13 +32,21 @@ jobs:
runs-on: ubuntu-latest
env:
PR: ${{ github.event.pull_request.html_url }}
- GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+
- name: Add content systems as a reviewer
+ env:
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
uses: ./.github/actions/retry-command
with:
command: gh pr edit $PR --add-reviewer github/docs-content-systems --add-label reviewers-content-systems
diff --git a/.github/workflows/reviewers-dependabot.yml b/.github/workflows/reviewers-dependabot.yml
index d5c1d03a7882..7b57a3a89fc1 100644
--- a/.github/workflows/reviewers-dependabot.yml
+++ b/.github/workflows/reviewers-dependabot.yml
@@ -33,13 +33,21 @@ jobs:
runs-on: ubuntu-latest
env:
PR: ${{ github.event.pull_request.html_url }}
- GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+
- name: Add dependabot as a reviewer
+ env:
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
uses: ./.github/actions/retry-command
with:
command: gh pr edit $PR --add-reviewer github/dependabot-updates-reviewers --add-label reviewers-dependabot
diff --git a/.github/workflows/reviewers-docs-engineering.yml b/.github/workflows/reviewers-docs-engineering.yml
index 7316292ff29d..ea7ea9b10feb 100644
--- a/.github/workflows/reviewers-docs-engineering.yml
+++ b/.github/workflows/reviewers-docs-engineering.yml
@@ -45,18 +45,26 @@ jobs:
runs-on: ubuntu-latest
env:
PR: ${{ github.event.pull_request.html_url }}
- GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+
# Detect PRs that only changed package-lock.json (no engineering source files).
# These are usually cross-platform `npm install` churn from contributors
# editing content. We comment with reset instructions instead of pulling in
# docs-engineering for review.
- name: Detect lockfile-only churn
id: detect
+ env:
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
run: |
changed=$(gh pr diff "$PR" --name-only)
echo "Changed files:"
@@ -71,6 +79,8 @@ jobs:
- name: Comment and label lockfile-only PRs
if: steps.detect.outputs.lockfile_only == 'true'
+ env:
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
run: |
cat > /tmp/lockfile-churn-body.md <<'EOF'
_Posted by Copilot on behalf of docs-engineering._
@@ -90,6 +100,8 @@ jobs:
- name: Add docs engineering as a reviewer
if: steps.detect.outputs.lockfile_only != 'true'
+ env:
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
uses: ./.github/actions/retry-command
with:
command: gh pr edit $PR --add-reviewer github/docs-engineering --add-label reviewers-docs-engineering
diff --git a/.github/workflows/reviewers-legal.yml b/.github/workflows/reviewers-legal.yml
index a16c1e4e5c9c..6d99208b0f18 100644
--- a/.github/workflows/reviewers-legal.yml
+++ b/.github/workflows/reviewers-legal.yml
@@ -37,6 +37,13 @@ jobs:
# Fetch 2 commits so tj-actions/changed-files can diff without extra API calls
fetch-depth: 2
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+
- name: Get changed files
id: changed_files
uses: tj-actions/changed-files@22103cc46bda19c2b464ffe86db46df6922fd323 # v47.0.5
@@ -59,7 +66,7 @@ jobs:
if: steps.checkContentType.outputs.containsContentType == 'true'
uses: ./.github/actions/retry-command
env:
- GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
PR: ${{ github.event.pull_request.html_url }}
with:
command: gh pr edit $PR --add-reviewer github/legal-product --add-label reviewers-legal
diff --git a/.github/workflows/site-policy-reminder.yml b/.github/workflows/site-policy-reminder.yml
index 7b85bef2f25c..4ca19398d764 100644
--- a/.github/workflows/site-policy-reminder.yml
+++ b/.github/workflows/site-policy-reminder.yml
@@ -19,9 +19,16 @@ jobs:
github.repository == 'github/docs-internal'
runs-on: ubuntu-latest
steps:
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+
- uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9
with:
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
issue-number: ${{ github.event.pull_request.number }}
body: |
Before merging, please remember to change the title of this PR to a description of its changes that is suitable for public viewing on github/site-policy.
diff --git a/.github/workflows/site-policy-sync.yml b/.github/workflows/site-policy-sync.yml
index a7d3d4dafdbf..58636e463128 100644
--- a/.github/workflows/site-policy-sync.yml
+++ b/.github/workflows/site-policy-sync.yml
@@ -29,11 +29,20 @@ jobs:
- name: checkout docs-internal
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ - name: Generate GitHub App token
+ id: app-token
+ uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
+ with:
+ app-id: ${{ secrets.DOCS_BOT_APP_ID }}
+ private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
+ owner: github
+ repositories: site-policy
+
- name: checkout public site-policy
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
repository: github/site-policy
- token: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ token: ${{ steps.app-token.outputs.token }}
fetch-depth: ''
path: public-repo
@@ -56,7 +65,7 @@ jobs:
- name: If there are changes to push, create a branch in the public repo and push changes
env:
- GITHUB_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
+ GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
run: |
cd public-repo
git config --local user.name 'site-policy-bot'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5e765fbd9da5..5eeaecca2432 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
# Docs changelog
+**16 June 2026**
+
+We made some improvements to our documentation on Copilot policies:
+
+* Rewrote [GitHub Copilot policies for enterprises and organizations](https://docs.github.com/en/copilot/concepts/policies) to be more focused on common questions and points of confusion for enterprise customers, including more information on policy conflicts when users have multiple licenses
+* Published [Supported surfaces for policies](https://docs.github.com/en/copilot/reference/supported-surfaces-for-policies) to document which policies apply to which Copilot surfaces. Because the UI doesn't indicate which policies apply where, this allows customers to close governance gaps and be confident in the policy framework they set up
+
+
+
**4 June 2026**
We consolidated all Copilot and code security responsible use articles into structured application cards. Previously, each feature had its own standalone transparency note with inconsistent formatting. Now there are four standardized cards covering Chat, Agents, Inline Suggestions, and Code Security AI features, all following the same template with numbered sections for overview, key terms, capabilities, intended uses, models, limitations, and more.
diff --git a/assets/images/enterprise/3.16/help/security/secret-scanning-default-alert-view.png b/assets/images/enterprise/3.16/help/security/secret-scanning-default-alert-view.png
deleted file mode 100644
index 30bba5c69d18..000000000000
Binary files a/assets/images/enterprise/3.16/help/security/secret-scanning-default-alert-view.png and /dev/null differ
diff --git a/assets/images/help/enterprises/select-advanced-security-individual-organization-policy-ghes-316.png b/assets/images/help/enterprises/select-advanced-security-individual-organization-policy-ghes-316.png
deleted file mode 100644
index 0b37028a1da9..000000000000
Binary files a/assets/images/help/enterprises/select-advanced-security-individual-organization-policy-ghes-316.png and /dev/null differ
diff --git a/assets/images/help/repository/ghas-enterprise-policy-block-ghas.png b/assets/images/help/repository/ghas-enterprise-policy-block-ghas.png
deleted file mode 100644
index 64f422f25be9..000000000000
Binary files a/assets/images/help/repository/ghas-enterprise-policy-block-ghas.png and /dev/null differ
diff --git a/assets/images/help/repository/secret-scanning-create-custom-pattern-ghas.png b/assets/images/help/repository/secret-scanning-create-custom-pattern-ghas.png
deleted file mode 100644
index 6ba382bdff63..000000000000
Binary files a/assets/images/help/repository/secret-scanning-create-custom-pattern-ghas.png and /dev/null differ
diff --git a/assets/images/help/security/secret-scanning-default-alert-view.png b/assets/images/help/security/secret-scanning-default-alert-view.png
deleted file mode 100644
index 00a36df537bb..000000000000
Binary files a/assets/images/help/security/secret-scanning-default-alert-view.png and /dev/null differ
diff --git a/content/account-and-profile/how-tos/contribution-settings/troubleshooting-missing-contributions.md b/content/account-and-profile/how-tos/contribution-settings/troubleshooting-missing-contributions.md
index 8597ea6da54d..9a0f3d875a2c 100644
--- a/content/account-and-profile/how-tos/contribution-settings/troubleshooting-missing-contributions.md
+++ b/content/account-and-profile/how-tos/contribution-settings/troubleshooting-missing-contributions.md
@@ -42,6 +42,8 @@ The email address in the `From:` field is the address that was set in the [local
If the email address used for the commit is not connected to your account on {% data variables.product.prodname_dotcom %}, you must [add the email address](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account) to your account on {% data variables.product.prodname_dotcom %}. Your contributions graph will be rebuilt automatically when you add the new address.
+If you remove an email address that was used to author older commits, or move that email to a different account, those historical contributions will no longer appear on your contributions graph. To restore attribution, add the exact historical commit email address back to your account. You do not need access to that mailbox. After adding or moving the email address, the contribution graph may take up to 24 hours to refresh. If qualifying contributions still have not returned after that time, confirm the commit author email using the `.patch` view described earlier in this article, then contact {% data variables.contact.contact_support_page %} with that information.
+
{% ifversion fpt or ghec %}
> [!NOTE]
diff --git a/content/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency.md b/content/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency.md
index 9dac1372a0a8..916c8ab95872 100644
--- a/content/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency.md
+++ b/content/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency.md
@@ -24,14 +24,9 @@ The following features are currently unavailable on {% data variables.enterprise
| :- | :- | :- |
| macOS runners for {% data variables.product.prodname_actions %} | Currently unavailable. | [AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners) |
| Maven and Gradle support for {% data variables.product.prodname_registry %} | Currently unavailable. | [AUTOTITLE](/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry) |
-| Repository traffic metrics | Currently unavailable through both the UI and REST API. | [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/viewing-traffic-to-a-repository) |
-| {% data variables.product.prodname_spark_short %} | Currently unavailable. | [AUTOTITLE](/copilot/concepts/spark) |
| {% data variables.product.prodname_marketplace %} | {% data variables.product.prodname_marketplace %}, as a means of searching for, purchasing, and directly installing apps and actions, is unavailable. Ecosystem apps and actions can still be discovered and installed from their source, but they may require modification to work on {% data variables.enterprise.data_residency_site %}. | [{% data variables.product.prodname_actions %} workflows from {% data variables.product.prodname_marketplace %}](#github-actions-workflows-from-github-marketplace) |
-| Certain features of {% data variables.product.prodname_github_connect %} | Although you can connect an enterprise on {% data variables.enterprise.data_residency_site %} to a {% data variables.product.prodname_ghe_server %} instance, certain features of {% data variables.product.prodname_github_connect %} are not available. | [{% data variables.product.prodname_github_connect %}](#github-connect) |
| Some features currently in {% data variables.release-phases.public_preview %} or {% data variables.release-phases.private_preview %} | Certain features that are in a preview phase on {% data variables.product.prodname_dotcom_the_website %} may not be available on {% data variables.enterprise.data_residency_site %} until GA. | |
-| Migrations REST API | Currently unavailable. | [AUTOTITLE](/rest/migrations) |
| Streaming audit logs to Amazon S3 with OpenID Connect (OIDC) | Currently unavailable. | [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise) |
-| Organization-level dependency insights | Currently unavailable. | [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/viewing-insights-for-dependencies-in-your-organization) |
## Permanently unavailable features
diff --git a/content/apps/creating-github-apps/authenticating-with-a-github-app/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow.md b/content/apps/creating-github-apps/authenticating-with-a-github-app/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow.md
index 4a404ae57d74..717971f8b71e 100644
--- a/content/apps/creating-github-apps/authenticating-with-a-github-app/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow.md
+++ b/content/apps/creating-github-apps/authenticating-with-a-github-app/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow.md
@@ -22,7 +22,7 @@ If you need to make authenticated API requests in a {% data variables.product.pr
In order to use a {% data variables.product.prodname_github_app %} to make authenticated API requests, you must register a {% data variables.product.prodname_github_app %}, store your app's credentials, and install your app. Once this is done, you can use your app to create an installation access token, which can be used to make authenticated API requests in a {% data variables.product.prodname_actions %} workflow. You can also pass the installation access token to a custom action that requires a token.
1. Register a {% data variables.product.prodname_github_app %}. Give your {% data variables.product.prodname_github_app %} registration the necessary permissions to access the desired resources. For more information, see [AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/creating-a-github-app) and [AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/choosing-permissions-for-a-github-app).
-1. Store the app ID of your {% data variables.product.prodname_github_app %} as a {% data variables.product.prodname_actions %} configuration variable. You can find the app ID on the settings page for your app. The app ID is different from the client ID. For more information about navigating to the settings page for your {% data variables.product.prodname_github_app %}, see [AUTOTITLE](/apps/maintaining-github-apps/modifying-a-github-app-registration#navigating-to-your-github-app-settings). For more information about storing configuration variables, see [AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
+1. Store the client ID of your {% data variables.product.prodname_github_app %} as a {% data variables.product.prodname_actions %} configuration variable. You can find the client ID on the settings page for your app. The client ID is different from the app ID. For more information about navigating to the settings page for your {% data variables.product.prodname_github_app %}, see [AUTOTITLE](/apps/maintaining-github-apps/modifying-a-github-app-registration#navigating-to-your-github-app-settings). For more information about storing configuration variables, see [AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
1. Generate a private key for your app. Store the contents of the resulting file as a secret. (Store the entire contents of the file, including `-----BEGIN RSA PRIVATE KEY-----` and `-----END RSA PRIVATE KEY-----`.) For more information, see [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). For more information about storing secrets, see [AUTOTITLE](/actions/security-guides/encrypted-secrets).
1. Install the {% data variables.product.prodname_github_app %} on the right account and grant it permissions and access to any repositories that you want your workflow to access. For more information, see [AUTOTITLE](/apps/maintaining-github-apps/installing-github-apps#installing-your-private-github-app-on-your-repository).
1. In your {% data variables.product.prodname_actions %} workflow, create an installation access token, which you can use to make API requests.
@@ -31,7 +31,7 @@ In order to use a {% data variables.product.prodname_github_app %} to make authe
The following example workflow uses the `actions/create-github-app-token` action to generate an installation access token. Then, the workflow uses the token to make an API request via the {% data variables.product.prodname_cli %}.
- In the following workflow, replace `APP_ID` with the name of the configuration variable where you stored your app ID. Replace `APP_PRIVATE_KEY` with the name of the secret where you stored your app private key.
+ In the following workflow, replace `APP_CLIENT_ID` with the name of the configuration variable where you stored your client ID. Replace `APP_PRIVATE_KEY` with the name of the secret where you stored your app private key.
```yaml copy
on:
@@ -42,9 +42,9 @@ jobs:
steps:
- name: Generate a token
id: generate-token
- uses: actions/create-github-app-token@v2
+ uses: actions/create-github-app-token@v3
with:
- app-id: {% raw %}${{ vars.APP_ID }}{% endraw %}
+ client-id: {% raw %}${{ vars.APP_CLIENT_ID }}{% endraw %}
private-key: {% raw %}${{ secrets.APP_PRIVATE_KEY }}{% endraw %}
- name: Use the token
diff --git a/content/billing/concepts/product-billing/github-code-quality.md b/content/billing/concepts/product-billing/github-code-quality.md
index 26dbe434de9a..7bca0aa7c530 100644
--- a/content/billing/concepts/product-billing/github-code-quality.md
+++ b/content/billing/concepts/product-billing/github-code-quality.md
@@ -10,14 +10,20 @@ category:
- Understand product costs
---
+
+
> [!NOTE]
-> {% data variables.product.prodname_code_quality %} is currently in {% data variables.release-phases.public_preview %} and subject to change.
+> {% data variables.product.prodname_code_quality %} will become generally available on July 20, 2026, at which point usage will incur charges. To avoid being charged, disable {% data variables.product.prodname_code_quality_short %} before that date. See [AUTOTITLE](/code-security/how-tos/maintain-quality-code/disable-code-quality).
+
+
## How use of {% data variables.product.prodname_code_quality %} is measured
-{% data variables.product.prodname_code_quality_short %} billing depends on whether the product is generally available or in {% data variables.release-phases.public_preview %}. The product is anticipated to move from public preview to generally available in July, 2026, and this page will be updated accordingly.
+
-### For the {% data variables.release-phases.public_preview %}
+{% data variables.product.prodname_code_quality_short %} billing depends on whether the product is generally available or in {% data variables.release-phases.public_preview %}. The feature will move from {% data variables.release-phases.public_preview %} to general availability on July 20, 2026.
+
+### During the {% data variables.release-phases.public_preview %} (until July 20, 2026)
When you scan private repositories during the {% data variables.release-phases.public_preview %}, you **will not be billed** for {% data variables.product.prodname_ai_credits_short %} or active committer usage, but {% data variables.product.prodname_actions %} minutes **will be consumed**.
@@ -26,7 +32,12 @@ To view consumption of actions by the `{% data variables.code-quality.workflow_n
> [!NOTE]
> {% data reusables.code-quality.shared-workflow-preview %}
-### For general availability
+
+
+
+### After general availability (from July 20, 2026)
+
+
When {% data variables.product.prodname_code_quality_short %} is generally available, use of the product will incur three types of costs for an organization:
* **{% data variables.product.prodname_actions %} minutes** — {% data variables.product.prodname_code_quality_short %} scans run as {% data variables.product.prodname_actions %} workflows and consume {% data variables.product.prodname_actions %} minutes, unless you use self-hosted runners. For more information, see [AUTOTITLE](/billing/concepts/product-billing/github-actions).
diff --git a/content/billing/how-tos/products/view-productlicense-use.md b/content/billing/how-tos/products/view-productlicense-use.md
index 0091c7d30756..f4ff3a472fca 100644
--- a/content/billing/how-tos/products/view-productlicense-use.md
+++ b/content/billing/how-tos/products/view-productlicense-use.md
@@ -48,8 +48,9 @@ category:
The options available to you vary according to your role and {% data variables.product.github %} plan.
-{% data variables.product.github %} cloud:
-* Anyone can view usage data for their own personal account unless their account is managed by their enterprise (EMU).
+{% data variables.product.prodname_ghe_cloud %}:
+
+* Anyone can view usage data for their own personal account unless a license for a metered product (for example, {% data variables.product.prodname_copilot_short %}) is assigned to them by an organization or enterprise account.
* If you are an **owner** or **billing manager** of an enterprise, or an organization on {% data variables.product.prodname_team %}, you will also have access to usage data for that organization or enterprise account.
{% data variables.product.prodname_ghe_server %}:
diff --git a/content/code-security/concepts/about-code-quality.md b/content/code-security/concepts/about-code-quality.md
index 39a9178f3dce..ae7556ec3f66 100644
--- a/content/code-security/concepts/about-code-quality.md
+++ b/content/code-security/concepts/about-code-quality.md
@@ -2,7 +2,7 @@
title: About GitHub Code Quality
shortTitle: GitHub Code Quality
allowTitleToDifferFromFilename: true
-intro: Use {% data variables.product.prodname_code_quality %} to flag code quality issues in pull requests and repository scans, apply {% data variables.product.prodname_copilot_short %}-powered autofixes, and enforce standards with rulesets.
+intro: '{% data variables.product.prodname_code_quality %} flags code quality issues in pull requests and repository scans, applies {% data variables.product.prodname_copilot_short %}-powered autofixes, and enforces standards with rulesets.'
product: '{% data reusables.gated-features.code-quality-availability %}'
versions:
feature: code-quality
@@ -37,10 +37,16 @@ With {% data variables.product.prodname_code_quality_short %}, you can:
{% data variables.product.prodname_code_quality %} is available for organization-owned repositories on {% data variables.product.prodname_team %} and {% data variables.product.prodname_ghe_cloud %} plans.
-{% data variables.product.prodname_code_quality %} won't be billed during public preview. However, {% data variables.product.prodname_code_quality_short %} scans will consume {% data variables.product.prodname_actions %} minutes. See [AUTOTITLE](/billing/concepts/product-billing/github-code-quality).
+
+
+{% data variables.product.prodname_code_quality %} is currently in {% data variables.release-phases.public_preview %} and will become generally available on July 20, 2026. During {% data variables.release-phases.public_preview %}, {% data variables.product.prodname_code_quality_short %} scans will consume {% data variables.product.prodname_actions %} minutes but you will not be billed for other usage. From July 20, 2026, usage will incur additional charges. See [AUTOTITLE](/billing/concepts/product-billing/github-code-quality).
+
+If you want to avoid charges, disable {% data variables.product.prodname_code_quality_short %} before July 20, 2026. See [AUTOTITLE](/code-security/how-tos/maintain-quality-code/disable-code-quality).
+
+
> [!NOTE]
-> * You **don't** need a {% data variables.product.prodname_copilot_short %} or a {% data variables.product.prodname_code_security %} license to use {% data variables.product.prodname_code_quality_short %} or apply {% data variables.product.prodname_copilot_short %}-powered autofixes.
+> You **don't** need a {% data variables.product.prodname_copilot_short %} or a {% data variables.product.prodname_code_security %} license to use {% data variables.product.prodname_code_quality_short %} or apply {% data variables.product.prodname_copilot_short %}-powered autofixes.
## Supported languages
@@ -79,5 +85,5 @@ Each {% data variables.product.prodname_codeql %} analysis will use {% data vari
## Next steps
-* **For your repository:** Turn on {% data variables.product.prodname_code_quality_short %} to start generating results. See [AUTOTITLE](/code-security/how-tos/maintain-quality-code/enable-code-quality).
+* **For your repository or organization:** Turn on {% data variables.product.prodname_code_quality_short %} to start generating results. See [AUTOTITLE](/code-security/how-tos/maintain-quality-code/enable-code-quality).
* **For your enterprise:** Ensure repositories in your enterprise can enable {% data variables.product.prodname_code_quality_short %}. See [AUTOTITLE](/code-security/how-tos/secure-at-scale/configure-enterprise-security/configure-specific-tools/allow-github-code-quality-in-enterprise).
diff --git a/content/code-security/how-tos/maintain-quality-code/disable-code-quality.md b/content/code-security/how-tos/maintain-quality-code/disable-code-quality.md
new file mode 100644
index 000000000000..3e00b7fd1361
--- /dev/null
+++ b/content/code-security/how-tos/maintain-quality-code/disable-code-quality.md
@@ -0,0 +1,29 @@
+---
+title: Disabling {% data variables.product.prodname_code_quality %}
+shortTitle: Disable Code Quality
+intro: Stop {% data variables.product.prodname_code_quality_short %} scans and avoid charges before the feature becomes generally available.
+versions:
+ feature: code-quality
+product: '{% data reusables.gated-features.code-quality-availability %}'
+permissions: '{% data reusables.permissions.code-quality-repo-enable %}'
+contentType: how-tos
+category:
+ - Improve code quality
+---
+
+{% data reusables.code-quality.code-quality-preview-note %}
+
+
+
+
+When {% data variables.product.prodname_code_quality_short %} becomes generally available on July 20, 2026, usage will incur charges. If you want to avoid charges, you can disable {% data variables.product.prodname_code_quality_short %} before that date. **Disabling {% data variables.product.prodname_code_quality_short %} stops all future scans and billing.**
+
+## Disabling {% data variables.product.prodname_code_quality_short %} for your repository
+
+{% data reusables.repositories.navigate-to-repo %}
+{% data reusables.repositories.sidebar-settings %}
+1. In the sidebar, under "Security", click **{% data variables.code-quality.code_quality_ui_settings %}** to display the "{% data variables.code-quality.code_quality_ui %}" page.
+1. Click **Disable**.
+1. Click **Save changes**.
+
+This stops all future {% data variables.product.prodname_code_quality_short %} scans and associated billing for the repository.
diff --git a/content/code-security/how-tos/maintain-quality-code/enable-code-quality.md b/content/code-security/how-tos/maintain-quality-code/enable-code-quality.md
index 6a2f5ebc393e..e3cf5e0439f2 100644
--- a/content/code-security/how-tos/maintain-quality-code/enable-code-quality.md
+++ b/content/code-security/how-tos/maintain-quality-code/enable-code-quality.md
@@ -17,18 +17,16 @@ category:
## Prerequisites
+* An enterprise owner must have allowed {% data variables.product.prodname_code_quality_short %} in your enterprise. See [AUTOTITLE](/code-security/code-quality/how-tos/allow-in-enterprise).
* {% data variables.product.prodname_actions %} must be enabled because {% data variables.product.prodname_code_quality_short %} uses actions to run each {% data variables.product.prodname_codeql %} analysis.
* To get the full benefit of the feature, your repository should include one of the languages supported for quality analysis by {% data variables.product.prodname_codeql %}. See [Supported languages](/code-security/code-quality/concepts/about-code-quality#supported-languages).
-## Enabling {% data variables.product.prodname_code_quality_short %} for a repository
+## Enabling {% data variables.product.prodname_code_quality_short %} for your repository
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
1. In the sidebar, under "Security", click **{% data variables.code-quality.code_quality_ui_settings %}** to display the "{% data variables.code-quality.code_quality_ui %}" page.
1. Click **Enable code quality**.
-
- > [!NOTE]
- > If **Enable code quality** is missing from this view, your enterprise owner has disabled the use of {% data variables.product.prodname_code_quality_short %} for your organization. See [AUTOTITLE](/code-security/code-quality/how-tos/allow-in-enterprise).
1. Review the information on the Code quality page:
* **Languages:** If you want to disable {% data variables.product.prodname_codeql %} analysis for any of the languages, clear the associated check box.
@@ -39,6 +37,15 @@ category:
> [!TIP]
> If your organization has configured caching of private registries, these will be available for code quality analysis to use to resolve dependencies. See [AUTOTITLE](/code-security/securing-your-organization/enabling-security-features-in-your-organization/giving-org-access-private-registries#code-quality-access-to-private-registries).
+## Enabling {% data variables.product.prodname_code_quality_short %} for an organization
+
+You can enable or disable {% data variables.product.prodname_code_quality_short %} for all repositories in an organization at once.
+
+{% data reusables.organizations.navigate-to-org %}
+{% data reusables.organizations.org_settings %}
+1. In the sidebar, under "Security", click **{% data variables.code-quality.code_quality_ui_settings %}**.
+1. Next to "Enable Code Quality", use the toggle to enable {% data variables.product.prodname_code_quality_short %} for all repositories.
+
## Next steps
* **For your repository:** Explore your code quality findings and merge your first fix. See [AUTOTITLE](/code-security/tutorials/improve-code-quality/quickstart).
diff --git a/content/code-security/how-tos/maintain-quality-code/index.md b/content/code-security/how-tos/maintain-quality-code/index.md
index 07c85c1f64cd..f2a3447e2f1a 100644
--- a/content/code-security/how-tos/maintain-quality-code/index.md
+++ b/content/code-security/how-tos/maintain-quality-code/index.md
@@ -8,6 +8,7 @@ versions:
contentType: how-tos
children:
- /enable-code-quality
+ - /disable-code-quality
- /set-up-code-coverage
- /interpret-results
- /set-pr-thresholds
diff --git a/content/copilot/concepts/policies.md b/content/copilot/concepts/policies.md
index db2d14e30868..308171693a90 100644
--- a/content/copilot/concepts/policies.md
+++ b/content/copilot/concepts/policies.md
@@ -1,8 +1,8 @@
---
-title: GitHub Copilot policies to control availability of features and models
+title: GitHub Copilot policies for enterprises and organizations
shortTitle: Policies
allowTitleToDifferFromFilename: true
-intro: 'Learn about the policies that control the availability of {% data variables.product.prodname_copilot %} features and models for users granted a license through your organization or an organization in your enterprise.'
+intro: 'Control the availability of {% data variables.product.prodname_copilot %} features and models for your users.'
versions:
feature: copilot
contentType: concepts
@@ -10,55 +10,50 @@ category:
- Manage Copilot for a team
---
-## About policies for {% data variables.product.prodname_copilot_short %}
+## How do policies work?
-When you assign a {% data variables.product.prodname_copilot_short %} license to a member of your organization or enterprise, you can control the features they can use under that license with {% data variables.product.prodname_copilot_short %} policies.
+You will find policies for {% data variables.product.prodname_copilot %} on your enterprise's **{% octicon "copilot" aria-hidden="true" aria-label="copilot" %} AI controls** tab or in your organization's settings. Policies control which {% data variables.product.prodname_copilot %} features, agents, and models your users can access, and how they can use those features. For example, a policy controls whether users can use {% data variables.copilot.copilot_cli_short %}.
-Policies are grouped into different types.
+In an enterprise, policies are set at the enterprise level first. For most policies, enterprise administrators can either explicitly enable or disable a policy, or let organizations decide. As an exception, for {% data variables.copilot.copilot_cloud_agent %}, enterprises can select exactly which organizations receive access.
-* **Feature policy:** Defines the availability of a {% data variables.product.prodname_copilot_short %} feature. Shown on the "Policies" page.
-* **Privacy policy:** Defines whether a potentially sensitive action is allowed or not. Shown at the end of the "Policies" page.
-* **Models policy:** Defines the availability of models beyond the basic models provided with {% data variables.product.prodname_copilot_short %}, which may incur additional costs. Shown on the "Models" page.
+Users who receive access to {% data variables.product.prodname_copilot_short %} directly from the enterprise, rather than through an organization, are not covered by the "Let organizations decide" option. A separate **Policies for enterprise-assigned users** setting determines whether "Let organizations decide" policies default to enabled or disabled for these users.
-Each policy controls availability for members who receive a {% data variables.product.prodname_copilot_short %} license from your enterprise or organization.
+## Who do policies apply to?
-## Organization-level control of policies
+Generally, policies only apply to users on your {% data variables.product.prodname_copilot_short %} plan. A user is governed by the policies of the enterprise or organization where they receive a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} license.
-Organization owners set policies to control the availability of features and models for users granted a {% data variables.product.prodname_copilot_short %} license by the organization. For example, an organization owner can enable or disable using {% data variables.product.prodname_copilot_short %} in the IDE (unless an enterprise owner has defined availability for the feature at the enterprise level).
+A small number of policies work differently and govern a setting for everyone. For example, you can block {% data variables.copilot.copilot_cloud_agent %} for all users in your enterprise's repositories. If this is the case, you will see this highlighted in the policy description.
-The enforcement options for feature and model policies in an organization are:
+## What about users with multiple licenses?
-* **Unconfigured** - A placeholder, which is removed once you have defined a setting. The policy is treated as disabled for this organization until you select an option.
-* **Enabled** - The feature is **available** to all members who are assigned {% data variables.product.prodname_copilot_short %} by the organization.
-* **Disabled** - The feature is **blocked** for all members who are assigned {% data variables.product.prodname_copilot_short %} by the organization.
+A user can receive access to {% data variables.product.prodname_copilot_short %} from multiple organizations in the same enterprise. If these organizations have configured the same policy differently, the **least restrictive** policy usually applies, but there are some exceptions.
-For privacy policies, the options are called "Allowed" and "Blocked" in preference to enabled and disabled. This provides a clearer message of the impact of a privacy policy.
+More rarely, if a user receives a license from multiple different enterprises, the **most restrictive** policy across enterprises almost always applies. For example, if any enterprise disables {% data variables.copilot.copilot_chat_dotcom_short %}, that feature is disabled for the user.
-## Enterprise-level control of policies
+A user's individual plan is cancelled when they are added to a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} plan, so a user's personal policies cannot conflict with an enterprise's or organization's.
-Enterprise owners can choose to set policies for {% data variables.product.prodname_copilot_short %} at the enterprise level or to delegate the decision to organization owners.
+To see details for each policy, see [AUTOTITLE](/copilot/reference/policy-conflicts).
-### Policy defined
+## Where do policies apply?
-If a policy is defined at the enterprise level, then control of the policy is disabled at the organization level.
+Policies can apply to any surface where users authenticate to {% data variables.product.prodname_copilot_short %}, including IDEs, the {% data variables.product.github %} website, and {% data variables.copilot.copilot_cli_short %}.
-### Granular organization selection
+However, not all policies apply to every surface. See [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies).
-**For the {% data variables.copilot.copilot_cloud_agent %} policy**, enterprise owners can choose to enable the feature for specific organizations rather than applying a blanket enterprise-wide setting. When **Enabled for selected organizations** is selected by an enterprise owner or an AI manager, only the selected organizations can enable the feature. Organizations can be selected individually or by using organization custom properties.
+## How can I prevent policy drift?
-### No policy
+If too many people have access to policy settings and your enterprise's governance posture isn't clearly communicated, policy settings can drift over time. This is a risk for enterprises with strict compliance requirements.
-If an enterprise owner selects **No policy**, the impact depends on whether a user has access to {% data variables.product.prodname_copilot_short %} through an organization or directly from the enterprise.
+* Regularly review the people with access to policies:
-For members who receive a {% data variables.product.prodname_copilot_short %} license from the organization, organization owners can choose their policy. If a member receives access to {% data variables.product.prodname_copilot_short %} through multiple organizations with conflicting policies, either the least or most permissive policy may apply, depending on the policy. For more information, see [AUTOTITLE](/copilot/reference/feature-availability-enterprise).
+ * In enterprises, enterprise owners or users with the "Manage enterprise AI controls" custom role permission
+ * In organizations, organization owners or users with various granular custom permissions
-For users who receive access to {% data variables.product.prodname_copilot_short %} directly from the enterprise rather than from an organization, the **Policies for enterprise-assigned users** setting determines whether "No policy" defaults to enabled or disabled.
+* Use your audit log to monitor changes to policy settings or organization enablement.
-## User opt-out
+## Setting policies
-The {% data variables.copilot.copilot_memory %} feature has a unique policy model. The feature can be enabled in enterprise or organization policies, but individual users can then opt out of using the feature in their personal settings.
+To set policies, see:
-## Next steps
-
-* [AUTOTITLE](/copilot/how-tos/administer/organizations/managing-policies-for-copilot-in-your-organization)
* [AUTOTITLE](/copilot/how-tos/administer/enterprises/managing-policies-and-features-for-copilot-in-your-enterprise)
+* [AUTOTITLE](/copilot/how-tos/administer/organizations/managing-policies-for-copilot-in-your-organization)
diff --git a/content/copilot/get-started/enterprise-ai-governance.md b/content/copilot/get-started/enterprise-ai-governance.md
index 295409f0bbf8..02eb3cb5f590 100644
--- a/content/copilot/get-started/enterprise-ai-governance.md
+++ b/content/copilot/get-started/enterprise-ai-governance.md
@@ -22,6 +22,7 @@ journeyTracks:
description: 'Use {% data variables.product.github %}''s governance features to stay in control of your codebase and compliance requirements.'
guides:
- href: '/copilot/tutorials/roll-out-at-scale/govern-at-scale/govern-for-adoption'
+ - href: '/copilot/concepts/policies'
- href: '/copilot/tutorials/roll-out-at-scale/govern-at-scale/maintain-codebase-standards'
- href: '/copilot/how-tos/administer-copilot/manage-for-enterprise/review-audit-logs'
- href: '/copilot/concepts/preparing-for-new-features-and-models'
diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-availability-of-default-models.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-availability-of-default-models.md
index 1d23eb0fa1ef..27b17790e578 100644
--- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-availability-of-default-models.md
+++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-availability-of-default-models.md
@@ -56,4 +56,4 @@ Targeted model rules let you control exactly which models are available to speci
## Further reading
-* [AUTOTITLE](/copilot/concepts/policies)
+* [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies)
diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies.md
index 92009e2dd881..5ce70d5bef84 100644
--- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies.md
+++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies.md
@@ -47,3 +47,4 @@ If you enable "{% data variables.product.prodname_copilot_short %} in {% data va
## Further reading
* [AUTOTITLE](/copilot/reference/policy-conflicts)
+* [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies)
diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys.md
index 2a2881439468..3bb6deb6859e 100644
--- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys.md
+++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys.md
@@ -54,4 +54,5 @@ You can choose whether the models you have added are available to organizations
## Further reading
* [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/use-your-own-api-keys) in our documentation for organizations.
-* [AUTOTITLE](/copilot/concepts/chat)
\ No newline at end of file
+* [AUTOTITLE](/copilot/concepts/chat)
+* [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies)
\ No newline at end of file
diff --git a/content/copilot/how-tos/administer-copilot/manage-for-organization/manage-default-models.md b/content/copilot/how-tos/administer-copilot/manage-for-organization/manage-default-models.md
index 5a83ff6e4611..600a2bf940ee 100644
--- a/content/copilot/how-tos/administer-copilot/manage-for-organization/manage-default-models.md
+++ b/content/copilot/how-tos/administer-copilot/manage-for-organization/manage-default-models.md
@@ -35,3 +35,7 @@ If the enterprise owner has set a model to **Optional**, you can enable or disab
1. Next to a model in the list, click the dropdown menu and select an option:
* **Enabled**: The model is available to members of your organization.
* **Disabled**: The model is not available to members of your organization.
+
+## Further reading
+
+* [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies)
diff --git a/content/copilot/how-tos/administer-copilot/manage-for-organization/manage-policies.md b/content/copilot/how-tos/administer-copilot/manage-for-organization/manage-policies.md
index 813c874a73c0..08052bb6b9d9 100644
--- a/content/copilot/how-tos/administer-copilot/manage-for-organization/manage-policies.md
+++ b/content/copilot/how-tos/administer-copilot/manage-for-organization/manage-policies.md
@@ -73,6 +73,4 @@ If your organization has a {% data variables.copilot.copilot_business_short %} o
* [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/manage-default-models)
* [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-availability-of-default-models)
-* [{% data variables.product.prodname_copilot %} Trust Center](https://copilot.github.trust.page)
-* [AUTOTITLE](/copilot/using-github-copilot/finding-public-code-that-matches-github-copilot-suggestions)
-* [AUTOTITLE](/enterprise-cloud@latest/copilot/setting-up-github-copilot/setting-up-github-copilot-for-your-enterprise)
+* [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies)
diff --git a/content/copilot/how-tos/administer-copilot/manage-for-organization/use-your-own-api-keys.md b/content/copilot/how-tos/administer-copilot/manage-for-organization/use-your-own-api-keys.md
index 775c470cbf2c..d9e42e1073ab 100644
--- a/content/copilot/how-tos/administer-copilot/manage-for-organization/use-your-own-api-keys.md
+++ b/content/copilot/how-tos/administer-copilot/manage-for-organization/use-your-own-api-keys.md
@@ -34,4 +34,5 @@ After you've added your key and selected one or more models, you and your organi
## Further reading
* [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys) in our documentation for enterprise accounts.
-* [AUTOTITLE](/copilot/concepts/chat)
\ No newline at end of file
+* [AUTOTITLE](/copilot/concepts/chat)
+* [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies)
\ No newline at end of file
diff --git a/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-mcp-server-access.md b/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-mcp-server-access.md
index 78cd4e1b9f4b..bea70a1f6715 100644
--- a/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-mcp-server-access.md
+++ b/content/copilot/how-tos/administer-copilot/manage-mcp-usage/configure-mcp-server-access.md
@@ -58,3 +58,7 @@ To ensure uniform access, you can set and maintain your MCP registry URL and all
## Next steps
For detailed information on MCP allowlist enforcement and limitations, see [AUTOTITLE](/copilot/reference/mcp-allowlist-enforcement).
+
+## Further reading
+
+* [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies)
diff --git a/content/copilot/how-tos/configure-content-exclusion/exclude-content-from-copilot.md b/content/copilot/how-tos/configure-content-exclusion/exclude-content-from-copilot.md
index 6c1d808c2f17..b9b2001342c4 100644
--- a/content/copilot/how-tos/configure-content-exclusion/exclude-content-from-copilot.md
+++ b/content/copilot/how-tos/configure-content-exclusion/exclude-content-from-copilot.md
@@ -203,3 +203,4 @@ For more information, see [AUTOTITLE](/rest/copilot/copilot-content-exclusion-ma
* [AUTOTITLE](/copilot/concepts/content-exclusion-for-github-copilot)
* [AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-access-to-github-copilot-in-your-organization/reviewing-changes-to-content-exclusions-for-github-copilot)
* [Configuring content exclusion for {% data variables.product.prodname_vs %}](https://learn.microsoft.com/en-us/visualstudio/ide/visual-studio-github-copilot-admin?view=vs-2022#configure-content-exclusion) in the Microsoft Learn documentation
+* [AUTOTITLE](/copilot/reference/supported-surfaces-for-policies)
diff --git a/content/copilot/how-tos/manage-and-track-spending/index.md b/content/copilot/how-tos/manage-and-track-spending/index.md
index f742f7c086ce..73cdc767e68f 100644
--- a/content/copilot/how-tos/manage-and-track-spending/index.md
+++ b/content/copilot/how-tos/manage-and-track-spending/index.md
@@ -5,6 +5,7 @@ intro: Manage and track spending on Copilot for your company.
versions:
feature: copilot
children:
+ - /monitor-ai-usage
- /manage-company-spending
redirect_from:
- /copilot/how-tos/premium-requests
diff --git a/content/copilot/how-tos/manage-and-track-spending/monitor-ai-usage.md b/content/copilot/how-tos/manage-and-track-spending/monitor-ai-usage.md
new file mode 100644
index 000000000000..6e248ef2f8bc
--- /dev/null
+++ b/content/copilot/how-tos/manage-and-track-spending/monitor-ai-usage.md
@@ -0,0 +1,51 @@
+---
+title: Monitoring your {% data variables.product.prodname_ai_credits %} usage
+shortTitle: Monitor {% data variables.product.prodname_ai_credits_short %} usage
+allowTitleToDifferFromFilename: true
+intro: Learn how to monitor the {% data variables.product.prodname_ai_credits_short %} you consume when using {% data variables.product.prodname_copilot_short %}.
+versions:
+ feature: copilot
+contentType: how-tos
+category:
+ - Configure Copilot
+---
+
+You can track your monthly usage of {% data variables.product.prodname_ai_credits_short %} to help you get the most value from your {% data variables.product.prodname_copilot_short %} plan.
+
+## Viewing usage in {% data variables.product.prodname_dotcom_the_website %}
+
+There are several ways to view your {% data variables.product.prodname_ai_credits_short %} usage in {% data variables.product.prodname_dotcom_the_website %}.
+
+### Viewing an overview in your Billing and licensing settings
+
+You can view an overview of your {% data variables.product.prodname_ai_credits_short %} usage at any time in your "Billing and licensing" settings on {% data variables.product.prodname_dotcom_the_website %}.
+
+{% data reusables.user-settings.access_billing_settings_url %}
+1. Scroll down to the "Metered usage" area and click {% octicon "copilot" aria-hidden="true" aria-label="copilot" %} **{% data variables.product.prodname_copilot_short %}** to show only your {% data variables.product.prodname_copilot_short %} use.
+
+### Viewing detailed analytics of your AI usage
+
+{% data reusables.user-settings.access_billing_settings_url %}
+1. In the side bar, click **AI usage**.
+1. Under "AI usage", you'll see:
+
+ * How many **included credits** you have used—the credits bundled with your plan.
+ * How much **additional usage** you've consumed beyond your plan's included amount.
+ * A chart showing which **models** you've used.
+ * A breakdown of the models used, the credits consumed per model, and the cost.
+
+### Downloading a usage report
+
+For details on how to request a usage report, see [AUTOTITLE](/billing/how-tos/products/view-productlicense-use#downloading-usage-reports).
+
+## Viewing usage in your IDE
+
+You can view {% data variables.product.prodname_copilot_short %} usage in certain IDEs directly. For example, in {% data variables.product.prodname_vscode %}, you can view information about features included in your plan, your progress towards any limits on your plan, and the date your allowance resets.
+
+You can access usage information in the following IDEs.
+
+* **In {% data variables.product.prodname_vscode %}**, click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" aria-label="copilot" %}) in the status bar.
+* **In {% data variables.product.prodname_vs %}**, click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" aria-label="copilot" %}) in the top right corner, then click **{% data variables.product.prodname_copilot_short %} Consumptions**.
+* **In JetBrains IDEs**, click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" aria-label="copilot" %}) in the status bar, then select **View quota usage**.
+* **In Xcode**, click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" aria-label="copilot" %}) in the menu bar.
+* **In Eclipse**, click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" aria-label="copilot" %}) in the status bar at the bottom of Eclipse.
diff --git a/content/copilot/reference/index.md b/content/copilot/reference/index.md
index a20944303db4..359c7f1c288f 100644
--- a/content/copilot/reference/index.md
+++ b/content/copilot/reference/index.md
@@ -15,6 +15,7 @@ children:
- /custom-instructions-support
- /hooks-reference
- /policy-conflicts
+ - /supported-surfaces-for-policies
- /copilot-allowlist-reference
- /mcp-allowlist-enforcement
- /metrics-data
diff --git a/content/copilot/reference/policy-conflicts.md b/content/copilot/reference/policy-conflicts.md
index a5ad0dab36df..a4bd3d98a11e 100644
--- a/content/copilot/reference/policy-conflicts.md
+++ b/content/copilot/reference/policy-conflicts.md
@@ -53,6 +53,13 @@ Feature, model, and privacy settings for users are set according to the **least
| MCP servers in {% data variables.product.prodname_copilot_short %} | Least restrictive organization | [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/configure-mcp-servers) |
| {% data variables.product.prodname_copilot_short %}-generated commit messages | Least restrictive organization | [AUTOTITLE](/copilot/responsible-use/copilot-commit-message-generation) |
+## Availability for members with {% data variables.product.prodname_copilot_short %} from multiple enterprises
+
+If a user receives a license from multiple different enterprises, the **most restrictive** policy usually applies. The exceptions are:
+
+* AI credit paid usage (this applies to each enterprise, not the user)
+* {% data variables.product.prodname_spark %}
+
## Next steps
* [AUTOTITLE](/copilot/how-tos/administer/organizations/managing-policies-for-copilot-in-your-organization)
diff --git a/content/copilot/reference/supported-surfaces-for-policies.md b/content/copilot/reference/supported-surfaces-for-policies.md
new file mode 100644
index 000000000000..e1259a848c14
--- /dev/null
+++ b/content/copilot/reference/supported-surfaces-for-policies.md
@@ -0,0 +1,36 @@
+---
+title: Supported surfaces for GitHub Copilot policies
+shortTitle: Supported surfaces for policies
+allowTitleToDifferFromFilename: true
+intro: 'Which policies affect which {% data variables.product.prodname_copilot_short %} features and surfaces?'
+versions:
+ feature: copilot
+category:
+ - Manage Copilot for a team
+contentType: reference
+---
+
+{% data variables.product.prodname_copilot %} is available across various surfaces: in IDEs, in the CLI, and as multiple agents and chat interfaces on the {% data variables.product.github %} website.
+
+A dedicated policy exists to enable or disable each supported feature or surface. Additionally, you can set various policies to customize or control the {% data variables.product.prodname_copilot_short %} experience. However, not every policy applies to every available surface.
+
+>[!NOTE] The following table documents whether specific policies apply to different surfaces, but does not necessarily reflect whether the equivalent functionality is available. For example, {% data variables.copilot.copilot_cloud_agent %} **can** access the Internet, but the "{% data variables.product.prodname_copilot_short %} can search the web" policy does not affect this capability.
+
+{% rowheaders %}
+
+| Policy name | IDEs | {% data variables.copilot.copilot_cloud_agent %} | Third-party agents | {% data variables.copilot.copilot_cli_short %} | {% data variables.copilot.copilot_chat_dotcom_short %} | {% data variables.copilot.copilot_code-review_short %} | {% data variables.product.prodname_spark_short %} |
+| --- | --- | --- | --- | --- | --- | --- | --- |
+| Editor preview features | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} |
+| {% data variables.product.prodname_copilot_short %} can search the web | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} |
+| Enable custom models | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} |
+| Suggestions matching public code | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %}[^1] | {% octicon "check" aria-label="Supported" %}[^1] | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} |
+| MCP servers in {% data variables.product.prodname_copilot_short %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} |
+| Restrict MCP access to registry servers | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} |
+| Content exclusion | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} |
+| Configure allowed models | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} |
+| {% data variables.copilot.copilot_memory %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} |
+
+{% endrowheaders %}
+
+[^1]: Only supported in annotate mode. See [AUTOTITLE](/copilot/responsible-use/agents#7-limitations).
+
diff --git a/content/copilot/tutorials/optimize-ai-usage.md b/content/copilot/tutorials/optimize-ai-usage.md
index 1f1c76e194a3..9189a5c2cd18 100644
--- a/content/copilot/tutorials/optimize-ai-usage.md
+++ b/content/copilot/tutorials/optimize-ai-usage.md
@@ -147,6 +147,6 @@ Teams that invest in these guardrails see fewer retries, faster task completion,
In addition to improving agent efficiency, you can also monitor and manage your spending to get the most out of your {% data variables.product.prodname_ai_credits_short %}:
-* **Use your dashboard and budget controls**. The "AI usage" page, under https://github.com/settings/billing, breaks down consumption across every feature and model, so you can see where your credits are actually going and adjust accordingly.
+* **Use your dashboard and budget controls**. The "AI usage" page, under https://github.com/settings/billing, breaks down consumption across every feature and model, so you can see where your credits are actually going and adjust accordingly. See [AUTOTITLE](/copilot/how-tos/manage-and-track-spending/monitor-ai-usage).
* **Identify expensive patterns before they add up**. Within a {% data variables.copilot.copilot_cli_short %} session, use `/usage` to see session-level metrics and to spot expensive patterns as you work. In addition, `/chronicle tips` analyzes your recent session history and surfaces opportunities to use {% data variables.product.prodname_copilot_short %} more efficiently.
* **Upgrade for a larger allowance**. If you regularly approach your monthly limit, a higher plan may be more economical than paying for additional usage, as higher plans have more {% data variables.product.prodname_ai_credit_singular %} allowance. See [AUTOTITLE](/copilot/concepts/billing/individual-plans#github-ai-credits-allowance-by-plan) and [AUTOTITLE](/copilot/how-tos/manage-your-account/view-and-change-your-copilot-plan).
\ No newline at end of file
diff --git a/content/enterprise-onboarding/getting-started-with-your-enterprise/about-enterprise-billing.md b/content/enterprise-onboarding/getting-started-with-your-enterprise/about-enterprise-billing.md
index 7c9fddeabfdf..a839f0537b2a 100644
--- a/content/enterprise-onboarding/getting-started-with-your-enterprise/about-enterprise-billing.md
+++ b/content/enterprise-onboarding/getting-started-with-your-enterprise/about-enterprise-billing.md
@@ -5,6 +5,8 @@ versions:
ghec: '*'
shortTitle: Billing
contentType: concepts
+docsTeamMetrics:
+ - enterprise-onboarding
---
## About billing for your enterprise
diff --git a/content/enterprise-onboarding/getting-started-with-your-enterprise/about-migrating-to-github-enterprise-cloud.md b/content/enterprise-onboarding/getting-started-with-your-enterprise/about-migrating-to-github-enterprise-cloud.md
index 39acd5144862..c93cc66e6bdb 100644
--- a/content/enterprise-onboarding/getting-started-with-your-enterprise/about-migrating-to-github-enterprise-cloud.md
+++ b/content/enterprise-onboarding/getting-started-with-your-enterprise/about-migrating-to-github-enterprise-cloud.md
@@ -5,6 +5,8 @@ versions:
ghec: '*'
shortTitle: Migrations
contentType: concepts
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.migrations.about-migrations %}
diff --git a/content/enterprise-onboarding/getting-started-with-your-enterprise/adding-users-to-your-enterprise.md b/content/enterprise-onboarding/getting-started-with-your-enterprise/adding-users-to-your-enterprise.md
index aa43f2c2df1a..94a4ab89124a 100644
--- a/content/enterprise-onboarding/getting-started-with-your-enterprise/adding-users-to-your-enterprise.md
+++ b/content/enterprise-onboarding/getting-started-with-your-enterprise/adding-users-to-your-enterprise.md
@@ -7,6 +7,8 @@ versions:
redirect_from:
- /enterprise-onboarding/getting-started-with-your-enterprise/securing-enterprise-resources-with-single-sign-on
- /enterprise-onboarding/getting-started-with-your-enterprise/securing-your-enterprise-with-managed-users
+docsTeamMetrics:
+ - enterprise-onboarding
---
The method of adding users to your enterprise and controlling authentication varies depending on the enterprise type that you chose.
diff --git a/content/enterprise-onboarding/getting-started-with-your-enterprise/choose-an-enterprise-type.md b/content/enterprise-onboarding/getting-started-with-your-enterprise/choose-an-enterprise-type.md
index 75167550ac40..062d82b76f53 100644
--- a/content/enterprise-onboarding/getting-started-with-your-enterprise/choose-an-enterprise-type.md
+++ b/content/enterprise-onboarding/getting-started-with-your-enterprise/choose-an-enterprise-type.md
@@ -11,6 +11,8 @@ redirect_from:
- /admin/managing-iam/understanding-iam-for-enterprises/choosing-an-enterprise-type-for-github-enterprise-cloud
- /admin/concepts/identity-and-access-management/enterprise-types-for-github-enterprise-cloud
contentType: other
+docsTeamMetrics:
+ - enterprise-onboarding
---
**Before** you create your enterprise account, you must choose an enterprise type:
diff --git a/content/enterprise-onboarding/getting-started-with-your-enterprise/index.md b/content/enterprise-onboarding/getting-started-with-your-enterprise/index.md
index e677f83eae06..0cc50f20730b 100644
--- a/content/enterprise-onboarding/getting-started-with-your-enterprise/index.md
+++ b/content/enterprise-onboarding/getting-started-with-your-enterprise/index.md
@@ -10,4 +10,6 @@ children:
- /adding-users-to-your-enterprise
- /about-enterprise-billing
- /about-migrating-to-github-enterprise-cloud
+docsTeamMetrics:
+ - enterprise-onboarding
---
diff --git a/content/enterprise-onboarding/getting-started-with-your-enterprise/setting-up-a-trial-of-github-enterprise.md b/content/enterprise-onboarding/getting-started-with-your-enterprise/setting-up-a-trial-of-github-enterprise.md
index 138d261e325e..c998b7e9f685 100644
--- a/content/enterprise-onboarding/getting-started-with-your-enterprise/setting-up-a-trial-of-github-enterprise.md
+++ b/content/enterprise-onboarding/getting-started-with-your-enterprise/setting-up-a-trial-of-github-enterprise.md
@@ -7,6 +7,8 @@ shortTitle: Start a trial
redirect_from:
- /enterprise-onboarding/getting-started-with-your-enterprise/ending-a-trial-of-github-enterprise
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
To set up a trial, you must be signed in to a personal account.
diff --git a/content/enterprise-onboarding/github-apps/automations-in-your-enterprise.md b/content/enterprise-onboarding/github-apps/automations-in-your-enterprise.md
index d26380b194bd..c597789f9f4c 100644
--- a/content/enterprise-onboarding/github-apps/automations-in-your-enterprise.md
+++ b/content/enterprise-onboarding/github-apps/automations-in-your-enterprise.md
@@ -5,6 +5,8 @@ intro: Learn how {% data variables.product.prodname_github_apps %}, external ser
versions:
ghec: '*'
contentType: concepts
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.automations %}
diff --git a/content/enterprise-onboarding/github-apps/create-enterprise-apps.md b/content/enterprise-onboarding/github-apps/create-enterprise-apps.md
index 281b956652bc..193e78f954a1 100644
--- a/content/enterprise-onboarding/github-apps/create-enterprise-apps.md
+++ b/content/enterprise-onboarding/github-apps/create-enterprise-apps.md
@@ -5,6 +5,8 @@ intro: Create GitHub Apps that can access enterprise-level resources and automat
versions:
ghec: '*'
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.create-enterprise-apps %}
diff --git a/content/enterprise-onboarding/github-apps/index.md b/content/enterprise-onboarding/github-apps/index.md
index aa03a604b4f9..deee4ae77fa1 100644
--- a/content/enterprise-onboarding/github-apps/index.md
+++ b/content/enterprise-onboarding/github-apps/index.md
@@ -9,5 +9,7 @@ children:
- /create-enterprise-apps
- /install-enterprise-apps
contentType: concepts
+docsTeamMetrics:
+ - enterprise-onboarding
---
diff --git a/content/enterprise-onboarding/github-apps/install-enterprise-apps.md b/content/enterprise-onboarding/github-apps/install-enterprise-apps.md
index 056c38623ab8..1e6cf760e788 100644
--- a/content/enterprise-onboarding/github-apps/install-enterprise-apps.md
+++ b/content/enterprise-onboarding/github-apps/install-enterprise-apps.md
@@ -5,6 +5,8 @@ intro: Install GitHub Apps to build automations for the enterprise account.
versions:
ghec: '*'
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.install-enterprise-apps %}
diff --git a/content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies.md b/content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies.md
index e9aea232f502..4a772c51668f 100644
--- a/content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies.md
+++ b/content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies.md
@@ -5,6 +5,8 @@ intro: Understand what policies are and why they are useful.
versions:
ghec: '*'
contentType: concepts
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.about-policies %}
diff --git a/content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-security.md b/content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-security.md
index 6aa47e00f4c4..f8540c2c9a86 100644
--- a/content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-security.md
+++ b/content/enterprise-onboarding/govern-people-and-repositories/about-enterprise-security.md
@@ -9,6 +9,8 @@ redirect_from:
- /enterprise-onboarding/feature-enhancements/about-code-security-for-your-enterprise
- /enterprise-onboarding/feature-enhancements/about-enterprise-security
contentType: concepts
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data variables.product.prodname_dotcom %} has many features that help you improve and maintain the quality of your code. Some of these are included in all plans, such as dependency graph and {% data variables.product.prodname_dependabot_alerts %}. Other security features require an {% data variables.product.prodname_AS %} license to run on repositories apart from public repositories on {% data variables.product.prodname_dotcom_the_website %}.
diff --git a/content/enterprise-onboarding/govern-people-and-repositories/create-custom-properties.md b/content/enterprise-onboarding/govern-people-and-repositories/create-custom-properties.md
index d84abd8cb08a..454317d1712c 100644
--- a/content/enterprise-onboarding/govern-people-and-repositories/create-custom-properties.md
+++ b/content/enterprise-onboarding/govern-people-and-repositories/create-custom-properties.md
@@ -5,6 +5,8 @@ intro: Create and apply custom properties to categorize and manage repositories
versions:
ghec: '*'
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.creating-custom-properties %}
diff --git a/content/enterprise-onboarding/govern-people-and-repositories/create-repository-policies.md b/content/enterprise-onboarding/govern-people-and-repositories/create-repository-policies.md
index 4ffcd62c62ec..c70ea238e76a 100644
--- a/content/enterprise-onboarding/govern-people-and-repositories/create-repository-policies.md
+++ b/content/enterprise-onboarding/govern-people-and-repositories/create-repository-policies.md
@@ -5,6 +5,8 @@ intro: Enforce repository policies across your enterprise using custom propertie
versions:
ghec: '*'
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise.repo-policy-rules-preview %}
diff --git a/content/enterprise-onboarding/govern-people-and-repositories/index.md b/content/enterprise-onboarding/govern-people-and-repositories/index.md
index b9fee41dc5ee..262902a4a014 100644
--- a/content/enterprise-onboarding/govern-people-and-repositories/index.md
+++ b/content/enterprise-onboarding/govern-people-and-repositories/index.md
@@ -12,5 +12,7 @@ children:
- /using-the-audit-log-for-your-enterprise
- /about-enterprise-security
contentType: concepts
+docsTeamMetrics:
+ - enterprise-onboarding
---
diff --git a/content/enterprise-onboarding/govern-people-and-repositories/protect-branches.md b/content/enterprise-onboarding/govern-people-and-repositories/protect-branches.md
index 9b8227a316fc..cfe0cd6c8dfe 100644
--- a/content/enterprise-onboarding/govern-people-and-repositories/protect-branches.md
+++ b/content/enterprise-onboarding/govern-people-and-repositories/protect-branches.md
@@ -7,6 +7,8 @@ versions:
redirect_from:
- /enterprise-onboarding/feature-enhancements/about-rulesets
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.rulesets-intro %}
diff --git a/content/enterprise-onboarding/govern-people-and-repositories/using-the-audit-log-for-your-enterprise.md b/content/enterprise-onboarding/govern-people-and-repositories/using-the-audit-log-for-your-enterprise.md
index a0b9b06f1e70..f797ace84ae0 100644
--- a/content/enterprise-onboarding/govern-people-and-repositories/using-the-audit-log-for-your-enterprise.md
+++ b/content/enterprise-onboarding/govern-people-and-repositories/using-the-audit-log-for-your-enterprise.md
@@ -7,6 +7,8 @@ shortTitle: Use the audit log
redirect_from:
- /enterprise-onboarding/feature-enhancements/about-the-audit-log-for-your-enterprise
contentType: concepts
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.about-audit-logs %}
diff --git a/content/enterprise-onboarding/index.md b/content/enterprise-onboarding/index.md
index 3dde5e01b04d..0e40a8272d44 100644
--- a/content/enterprise-onboarding/index.md
+++ b/content/enterprise-onboarding/index.md
@@ -59,4 +59,6 @@ children:
- /support-for-your-enterprise
redirect_from:
- /enterprise-onboarding/feature-enhancements
+docsTeamMetrics:
+ - enterprise-onboarding
---
diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/about-roles-in-an-enterprise.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/about-roles-in-an-enterprise.md
index 6136870d7ea0..99a6430e1db3 100644
--- a/content/enterprise-onboarding/setting-up-organizations-and-teams/about-roles-in-an-enterprise.md
+++ b/content/enterprise-onboarding/setting-up-organizations-and-teams/about-roles-in-an-enterprise.md
@@ -7,6 +7,8 @@ versions:
redirect_from:
- /enterprise-onboarding/feature-enhancements/about-access-permissions-on-github
contentType: concepts
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.about-roles %}
diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise.md
index c67c1ed4a6b0..16e189693cd2 100644
--- a/content/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise.md
+++ b/content/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise.md
@@ -7,6 +7,8 @@ versions:
redirect_from:
- /enterprise-onboarding/setting-up-organizations-and-teams/managing-organization-members
contentType: concepts
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.about-teams %}
diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users.md
index 64a72c89a3b9..d2d418789a87 100644
--- a/content/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users.md
+++ b/content/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users.md
@@ -5,6 +5,8 @@ intro: Assign enterprise roles to manage access and permissions.
versions:
ghec: '*'
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.assign-roles %}
diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/best-practices.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/best-practices.md
index 6df364bee335..34e0bc9a2199 100644
--- a/content/enterprise-onboarding/setting-up-organizations-and-teams/best-practices.md
+++ b/content/enterprise-onboarding/setting-up-organizations-and-teams/best-practices.md
@@ -7,6 +7,8 @@ shortTitle: Best practices
redirect_from:
- /enterprise-onboarding/setting-up-organizations-and-teams/best-practices-for-organizations-in-your-enterprise
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.best-practices %}
diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles.md
index 3792e59bdb9f..6b07613cdf8f 100644
--- a/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles.md
+++ b/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles.md
@@ -5,6 +5,8 @@ intro: Create custom organization roles with fine-grained permissions tailored t
versions:
ghec: '*'
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.create-custom-roles %}
diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-teams.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-teams.md
index 4c2ac7abc342..8e0b17bd7297 100644
--- a/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-teams.md
+++ b/content/enterprise-onboarding/setting-up-organizations-and-teams/creating-teams.md
@@ -7,6 +7,8 @@ shortTitle: Create teams
permissions: Enterprise owners or organization owners
allowTitleToDifferFromFilename: true
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.create-enterprise-teams %}
diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements.md
index ac7361841ab0..e285c59dca31 100644
--- a/content/enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements.md
+++ b/content/enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements.md
@@ -5,6 +5,8 @@ versions:
ghec: '*'
shortTitle: Identify role requirements
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.identify-role-requirements %}
diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/index.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/index.md
index ddb201bd6673..50eff93e503e 100644
--- a/content/enterprise-onboarding/setting-up-organizations-and-teams/index.md
+++ b/content/enterprise-onboarding/setting-up-organizations-and-teams/index.md
@@ -14,5 +14,7 @@ children:
- /creating-teams
- /assigning-roles-to-teams-and-users
- /use-innersource
+docsTeamMetrics:
+ - enterprise-onboarding
---
diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/setting-up-an-organization.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/setting-up-an-organization.md
index 6786bceee968..d86bc2b310bc 100644
--- a/content/enterprise-onboarding/setting-up-organizations-and-teams/setting-up-an-organization.md
+++ b/content/enterprise-onboarding/setting-up-organizations-and-teams/setting-up-an-organization.md
@@ -7,6 +7,8 @@ shortTitle: Set up an organization
redirect_from:
- /enterprise-onboarding/setting-up-organizations-and-teams/managing-your-organizations
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
During a trial, there are two ways to add organizations to your enterprise.
diff --git a/content/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource.md b/content/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource.md
index c6fb65a36f29..92eecb7b719e 100644
--- a/content/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource.md
+++ b/content/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource.md
@@ -6,6 +6,8 @@ versions:
ghec: '*'
contentType: concepts
allowTitleToDifferFromFilename: true
+docsTeamMetrics:
+ - enterprise-onboarding
---
{% data reusables.enterprise-onboarding.use-innersource %}
diff --git a/content/enterprise-onboarding/support-for-your-enterprise/index.md b/content/enterprise-onboarding/support-for-your-enterprise/index.md
index 0ea0bec28896..9d66156b07f4 100644
--- a/content/enterprise-onboarding/support-for-your-enterprise/index.md
+++ b/content/enterprise-onboarding/support-for-your-enterprise/index.md
@@ -9,4 +9,6 @@ children:
- /understanding-support
- /using-the-support-portal
- /managing-support-entitlements
+docsTeamMetrics:
+ - enterprise-onboarding
---
diff --git a/content/enterprise-onboarding/support-for-your-enterprise/managing-support-entitlements.md b/content/enterprise-onboarding/support-for-your-enterprise/managing-support-entitlements.md
index 8e04c790aa53..572ac392848d 100644
--- a/content/enterprise-onboarding/support-for-your-enterprise/managing-support-entitlements.md
+++ b/content/enterprise-onboarding/support-for-your-enterprise/managing-support-entitlements.md
@@ -6,6 +6,8 @@ versions:
allowTitleToDifferFromFilename: true
shortTitle: Manage support entitlements
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
## About support entitlements
diff --git a/content/enterprise-onboarding/support-for-your-enterprise/understanding-support.md b/content/enterprise-onboarding/support-for-your-enterprise/understanding-support.md
index d846202d0533..5dddad7265e7 100644
--- a/content/enterprise-onboarding/support-for-your-enterprise/understanding-support.md
+++ b/content/enterprise-onboarding/support-for-your-enterprise/understanding-support.md
@@ -6,6 +6,8 @@ versions:
ghec: '*'
allowTitleToDifferFromFilename: true
contentType: concepts
+docsTeamMetrics:
+ - enterprise-onboarding
---
## About {% data variables.contact.github_support %}
diff --git a/content/enterprise-onboarding/support-for-your-enterprise/using-the-support-portal.md b/content/enterprise-onboarding/support-for-your-enterprise/using-the-support-portal.md
index 39733c3c500b..14598f3934db 100644
--- a/content/enterprise-onboarding/support-for-your-enterprise/using-the-support-portal.md
+++ b/content/enterprise-onboarding/support-for-your-enterprise/using-the-support-portal.md
@@ -6,6 +6,8 @@ allowTitleToDifferFromFilename: true
versions:
ghec: '*'
contentType: how-tos
+docsTeamMetrics:
+ - enterprise-onboarding
---
## About the {% data variables.contact.enterprise_portal %} for enterprises
diff --git a/content/issues/planning-and-tracking-with-projects/automating-your-project/automating-projects-using-actions.md b/content/issues/planning-and-tracking-with-projects/automating-your-project/automating-projects-using-actions.md
index 4cfab85954b1..634822635a0d 100644
--- a/content/issues/planning-and-tracking-with-projects/automating-your-project/automating-projects-using-actions.md
+++ b/content/issues/planning-and-tracking-with-projects/automating-your-project/automating-projects-using-actions.md
@@ -44,8 +44,8 @@ For more information about authenticating in a {% data variables.product.prodnam
> You can control your app's permission to organization projects and to repository projects. You must give permission to read and write organization projects; permission to read and write repository projects will not be sufficient.
1. Install the {% data variables.product.prodname_github_app %} in your organization. Install it for all repositories that your project needs to access. For more information, see [AUTOTITLE](/apps/maintaining-github-apps/installing-github-apps#installing-your-private-github-app-on-your-repository).
-1. Store your {% data variables.product.prodname_github_app %}'s ID as a configuration variable in your repository or organization. In the following workflow, replace `APP_ID` with the name of the configuration variable. You can find your app ID on the settings page for your app or through the App API. For more information, see [AUTOTITLE](/rest/apps#get-an-app). For more information about configuration variables, see [AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
-1. Generate a private key for your app. Store the contents of the resulting file as a secret in your repository or organization. (Store the entire contents of the file, including `-----BEGIN RSA PRIVATE KEY-----` and `-----END RSA PRIVATE KEY-----`.) In the following workflow, replace `APP_PEM` with the name of the secret. For more information, see [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). For more information about storing secrets, see [AUTOTITLE](/actions/security-guides/encrypted-secrets).
+1. Store your {% data variables.product.prodname_github_app %}'s client ID as a configuration variable in your repository or organization. In the following workflow, replace `APP_CLIENT_ID` with the name of the configuration variable. You can find your client ID on the settings page for your app or through the App API. For more information, see [AUTOTITLE](/rest/apps#get-an-app). For more information about configuration variables, see [AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
+1. Generate a private key for your app. Store the contents of the resulting file as a secret in your repository or organization. (Store the entire contents of the file, including `-----BEGIN RSA PRIVATE KEY-----` and `-----END RSA PRIVATE KEY-----`.) In the following workflow, replace `APP_PRIVATE_KEY` with the name of the secret. For more information, see [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). For more information about storing secrets, see [AUTOTITLE](/actions/security-guides/encrypted-secrets).
1. In the following workflow, replace `YOUR_ORGANIZATION` with the name of your organization. For example, `octo-org`. Replace `YOUR_PROJECT_NUMBER` with your project number. To find the project number, look at the project URL. For example, `https://github.com/orgs/octo-org/projects/5` has a project number of 5. In order for this specific example to work, your project must also have a "Date posted" date field.
```yaml annotate copy
@@ -60,17 +60,17 @@ jobs:
track_pr:
runs-on: ubuntu-latest
steps:
- # Uses the [actions/create-github-app-token](https://github.com/marketplace/actions/create-github-app-token) action to generate an installation access token for your app from the app ID and private key. The installation access token is accessed later in the workflow as `{% raw %}${{ steps.generate-token.outputs.token }}{% endraw %}`.
+ # Uses the [actions/create-github-app-token](https://github.com/marketplace/actions/create-github-app-token) action to generate an installation access token for your app from the client ID and private key. The installation access token is accessed later in the workflow as `{% raw %}${{ steps.generate-token.outputs.token }}{% endraw %}`.
#
- # Replace `APP_ID` with the name of the configuration variable that contains your app ID.
+ # Replace `APP_CLIENT_ID` with the name of the configuration variable that contains your client ID.
#
- # Replace `APP_PEM` with the name of the secret that contains your app private key.
+ # Replace `APP_PRIVATE_KEY` with the name of the secret that contains your app private key.
- name: Generate token
id: generate-token
- uses: actions/create-github-app-token@v2
+ uses: actions/create-github-app-token@v3
with:
- app-id: {% raw %}${{ vars.APP_ID }}{% endraw %}
- private-key: {% raw %}${{ secrets.APP_PEM }}{% endraw %}
+ client-id: {% raw %}${{ vars.APP_CLIENT_ID }}{% endraw %}
+ private-key: {% raw %}${{ secrets.APP_PRIVATE_KEY }}{% endraw %}
# Sets environment variables for this step.
#
# Replace `YOUR_ORGANIZATION` with the name of your organization. For example, `octo-org`.
diff --git a/content/migrations/elm/troubleshooting.md b/content/migrations/elm/troubleshooting.md
index 4ee7fbc5233b..6448dd0cfadd 100644
--- a/content/migrations/elm/troubleshooting.md
+++ b/content/migrations/elm/troubleshooting.md
@@ -25,7 +25,7 @@ If your migration encounters a problem, check the migration status with `elm mig
| **Cutting over** | The source repository is locked and remaining changes are being applied to the destination | Monitor; the status will transition to **Completed** |
| **Completed** | The migration has finished successfully | Verify the destination repository and reclaim mannequins |
| **Failed** | The migration encountered an unrecoverable failure | Investigate the error (see below) |
-| **Paused** | The migration is paused | Resume the migration |
+| **Paused** | The migration is paused | Check the pause reason and resolve (see below) |
| **Terminated** | The migration was cancelled | N/A |
| **Degraded** | The destination is unreachable | Check network connectivity between the GitHub Enterprise Server appliance and GHE.com (see below) |
@@ -37,12 +37,56 @@ To investigate, run `elm migration status --migration-id MIGRATION-ID` and revie
After resolving the underlying issue, abort the failed migration with `elm migration cancel --migration-id MIGRATION-ID` and start a new migration.
+## Migration status is "Paused"
+
+A migration enters the **Paused** status when an issue requires your intervention before it can continue. Run `elm migration status --migration-id MIGRATION-ID` and check the pause reason.
+
+Common pause reasons:
+
+* **Credential expiry**: One of the {% data variables.product.pat_v1_plural %} has expired. Create a new token with the required scopes and update it with `elm credential update`. Then restart the migration.
+* **Rate limiting**: The migration hit API rate limits. Wait a few minutes, then restart.
+
+To restart a paused migration after resolving the underlying issue:
+
+```shell
+elm migration start --migration-id MIGRATION-ID
+```
+
## Migration status is "Degraded"
A **Degraded** status means the migration service on the {% data variables.product.prodname_ghe_server %} appliance cannot reach the destination enterprise. The migration continues on the source side, but the destination status is unknown.
Check network connectivity between the {% data variables.product.prodname_ghe_server %} appliance and your subdomain of {% data variables.enterprise.data_residency_site %}, then run `elm migration status --migration-id MIGRATION-ID` again. The status response includes a timestamp for the last successful contact with the destination, which can help you assess how long the connectivity issue has been occurring.
+## Migration stuck in "Exporting"
+
+If your migration remains in the **Exporting** status with no progress change for 30 minutes or more, the exporter may be stuck.
+
+1. Run `elm migration status --migration-id MIGRATION-ID` and note whether resource counts are changing.
+1. If counts are static, check the appliance's network connectivity to the destination.
+1. Review exporter logs on the {% data variables.product.prodname_ghe_server %} appliance (requires SSH admin access):
+
+ ```shell copy
+ journalctl -t elm-exporter-backfiller --since "1 hour ago" | tail -50
+ journalctl -t elm-exporter-sender --since "1 hour ago" | tail -50
+ ```
+
+1. If the exporter task has crashed, it should recover automatically. If it does not, contact {% data variables.contact.github_support %}.
+
+## Git synchronization not completing
+
+If `elm migration status` shows that the initial Git push has not completed after an extended period, check the Git syncer logs:
+
+```shell copy
+journalctl -t elm-exporter-git-syncer --since "2 hours ago"
+```
+
+Look for:
+
+* **`connection refused`**: A network issue between the {% data variables.product.prodname_ghe_server %} appliance and the destination. Check firewall rules and DNS resolution.
+* **`authentication failed`**: The {% data variables.product.pat_v1 %} may lack the required scopes or has expired.
+* **`remote: error`**: The destination may be rejecting the push. Contact {% data variables.contact.github_support %} with the error details.
+
## Some resources failed to import
Individual resources can fail to import without causing the overall migration to fail. You can see a count of failed resources in the output of `elm migration status --migration-id MIGRATION-ID`.
@@ -69,6 +113,26 @@ If your migration fails with an authentication error, check that:
* The tokens have the scopes specified in [AUTOTITLE](/migrations/elm/migrate-your-repository#1-create-access-tokens).
* If the destination organization enforces SAML single sign-on, the token must be authorized for SSO.
+If you recently rotated a token, the migration picks up new credentials automatically. You do not need to run `ghe-config-apply` or restart the migration service.
+
## The source GHES URL was rejected
{% data variables.product.prodname_elm %} requires the {% data variables.product.prodname_ghe_server %} URL to use HTTPS. If the URL is configured with HTTP, the migration will fail preflight validation.
+
+## Collecting logs for support
+
+When contacting {% data variables.contact.github_support %}, the most useful artifacts are:
+
+1. **A support bundle** (preferred): Run `ghe-support-bundle -u` on the {% data variables.product.prodname_ghe_server %} appliance. This captures all ELM logs automatically.
+1. **Migration status output**: `elm migration status --migration-id MIGRATION-ID`
+1. **The migration ID** and approximate time of failure (with timezone)
+1. **Any correlation IDs** from error messages
+
+If a support bundle is not possible, you can collect logs manually:
+
+```shell copy
+journalctl -t elm-exporter-migration-manager --since "24 hours ago" > migration-manager.log
+journalctl -t elm-exporter-backfiller --since "24 hours ago" > backfiller.log
+journalctl -t elm-exporter-sender --since "24 hours ago" > sender.log
+journalctl -t elm-exporter-git-syncer --since "24 hours ago" > git-syncer.log
+```
diff --git a/content/rest/quickstart.md b/content/rest/quickstart.md
index 64b5e94ae8f7..dcac999f9a68 100644
--- a/content/rest/quickstart.md
+++ b/content/rest/quickstart.md
@@ -63,8 +63,8 @@ jobs:
If you are authenticating with a {% data variables.product.prodname_github_app %}, you can create an installation access token within your workflow:
-1. Store your {% data variables.product.prodname_github_app %}'s ID as a configuration variable. In the following example, replace `APP_ID` with the name of the configuration variable. You can find your app ID on the settings page for your app or through the API. For more information, see [AUTOTITLE](/rest/apps/apps#get-an-app). For more information about configuration variables, see [AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
-1. Generate a private key for your app. Store the contents of the resulting file as a secret. (Store the entire contents of the file, including `-----BEGIN RSA PRIVATE KEY-----` and `-----END RSA PRIVATE KEY-----`.) In the following example, replace `APP_PEM` with the name of the secret. For more information, see [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). For more information about secrets, see [AUTOTITLE](/actions/security-guides/encrypted-secrets).
+1. Store your {% data variables.product.prodname_github_app %}'s client ID as a configuration variable. In the following example, replace `APP_CLIENT_ID` with the name of the configuration variable. You can find your client ID on the settings page for your app or through the API. For more information, see [AUTOTITLE](/rest/apps/apps#get-an-app). For more information about configuration variables, see [AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
+1. Generate a private key for your app. Store the contents of the resulting file as a secret. (Store the entire contents of the file, including `-----BEGIN RSA PRIVATE KEY-----` and `-----END RSA PRIVATE KEY-----`.) In the following example, replace `APP_PRIVATE_KEY` with the name of the secret. For more information, see [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). For more information about secrets, see [AUTOTITLE](/actions/security-guides/encrypted-secrets).
1. Add a step to generate a token, and use that token instead of `GITHUB_TOKEN`. Note that this token will expire after 60 minutes. {% ifversion fpt or ghec %}For example:{% else %}In the following example, replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-OWNER` with the name of the account that owns the repository. Replace `REPO-NAME` with the name of the repository.{% endif %}
```yaml copy
@@ -76,10 +76,10 @@ If you are authenticating with a {% data variables.product.prodname_github_app %
steps:
- name: Generate token
id: generate-token
- uses: actions/create-github-app-token@v2
+ uses: actions/create-github-app-token@v3
with:
- app-id: {% raw %}${{ vars.APP_ID }}{% endraw %}
- private-key: {% raw %}${{ secrets.APP_PEM }}{% endraw %}
+ client-id: {% raw %}${{ vars.APP_CLIENT_ID }}{% endraw %}
+ private-key: {% raw %}${{ secrets.APP_PRIVATE_KEY }}{% endraw %}
- name: Use API
env:
GH_TOKEN: {% raw %}${{ steps.generate-token.outputs.token }}{% endraw %}
@@ -202,8 +202,8 @@ try {
If you are authenticating with a {% data variables.product.prodname_github_app %}, you can create an installation access token within your workflow:
-1. Store your {% data variables.product.prodname_github_app %}'s ID as a configuration variable. In the following example, replace `APP_ID` with the name of the configuration variable. You can find your app ID on the settings page for your app or through the App API. For more information, see [AUTOTITLE](/rest/apps/apps#get-an-app). For more information about configuration variables, see [AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
-1. Generate a private key for your app. Store the contents of the resulting file as a secret. (Store the entire contents of the file, including `-----BEGIN RSA PRIVATE KEY-----` and `-----END RSA PRIVATE KEY-----`.) In the following example, replace `APP_PEM` with the name of the secret. For more information, see [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). For more information about secrets, see [AUTOTITLE](/actions/security-guides/encrypted-secrets).
+1. Store your {% data variables.product.prodname_github_app %}'s client ID as a configuration variable. In the following example, replace `APP_CLIENT_ID` with the name of the configuration variable. You can find your client ID on the settings page for your app or through the App API. For more information, see [AUTOTITLE](/rest/apps/apps#get-an-app). For more information about configuration variables, see [AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
+1. Generate a private key for your app. Store the contents of the resulting file as a secret. (Store the entire contents of the file, including `-----BEGIN RSA PRIVATE KEY-----` and `-----END RSA PRIVATE KEY-----`.) In the following example, replace `APP_PRIVATE_KEY` with the name of the secret. For more information, see [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). For more information about secrets, see [AUTOTITLE](/actions/security-guides/encrypted-secrets).
1. Add a step to generate a token, and use that token instead of `GITHUB_TOKEN`. Note that this token will expire after 60 minutes. For example:
```yaml
@@ -227,10 +227,10 @@ If you are authenticating with a {% data variables.product.prodname_github_app %
- name: Generate token
id: generate-token
- uses: actions/create-github-app-token@v2
+ uses: actions/create-github-app-token@v3
with:
- app-id: {% raw %}${{ vars.APP_ID }}{% endraw %}
- private-key: {% raw %}${{ secrets.APP_PEM }}{% endraw %}
+ client-id: {% raw %}${{ vars.APP_CLIENT_ID }}{% endraw %}
+ private-key: {% raw %}${{ secrets.APP_PRIVATE_KEY }}{% endraw %}
- name: Run script
run: |
@@ -308,8 +308,8 @@ jobs:
If you are authenticating with a {% data variables.product.prodname_github_app %}, you can create an installation access token within your workflow:
-1. Store your {% data variables.product.prodname_github_app %}'s ID as a configuration variable. In the following example, replace `APP_ID` with the name of the configuration variable. You can find your app ID on the settings page for your app or through the App API. For more information, see [AUTOTITLE](/rest/apps/apps#get-an-app). For more information about configuration variables, see [AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
-1. Generate a private key for your app. Store the contents of the resulting file as a secret. (Store the entire contents of the file, including `-----BEGIN RSA PRIVATE KEY-----` and `-----END RSA PRIVATE KEY-----`.) In the following example, replace `APP_PEM` with the name of the secret. For more information, see [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). For more information about storing secrets, see [AUTOTITLE](/actions/security-guides/encrypted-secrets).
+1. Store your {% data variables.product.prodname_github_app %}'s client ID as a configuration variable. In the following example, replace `APP_CLIENT_ID` with the name of the configuration variable. You can find your client ID on the settings page for your app or through the App API. For more information, see [AUTOTITLE](/rest/apps/apps#get-an-app). For more information about configuration variables, see [AUTOTITLE](/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).
+1. Generate a private key for your app. Store the contents of the resulting file as a secret. (Store the entire contents of the file, including `-----BEGIN RSA PRIVATE KEY-----` and `-----END RSA PRIVATE KEY-----`.) In the following example, replace `APP_PRIVATE_KEY` with the name of the secret. For more information, see [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps). For more information about storing secrets, see [AUTOTITLE](/actions/security-guides/encrypted-secrets).
1. Add a step to generate a token, and use that token instead of `GITHUB_TOKEN`. Note that this token will expire after 60 minutes. {% ifversion fpt or ghec %}For example:{% else %}In the following example, replace `HOSTNAME` with the name of {% data variables.location.product_location %}. Replace `REPO-OWNER` with the name of the account that owns the repository. Replace `REPO-NAME` with the name of the repository.{% endif %}
```yaml copy
@@ -321,10 +321,10 @@ If you are authenticating with a {% data variables.product.prodname_github_app %
steps:
- name: Generate token
id: generate-token
- uses: actions/create-github-app-token@v2
+ uses: actions/create-github-app-token@v3
with:
- app-id: {% raw %}${{ vars.APP_ID }}{% endraw %}
- private-key: {% raw %}${{ secrets.APP_PEM }}{% endraw %}
+ client-id: {% raw %}${{ vars.APP_CLIENT_ID }}{% endraw %}
+ private-key: {% raw %}${{ secrets.APP_PRIVATE_KEY }}{% endraw %}
- name: Use API
env:
diff --git a/data/reusables/advanced-security/secret-scanning-new-custom-pattern.md b/data/reusables/advanced-security/secret-scanning-new-custom-pattern.md
deleted file mode 100644
index 0f675c8f778c..000000000000
--- a/data/reusables/advanced-security/secret-scanning-new-custom-pattern.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Under "{% data variables.product.prodname_secret_scanning_caps %}", under "Custom patterns", click **New pattern**.
diff --git a/data/reusables/advanced-security/secret-scanning-push-protection-repo.md b/data/reusables/advanced-security/secret-scanning-push-protection-repo.md
deleted file mode 100644
index 1f0b1bf3baaa..000000000000
--- a/data/reusables/advanced-security/secret-scanning-push-protection-repo.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Under "{% data variables.product.prodname_secret_scanning_caps %}", under "Push protection", click **Enable**.
diff --git a/data/reusables/code-quality/code-quality-preview-note.md b/data/reusables/code-quality/code-quality-preview-note.md
index 85d3dbf910e8..7c1527dded85 100644
--- a/data/reusables/code-quality/code-quality-preview-note.md
+++ b/data/reusables/code-quality/code-quality-preview-note.md
@@ -1,3 +1,5 @@
+
> [!NOTE]
-> {% data variables.product.prodname_code_quality %} is currently in {% data variables.release-phases.public_preview %} and subject to change.
-> During {% data variables.release-phases.public_preview %}, {% data variables.product.prodname_code_quality_short %} will not be billed, although {% data variables.product.prodname_code_quality_short %} scans will consume {% data variables.product.prodname_actions %} minutes.
+> {% data variables.product.prodname_code_quality %} is currently in {% data variables.release-phases.public_preview %} and will become generally available on July 20, 2026.
+> During {% data variables.release-phases.public_preview %}, {% data variables.product.prodname_code_quality_short %} will not be billed, although {% data variables.product.prodname_code_quality_short %} scans will consume {% data variables.product.prodname_actions %} minutes. From July 20, 2026, usage will incur charges. See [AUTOTITLE](/billing/concepts/product-billing/github-code-quality).
+
diff --git a/data/reusables/issue-events/project-card-properties.md b/data/reusables/issue-events/project-card-properties.md
deleted file mode 100644
index 9f5c81843e0e..000000000000
--- a/data/reusables/issue-events/project-card-properties.md
+++ /dev/null
@@ -1,4 +0,0 @@
-`project_card` | `object` | The project card object.
-`project_id` | `integer` | The unique identifier of the project card.
-`project_url` | `string` | The REST API URL to retrieve the project card.
-`column_name` | `string` | The name of the column the issue is in.
diff --git a/data/reusables/organizations/organization-wide-project.md b/data/reusables/organizations/organization-wide-project.md
deleted file mode 100644
index b1801fe58af0..000000000000
--- a/data/reusables/organizations/organization-wide-project.md
+++ /dev/null
@@ -1,3 +0,0 @@
-1. Under your organization name, click **{% octicon "table" aria-hidden="true" aria-label="table" %} Projects**.
-
- 
diff --git a/data/reusables/pre-release-program/api-preview-warning.md b/data/reusables/pre-release-program/api-preview-warning.md
deleted file mode 100644
index b6cd05c01489..000000000000
--- a/data/reusables/pre-release-program/api-preview-warning.md
+++ /dev/null
@@ -1,2 +0,0 @@
-> [!WARNING]
-> The API may change without advance notice during the preview period. Preview features are not supported for production use. If you experience any issues, contact {% data variables.contact.contact_support %}.
diff --git a/data/reusables/pre-release-program/starfox-preview.md b/data/reusables/pre-release-program/starfox-preview.md
deleted file mode 100644
index 5e0cc5ec15ed..000000000000
--- a/data/reusables/pre-release-program/starfox-preview.md
+++ /dev/null
@@ -1,8 +0,0 @@
-> [!NOTE]
-> Project card details are now shown in REST API responses for project-related issue and timeline events. This feature is now available for developers to preview. For details, see the [blog post](https://developer.github.com/changes/2018-09-05-project-card-events).
->
-> To receive the `project_card` attribute, {% data variables.projects.projects_v1_boards %} must be [enabled](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/disabling-project-boards-in-a-repository) for a repository, and you must provide a custom [media type](/rest/overview/media-types) in the `Accept` header:
->
-> ```text
-> application/vnd.github.starfox-preview+json
-> ```
diff --git a/data/reusables/project-management/access-collaboration-settings.md b/data/reusables/project-management/access-collaboration-settings.md
deleted file mode 100644
index f2022ac07d32..000000000000
--- a/data/reusables/project-management/access-collaboration-settings.md
+++ /dev/null
@@ -1,3 +0,0 @@
-1. Click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Settings**.
-
- 
diff --git a/data/reusables/project-management/add-collaborator.md b/data/reusables/project-management/add-collaborator.md
deleted file mode 100644
index 8f65836ace92..000000000000
--- a/data/reusables/project-management/add-collaborator.md
+++ /dev/null
@@ -1 +0,0 @@
-1. In the search results, click the correct username and click **Add collaborator**.
diff --git a/data/reusables/project-management/add-column-new-project.md b/data/reusables/project-management/add-column-new-project.md
deleted file mode 100644
index 17269bea7f26..000000000000
--- a/data/reusables/project-management/add-column-new-project.md
+++ /dev/null
@@ -1 +0,0 @@
-1. On your new {% data variables.projects.projects_v1_board %}, to add your first column, **Add a column**.
diff --git a/data/reusables/project-management/add-more-columns.md b/data/reusables/project-management/add-more-columns.md
deleted file mode 100644
index 2c1ee2e8c9c5..000000000000
--- a/data/reusables/project-management/add-more-columns.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Add columns to best suit your workflow.
diff --git a/data/reusables/project-management/automate-project-board-permissions.md b/data/reusables/project-management/automate-project-board-permissions.md
deleted file mode 100644
index b6de4865baf5..000000000000
--- a/data/reusables/project-management/automate-project-board-permissions.md
+++ /dev/null
@@ -1 +0,0 @@
-To set up automatic workflows for a repository {% data variables.projects.projects_v1_board %}, you must have write access to the repository. Organization owners and members can configure automatic workflows on an organization-wide {% data variables.projects.projects_v1_board %}.
diff --git a/data/reusables/project-management/cascading-permissions.md b/data/reusables/project-management/cascading-permissions.md
deleted file mode 100644
index d45274e43cfa..000000000000
--- a/data/reusables/project-management/cascading-permissions.md
+++ /dev/null
@@ -1 +0,0 @@
-If a person has multiple avenues of access to an organization {% data variables.projects.projects_v1_board %} (individually, through a team, or as an organization member), the highest {% data variables.projects.projects_v1_board %} permission level overrides lower permission levels.
diff --git a/data/reusables/project-management/choose-template.md b/data/reusables/project-management/choose-template.md
deleted file mode 100644
index f1215bff8428..000000000000
--- a/data/reusables/project-management/choose-template.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Optionally, to add a template to your {% data variables.projects.projects_v1_board %}, use the **Template:** drop-down menu and click a template.
diff --git a/data/reusables/project-management/choose-visibility.md b/data/reusables/project-management/choose-visibility.md
deleted file mode 100644
index 61825a0bb740..000000000000
--- a/data/reusables/project-management/choose-visibility.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Under "Visibility", choose to make your {% data variables.projects.projects_v1_board %} public or private.
diff --git a/data/reusables/project-management/click-create-column.md b/data/reusables/project-management/click-create-column.md
deleted file mode 100644
index 873960d01a0a..000000000000
--- a/data/reusables/project-management/click-create-column.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Click **Create column**.
diff --git a/data/reusables/project-management/click-edit-sidebar-menu-project-board.md b/data/reusables/project-management/click-edit-sidebar-menu-project-board.md
deleted file mode 100644
index 2f3bc91459c3..000000000000
--- a/data/reusables/project-management/click-edit-sidebar-menu-project-board.md
+++ /dev/null
@@ -1,3 +0,0 @@
-1. Click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}, then click **Edit**.
-
- 
diff --git a/data/reusables/project-management/click-menu.md b/data/reusables/project-management/click-menu.md
deleted file mode 100644
index 475dae7148b3..000000000000
--- a/data/reusables/project-management/click-menu.md
+++ /dev/null
@@ -1 +0,0 @@
-1. On the top-right side of the {% data variables.projects.projects_v1_board %}, click **{% octicon "three-bars" aria-hidden="true" aria-label="three-bars" %} Menu**.
diff --git a/data/reusables/project-management/click-new-project.md b/data/reusables/project-management/click-new-project.md
deleted file mode 100644
index 0c7ad05f2407..000000000000
--- a/data/reusables/project-management/click-new-project.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Click **New Project**.
diff --git a/data/reusables/project-management/collaborator-option.md b/data/reusables/project-management/collaborator-option.md
deleted file mode 100644
index 6db8ee359aec..000000000000
--- a/data/reusables/project-management/collaborator-option.md
+++ /dev/null
@@ -1 +0,0 @@
-1. In the left sidebar, click **Collaborators**.
diff --git a/data/reusables/project-management/collaborator-permissions.md b/data/reusables/project-management/collaborator-permissions.md
deleted file mode 100644
index a643bf802252..000000000000
--- a/data/reusables/project-management/collaborator-permissions.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Optionally, next to the new collaborator's name, use the drop-down menu and click the desired permission level: **Read**, **Write**, or **Admin**.
diff --git a/data/reusables/project-management/copy-project-boards.md b/data/reusables/project-management/copy-project-boards.md
deleted file mode 100644
index ff7e55419907..000000000000
--- a/data/reusables/project-management/copy-project-boards.md
+++ /dev/null
@@ -1,3 +0,0 @@
-{% ifversion fpt or ghec %}
-You can also copy a {% data variables.projects.projects_v1_board %} to reuse its customizations for similar projects. For more information, see [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/copying-a-project-board).
-{% endif %}
diff --git a/data/reusables/project-management/create-project-button.md b/data/reusables/project-management/create-project-button.md
deleted file mode 100644
index 75f6c1c4f956..000000000000
--- a/data/reusables/project-management/create-project-button.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Click **Create project**.
diff --git a/data/reusables/project-management/create-project-name-description.md b/data/reusables/project-management/create-project-name-description.md
deleted file mode 100644
index 1bf40bc6dc68..000000000000
--- a/data/reusables/project-management/create-project-name-description.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Type a name and description for your {% data variables.projects.projects_v1_board %}.
diff --git a/data/reusables/project-management/edit-in-project.md b/data/reusables/project-management/edit-in-project.md
deleted file mode 100644
index 112ef8184224..000000000000
--- a/data/reusables/project-management/edit-in-project.md
+++ /dev/null
@@ -1 +0,0 @@
-You can view and make lightweight edits to issues and pull requests within your {% data variables.projects.projects_v1_board %} by clicking on the issue or pull request's title.
diff --git a/data/reusables/project-management/edit-project-columns.md b/data/reusables/project-management/edit-project-columns.md
deleted file mode 100644
index 38665f258066..000000000000
--- a/data/reusables/project-management/edit-project-columns.md
+++ /dev/null
@@ -1,2 +0,0 @@
-> [!TIP]
-> To edit or remove a column from your {% data variables.projects.projects_v1_board %}, in the upper-right corner of the column, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}.
diff --git a/data/reusables/project-management/for-more-info-project-keyboard-shortcuts.md b/data/reusables/project-management/for-more-info-project-keyboard-shortcuts.md
deleted file mode 100644
index d72a411bb07a..000000000000
--- a/data/reusables/project-management/for-more-info-project-keyboard-shortcuts.md
+++ /dev/null
@@ -1 +0,0 @@
-For more information about keyboard shortcuts, see "{% data variables.projects.projects_v1_boards_caps %}" in [AUTOTITLE](/get-started/accessibility/keyboard-shortcuts#project-boards).
diff --git a/data/reusables/project-management/link-repos-to-project-board.md b/data/reusables/project-management/link-repos-to-project-board.md
deleted file mode 100644
index 6edf10ad9c91..000000000000
--- a/data/reusables/project-management/link-repos-to-project-board.md
+++ /dev/null
@@ -1 +0,0 @@
-You can link up to twenty-five repositories to your organization or user-owned {% data variables.projects.projects_v1_board %}. Linking repositories makes it easier to add issues and pull requests from those repositories to your {% data variables.projects.projects_v1_board %} using **{% octicon "plus" aria-hidden="true" aria-label="plus" %} Add cards** or from the issue or pull requests sidebar.
diff --git a/data/reusables/project-management/linked-repositories.md b/data/reusables/project-management/linked-repositories.md
deleted file mode 100644
index 1b64c0f70bfd..000000000000
--- a/data/reusables/project-management/linked-repositories.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Optionally, under **Linked repositories**, search for a repository you'd like to link to your {% data variables.projects.projects_v1_board %}.
diff --git a/data/reusables/project-management/name-project-board-column.md b/data/reusables/project-management/name-project-board-column.md
deleted file mode 100644
index 1b87ff54c7a3..000000000000
--- a/data/reusables/project-management/name-project-board-column.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Under "Column name", type the name of the column you want to create.
diff --git a/data/reusables/project-management/project-board-import-with-api.md b/data/reusables/project-management/project-board-import-with-api.md
deleted file mode 100644
index 0c325f55a250..000000000000
--- a/data/reusables/project-management/project-board-import-with-api.md
+++ /dev/null
@@ -1 +0,0 @@
-You can use {% data variables.product.prodname_dotcom %}'s API to import a {% data variables.projects.projects_v1_board %}. For more information, see [AUTOTITLE](/graphql/reference/mutations#importproject/).
diff --git a/data/reusables/project-management/project-board-permissions.md b/data/reusables/project-management/project-board-permissions.md
deleted file mode 100644
index 0a50a9680d45..000000000000
--- a/data/reusables/project-management/project-board-permissions.md
+++ /dev/null
@@ -1,3 +0,0 @@
-* **Read**, which gives people permission to view a {% data variables.projects.projects_v1_board %}.
-* **Write**, which gives people permission to view a {% data variables.projects.projects_v1_board %}, link repositories to a {% data variables.projects.projects_v1_board %}, and interact with a {% data variables.projects.projects_v1_board %}. For more information, see [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/linking-a-repository-to-a-project-board).
-* **Admin**, which gives people permission to view a {% data variables.projects.projects_v1_board %}, interact with a {% data variables.projects.projects_v1_board %}, manage {% data variables.projects.projects_v1_board %} settings, and manage other people's access to the {% data variables.projects.projects_v1_board %}.
diff --git a/data/reusables/project-management/project-board-visibility.md b/data/reusables/project-management/project-board-visibility.md
deleted file mode 100644
index 5aceff5fdebb..000000000000
--- a/data/reusables/project-management/project-board-visibility.md
+++ /dev/null
@@ -1 +0,0 @@
-By default, user-owned and organization-wide {% data variables.projects.projects_v1_boards %} are private and only visible to people with read, write, or admin permissions to the {% data variables.projects.projects_v1_board %}. A public {% data variables.projects.projects_v1_board %} is visible to anyone with the {% data variables.projects.projects_v1_board %}'s URL. Repository-level {% data variables.projects.projects_v1_boards %} share the visibility of their repository. That is, a private repository will have a private project, and this visibility cannot be changed.
diff --git a/data/reusables/project-management/project-note-more-options.md b/data/reusables/project-management/project-note-more-options.md
deleted file mode 100644
index 5d183f9b1875..000000000000
--- a/data/reusables/project-management/project-note-more-options.md
+++ /dev/null
@@ -1,3 +0,0 @@
-1. In the upper-right corner of the notes, click {% octicon "kebab-horizontal" aria-label="Card menu" %}.
-
- 
diff --git a/data/reusables/project-management/project-progress-locations.md b/data/reusables/project-management/project-progress-locations.md
deleted file mode 100644
index 1df598346425..000000000000
--- a/data/reusables/project-management/project-progress-locations.md
+++ /dev/null
@@ -1 +0,0 @@
-If progress tracking is enabled, a progress bar appears above the {% data variables.projects.projects_v1_board %}, on the project listing page, in the issue sidebar, and in references to the project on other {% data variables.projects.projects_v1_boards %}.
diff --git a/data/reusables/project-management/remove-collaborator.md b/data/reusables/project-management/remove-collaborator.md
deleted file mode 100644
index 4f23cd4ddbf5..000000000000
--- a/data/reusables/project-management/remove-collaborator.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Next to the collaborator you want to remove, click **X**.
diff --git a/data/reusables/project-management/resync-automation.md b/data/reusables/project-management/resync-automation.md
deleted file mode 100644
index 47285da8ff26..000000000000
--- a/data/reusables/project-management/resync-automation.md
+++ /dev/null
@@ -1 +0,0 @@
-When you close a {% data variables.projects.projects_v1_board %}, any workflow automation configured for the {% data variables.projects.projects_v1_board %} will pause. If you reopen a {% data variables.projects.projects_v1_board %}, you have the option to sync automation, which updates the position of the cards on the board according to the automation settings configured for the project. For more information, see [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/reopening-a-closed-project-board) or [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/closing-a-project-board).
diff --git a/data/reusables/project-management/select-automation-options-new-column.md b/data/reusables/project-management/select-automation-options-new-column.md
deleted file mode 100644
index 596227049e27..000000000000
--- a/data/reusables/project-management/select-automation-options-new-column.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Select the workflow automations you want to configure for the column.
diff --git a/data/reusables/project-management/select-column-preset.md b/data/reusables/project-management/select-column-preset.md
deleted file mode 100644
index 0dff0c5e2ee3..000000000000
--- a/data/reusables/project-management/select-column-preset.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Optionally, under "Automation", select an automation preset using the drop-down menu.
diff --git a/data/reusables/project-management/select-project.md b/data/reusables/project-management/select-project.md
deleted file mode 100644
index a0e602a5176a..000000000000
--- a/data/reusables/project-management/select-project.md
+++ /dev/null
@@ -1 +0,0 @@
-1. In the projects list, click the name of the {% data variables.projects.projects_v1_board %}.
diff --git a/data/reusables/project-management/use-automated-template.md b/data/reusables/project-management/use-automated-template.md
deleted file mode 100644
index 83f8d3cc65b7..000000000000
--- a/data/reusables/project-management/use-automated-template.md
+++ /dev/null
@@ -1 +0,0 @@
-You can use a {% data variables.projects.projects_v1_board %} template to create a {% data variables.projects.projects_v1_board %} with automation already configured. For more information, see [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards#templates-for-project-boards).
diff --git a/data/reusables/projects/classic-project-creation.md b/data/reusables/projects/classic-project-creation.md
deleted file mode 100644
index b972246bc816..000000000000
--- a/data/reusables/projects/classic-project-creation.md
+++ /dev/null
@@ -1,6 +0,0 @@
-{% ifversion fpt or ghec %}
-
-> [!NOTE]
-> You can only create a new {% data variables.projects.projects_v1_board %} for an organization, user, or repository that already has at least one {% data variables.projects.projects_v1_board %}. If you're unable to create a {% data variables.projects.projects_v1_board %}, create a {% data variables.projects.project_v2 %} instead. For more information, see [AUTOTITLE](/issues/planning-and-tracking-with-projects/creating-projects/creating-a-project).
-
-{% endif %}
diff --git a/data/reusables/projects/disabled-projects.md b/data/reusables/projects/disabled-projects.md
deleted file mode 100644
index 4bfe1f8cf810..000000000000
--- a/data/reusables/projects/disabled-projects.md
+++ /dev/null
@@ -1 +0,0 @@
-You only see this event in responses when {% data variables.projects.projects_v1_boards %} have been [enabled](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/disabling-project-boards-in-a-repository) in the repository.
diff --git a/data/reusables/projects/migrate-project-steps.md b/data/reusables/projects/migrate-project-steps.md
deleted file mode 100644
index 058368e7e955..000000000000
--- a/data/reusables/projects/migrate-project-steps.md
+++ /dev/null
@@ -1,4 +0,0 @@
-1. Next to the project you want to migrate, click {% octicon "kebab-horizontal" aria-label="Project menu" %}.
-1. In the menu, click **Migrate**.
-1. In the popup, select the dropdown menu, then click what you want to happen to the project after it is migrated. We recommend selecting "Close the old project" so it's clear which project is in use.
-1. Click **Start migration**.
diff --git a/data/reusables/projects/owners-can-limit-visibility-permissions.md b/data/reusables/projects/owners-can-limit-visibility-permissions.md
deleted file mode 100644
index 371959203b00..000000000000
--- a/data/reusables/projects/owners-can-limit-visibility-permissions.md
+++ /dev/null
@@ -1 +0,0 @@
-Organization owners can control the ability of organization members to create public {% data variables.projects.projects_v2_and_v1_if_create %}, or change the visibility of existing {% data variables.projects.projects_v2_and_v1 %} to public. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/allowing-project-visibility-changes-in-your-organization).
diff --git a/data/reusables/projects/project_boards_old.md b/data/reusables/projects/project_boards_old.md
deleted file mode 100644
index b2a643a23e41..000000000000
--- a/data/reusables/projects/project_boards_old.md
+++ /dev/null
@@ -1,3 +0,0 @@
-
->[!NOTE]
-{% data reusables.projects.sunset_notice_content %}
diff --git a/data/reusables/rai/copilot/copilot-chat-explain-code.md b/data/reusables/rai/copilot/copilot-chat-explain-code.md
deleted file mode 100644
index b39d99c0e8ee..000000000000
--- a/data/reusables/rai/copilot/copilot-chat-explain-code.md
+++ /dev/null
@@ -1,7 +0,0 @@
-### Explaining code and suggesting improvements
-
-{% data variables.copilot.copilot_chat_short %} can help explain selected code by generating natural language descriptions of the code's functionality and purpose. This can be useful if you want to understand the code's behavior or for non-technical stakeholders who need to understand how the code works. For example, if you select a function or code block in the code editor, {% data variables.copilot.copilot_chat_short %} can generate a natural language description of what the code does and how it fits into the overall system. This can include information such as the function's input and output parameters, its dependencies, and its purpose in the larger application.
-
-{% data variables.copilot.copilot_chat_short %} can also suggest potential improvements to selected code, such as improved handling of errors and edge cases, or changes to the logical flow to make the code more readable.
-
-By generating explanations and suggesting related documentation, {% data variables.copilot.copilot_chat_short %} may help you to understand the selected code, leading to improved collaboration and more effective software development. However, it's important to note that the generated explanations and documentation may not always be accurate or complete, so you'll need to review, and occasionally correct, {% data variables.copilot.copilot_chat_short %}'s output.
diff --git a/data/reusables/rai/copilot/copilot-chat-generate-test-cases.md b/data/reusables/rai/copilot/copilot-chat-generate-test-cases.md
deleted file mode 100644
index 44bdba4ff5c8..000000000000
--- a/data/reusables/rai/copilot/copilot-chat-generate-test-cases.md
+++ /dev/null
@@ -1,5 +0,0 @@
-### Generating unit test cases
-
-{% data variables.copilot.copilot_chat_short %} can help you write unit test cases by generating code snippets based on the code open in the editor or the code snippet you highlight in the editor. This may help you write test cases without spending as much time on repetitive tasks. For example, if you are writing a test case for a specific function, you can use {% data variables.copilot.copilot_chat_short %} to suggest possible input parameters and expected output values based on the function's signature and body. {% data variables.copilot.copilot_chat_short %} can also suggest assertions that ensure the function is working correctly, based on the code's context and semantics.
-
-{% data variables.copilot.copilot_chat_short %} can also help you write test cases for edge cases and boundary conditions that might be difficult to identify manually. For instance, {% data variables.copilot.copilot_chat_short %} can suggest test cases for error handling, null values, or unexpected input types, helping you ensure your code is robust and resilient. However, it is important to note that generated test cases may not cover all possible scenarios, and manual testing and code review are still necessary to ensure the quality of the code. For more information on generating unit test cases, see [Asking {% data variables.copilot.copilot_chat %} questions about your code](/copilot/github-copilot-chat/copilot-chat-in-ides/using-github-copilot-chat-in-your-ide#asking-github-copilot-chat-questions-about-your-code).
diff --git a/data/reusables/rai/copilot/copilot-chat-propose-fixes.md b/data/reusables/rai/copilot/copilot-chat-propose-fixes.md
deleted file mode 100644
index 87e5cbf5d407..000000000000
--- a/data/reusables/rai/copilot/copilot-chat-propose-fixes.md
+++ /dev/null
@@ -1,5 +0,0 @@
-### Proposing code fixes
-
-{% data variables.copilot.copilot_chat_short %} can propose a fix for bugs in your code by suggesting code snippets and solutions based on the context of the error or issue. This can be useful if you are struggling to identify the root cause of a bug or you need guidance on the best way to fix it. For example, if your code produces an error message or warning, {% data variables.copilot.copilot_chat_short %} can suggest possible fixes based on the error message, the code's syntax, and the surrounding code.
-
-{% data variables.copilot.copilot_chat_short %} can suggest changes to variables, control structures, or function calls that might resolve the issue and generate code snippets that can be incorporated into the codebase. However, it's important to note that the suggested fixes may not always be optimal or complete, so you'll need to review and test the suggestions.
diff --git a/data/reusables/release-notes/2025-03-03-elasticsearch-data-loss.md b/data/reusables/release-notes/2025-03-03-elasticsearch-data-loss.md
deleted file mode 100644
index 688b7fc33a76..000000000000
--- a/data/reusables/release-notes/2025-03-03-elasticsearch-data-loss.md
+++ /dev/null
@@ -1,6 +0,0 @@
-For appliances in a high availability configuration, Elasticsearch indices are deleted in two situations:
-
-* On failover
-* When running `ghe-repl-teardown ` from the primary instance
-
-All indices are recoverable, except for Audit Log indices. Since Elasticsearch itself is the source of truth for these logs, they may only be recoverable from a backup. If you need assistance, visit {% data variables.contact.contact_ent_support %}.
diff --git a/data/reusables/release-notes/2025-03-security-product-transition-bug.md b/data/reusables/release-notes/2025-03-security-product-transition-bug.md
deleted file mode 100644
index b52e48dff810..000000000000
--- a/data/reusables/release-notes/2025-03-security-product-transition-bug.md
+++ /dev/null
@@ -1 +0,0 @@
-Instances with security products enabled by default at the organization level will experience issues while upgrading from 3.14 to 3.16.0. We recommend waiting for the next 3.16 patch to upgrade. If you instead upgrade from 3.14 to 3.15, then from 3.15 to 3.16.0, the upgrade will succeed.
diff --git a/data/reusables/repositories/navigate-to-ghas-settings.md b/data/reusables/repositories/navigate-to-ghas-settings.md
deleted file mode 100644
index 270f22237e64..000000000000
--- a/data/reusables/repositories/navigate-to-ghas-settings.md
+++ /dev/null
@@ -1,2 +0,0 @@
-
-1. Under "{% data variables.product.UI_advanced_security %}", find "{% data variables.product.prodname_GHAS %}."
diff --git a/data/reusables/secret-scanning/extended-metadata-checks-note.md b/data/reusables/secret-scanning/extended-metadata-checks-note.md
deleted file mode 100644
index 40506d0bce96..000000000000
--- a/data/reusables/secret-scanning/extended-metadata-checks-note.md
+++ /dev/null
@@ -1,3 +0,0 @@
-
-> [!NOTE]
-> Starting on February 18, 2026, {% data variables.product.github %} will automatically enable extended metadata checks for repositories that have validity checks enabled. For repositories managed by security configurations, {% data variables.product.github %} will update those configurations and apply the feature to attached repositories. This is a one-time transition to help organizations benefit from enhanced metadata without manual configuration.
diff --git a/data/reusables/secret-scanning/validity-check-auto-enable.md b/data/reusables/secret-scanning/validity-check-auto-enable.md
deleted file mode 100644
index 271e36d187e7..000000000000
--- a/data/reusables/secret-scanning/validity-check-auto-enable.md
+++ /dev/null
@@ -1 +0,0 @@
-1. Under {% data variables.product.prodname_secret_scanning_caps %}, select the checkbox next to "Automatically verify if a secret is valid by sending it to the relevant partner".
diff --git a/src/frame/lib/frontmatter.ts b/src/frame/lib/frontmatter.ts
index 3f5eb65a938f..b07dd08b6779 100644
--- a/src/frame/lib/frontmatter.ts
+++ b/src/frame/lib/frontmatter.ts
@@ -66,7 +66,7 @@ export const contentTypesEnum = [
// Values supported in the docsTeamMetrics frontmatter property. Used to track
// related articles (e.g. by feature or subject) that may span different directories.
-export const docsTeamMetricsEnum = ['copilot-cli']
+export const docsTeamMetricsEnum = ['copilot-cli', 'enterprise-onboarding']
export const schema: Schema = {
type: 'object',
diff --git a/src/ghes-releases/lib/enterprise-dates.json b/src/ghes-releases/lib/enterprise-dates.json
index 209621ef3f49..e38e6092b845 100644
--- a/src/ghes-releases/lib/enterprise-dates.json
+++ b/src/ghes-releases/lib/enterprise-dates.json
@@ -241,7 +241,7 @@
},
"3.16": {
"releaseDate": "2025-02-25",
- "deprecationDate": "2026-06-02",
+ "deprecationDate": "2026-06-25",
"releaseCandidateDate": "2025-02-25",
"generalAvailabilityDate": "2025-03-11"
},
@@ -271,9 +271,9 @@
},
"3.21": {
"releaseDate": "2026-05-12",
- "deprecationDate": "2027-06-02",
+ "deprecationDate": "2027-06-11",
"releaseCandidateDate": "2026-05-12",
- "generalAvailabilityDate": "2026-06-02"
+ "generalAvailabilityDate": "2026-06-11"
},
"3.22": {
"releaseDate": "2026-08-04",
diff --git a/src/secret-scanning/data/pattern-docs/fpt/public-docs.yml b/src/secret-scanning/data/pattern-docs/fpt/public-docs.yml
index 47c64d42597b..1ba2693c4af1 100644
--- a/src/secret-scanning/data/pattern-docs/fpt/public-docs.yml
+++ b/src/secret-scanning/data/pattern-docs/fpt/public-docs.yml
@@ -456,7 +456,7 @@
isPublic: true
isPrivateWithGhas: true
hasPushProtection: true
- hasValidityCheck: false
+ hasValidityCheck: '{% ifversion ghes %}false{% else %}true{% endif %}'
hasExtendedMetadata: false
base64Supported: true
isduplicate: true
@@ -1466,7 +1466,7 @@
isPublic: false
isPrivateWithGhas: true
hasPushProtection: true
- hasValidityCheck: false
+ hasValidityCheck: true
hasExtendedMetadata: false
base64Supported: false
isduplicate: false
@@ -3240,7 +3240,7 @@
isPublic: false
isPrivateWithGhas: true
hasPushProtection: false
- hasValidityCheck: false
+ hasValidityCheck: true
hasExtendedMetadata: false
base64Supported: false
isduplicate: false
diff --git a/src/secret-scanning/data/pattern-docs/ghec/public-docs.yml b/src/secret-scanning/data/pattern-docs/ghec/public-docs.yml
index 47c64d42597b..1ba2693c4af1 100644
--- a/src/secret-scanning/data/pattern-docs/ghec/public-docs.yml
+++ b/src/secret-scanning/data/pattern-docs/ghec/public-docs.yml
@@ -456,7 +456,7 @@
isPublic: true
isPrivateWithGhas: true
hasPushProtection: true
- hasValidityCheck: false
+ hasValidityCheck: '{% ifversion ghes %}false{% else %}true{% endif %}'
hasExtendedMetadata: false
base64Supported: true
isduplicate: true
@@ -1466,7 +1466,7 @@
isPublic: false
isPrivateWithGhas: true
hasPushProtection: true
- hasValidityCheck: false
+ hasValidityCheck: true
hasExtendedMetadata: false
base64Supported: false
isduplicate: false
@@ -3240,7 +3240,7 @@
isPublic: false
isPrivateWithGhas: true
hasPushProtection: false
- hasValidityCheck: false
+ hasValidityCheck: true
hasExtendedMetadata: false
base64Supported: false
isduplicate: false