` | Per-model breakdown; each entry has `usage.inputTokens`, `usage.outputTokens`, and `totalNanoAiu` |
> [!NOTE]
-> Cost is reported in **nano-AI units** (the field is named `totalNanoAiu`). The exact conversion to AI credits and the precise meaning of premium request accounting are defined by GitHub Copilot billing, not by the SDK—treat [GitHub's Copilot billing documentation](/copilot/managing-copilot/understanding-and-managing-copilot-usage) as the source of truth and verify before surfacing currency-like values to users. The examples divide by `1e9` as a convenience, following the SI `nano` prefix; confirm this matches current billing before relying on it. The `modelMetrics` and `tokenDetails` maps are keyed by runtime strings (model IDs and token-type names) that the SDK type system does not validate.
+> Cost is reported in **nano-AI units** (the field is named `totalNanoAiu`). The exact conversion to AI credits and the precise meaning of premium request accounting are defined by GitHub Copilot billing, not by the SDK—treat [GitHub's Copilot billing documentation](/copilot/concepts/billing) as the source of truth and verify before surfacing currency-like values to users. The examples divide by `1e9` as a convenience, following the SI `nano` prefix; confirm this matches current billing before relying on it. The `modelMetrics` and `tokenDetails` maps are keyed by runtime strings (model IDs and token-type names) that the SDK type system does not validate.
{% codetabs %}
{% codetab typescript %}
diff --git a/content/copilot/how-tos/copilot-sdk/troubleshooting/debugging.md b/content/copilot/how-tos/copilot-sdk/troubleshooting/debugging.md
index 301053a71553..72d819632cd5 100644
--- a/content/copilot/how-tos/copilot-sdk/troubleshooting/debugging.md
+++ b/content/copilot/how-tos/copilot-sdk/troubleshooting/debugging.md
@@ -193,7 +193,7 @@ var client = new CopilotClient(new CopilotClientOptions
**Solution:**
-1. Install the CLI: [Installation guide](/copilot/how-tos/set-up/install-copilot-cli)
+1. Install the CLI: [Installation guide](/copilot/how-tos/copilot-cli/set-up-copilot-cli/install-copilot-cli)
1. Verify installation:
diff --git a/content/copilot/how-tos/github-copilot-app/agent-sessions.md b/content/copilot/how-tos/github-copilot-app/agent-sessions.md
index 0966bcdab42e..85195a14a5a7 100644
--- a/content/copilot/how-tos/github-copilot-app/agent-sessions.md
+++ b/content/copilot/how-tos/github-copilot-app/agent-sessions.md
@@ -39,15 +39,26 @@ The session mode controls how much autonomy the agent has. You can set the mode
You can select a model and reasoning effort from the dropdowns below the prompt field. Higher reasoning effort gives the agent more time to think through complex problems but may take longer. You can change both settings at any time during a session.
-If you choose **Auto** in the model picker, the app automatically selects the optimal model for your task based on task complexity. After the session starts, the picker next to **Auto** shows which model handled each response. For more information, see [AUTOTITLE](/copilot/concepts/auto-model-selection).
+If you choose **Auto** in the model picker, the app automatically selects the optimal model for your task based on task complexity. After the session starts, the picker next to **Auto** shows which model handled each response. For more information, see [AUTOTITLE](/copilot/concepts/models/auto-model-selection).
If you configured your own model provider in the app, those models also appear in the picker. For setup steps, see [AUTOTITLE](/copilot/how-tos/github-copilot-app/use-byok-models).
Hover over the {% octicon "info" aria-label="the info icon" %} icon in the model picker to see model details.
-## Using quick chats
+## Using chats
-**Quick chats** in the sidebar opens a conversation mode without creating a dedicated branch or worktree. Use it for brainstorming, asking questions, or exploring ideas before starting a session. Your chat history is saved and listed by conversation name.
+The **Chats** section in the sidebar opens a conversation mode without creating a dedicated branch or worktree. Use it for brainstorming, asking questions, or exploring ideas before starting a session. Your chat history is saved and listed by conversation name.
+
+To archive a chat without losing its history, right-click the chat in the sidebar to open its menu, then click **Archive chat**.
+
+## Managing sessions and chats
+
+Use **Manage sessions** to view, search, and filter sessions and chats, including archived chats. You can select multiple items to archive or delete, and restore chats that you previously archived. The view also shows separate, sortable columns for the disk space used by working files and chat history.
+
+1. Open the app settings, then select **Sessions**.
+1. Click **Manage sessions**.
+1. Search or filter to find the sessions or chats you want to manage.
+1. Select one or more sessions or chats, then archive or delete them. To restore an archived chat, find the chat, then restore it.
## Using `/security-review` in app sessions
diff --git a/content/copilot/how-tos/github-copilot-app/customize-github-copilot-app.md b/content/copilot/how-tos/github-copilot-app/customize-github-copilot-app.md
index 6c935a181dea..e9aa352eb388 100644
--- a/content/copilot/how-tos/github-copilot-app/customize-github-copilot-app.md
+++ b/content/copilot/how-tos/github-copilot-app/customize-github-copilot-app.md
@@ -41,7 +41,9 @@ For more information about MCP, see [AUTOTITLE](/copilot/how-tos/copilot-cli/cus
{% data variables.copilot.custom_agents_caps_short %} are specialized versions of {% data variables.copilot.copilot_cloud_agent %} that you can tailor to specific tasks and workflows.
-In a session, type `/agent` to choose and invoke a {% data variables.copilot.copilot_custom_agent_short %}.
+Use the agent picker dropdown in the prompt box to select a {% data variables.copilot.copilot_custom_agent_short %} before or during a session.
+
+Alternatively, type `/agent` in the prompt box to choose and invoke a {% data variables.copilot.copilot_custom_agent_short %}.
For more information, see [AUTOTITLE](/copilot/concepts/agents/cloud-agent/about-custom-agents).
diff --git a/content/copilot/how-tos/github-copilot-app/getting-started.md b/content/copilot/how-tos/github-copilot-app/getting-started.md
index 0cf581b6260f..4607b3e03e7b 100644
--- a/content/copilot/how-tos/github-copilot-app/getting-started.md
+++ b/content/copilot/how-tos/github-copilot-app/getting-started.md
@@ -75,12 +75,14 @@ To work on code, you need at least one project connected to the app. A project c
## Orienting yourself
+
The sidebar gives you access to the main areas of the app:
* **[My work](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fmywork)** — Browse and filter issues and pull requests from your repositories, check CI status, and leave reviews.
* **[Automations](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fautomations)** — Saved agent tasks that run on a schedule or on demand.
* **Search** — Search across your repositories directly from the app.
-* **Sessions** — Active agent sessions, grouped by project. This also includes **Quick chats**, which are general chat conversations.
+* **Sessions** — Active agent sessions, grouped by project.
+* **Chats** — General conversations that do not require a dedicated branch or workspace.
## Next steps
diff --git a/content/copilot/how-tos/github-copilot-app/managing-issues-and-pull-requests.md b/content/copilot/how-tos/github-copilot-app/managing-issues-and-pull-requests.md
index cfa307a90649..c3afd562b464 100644
--- a/content/copilot/how-tos/github-copilot-app/managing-issues-and-pull-requests.md
+++ b/content/copilot/how-tos/github-copilot-app/managing-issues-and-pull-requests.md
@@ -17,6 +17,12 @@ category:
Open **[My work](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fmywork)** in the sidebar to see your issues and pull requests in one place. The view is organized into sections—by default, **All**, **Active**, **Review requests**, and **Done**. You can edit the default sections or add new ones with your own filters. Use the search bar within any section to find items by keyword or qualifiers like `label:bug`.
+## Creating an issue or pull request from a session
+
+When you ask an agent in the app to create an issue, the agent chooses a repository issue template based on the type of issue. To use a particular template, specify it in your prompt.
+
+When you ask an agent to create a pull request, it also follows the repository's pull request template.
+
## Starting a session from an issue
1. Open **[My work](https://github.com/copilot/app/launch?open=ghapp%3A%2F%2Fmywork)** in the sidebar.
diff --git a/content/copilot/how-tos/github-copilot-app/use-byok-models.md b/content/copilot/how-tos/github-copilot-app/use-byok-models.md
index 264be63c1fdd..c1dc52a7d273 100644
--- a/content/copilot/how-tos/github-copilot-app/use-byok-models.md
+++ b/content/copilot/how-tos/github-copilot-app/use-byok-models.md
@@ -20,7 +20,7 @@ You can configure the {% data variables.copilot.github_copilot_app %} to use you
You must sign in with a {% data variables.product.github %} account to use the app, but you do not need a {% data variables.product.prodname_copilot_short %} plan if you use your own model provider. If you do have a {% data variables.product.prodname_copilot_short %} plan, you can use both your own model provider and {% data variables.product.github %}-hosted models in the same app.
> [!NOTE]
-> This article is for users who want to configure their own LLM provider settings on their local machine. To set up custom models for users in an organization or enterprise, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/use-your-own-api-keys) and [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys).
+> This article is for users who want to configure their own LLM provider settings on their local machine. To set up custom models for users in an organization or enterprise, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-organization/enable-custom-models) and [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/enable-custom-models).
## Supported providers
diff --git a/content/copilot/how-tos/github-copilot-app/using-automations.md b/content/copilot/how-tos/github-copilot-app/using-automations.md
index 12a38ac10453..91bce8c3fd60 100644
--- a/content/copilot/how-tos/github-copilot-app/using-automations.md
+++ b/content/copilot/how-tos/github-copilot-app/using-automations.md
@@ -43,18 +43,25 @@ To use cloud {% data variables.copilot.copilot_automations %}, make sure the fol
## Creating an {% data variables.copilot.copilot_automation %}
1. Click **New automation** in the top-right corner.
-1. Enter a **name** for the {% data variables.copilot.copilot_automation %}.
-1. Select one or more **triggers** that determine when the {% data variables.copilot.copilot_automation %} runs:
-
- * **Manual**: Run the {% data variables.copilot.copilot_automation %} manually.
- * **On a schedule**: choose a recurring interval, either hourly, daily, or weekly.
- * **When an issue is created**: the {% data variables.copilot.copilot_automation %} runs each time an issue is opened in the repository. You can add a search query filter for specific issues.
+1. Enter a name for the {% data variables.copilot.copilot_automation %}.
+1. Select a **Trigger** from the dropdown. Selecting a trigger will reveal additional fields for you to populate.
+
+ * **Manual**: Run the {% data variables.copilot.copilot_automation %} only when you start it.
+ * **Hourly**: Run the {% data variables.copilot.copilot_automation %} every hour.
+ * **Daily**: Choose one or more hours and a minute. The {% data variables.copilot.copilot_automation %} runs at each selected time.
+ * **Weekly**: Choose one or more days of the week and a time of day.
+ * **CRON**: For a local {% data variables.copilot.copilot_automation %}, enter a custom CRON expression. The app validates the expression and shows a human-readable preview of the schedule.
+ * **Issue**: Choose the repository event that triggers the {% data variables.copilot.copilot_automation %}, such as an issue being created. You can add a search query to limit which issues trigger it.
+ * **Pull request**: Choose the repository event that triggers the {% data variables.copilot.copilot_automation %}, such as a pull request being opened or new commits being pushed to it. You can add filters to limit which pull requests trigger it.
+
+ To configure more than one trigger, click **Add another trigger**. The {% data variables.copilot.copilot_automation %} runs when any of its triggers occur.
1. Optionally, enable **Run in the cloud** to let the {% data variables.copilot.copilot_automation %} run in a cloud environment, allowing the {% data variables.copilot.copilot_automation %} to run even when your computer is off.
- For cloud {% data variables.copilot.copilot_automations %}, you can also use the **Tools** dropdown to select the tools {% data variables.product.prodname_copilot_short %} can use when the automation runs, such as pushing changes, updating issue labels, or creating a pull request. Select only the tools the task requires. The tools you select control what actions {% data variables.product.prodname_copilot_short %} can take in your repository.
-1. In the **prompt** field, describe the task you want {% data variables.product.prodname_copilot_short %} to perform each time the {% data variables.copilot.copilot_automation %} runs.
-1. Optionally, select the **project** and **model** you want {% data variables.product.prodname_copilot_short %} to use.
-1. Click **Create** to save, or select **Create and run** to save and test the {% data variables.copilot.copilot_automation %} immediately.
+ For a cloud {% data variables.copilot.copilot_automation %}, use the **Tools** dropdown to select the tools {% data variables.product.prodname_copilot_short %} can use, such as pushing changes, updating issue labels, or creating a pull request. Select only the tools the task requires.
+1. In the prompt box, describe the task you want {% data variables.product.prodname_copilot_short %} to perform each time the {% data variables.copilot.copilot_automation %} runs. You can type `/` to use an available skill.
+1. Use the controls below the prompt box to select the model, reasoning effort, and agent for the {% data variables.copilot.copilot_automation %}.
+1. Click **Select project**, then choose the project where the {% data variables.copilot.copilot_automation %} will run.
+1. Click **Create** to save the {% data variables.copilot.copilot_automation %}. To save and test it immediately, open the dropdown next to **Create**, then click **Create and run**.
## Running an {% data variables.copilot.copilot_automation %} on demand
diff --git a/content/copilot/how-tos/use-copilot-agents/cloud-agent/troubleshoot-cloud-agent.md b/content/copilot/how-tos/use-copilot-agents/cloud-agent/troubleshoot-cloud-agent.md
index 8a6bd4110ae8..51964014c6ce 100644
--- a/content/copilot/how-tos/use-copilot-agents/cloud-agent/troubleshoot-cloud-agent.md
+++ b/content/copilot/how-tos/use-copilot-agents/cloud-agent/troubleshoot-cloud-agent.md
@@ -103,7 +103,7 @@ If {% data variables.product.prodname_copilot_short %} tries to make a request w

-For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall).
+For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall).
## {% data variables.product.prodname_copilot_short %} is not picking up attached screenshots
diff --git a/content/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review.md b/content/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review.md
index 18a297626263..a3361b40ed62 100644
--- a/content/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review.md
+++ b/content/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review.md
@@ -45,7 +45,7 @@ These instructions explain how to use {% data variables.copilot.copilot_code-rev

- {% data variables.product.prodname_copilot_short %} always leaves a "Comment" review, not an "Approve" review or a "Request changes" review. This means that {% data variables.product.prodname_copilot_short %}'s reviews do not count toward required approvals for the pull request, and {% data variables.product.prodname_copilot_short %}'s reviews will not block merging changes. For more details, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews).
+ {% data variables.product.prodname_copilot_short %} always leaves a "Comment" review, not an "Approve" review or a "Request changes" review. This means that {% data variables.product.prodname_copilot_short %}'s reviews do not count toward required approvals for the pull request, and {% data variables.product.prodname_copilot_short %}'s reviews will not block merging changes. For more details, see [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/approving-a-pull-request-with-required-reviews).
1. {% data variables.product.prodname_copilot_short %}'s review comments behave like review comments from humans. You can add reactions to them, comment on them, resolve them and hide them.
@@ -72,7 +72,7 @@ For more information, see [AUTOTITLE](/copilot/concepts/agents/code-review#revie
Where possible, {% data variables.product.prodname_copilot_short %}'s feedback includes suggested changes which you can apply with a couple of clicks.
-If you're happy with the changes, you can accept a single suggestion from {% data variables.product.prodname_copilot_short %} and commit it, or accept a group of suggestions together in a single commit. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request).
+If you're happy with the changes, you can accept a single suggestion from {% data variables.product.prodname_copilot_short %} and commit it, or accept a group of suggestions together in a single commit. For more information, see [AUTOTITLE](/pull-requests/how-tos/review-pull-requests/incorporating-feedback-in-your-pull-request).
You can also invoke {% data variables.copilot.copilot_cloud_agent %} to implement suggested changes. To do this, you must:
@@ -83,7 +83,7 @@ You can also invoke {% data variables.copilot.copilot_cloud_agent %} to implemen
When you push changes to a pull request that {% data variables.product.prodname_copilot_short %} has reviewed, it won't automatically re-review your changes unless you've configured it to review new pushes after enabling automatic reviews.
-To manually request a re-review from {% data variables.product.prodname_copilot_short %}, click the {% octicon "sync" aria-label="Re-request review" %} button next to {% data variables.product.prodname_copilot_short %}'s name in the **Reviewers** menu. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review).
+To manually request a re-review from {% data variables.product.prodname_copilot_short %}, click the {% octicon "sync" aria-label="Re-request review" %} button next to {% data variables.product.prodname_copilot_short %}'s name in the **Reviewers** menu. For more information, see [AUTOTITLE](/pull-requests/how-tos/create-pull-requests/requesting-a-pull-request-review).
To automatically request re-reviews from {% data variables.product.prodname_copilot_short %} on every push, enable automatic code review for the repository and select **Review new pushes** in the ruleset settings. For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/set-up-copilot/configure-automatic-review#configuring-automatic-code-review-for-repositories-in-an-organization).
@@ -115,7 +115,7 @@ You can use either of the following files to configure {% data variables.copilot
* `.github/workflows/copilot-setup-steps.yml`: If you have already configured this file for {% data variables.copilot.copilot_cloud_agent %}, {% data variables.copilot.copilot_code-review_short %} will use the same configuration by default.
* `.github/workflows/copilot-code-review.yml`: We recommend creating this file if you want to configure {% data variables.copilot.copilot_code-review_short %}'s environment independently of {% data variables.copilot.copilot_cloud_agent %}. If this file is present in your repository, it is used for {% data variables.copilot.copilot_code-review_short %} instead of `copilot-setup-steps.yml`.
-You can also configure firewall rules to control the domains and URLs that {% data variables.copilot.copilot_code-review_short %} can access, at both the organization and repository level. These settings are configured separately from {% data variables.copilot.copilot_cloud_agent %}'s firewall settings, in their own section of the same "Internet access" tab. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall).
+You can also configure firewall rules to control the domains and URLs that {% data variables.copilot.copilot_code-review_short %} can access, at both the organization and repository level. These settings are configured separately from {% data variables.copilot.copilot_cloud_agent %}'s firewall settings, in their own section of the same "Internet access" tab. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall).
## Providing feedback on {% data variables.product.prodname_copilot_short %}'s reviews
diff --git a/content/copilot/reference/copilot-allowlist-reference.md b/content/copilot/reference/copilot-allowlist-reference.md
index d39fea8cdb5f..c7d6a9b40187 100644
--- a/content/copilot/reference/copilot-allowlist-reference.md
+++ b/content/copilot/reference/copilot-allowlist-reference.md
@@ -103,7 +103,7 @@ The {% data variables.copilot.copilot_cloud_agent %} includes a built-in firewal
* Common certificate authorities (to allow SSL certificates to be validated).
* Hosts used to download web browsers for the Playwright MCP server.
-For more information about configuring the {% data variables.copilot.copilot_cloud_agent %} firewall, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall).
+For more information about configuring the {% data variables.copilot.copilot_cloud_agent %} firewall, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall).
The allowlist allows access to the following hosts:
diff --git a/content/copilot/responsible-use/agents.md b/content/copilot/responsible-use/agents.md
index 6ec40a2541df..e75a8d5ac80f 100644
--- a/content/copilot/responsible-use/agents.md
+++ b/content/copilot/responsible-use/agents.md
@@ -340,7 +340,7 @@ For additional guidance on the responsible use of Copilot agentic features, we r
* [AUTOTITLE](/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review)
* [AUTOTITLE](/copilot/tutorials/cloud-agent/get-the-best-results)
* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-environment)
-* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall)
+* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall)
* [AUTOTITLE](/copilot/how-tos/copilot-sdk/getting-started)
* [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/configure-mcp-servers)
* [AUTOTITLE](/copilot/concepts/agents/copilot-cli/about-copilot-cli)
diff --git a/content/copilot/tutorials/cloud-agent/give-access-to-resources.md b/content/copilot/tutorials/cloud-agent/give-access-to-resources.md
index 8ccae1e703da..ca0fae4e8c09 100644
--- a/content/copilot/tutorials/cloud-agent/give-access-to-resources.md
+++ b/content/copilot/tutorials/cloud-agent/give-access-to-resources.md
@@ -100,5 +100,5 @@ Now you have seen how access to resources is controlled at the repository and or
1. **Choose which repositories have access** to {% data variables.copilot.copilot_cloud_agent %}. If you're concerned about a specific repository, you can block it for all users.
1. **Consider who gets admin access** to these repositories. You can control this at the organization level by creating a team with the **All-repository admin** custom role. These users will be able to manage configuration _settings_, such as MCP configuration and Agents secrets and variables, in every repository.
1. **Use rulesets and CODEOWNERS files** to control edits of configuration _files_, such as `copilot-setup-steps.yml`, which anyone with write access can edit by default.
-1. **Review the default firewall**. The firewall doesn't affect connections to MCP servers or setup steps in `copilot-setup-steps.yml`, but it does limit {% data variables.product.prodname_copilot_short %}'s access to the Internet during task execution. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-cloud-agent/customize-the-agent-firewall).
+1. **Review the default firewall**. The firewall doesn't affect connections to MCP servers or setup steps in `copilot-setup-steps.yml`, but it does limit {% data variables.product.prodname_copilot_short %}'s access to the Internet during task execution. See [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/customize-the-firewall).
1. **Define plugin standards**. Plugins are installable packages that extend {% data variables.product.prodname_copilot_short %} with reusable agents, skills, hooks, and integrations. You can control which plugins and marketplaces are permitted in an enterprise's `{% data variables.copilot.managed_setting_file %}` file. See [AUTOTITLE](/copilot/concepts/agents/about-enterprise-plugin-standards).
diff --git a/content/copilot/tutorials/optimize-code-reviews.md b/content/copilot/tutorials/optimize-code-reviews.md
index a5cbf7b748ae..2b3b80f78a89 100644
--- a/content/copilot/tutorials/optimize-code-reviews.md
+++ b/content/copilot/tutorials/optimize-code-reviews.md
@@ -211,7 +211,7 @@ So far, {% data variables.copilot.copilot_code-review_short %} has provided per-
When {% data variables.product.prodname_code_quality_short %} is enabled, it posts reliability and maintainability findings as inline comments on the pull request, each with a one-click, {% data variables.product.prodname_copilot_short %}-powered autofix you can apply directly. It also reports coverage metrics that show whether the change maintains or reduces reported code coverage from your test suite compared to the default branch. If you want to enforce these standards, rulesets can require rules-based findings to be resolved and coverage thresholds to be met before merge.
-For more information, see [AUTOTITLE](/code-security/concepts/about-code-quality).
+For more information, see [AUTOTITLE](/code-security/concepts/code-quality/code-quality).
## Optimized reviews with {% data variables.product.prodname_copilot_short %}
diff --git a/content/copilot/tutorials/review-ai-generated-code.md b/content/copilot/tutorials/review-ai-generated-code.md
index 2718f4c2e9ed..b951e4de001b 100644
--- a/content/copilot/tutorials/review-ai-generated-code.md
+++ b/content/copilot/tutorials/review-ai-generated-code.md
@@ -22,7 +22,7 @@ Always run automated tests and static analysis tools first.
* Make sure the code compiles and all tests pass. Check for any new warnings or errors.
* Use tools like [{% data variables.product.prodname_codeql %}](https://codeql.github.com/) and [{% data variables.product.prodname_dependabot %}](/code-security/concepts/supply-chain-security/dependabot-version-updates) to catch vulnerabilities and dependency issues.
-* Use {% data variables.product.prodname_code_quality %} to catch reliability and maintainability issues and see code coverage. [AUTOTITLE](/code-security/concepts/about-code-quality).
+* Use {% data variables.product.prodname_code_quality %} to catch reliability and maintainability issues and see code coverage. [AUTOTITLE](/code-security/concepts/code-quality/code-quality).
* See [AUTOTITLE](/copilot/tutorials/copilot-cookbook/testing-code/generate-unit-tests) and [AUTOTITLE](/copilot/tutorials/copilot-cookbook/testing-code/create-end-to-end-tests) for examples of verifying code with {% data variables.product.prodname_copilot_short %}.
### Example prompts
diff --git a/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/govern-for-adoption.md b/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/govern-for-adoption.md
index 219567311924..694929e9995e 100644
--- a/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/govern-for-adoption.md
+++ b/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/govern-for-adoption.md
@@ -54,4 +54,4 @@ This approach offers several advantages:
* **Cost management**: Align with existing payment methods, contracts, credits, or negotiated rates.
* **Visibility and control**: Monitor usage through your provider's existing dashboards and billing.
-For setup instructions, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys).
+For setup instructions, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/enable-custom-models).
diff --git a/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/pilot-a-feature-or-model.md b/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/pilot-a-feature-or-model.md
index 0efa78c6ac8b..580c83697efe 100644
--- a/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/pilot-a-feature-or-model.md
+++ b/content/copilot/tutorials/roll-out-at-scale/govern-at-scale/pilot-a-feature-or-model.md
@@ -15,7 +15,7 @@ This tutorial walks you through running a pilot end to end: setting a budget, en
## Before you start your pilot
-Before you enable anything, make sure you've evaluated the feature or model and confirmed it meets your compliance requirements. See [AUTOTITLE](/copilot/concepts/preparing-for-new-features-and-models).
+Before you enable anything, make sure you've evaluated the feature or model and confirmed it meets your compliance requirements. See [AUTOTITLE](/copilot/concepts/learning-about-new-features-and-models).
If you're not sure whether a feature or model is safe to enable, check with security and compliance teams at your company before you start the pilot.
diff --git a/content/get-started/learning-about-github/about-github-advanced-security.md b/content/get-started/learning-about-github/about-github-advanced-security.md
index 02a37c1bc9be..354e80f8c8c6 100644
--- a/content/get-started/learning-about-github/about-github-advanced-security.md
+++ b/content/get-started/learning-about-github/about-github-advanced-security.md
@@ -130,7 +130,7 @@ If you are on a {% data variables.product.prodname_team %} or {% data variables.
## Managing {% data variables.product.prodname_GHAS %}
-Enterprise owners can manage {% data variables.product.prodname_GHAS %} licensing and access for their enterprise, including disabling {% data variables.product.prodname_GHAS %} across all repositories and preventing future re-enablement. See [AUTOTITLE](/billing/how-tos/products/manage-ghas-licenses#disabling-github-advanced-security-in-an-enterprise).
+Enterprise owners can manage {% data variables.product.prodname_GHAS %} licensing and access for their enterprise, including disabling {% data variables.product.prodname_GHAS %} across all repositories and preventing future re-enablement. See [AUTOTITLE](/billing/how-tos/products/disable-ghas-for-enterprise).
For information about managing your {% data variables.product.prodname_GHAS %} license, see [AUTOTITLE](/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/managing-your-github-advanced-security-license-usage).
diff --git a/data/features/push-rulesets.yml b/data/features/push-rulesets.yml
deleted file mode 100644
index 5c5f5448a5ec..000000000000
--- a/data/features/push-rulesets.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-# Issue 14025
-# Push rulesets for prohibiting certain files from entering a private or internal repository, and/or paths in the repository
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '>=3.17'
diff --git a/data/reusables/code-quality/workflow-generation.md b/data/reusables/code-quality/workflow-generation.md
deleted file mode 100644
index 5d9ac3d4c574..000000000000
--- a/data/reusables/code-quality/workflow-generation.md
+++ /dev/null
@@ -1 +0,0 @@
-You can use the automatic setup option to generate a workflow with an AI-powered agent, or configure your workflow manually. See [AUTOTITLE](/code-security/how-tos/maintain-quality-code/set-up-code-coverage).
diff --git a/data/reusables/copilot/model-compliance/us-models.md b/data/reusables/copilot/model-compliance/us-models.md
index 4d52eec22a12..95a3197640d7 100644
--- a/data/reusables/copilot/model-compliance/us-models.md
+++ b/data/reusables/copilot/model-compliance/us-models.md
@@ -12,4 +12,5 @@
* Claude Sonnet 5
* Claude Opus 4.6
* Claude Opus 4.8
+* Claude Opus 5
* MAI-Code-1-Flash
diff --git a/data/reusables/enterprise-onboarding/inviting-users-to-your-enterprise.md b/data/reusables/enterprise-onboarding/inviting-users-to-your-enterprise.md
deleted file mode 100644
index 02925d9b95eb..000000000000
--- a/data/reusables/enterprise-onboarding/inviting-users-to-your-enterprise.md
+++ /dev/null
@@ -1,6 +0,0 @@
-{% data reusables.enterprise-accounts.access-enterprise %}
-{% data reusables.enterprise-accounts.people-tab %}
-1. On the "Members" page, click **Invite member**.
-1. Search for the users you want to invite, then click **Invite**.
-
-After you invite someone to join the enterprise account, they must accept the emailed invitation before they can access the enterprise account. Pending invitations will expire after 7 days.
diff --git a/data/reusables/enterprise/about-ghec.md b/data/reusables/enterprise/about-ghec.md
deleted file mode 100644
index 5252c346fab0..000000000000
--- a/data/reusables/enterprise/about-ghec.md
+++ /dev/null
@@ -1 +0,0 @@
-{% data variables.product.prodname_ghe_cloud %} is designed for large businesses or teams who collaborate on {% data variables.product.github %}.
diff --git a/data/reusables/enterprise/emus-trial-content.md b/data/reusables/enterprise/emus-trial-content.md
deleted file mode 100644
index 9d5605cc69f1..000000000000
--- a/data/reusables/enterprise/emus-trial-content.md
+++ /dev/null
@@ -1,6 +0,0 @@
-### Enterprises with managed users
-
-If you choose an {% data variables.enterprise.prodname_emu_enterprise %}, you will also choose whether to create an enterprise on {% data variables.product.prodname_dotcom_the_website %} or in a specific data residency region on {% data variables.enterprise.data_residency_site %}.
-
-* Trials on **{% data variables.product.prodname_dotcom_the_website %}** include free access to {% data variables.product.prodname_GHAS %} features. Your enterprise will be hosted in the US.
-* Trials on **{% data variables.enterprise.data_residency_site %}** allow you to meet specific regulatory requirements and choose a unique subdomain for your enterprise. However, there are some features that are not included in the trial. See [AUTOTITLE](/enterprise-cloud@latest/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency#currently-unavailable-features).
diff --git a/data/reusables/organizations/models-development.md b/data/reusables/organizations/models-development.md
deleted file mode 100644
index 5ffe396b8a91..000000000000
--- a/data/reusables/organizations/models-development.md
+++ /dev/null
@@ -1 +0,0 @@
-1. {% data reusables.user-settings.code-planning-automation %} click the **{% octicon "ai-model" aria-hidden="true" aria-label="ai-model" %} Models** dropdown. Then click **Development**.
diff --git a/data/tables/copilot/auto-model-selection.yml b/data/tables/copilot/auto-model-selection.yml
index f8d304f126b0..395d90358523 100644
--- a/data/tables/copilot/auto-model-selection.yml
+++ b/data/tables/copilot/auto-model-selection.yml
@@ -43,6 +43,30 @@
cli: true
app: true
+- name: GPT-5.5
+ cloud_agent: false
+ chat: true
+ cli: true
+ app: false
+
+- name: GPT-5.6 Luna
+ cloud_agent: false
+ chat: true
+ cli: true
+ app: false
+
+- name: GPT-5.6 Sol
+ cloud_agent: false
+ chat: true
+ cli: true
+ app: false
+
+- name: GPT-5.6 Terra
+ cloud_agent: false
+ chat: true
+ cli: true
+ app: false
+
# Anthropic
- name: Claude Haiku 4.5
cloud_agent: false
@@ -50,28 +74,27 @@
cli: true
app: true
+- name: Claude Opus 5
+ cloud_agent: false
+ chat: true
+ cli: true
+ app: false
+
- name: Claude Sonnet 4.6
cloud_agent: true
chat: true
cli: true
app: true
-# Microsoft
-- name: MAI-Code-1-Flash
- cloud_agent: true
+- name: Claude Sonnet 5
+ cloud_agent: false
chat: true
cli: true
- app: true
+ app: false
+# Microsoft
- name: MAI-Code-1.1-Flash
cloud_agent: true
chat: true
cli: true
app: true
-
-# Fine-tuned OAI models
-- name: Raptor mini
- cloud_agent: false
- chat: true
- cli: false
- app: false
diff --git a/src/data-directory/lib/get-data.ts b/src/data-directory/lib/get-data.ts
index c585c9c25875..65b3d8d8bc91 100644
--- a/src/data-directory/lib/get-data.ts
+++ b/src/data-directory/lib/get-data.ts
@@ -28,7 +28,10 @@ const DEBUG_JIT_DATA_READS = Boolean(JSON.parse(process.env.DEBUG_JIT_DATA_READS
// English for.
// Having this is safer than trying to wrangle the translations to NOT
// have them translated.
-const ALWAYS_ENGLISH_YAML_FILES = new Set(['data/variables/product.yml'])
+const ALWAYS_ENGLISH_YAML_FILES = new Set([
+ 'data/variables/product.yml',
+ 'data/variables/copilot.yml',
+])
const ALWAYS_ENGLISH_MD_FILES = new Set([
'data/reusables/ssh/fingerprints.md',
'data/reusables/ssh/known_hosts.md',
diff --git a/src/graphql/data/fpt/changelog.json b/src/graphql/data/fpt/changelog.json
index c84b778cce8d..a012e77740cf 100644
--- a/src/graphql/data/fpt/changelog.json
+++ b/src/graphql/data/fpt/changelog.json
@@ -1,4 +1,18 @@
[
+ {
+ "schemaChanges": [
+ {
+ "title": "The GraphQL schema includes these changes:",
+ "changes": [
+ "Argument excludeUserLinked: Boolean (with default value) added to field Issue.closedByPullRequestsReferences
",
+ "Argument excludeUserLinked: Boolean (with default value) added to field PullRequest.closingIssuesReferences
"
+ ]
+ }
+ ],
+ "previewChanges": [],
+ "upcomingChanges": [],
+ "date": "2026-08-18"
+ },
{
"schemaChanges": [
{
diff --git a/src/graphql/data/fpt/schema-issues.json b/src/graphql/data/fpt/schema-issues.json
index b87484eb9db7..7dfefa34f677 100644
--- a/src/graphql/data/fpt/schema-issues.json
+++ b/src/graphql/data/fpt/schema-issues.json
@@ -2803,6 +2803,16 @@
"href": "/graphql/reference/other#scalar-string"
}
},
+ {
+ "name": "excludeUserLinked",
+ "defaultValue": false,
+ "description": "Exclude manually linked PRs.
",
+ "type": {
+ "name": "Boolean",
+ "id": "boolean",
+ "href": "/graphql/reference/other#scalar-boolean"
+ }
+ },
{
"name": "first",
"description": "Returns the first n elements from the list.
",
diff --git a/src/graphql/data/fpt/schema-pulls.json b/src/graphql/data/fpt/schema-pulls.json
index 30bf004153a7..64fffeec3665 100644
--- a/src/graphql/data/fpt/schema-pulls.json
+++ b/src/graphql/data/fpt/schema-pulls.json
@@ -2938,6 +2938,16 @@
"href": "/graphql/reference/other#scalar-string"
}
},
+ {
+ "name": "excludeUserLinked",
+ "defaultValue": false,
+ "description": "Exclude manually linked Issues.
",
+ "type": {
+ "name": "Boolean",
+ "id": "boolean",
+ "href": "/graphql/reference/other#scalar-boolean"
+ }
+ },
{
"name": "first",
"description": "Returns the first n elements from the list.
",
diff --git a/src/graphql/data/fpt/schema.docs.graphql b/src/graphql/data/fpt/schema.docs.graphql
index a984c46c8e0b..29c6962045b0 100644
--- a/src/graphql/data/fpt/schema.docs.graphql
+++ b/src/graphql/data/fpt/schema.docs.graphql
@@ -20155,6 +20155,11 @@ type Issue implements Assignable &
"""
before: String
+ """
+ Exclude manually linked PRs
+ """
+ excludeUserLinked: Boolean = false
+
"""
Returns the first _n_ elements from the list.
"""
@@ -44339,6 +44344,11 @@ type PullRequest implements Assignable &
"""
before: String
+ """
+ Exclude manually linked Issues
+ """
+ excludeUserLinked: Boolean = false
+
"""
Returns the first _n_ elements from the list.
"""
diff --git a/src/graphql/data/ghec/schema-issues.json b/src/graphql/data/ghec/schema-issues.json
index b87484eb9db7..7dfefa34f677 100644
--- a/src/graphql/data/ghec/schema-issues.json
+++ b/src/graphql/data/ghec/schema-issues.json
@@ -2803,6 +2803,16 @@
"href": "/graphql/reference/other#scalar-string"
}
},
+ {
+ "name": "excludeUserLinked",
+ "defaultValue": false,
+ "description": "Exclude manually linked PRs.
",
+ "type": {
+ "name": "Boolean",
+ "id": "boolean",
+ "href": "/graphql/reference/other#scalar-boolean"
+ }
+ },
{
"name": "first",
"description": "Returns the first n elements from the list.
",
diff --git a/src/graphql/data/ghec/schema-pulls.json b/src/graphql/data/ghec/schema-pulls.json
index 30bf004153a7..64fffeec3665 100644
--- a/src/graphql/data/ghec/schema-pulls.json
+++ b/src/graphql/data/ghec/schema-pulls.json
@@ -2938,6 +2938,16 @@
"href": "/graphql/reference/other#scalar-string"
}
},
+ {
+ "name": "excludeUserLinked",
+ "defaultValue": false,
+ "description": "Exclude manually linked Issues.
",
+ "type": {
+ "name": "Boolean",
+ "id": "boolean",
+ "href": "/graphql/reference/other#scalar-boolean"
+ }
+ },
{
"name": "first",
"description": "Returns the first n elements from the list.
",
diff --git a/src/graphql/data/ghec/schema.docs.graphql b/src/graphql/data/ghec/schema.docs.graphql
index a984c46c8e0b..29c6962045b0 100644
--- a/src/graphql/data/ghec/schema.docs.graphql
+++ b/src/graphql/data/ghec/schema.docs.graphql
@@ -20155,6 +20155,11 @@ type Issue implements Assignable &
"""
before: String
+ """
+ Exclude manually linked PRs
+ """
+ excludeUserLinked: Boolean = false
+
"""
Returns the first _n_ elements from the list.
"""
@@ -44339,6 +44344,11 @@ type PullRequest implements Assignable &
"""
before: String
+ """
+ Exclude manually linked Issues
+ """
+ excludeUserLinked: Boolean = false
+
"""
Returns the first _n_ elements from the list.
"""
diff --git a/src/links/README.md b/src/links/README.md
index 14e62b17a33b..1d561906d99a 100644
--- a/src/links/README.md
+++ b/src/links/README.md
@@ -5,6 +5,7 @@ This module contains the tooling and components responsible for link integrity,
## Purpose & Scope
The `src/links` directory manages:
+
- **Link Validation**: Ensuring all internal and external links in the documentation are valid.
- **Link Maintenance**: Automated tools to update links when pages are moved or renamed.
- **User Experience**: Components like "Hover Cards" that provide context when users hover over internal links.
@@ -12,7 +13,7 @@ The `src/links` directory manages:
## Architecture
-### Components
+### Components (`src/links/components`)
- **`LinkPreviewPopover.tsx`**: A React component that renders a preview card when a user hovers over a link. It handles:
- **Delay Logic**: Prevents the popover from appearing during accidental mouse-overs.
@@ -20,20 +21,23 @@ The `src/links` directory manages:
### Libraries (`src/links/lib`)
+- **`extract-links.ts`**: Pulls links out of content files. Shared by all the checkers.
+- **`page-anchors.ts`** and **`heading-anchors.ts`**: Compute the anchors a page exposes, so `#fragment` links can be validated. `heading-anchors.ts` strips inline Markdown from a heading before computing its slug.
+- **`cross-page-anchors.ts`**: Tracks `/some/path#fragment` links found while scanning, so they can be resolved once every page's anchors are known.
+- **`validate-docs-urls.ts`**: Validates URLs that point at docs.github.com.
+- **`validate-redirected-fragment.ts`**: When `update-internal-links` rewrites a link's path via a redirect, checks that the original fragment still exists at the new destination.
+- **`link-report.ts`**: Builds the reports the checkers post to pull requests and issues.
- **`update-internal-links.ts`**: The core logic for refactoring links. It parses Markdown/Liquid, identifies links, and updates their `href` or title based on a provided map of changes. It handles:
- Stripping Liquid conditionals to find the "pure" link.
- Updating frontmatter links.
- Handling anchors and query parameters.
-- **`excluded-links.ts`**: Configuration for links that should be ignored by validators (e.g., localhost links, specific example domains).
+- **`excluded-links.ts`** and **`excluded-links.yml`**: Configuration for links that should be ignored by validators (e.g., localhost links, specific example domains).
### Scripts (`src/links/scripts`)
-- **`rendered-content-link-checker.ts`**: A comprehensive CLI tool that:
- - Renders content pages to HTML.
- - Parses the HTML to find all `` and `
` tags.
- - Validates internal links (checking for 404s, broken anchors).
- - Validates external links (with caching and retry logic).
- - Reports flaws and can comment directly on GitHub Pull Requests.
+- **`check-links-pr.ts`**: Fast validation of internal links in changed files. Built to finish in under 10 minutes on a typical PR.
+- **`check-links-internal.ts`**: Comprehensive check of all internal links across every version and language. Runs on a schedule.
+- **`check-links-external.ts`**: Validates external URLs, with aggressive caching to keep the cost down. Runs on a schedule.
- **`check-github-github-links.ts`**: Ensures that we don't accidentally link to private `github/github` URLs in public documentation.
- **`update-internal-links.ts`**: A CLI wrapper around the library function to perform bulk updates on the content files.
@@ -41,16 +45,34 @@ The `src/links` directory manages:
### Validating Links
-To run the link checker locally:
+Which command you want depends on what you are checking.
+
+Internal links in the files you changed:
+
+```bash
+npm run check-links-pr
+npm run check-links-pr -- --files content/actions/index.md content/repos/index.md
+```
+
+All internal links, across all versions and languages. This one is slow:
+
+```bash
+npm run check-links-internal
+npm run check-links-internal -- --version free-pro-team@latest --language en
+```
+
+External links:
```bash
-npm run rendered-content-link-checker-cli
+npm run check-links-external
+npm run check-links-external -- --max 100
```
-Options:
-- `--level `: Set the reporting level.
-- `--check-external-links`: Check external links (slower).
-- `--verbose`: Show detailed output.
+Links into `github/github`:
+
+```bash
+npm run check-github-github-links
+```
### Updating Links
@@ -62,10 +84,20 @@ npm run update-internal-links
This script typically relies on the state of the `content` directory to determine what needs updating.
+## Automation
+
+| Workflow | Runs |
+| ------------------------------ | ------------------ |
+| `link-check-on-pr.yml` | Every pull request |
+| `link-check-internal.yml` | Mondays, 16:20 UTC |
+| `link-check-external.yml` | Mondays, 16:20 UTC |
+| `link-check-github-github.yml` | Mondays, 16:20 UTC |
+
+See [`lib/README.md`](lib/README.md) for how to investigate and triage a broken link report.
+
## Dependencies
-- **`cheerio`**: Used by the link checker to parse rendered HTML.
-- **`src/content-render`**: The link checker needs to render pages to see the final HTML output.
+- **`cheerio`**: Used by `validate-docs-urls.ts` to parse HTML.
- **`src/frame`**: Uses `cookies` and other utilities for request context.
## Ownership
@@ -74,6 +106,7 @@ This script typically relies on the state of the `content` directory to determin
## Current State & Known Issues
-- **Performance**: The `rendered-content-link-checker` is resource-intensive because it renders pages. It uses concurrency limits and caching (especially for external links) to mitigate this.
-- **False Positives**: External link checking can be flaky due to temporary network issues or anti-bot protections on target sites. The system uses a "retry and cache" strategy to reduce noise.
-- **Liquid Complexity**: `update-internal-links` has to use regex and heuristics to parse Markdown mixed with Liquid, which is inherently fragile compared to a full AST parser, but necessary to preserve code formatting.
\ No newline at end of file
+- **Cost of a full check**: `check-links-internal` walks every page in every version and language, so it is scheduled rather than run per PR. `check-links-pr` exists to give fast feedback on just the changed files.
+- **False Positives**: External link checking can be flaky due to temporary network issues or anti-bot protections on target sites. The system uses caching and exclusions to reduce noise.
+- **Liquid Complexity**: `update-internal-links` has to use regex and heuristics to parse Markdown mixed with Liquid, which is inherently fragile compared to a full AST parser, but necessary to preserve code formatting.
+- **Cross-version links**: A link is only valid if the target page exists in every version the source page renders in. Linking from a page with `ghes` to a page without it produces a render error, not a soft 404.
diff --git a/src/links/lib/README.md b/src/links/lib/README.md
index 0ce4e4eb8031..3024f42b2b5f 100644
--- a/src/links/lib/README.md
+++ b/src/links/lib/README.md
@@ -4,13 +4,20 @@
- [Automations](#automations)
- [Tips for investigation](#tips-for-investigation)
-- [Excluding links from daily checking](#excluding-links-from-daily-checking)
+- [Excluding links from scheduled checking](#excluding-links-from-scheduled-checking)
## Automations
-Every day, the [`link-check-daily.yml`](https://github.com/github/docs-internal/blob/main/.github/workflows/link-check-daily.yml) GitHub Actions workflow checks all links in the English content on GitHub Docs. The workflow checks both internal links within GitHub Docs and external links to other domains.
+Link checking is split across several GitHub Actions workflows:
-If the action finds any broken links, it opens an internal issue for the Docs Content team with the `broken link report` label.
+| Workflow | Runs | Checks |
+| ---------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------------------------ |
+| [`link-check-on-pr.yml`](https://github.com/github/docs-internal/blob/main/.github/workflows/link-check-on-pr.yml) | Every pull request | Internal links in the changed files |
+| [`link-check-internal.yml`](https://github.com/github/docs-internal/blob/main/.github/workflows/link-check-internal.yml) | Mondays, 16:20 UTC | All internal links, every version and language |
+| [`link-check-external.yml`](https://github.com/github/docs-internal/blob/main/.github/workflows/link-check-external.yml) | Mondays, 16:20 UTC | External links to other domains |
+| [`link-check-github-github.yml`](https://github.com/github/docs-internal/blob/main/.github/workflows/link-check-github-github.yml) | Mondays, 16:20 UTC | Accidental links to private `github/github` URLs |
+
+If the scheduled workflows find any broken links, they open an internal issue for the Docs Content team with the `broken link report` label. The pull request workflow comments on the PR instead.
## Tips for investigation
@@ -32,9 +39,9 @@ If the action finds any broken links, it opens an internal issue for the Docs Co
- Seek help if you're not sure where the link should go. The blame view for the article may help you track down who originally added the link.
-## Excluding links from daily checking
+## Excluding links from scheduled checking
-Before you decide whether to exclude a link from the daily link checker, you should check whether the URL for the article is stable. For example:
+Before you decide whether to exclude a link from the link checker, you should check whether the URL for the article is stable. For example:
- Has it has been flagged as a broken link for more than a week, but the URL works when a real user opens it in their browser?
- Has the URL been available for more than 3 months? You can check using the [Wayback Machine](https://web.archive.org).
diff --git a/src/links/lib/excluded-links.ts b/src/links/lib/excluded-links.ts
index b12a1197c534..487617fbd08f 100644
--- a/src/links/lib/excluded-links.ts
+++ b/src/links/lib/excluded-links.ts
@@ -1,6 +1,6 @@
/**
- * Linkinator relies
- * on this in `src/links/scripts/rendered-content-link-checker-cli.ts` when we encounter external
+ * The external and internal link checkers rely on this
+ * (`src/links/scripts/check-links-external.ts` and `check-links-internal.ts`) when we encounter
* links that we *specifically ignore*. That means, that URLs or patterns
* mentioned in the corresponding YAML file might appear within our content but we don't
* bother checking that they actually work.