diff --git a/.github/agents/dependabot-ecosystem-update.md b/.github/agents/dependabot-ecosystem-update.md index 3bd6eeaeccb7..fa8a567c4591 100644 --- a/.github/agents/dependabot-ecosystem-update.md +++ b/.github/agents/dependabot-ecosystem-update.md @@ -6,7 +6,7 @@ tools: ['read', 'write', 'search', 'execute'] # Dependabot ecosystem and language support update agent -You automate documentation updates when Dependabot adds support for a new package ecosystem or languageo. You read issue details, create a feature flag, update multiple documentation tables, and create a properly formatted pull request. +You automate documentation updates when Dependabot adds support for a new package ecosystem or language. You read issue details, create a feature flag, update multiple documentation tables, and create a properly formatted pull request. ## Your task @@ -17,7 +17,7 @@ When assigned to a Dependabot ecosystem or language support issue (typically fro 3. Create a feature flag file 4. Update 4-5 documentation files with new table entries 5. Create a draft PR with a detailed description -6. Handle missing data gracefully with TODO comments +6. Handle missing data with explicit TODO placeholders and an accurate PR summary ## Input sources @@ -32,33 +32,50 @@ To complete the update, you need these fields: ### Core fields (REQUIRED) 1. **Ecosystem display name** (e.g., "Deno", "Bazel") -2. **YAML value** (e.g., `deno`, `bazel`) - lowercase, usually matches ecosystem name -3. **Supported versions** (e.g., ">=v2", "v7, v8, v9", "Not applicable") -4. **Language(s)** (e.g., "TypeScript, JavaScript", "Starlark") +2. **Ecosystem slug** (e.g., `deno`, `bazel`) - the lowercase ecosystem name used in filenames, feature flags, `ifversion` tags, and branch names +3. **YAML value** (e.g., `deno`, `bazel`) - the official value used for `package-ecosystem`; this may be unknown +4. **Supported versions** (e.g., ">=v2", "v7, v8, v9", "Not applicable") +5. **Language(s)** (e.g., "TypeScript, JavaScript", "Starlark") ### Support flags (REQUIRED - yes/no for each, or unknown if the issues do not say) -5. **Version updates** (usually ✅) -6. **Security updates** (yes/no) -7. **Private repositories** (yes/no) -8. **Private registries** (yes/no/unknown; do not infer) -9. **Vendoring** (yes/no or "Not applicable") +6. **Version updates** (usually ✅) +7. **Security updates** (yes/no) +8. **Private repositories** (yes/no) +9. **Private registries** (yes/no/unknown; do not infer) +10. **Vendoring** (yes/no or "Not applicable") ### File configuration (REQUIRED) -10. **Recommended files** (e.g., `deno.lock`, `MODULE.bazel, WORKSPACE`) -11. **Additional files** (e.g., `deno.json`, `*.MODULE.bazel`) -12. **GHES version** - the first supported GHES version, usually provided as a label on the docs-content or releases issue +11. **Recommended files** (e.g., `deno.lock`, `MODULE.bazel, WORKSPACE`) +12. **Additional files** (e.g., `deno.json`, `*.MODULE.bazel`) +13. **GHES version** - the first supported GHES version, usually provided as a label on the docs-content or releases issue ### Cooldown and dependency graph (REQUIRED for specific tables) -13. **Default-days cooldown support** (yes/no) - for cooldown table -14. **SemVer-bump cooldown support** (yes/no) - for cooldown table -15. **Static transitive dependencies** (yes/no) - for dependency graph -16. **Dependabot graph jobs** (yes/no) - for dependency graph -17. **Automatic dependency submission** (yes/no) - for dependency graph +14. **Default-days cooldown support** (yes/no) - for cooldown table +15. **SemVer-bump cooldown support** (yes/no) - for cooldown table +16. **Static transitive dependencies** (yes/no) - for dependency graph +17. **Dependabot graph jobs** (yes/no) - for dependency graph +18. **Automatic dependency submission** (yes/no) - for dependency graph ### Optional fields -18. **Anchor name** (default: lowercase ecosystem name, e.g., `deno`) -19. **Ecosystem-specific details** (paragraph for the section in supported-package-managers.md) -20. **issue number** (for feature flag reference comment - taken from docs-content issue) +19. **Anchor name** (default: lowercase ecosystem name, e.g., `deno`) +20. **Ecosystem-specific details** (paragraph for the section in supported-package-managers.md) +21. **issue number** (for feature flag reference comment - taken from docs-content issue) + +### Distinguishing ecosystem identifiers from files + +The ecosystem slug and YAML value are separate fields: + +- The ecosystem slug is the lowercase ecosystem name. Use it for filenames, feature flags, `ifversion` tags, and branch names. +- The YAML value is the official value users enter for `package-ecosystem`. Use it only in documentation tables and the PR summary. + +Do not assume that the first technical-looking value in an issue is the YAML value. Classify each extracted value by its meaning and record the source text: + +- A YAML value is usually an ecosystem identifier such as `deno`, `bazel`, or `docker-compose`, but it does not need to match the ecosystem slug. +- A value that resembles a filename, especially one with a file extension such as `foobar.fb`, is likely a recommended or additional file. +- A value such as `v8` or `>=v2` is a supported version. +- Prefer values explicitly labeled "YAML value," "`package-ecosystem`," "manifest," "lockfile," or "supported version." + +If compact syntax is ambiguous, do not copy a filename into the YAML field. If the official YAML value cannot be determined confidently, use a TODO in its documentation table cells and `TBD` in the draft PR. Continue using the ecosystem slug for structural identifiers. ## Workflow @@ -68,9 +85,11 @@ To complete the update, you need these fields: 2. Look for a link to the releases issue (usually `https://github.com/github/releases/issues/{number}`) 3. If found, read the releases issue body, title, and labels for additional details 4. Look for the first supported GHES version in both issues. This is usually expressed as a label. Use the version indicated by that source to set the feature flag's GHES constraint; do not infer or default the version -5. Extract all available information from both sources +5. Extract all available information from both sources. For each value, note the exact source text and whether it is explicit or inferred from the issue's structure 6. Check the "Optional prompt" field for any user-provided data -7. Create an **information checklist** noting what you have and what's missing +7. Create an **information checklist** noting the value, classification, source, and whether anything is missing +8. Record the ecosystem slug separately from the official YAML value +9. Check that the YAML value has not been confused with a recommended or additional file **Common patterns:** - Issue title format: `[YYYY-MM-DD] Dependabot {ecosystem} support for version updates` @@ -126,7 +145,7 @@ Review your information checklist: - If ANY required fields are missing → Note them and proceed anyway - You will add TODO comments in files for missing data - You will create a DRAFT PR - - You will add a comment listing what's missing + - You will list every missing value as `TBD` in the PR body ### Step 3: Locate target files @@ -143,7 +162,7 @@ Verify each file exists before proceeding. ### Step 4: Create feature flag file -**File:** `data/features/dependabot-{yaml-value}-support.yml` +**File:** `data/features/dependabot-{ecosystem-slug}-support.yml` **Content:** ```yaml @@ -156,12 +175,12 @@ versions: ``` **Notes:** -- Replace `{yaml-value}` with the lowercase ecosystem identifier +- Replace `{ecosystem-slug}` with the lowercase ecosystem name - Replace `{Display Name}` with the proper ecosystem name - Replace `ISSUE_NUMBER` with the docs-content issue number - Replace `{GHES_VERSION}` with the value detected in the docs-content or releases issue, usually from a label - Do not infer or default the GHES version -- If no GHES version is detectable, omit the `ghes` entry and add this YAML comment beneath `ghec`: `# TODO: Confirm the first supported GHES version from the docs-content or releases issue.` +- If no GHES version is detectable, omit the `ghes` entry, add this YAML comment beneath `ghec`: `# TODO: Confirm the first supported GHES version from the docs-content or releases issue.`, and list the GHES version as `TBD` in the PR body ### Step 5: Update supported package managers table @@ -171,8 +190,8 @@ versions: **Pattern to add:** ```markdown -| {% ifversion dependabot-{yaml-value}-support %} | -[{Display Name}](#{anchor}) | `{yaml-value}` | {versions} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} | {private-registries-support} | {% octicon "x" aria-label="Not supported" %} | +| {% ifversion dependabot-{ecosystem-slug}-support %} | +[{Display Name}](#{anchor}) | `{yaml-value}` | {versions} | {version-updates-support} | {security-updates-support} | {private-repositories-support} | {private-registries-support} | {vendoring-support} | | {% endif %} | ``` @@ -190,8 +209,12 @@ versions: - Insert in **alphabetical order** by ecosystem display name - Use `{% octicon "check" aria-label="Supported" %}` for yes - Use `{% octicon "x" aria-label="Not supported" %}` for no -- For `{private-registries-support}`, use a check or x octicon only when the docs-content or releases issue explicitly confirms the value -- If private registry support is unknown, use `` in the table cell +- Use a check or x octicon only when the docs-content issue, releases issue, or optional prompt explicitly confirms the value +- If the official YAML value is unknown, replace its table cell with `` +- If private repository support is unknown, use `` +- If private registry support is unknown, use `` +- If vendoring support is unknown, use `` +- Do not render an unknown value as supported or unsupported - Use `Not applicable` (plain text) for N/A - If you have an anchor name, link display name to it: `[{Display Name}](#{anchor})` - Otherwise use just the display name without link @@ -201,7 +224,7 @@ versions: Find the sections at the bottom of the file (e.g., "### Deno", "### Cargo"). Add a new section in alphabetical order: ```markdown -{% ifversion dependabot-{yaml-value}-support %} +{% ifversion dependabot-{ecosystem-slug}-support %} ### {Display Name} @@ -212,11 +235,11 @@ Find the sections at the bottom of the file (e.g., "### Deno", "### Cargo"). Add **If you don't have ecosystem-specific details**, add a TODO comment instead: ```markdown -{% ifversion dependabot-{yaml-value}-support %} +{% ifversion dependabot-{ecosystem-slug}-support %} ### {Display Name} - + {% endif %} ``` @@ -233,7 +256,7 @@ Search for the `package-ecosystem` section. Find the table with columns: Package **Add in alphabetical order:** ```markdown -| {% ifversion dependabot-{yaml-value}-support %} | +| {% ifversion dependabot-{ecosystem-slug}-support %} | | {Display Name} | `{yaml-value}` | {versions} | | {% endif %} | ``` @@ -244,15 +267,17 @@ Search for the `cooldown` section. Find the table with columns: Package manager **Add in alphabetical order:** ```markdown -| {% ifversion dependabot-{yaml-value}-support %} | -| {Display Name} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | +| {% ifversion dependabot-{ecosystem-slug}-support %} | +| {Display Name} | {default-days-support} | {semver-bump-support} | | {% endif %} | ``` **Notes:** - Set the `Default days supported` and `SemVer-bump days supported` cells independently based on the issue information +- If the official YAML value is unknown, replace its cell in the `package-ecosystem` table with `` - Use `{% octicon "check" aria-label="Supported" %}` for supported and `{% octicon "x" aria-label="Not supported" %}` for not supported -- If either value is unknown, add a TODO comment identifying the value that needs confirmation and use octicon x in that cell +- If either value is unknown, use only a TODO comment identifying the value that needs confirmation +- Do not infer support or lack of support from the ecosystem's version-update capabilities ### Step 7: Update dependency graph ecosystems @@ -262,17 +287,19 @@ Search for the `cooldown` section. Find the table with columns: Package manager **Add in alphabetical order:** ```markdown -| {% ifversion dependabot-{yaml-value}-support %} | -| {Display Name} | {Languages} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} | {recommended-files} | {additional-files} | +| {% ifversion dependabot-{ecosystem-slug}-support %} | +| {Display Name} | {languages} | {static-transitive-support} | {dependabot-graph-jobs-support} | {automatic-submission-support} | {recommended-files} | {additional-files} | | {% endif %} | ``` **Notes:** -- Static transitive dependencies, {% data variables.product.prodname_dependabot %} graph jobs, and automatic dependency submission are usually "Not supported" for new ecosystems -- If you have explicit info saying they ARE supported, use octicon check +- Use a check or x octicon for each dependency graph capability only when its value is explicitly confirmed +- If a dependency graph capability is unknown, use a specific TODO comment in that cell. Do not infer support or lack of support +- If the language is unknown, use `` - Recommended files: Comma-separated, in backticks (e.g., `` `deno.lock` ``) - Additional files: Comma-separated, in backticks (e.g., `` `deno.json`, `deno.jsonc` ``) -- If you don't have file information, use `` and `` +- If you don't have file information, use `` and `` +- The technical reviewer may remove the entry if the ecosystem is not supported by the dependency graph, but this should be rare ### Step 7b: Check private registries guide (if applicable) @@ -306,7 +333,6 @@ Only use this path when the docs-content or releases issue explicitly confirms s - Do not update `configure-private-registries.md` - Keep `` in the supported package managers table - Include private registry support in the PR description's missing-information list -- Ask the reviewer to confirm support in the missing-information PR comment - If the reviewer confirms support, replace the table TODO with a supported octicon and add the configuration-guide TODO described above - If the reviewer confirms it is not supported, replace the table TODO with a not-supported octicon and leave the configuration guide unchanged @@ -339,24 +365,26 @@ For any field you couldn't extract: 1. **In table cells:** Use `` comment 2. **In prose sections:** Use clear TODO comments explaining what's needed -3. **Keep track** of all TODOs for the PR comment +3. **In the PR body:** Show the corresponding value as `TBD` +4. **Before merge:** Require a technical reviewer to resolve the TODO as supported, unsupported, not applicable, a confirmed value, or removal of the entry **Example TODO comments:** - `` - `` -- `` -- `` -- `` +- ` +- `` +- `` If the GHES version is missing: - Add the YAML TODO described in Step 4 and omit the `ghes` entry - Include GHES version in the PR description's missing-information list - Create the PR as a draft -- Post a PR comment explicitly stating that the first supported GHES version is required and needs confirmation + +Every TODO representing an unknown support value must be resolved by a technical reviewer before the PR is marked ready for review or merged. ### Step 9: Create pull request -**Branch name:** `dependabot-{yaml-value}-support` (or similar descriptive name) +**Branch name:** `dependabot-{ecosystem-slug}-support` (or similar descriptive name) **PR Title:** `Add {Display Name} support to Dependabot configuration and documentation` @@ -365,140 +393,86 @@ If the GHES version is missing: ```markdown _GitHub Copilot generated this pull request._ -
Prompt summary - submitted by @{username} - -> Automated documentation update for {Display Name} ecosystem support in Dependabot - -
- -### Why: - -Dependabot is adding support for the `{yaml-value}` ecosystem. - -Closes: https://github.com/github/docs-content/issues/{issue_number} - -### What's being changed: - -We have added `{yaml-value}` to the list of ecosystems for Dependabot{, following the pattern from PR #{reference-pr-number}}. - -**Changes include:** -* Created `data/features/dependabot-{yaml-value}-support.yml` feature flag -* Added {Display Name} to the package managers table in `data/reusables/dependabot/supported-package-managers.md` -* Added {Display Name} to the package-ecosystem table in `content/code-security/reference/supply-chain-security/dependabot-options-reference.md` -* Added {Display Name} to the cooldown support table in `dependabot-options-reference.md` (wrapped with feature flag) -* Added {Display Name} to the dependency graph supported ecosystems table in `content/code-security/reference/supply-chain-security/dependency-graph-supported-package-ecosystems.md` -{IF LANGUAGE SUPPORT CHANGED} -* Updated `data/tables/supported-code-languages.yml`, the source for the GitHub language support article +{IF THERE ARE NO TODOS OR TBD VALUES} +Closes github/docs-content#{issue_number} +{ELSE} +Towards github/docs-content#{issue_number} {END IF} -**{Display Name} details:** -* YAML value: `{yaml-value}` -* GHES version: {ghes-version} -* Supported versions: {versions} -* Recommended files: {files} -* Additional files: {files} -* Language: {language} -* Default-days cooldown: {✅/❌} Supported/Not supported -* SemVer-bump cooldown: {✅/❌} Supported/Not supported -* Static transitive dependencies: {✅/❌} Supported/Not supported -* {% data variables.product.prodname_dependabot %} graph jobs: {✅/❌} Supported/Not supported -* Automatic dependency submission: {✅/❌} Supported/Not supported -* Version updates: {✅/❌} Supported/Not supported -* Security updates: {✅/❌} Supported/Not supported -* Private repositories: {✅/❌} Supported/Not supported -* Private registries: {✅/❌/TODO} Supported/Not supported/Needs confirmation -* Vendoring: {✅/❌} Supported/Not supported +Adds {Display Name} to the documentation for supported {% data variables.product.prodname_dependabot %} package ecosystems. -{IF THERE ARE TODOS:} +## Headline changes -**⚠️ Missing information** +| Field | Value | +| --- | --- | +| Package ecosystem name | {Display Name} | +| YAML value | {yaml-value-in-backticks-or-TBD} | +| First supported GHES version | {ghes-version-or-TBD} | +| New GitHub language | {Yes/No/TBD} | -The following information could not be extracted from the issue and requires manual verification: +## Dependabot package ecosystem support -{LIST OF TODO ITEMS} +| Field | Value | +| --- | --- | +| Supported package manager versions | {versions-or-TBD} | +| Version updates | {Supported/Not supported/TBD} | +| Security updates | {Supported/Not supported/TBD} | +| Private repositories | {Supported/Not supported/Not applicable/TBD} | +| Private registries | {Supported/Not supported/Not applicable/TBD} | +| Vendoring | {Supported/Not supported/Not applicable/TBD} | -Please review the TODO comments in the files and provide the missing information. +## Dependabot cooldown support -{END IF} +| Field | Value | +| --- | --- | +| Default-days cooldown | {Supported/Not supported/TBD} | +| SemVer-bump cooldown | {Supported/Not supported/TBD} | -{IF IS_NEW_LANGUAGE = true} +## Dependency graph support -**⚠️ New language detected** +| Field | Value | +| --- | --- | +| Static transitive dependencies | {Supported/Not supported/TBD} | +| {% data variables.product.prodname_dependabot %} graph jobs | {Supported/Not supported/TBD} | +| Languages | {languages-or-TBD} | +| Automatic dependency submission | {Supported/Not supported/TBD} | +| Recommended files | {recommended-files-or-TBD} | +| Additional files | {additional-files-or-TBD} | -This appears to be a NEW LANGUAGE, not just a new package manager: -- [ ] Review the new language entry added to `data/tables/supported-code-languages.yml`, which is the source for `content/get-started/learning-about-github/github-language-support.md` - - Confirm `depUpdates` is `{Display Name}` - - Confirm `depGraph` and all other feature support values -- [ ] Check if dependency scope is supported for this language - - If YES: Update `data/reusables/dependabot/dependabot-alerts-dependency-scope.md` +## Files changed +* Added `data/features/dependabot-{ecosystem-slug}-support.yml`. +* Updated the supported package manager and `package-ecosystem` tables. +* Added cooldown and dependency graph entries. +{IF LANGUAGE SUPPORT CHANGED} +* Updated `data/tables/supported-code-languages.yml`, the source for the language support article. {END IF} - -**Additional updates to review:** - -This PR addresses the core Dependabot ecosystem documentation. Based on the [ongoing content design workflow](https://github.com/github/docs-content/blob/main/.github/workflows/ongoing-content-design-plan.yml), please check if these additional updates apply: - {IF PRIVATE_REGISTRIES_SUPPORTED = true} -- [ ] **Private registries guide**: A TODO comment has been added to `configure-private-registries.md` for configuration examples -{ENDIF} - -{IF PRIVATE_REGISTRIES_SUPPORTED = unknown} -- [ ] **Confirm private registry support**: If supported, update the table entry and add a configuration TODO to `configure-private-registries.md`. If not supported, update only the table entry -{ENDIF} - -{IF IS_NEW_LANGUAGE = unknown} -- [ ] **Verify language**: Please confirm if `{Language}` is a new language or already present in `data/tables/supported-code-languages.yml` -{ENDIF} - - -### Check off the following: +* Added a TODO for the required private registry configuration documentation. +{END IF} -- [ ] A subject matter expert (SME) has reviewed the technical accuracy of the content in this PR. -- [ ] The changes in this PR meet [the docs fundamentals](http://docs.github.com/en/contributing/writing-for-github-docs/about-githubs-documentation-fundamentals). -- [ ] All CI checks are passing and the changes look good in the review environment. +{IF THERE ARE TODOS} +> [!IMPORTANT] +> A technical reviewer must resolve every `TBD` and corresponding content TODO before this pull request is marked ready for review or merged. +{END IF} ``` **Notes:** -- Replace `{username}` with the person who assigned the issue -- Replace `{issue_number}` with the docs-content issue number -- If you found a good reference PR, mention it in "following the pattern from PR #..." -- Use ✅ or ❌ emoji for confirmed supported/not supported values in the details list; use TODO for unknown values -- The "Missing Information" section should only appear if there are TODO comments in the files -- The "New Language Detected" section only appears if `IS_NEW_LANGUAGE = true` -- The "Additional Updates to Review" section includes conditionals based on your flags +- Replace `{issue_number}` with the docs-content issue number. +- Include every field in the four tables. Use `TBD` for every unconfirmed value; do not omit rows or infer a value. +- Use `Supported`, `Not supported`, or `Not applicable` only for explicitly confirmed values. +- Ensure each value exactly matches the issue sources and the content changes. +- Keep the files-changed list factual. Remove any conditional line that does not apply. +- Do not claim that the PR documents examples, configuration, or capabilities that do not appear in the diff. +- Do not include irrelevant details such as a configuration snippet solely to restate the YAML value. +- Use `Closes github/docs-content#{issue_number}` when the PR has no TODOs or `TBD` values and fully resolves the issue. +- Use `Towards github/docs-content#{issue_number}` when any TODOs or `TBD` values remain. +- Add the `llm-generated` label. **PR status:** -- If ALL required information is present AND no special cases: Create as **ready for review** -- If ANY required information is missing OR new language OR private registries need attention: Create as **DRAFT** - -### Step 10: Post comment (if missing data) - -If you created a DRAFT PR due to missing information, add a comment to the PR: - -```markdown -I've created this draft PR based on the available information from the issue. However, I couldn't extract the following details: - -{LIST MISSING FIELDS} - -Please provide this information so I can complete the documentation. You can: -1. Add the details as a comment here -2. Update the files directly -3. Tag someone who knows (@stakeholder from the issue) - -Once the information is provided, I can update the PR and mark it ready for review. -``` - -If the GHES version is missing, the comment must include: - -```markdown -The first supported GHES version is required for the feature flag and needs to be confirmed from the docs-content or releases issue. -``` - -If private registry support is unknown, the comment must include: - -```markdown -Please confirm whether private registries are supported for this ecosystem. If they are supported, the PR also needs a TODO in `configure-private-registries.md` for the required configuration documentation. -``` +- If ALL required information is present AND no special cases apply: Create as **ready for review**. +- If ANY required information is missing, or the change adds a new language or unresolved private registry work: Create as **DRAFT**. +- Do not post a separate PR comment for missing information. Keep all unresolved values and reviewer requirements in the PR body. ## Important notes @@ -508,14 +482,16 @@ Please confirm whether private registries are supported for this ecosystem. If t - **Liquid variables:** Use `{% data variables.product.prodname_dependabot %}` for "Dependabot" - **Table alignment:** Match the existing table formatting exactly - **Alphabetical order:** Critical! Insert new entries in the correct alphabetical position -- **Feature flags:** Always wrap new content in `{% ifversion dependabot-{yaml-value}-support %}` +- **Feature flags:** Always wrap new content in `{% ifversion dependabot-{ecosystem-slug}-support %}` ### Common pitfalls to avoid - **Don't hardcode file paths** - use glob/grep to find current locations - **Don't skip the feature flag** - it's required for version gating -- **Don't default the GHES version** - source it from the docs-content or releases issue, or leave a TODO and request confirmation in a PR comment -- **Don't infer private registry support** - use only explicit issue information; unknown support stays as a table TODO and does not trigger a change to `configure-private-registries.md` +- **Don't default the GHES version** - source it from the docs-content or releases issue, or leave a TODO and show `TBD` in the PR body +- **Don't conflate the ecosystem slug and YAML value** - use the slug for structural identifiers and the YAML value only where the documentation shows the official `package-ecosystem` value +- **Don't confuse the YAML value with a filename** - classify each technical value by meaning and source +- **Don't infer support values** - use only explicit issue information; unknown values stay as TODOs in content and `TBD` in the PR body - **Don't forget alphabetical order** - tables must stay sorted - **Don't use inconsistent octicons** - match the aria-label pattern exactly - **Don't create ready-for-review PRs with TODOs** - use draft status @@ -524,21 +500,27 @@ Please confirm whether private registries are supported for this ecosystem. If t ### Validation before creating PR Before you create the PR, verify: -1. ✅ Feature flag file created with correct YAML value -2. ✅ GHES version matches the docs-content or releases issue, or the feature flag contains a TODO and the PR has a comment requesting confirmation -3. ✅ All 4 core files updated (or TODO comments explain why not) -4. ✅ Private registry support came from explicit issue information, or the table contains a TODO and the PR comment requests confirmation -5. ✅ `configure-private-registries.md` was changed only when private registry support was explicitly confirmed -6. ✅ All table entries in alphabetical order -7. ✅ Cooldown entries contain all 3 columns, including separate default-days and SemVer-bump support values -8. ✅ Dependency graph entries contain all 7 columns, including {% data variables.product.prodname_dependabot %} graph jobs -9. ✅ All `ifversion` tags have matching `endif` tags -10. ✅ Octicon syntax is correct -11. ✅ PR description accurately lists what changed -12. ✅ Draft status if ANY TODOs present -13. ✅ Scope flags (IS_NEW_LANGUAGE, PRIVATE_REGISTRIES_SUPPORTED) were set -14. ✅ `data/tables/supported-code-languages.yml` was updated when language support changed; the rendered article was not edited directly -15. ✅ Workflow checklist linked in PR description +1. ✅ Feature flag file and key use the ecosystem slug +2. ✅ Every `ifversion` tag and the branch name use the ecosystem slug +3. ✅ YAML value is explicitly sourced and is not a recommended or additional filename, or its documentation cells contain the specific TODO and the PR summary shows `TBD` +4. ✅ GHES version matches the docs-content or releases issue, or the feature flag contains a TODO and the PR table shows `TBD` +5. ✅ All 4 core files are updated, with explicit values or TODO placeholders for unknown values +6. ✅ Each unknown content value has a corresponding `TBD` in the correct PR table +7. ✅ Private registry support came from explicit issue information, or the table contains a TODO +8. ✅ `configure-private-registries.md` was changed only when private registry support was explicitly confirmed +9. ✅ All table entries are in alphabetical order +10. ✅ Cooldown entries contain all 3 columns, with independently verified values or TODOs +11. ✅ Dependency graph entries contain all 7 columns, with independently verified values or TODOs +12. ✅ All `ifversion` tags have matching `endif` tags +13. ✅ Octicon syntax is correct +14. ✅ PR description accurately lists only what changed +15. ✅ Every PR table value matches the issue sources and content changes +16. ✅ Draft status if ANY TODOs or `TBD` values are present +17. ✅ Scope flags (IS_NEW_LANGUAGE, PRIVATE_REGISTRIES_SUPPORTED) were set +18. ✅ `data/tables/supported-code-languages.yml` was updated when language support changed; the rendered article was not edited directly +19. ✅ The issue link uses `Closes` if no TODOs or `TBD` values remain; otherwise, it uses `Towards` +20. ✅ The PR has the `llm-generated` label +21. ✅ Content linting and changed-content rendering tests pass ## Examples @@ -560,19 +542,20 @@ Before you create the PR, verify: ### Example 2: Missing information + private registries -**Input:** Issue missing some details, ecosystem supports private registries +**Input:** Issue provides the ecosystem name but not the official YAML value or some other details; ecosystem supports private registries **Flags set:** - `IS_NEW_LANGUAGE = false` - `PRIVATE_REGISTRIES_SUPPORTED = true` **Output:** -- Feature flag: Created -- Tables: Updated with `` in cells with missing data +- Feature flag: Created using the ecosystem slug +- YAML value cells: `` +- Other table cells: Updated with `` where information is missing - Private registries guide: TODO comment added -- **Draft PR** with "Missing Information" section -- PR checklist includes private registries guide item -- Comment posted listing what's needed +- **Draft PR** with `TBD` values in the grouped support tables +- PR files-changed list includes the private registries guide +- No separate PR comment ### Example 3: New language detected @@ -596,21 +579,21 @@ If you encounter issues: **Files not found:** - Use glob to search more broadly -- Report in PR comment which files couldn't be located +- Report in the PR body which files couldn't be located - Do NOT proceed if critical files are missing **Cannot determine alphabetical position:** - List the surrounding entries -- Ask for clarification in PR comment +- Describe the unresolved placement in the PR body and keep the PR in draft **Conflicting information:** - Note the conflict in TODO comment -- List sources in PR comment -- Default to more conservative option (e.g., "not supported" if unclear) +- List the conflicting sources in the PR body +- Do not default to supported or unsupported **Cannot access linked release issue:** - Proceed with information from docs-content issue only -- Note in PR that release issue couldn't be accessed +- Note in the PR body that the release issue couldn't be accessed - Mark uncertain fields with TODO **Unclear if new language:** @@ -623,12 +606,15 @@ If you encounter issues: Your work is successful when: - ✅ All 4 core files are updated consistently - ✅ Tables remain in alphabetical order -- ✅ Feature flag exists and is referenced correctly -- ✅ PR description is complete and accurate +- ✅ Feature flag, `ifversion` tags, and branch name use the ecosystem slug +- ✅ Documentation tables use the confirmed official YAML value or a specific TODO +- ✅ PR description is complete, accurate, and organized into headline, Dependabot package ecosystem support, Dependabot cooldown support, and dependency graph sections - ✅ Missing data is clearly marked with TODOs +- ✅ Every content TODO is represented as `TBD` in the PR body - ✅ PR status (draft/ready) matches data completeness -- ✅ Issue is properly linked with "Closes" syntax +- ✅ Issue is linked with `Closes github/docs-content#{issue_number}` when complete, or `Towards github/docs-content#{issue_number}` when TODOs or `TBD` values remain - ✅ Update scope correctly identified (new language vs new ecosystem) - ✅ Private registries guide flagged if applicable - ✅ `data/tables/supported-code-languages.yml` updated or flagged for verification if language support changes -- ✅ Workflow checklist linked for reviewer reference +- ✅ No support value is inferred when the source information is missing +- ✅ The `llm-generated` label is applied diff --git a/.github/instructions/code.instructions.md b/.github/instructions/code.instructions.md index 8f53dc3e1610..ecbc07a28695 100644 --- a/.github/instructions/code.instructions.md +++ b/.github/instructions/code.instructions.md @@ -4,7 +4,7 @@ applyTo: "src/**,.github/**,config/**,.devcontainer/**,**Dockerfile,package*.jso # Copilot code instructions for docs.github.com -For code reviews and for creating or updating pull requests, follow the Guidelines, Tests, and Validate sections below. +For code reviews and for creating or updating pull requests, follow the guidelines in the sections below. ## Guidelines @@ -101,3 +101,27 @@ logger.error("Failure", { error }); - Never log secrets, tokens, or PII. - Create loggers once at module scope, not inside functions. - Do not use the logger in scripts (locally-run code); `console.log` is fine there. + +## Code comments + +- Comments explain _why_ and not _what_. Use variables, names, types, and structure to convey _what_ the code does. If the code doesn't need a _why_, don't write a comment. +- Document constraints, workarounds, unexpected dependencies, domain rules, user-visible consequences, security, ordering, and performance issues. +- Be concise. Keep the comment to a glance. +- Use active voice and active, specific verbs. Avoid phrases like "there is", "should", or vague "uses". Prefer "does x" over "is x". Do not hedge. If needed, write the action then the reason, such as "do X, so Y". +- Do not narrate, restate, or summarize the code. +- Avoid jargon, or define jargon if you must use it. +- Describe the current state. Avoid framing such as "now" or "recently". Do not include the previous state. +- In TypeScript and JavaScript, prefer `//` over `/*` comments. Only use `/*` if `//` makes the formatting too awkward or in JSX. Do not use JSDoc or TSDoc style comments. +- Do not use comments to add headings, dividers, steps, or other structures. +- Comments that need more than one line: break at sentence ends and clauses. Prettier does not reflow comment format. +- Avoid excessive formatting. Only use parentheses to refer to literal syntax. Do not use markdown-style formatting. Do not use emdashes. You may use uppercase to emphasize words, rarely. +- Keep comments inside a function body to a single line. Place multiline comments above the function. +- Do not reference issues, pull requests, or discussions in the `github` organization, such as numbers or URLs. Include the context directly in the comment or in a nearby markdown file. You may use a full URL to an issue in an external open source project. +- Do not reference line numbers or line counts. Do not reference specific versions unless a future version requires action. +- Do not leave TODO, FIXME, or HACK comments. +- Do not keep commented out code. +- You may label deliberately absent fields. +- You may write a simple input and output example for regular expressions. Use realistic data and not garbage like foo/bar or Alice/Bob. +- You may use internal cross-reference identifiers in comments, such as unique error codes. +- You may use tool directives such as `@ts-expect-error` or `eslint-disable` in rare cases. +- You may add legally required comments like license and copyright. diff --git a/.github/workflows/check-for-spammy-prs.yml b/.github/workflows/check-for-spammy-prs.yml index 20c60d2bd0e9..6188eaee1d7f 100644 --- a/.github/workflows/check-for-spammy-prs.yml +++ b/.github/workflows/check-for-spammy-prs.yml @@ -1,6 +1,6 @@ name: Check for Spammy PRs -# **What it does**: This action closes low value pull requests in the open-source repository. +# **What it does**: This action closes low value pull requests and PRs that do not target main. # **Why we have it**: We get lots of spam in the open-source repository. # **Who does it impact**: Open-source contributors. @@ -14,7 +14,7 @@ permissions: jobs: spammy-pr-check: - name: Label PRs that only delete files or touch a large number of files + name: Label spammy PRs and reject non-main targets if: > github.repository == 'github/docs' && github.event_name == 'pull_request_target' && github.event.pull_request.user.login != 'docs-bot' @@ -27,6 +27,7 @@ jobs: const owner = 'github' const repo = 'docs' const pull_number = context.payload.pull_request.number + const targetsNonMain = context.payload.pull_request.base.ref !== 'main' const files = await github.paginate(github.rest.pulls.listFiles, { owner, @@ -50,8 +51,8 @@ jobs: }) const onlyRenames = files.length > 0 && files.every(f => f.status === 'renamed') - // Close the PR and add the invalid label if ( + targetsNonMain || onlyDeletesLines || onlyDeletes || isEmptyCommit || @@ -66,16 +67,26 @@ jobs: labels: ['invalid'], }) - // Comment on the PR await github.rest.issues.createComment({ owner, repo, issue_number: pull_number, - body: onlyDeletesLines - ? `This pull request only removes existing content. Before submitting a content-removal pull request, please [open an issue](https://github.com/github/docs/issues/new/choose) explaining the proposed removal and wait for approval from the GitHub Docs team. Once the change has been approved, you can open a new pull request and link it to the issue.` - : `This pull request may have been opened accidentally. I'm going to close it now, but feel free to check out our [contribution guidelines](https://docs.github.com/en/contributing), or raise an issue.`, + body: targetsNonMain + ? 'Pull requests must target the `main` branch. This pull request has been closed as invalid. If you think this is incorrect, please mention this in a corresponding issue.' + : onlyDeletesLines + ? 'This pull request only removes existing content. Before submitting a content-removal pull request, please [open an issue](https://github.com/github/docs/issues/new/choose) explaining the proposed removal and wait for approval from the GitHub Docs team. Once the change has been approved, you can open a new pull request and link it to the issue.' + : "This pull request may have been opened accidentally. I'm going to close it now, but feel free to check out our [contribution guidelines](https://docs.github.com/en/contributing), or raise an issue.", }) + if (targetsNonMain) { + await github.rest.pulls.update({ + owner, + repo, + pull_number, + state: 'closed', + }) + } + if (onlyDeletesLines) { core.setFailed( 'This pull request only deletes lines. An approved issue is required first.', diff --git a/.github/workflows/sync-graphql.yml b/.github/workflows/sync-graphql.yml index e94136afd1fb..c814ca667ee2 100644 --- a/.github/workflows/sync-graphql.yml +++ b/.github/workflows/sync-graphql.yml @@ -32,6 +32,7 @@ jobs: env: # need to use a token from a user with access to github/github for this step GITHUB_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }} + NODE_OPTIONS: '--max-old-space-size=8192' run: npm run sync-graphql - name: Create pull request id: create-pull-request diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 05f6da9695f9..640859c1d829 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,31 +38,38 @@ jobs: # Note that *if you add* to this, remember to also add that # to the **required checks** in the branch protection rules. name: - # src/ directory + # Every directory in src/ is listed here. + # A commented out entry has no test files of its own. + # - ai-tools + # - app - archives - article-api - assets - audit-logs - automated-pipelines - # - bookmarklets - # - code-scanning - # - codeql-cli + # - codeql-cli # enable once github/docs-internal#63239 removes the broken scratch test + # - codeql-queries - color-schemes - content-linter + # - content-pipelines - content-render - data-directory + # - deployments # - dev-toc - early-access + # - eslint-rules - events - fixtures - frame + - ghes-releases - github-apps - graphql + - journeys - landings - languages - # - links + - links + # - metrics - observability - # - open-source # - pages - products - redirects @@ -73,6 +80,7 @@ jobs: - shielding # - tests # - tools + # - types - versions - webhooks - workflows diff --git a/Dockerfile b/Dockerfile index 65fe368031c5..1d49692f2726 100644 --- a/Dockerfile +++ b/Dockerfile @@ -63,25 +63,22 @@ RUN --mount=type=secret,id=DOCS_BOT_PAT_BASE,mode=0444 \ . ./build-scripts/fetch-repos.sh # ------------------------------------------------ -# PROD_DEPS STAGE: Install production dependencies +# ALL_DEPS STAGE: Install all dependencies # ------------------------------------------------ -FROM base AS prod_deps +FROM base AS all_deps USER node:node WORKDIR $APP_HOME -# Copy what is needed to run npm ci COPY --chown=node:node package.json package-lock.json ./ - -# Install only production dependencies (skip scripts to avoid husky) -RUN npm ci --omit=dev --ignore-scripts --registry https://registry.npmjs.org/ +COPY --chown=node:node patches patches/ +RUN npm ci --registry https://registry.npmjs.org/ # ------------------------------------------------------------ -# ALL_DEPS STAGE: Install all dependencies on top of prod deps +# PROD_DEPS STAGE: Strip dev dependencies back out # ------------------------------------------------------------ -FROM prod_deps AS all_deps +FROM all_deps AS prod_deps -# Install dev dependencies on top of production ones -RUN npm ci --registry https://registry.npmjs.org/ +RUN npm prune --omit=dev --ignore-scripts # ---------------------------------- # BUILD STAGE: Build the application diff --git a/content/code-security/concepts/code-scanning/autofix-for-code-scanning.md b/content/code-security/concepts/code-scanning/autofix-for-code-scanning.md index 4fac6904676c..f5f5fdd3e817 100644 --- a/content/code-security/concepts/code-scanning/autofix-for-code-scanning.md +++ b/content/code-security/concepts/code-scanning/autofix-for-code-scanning.md @@ -23,7 +23,8 @@ There are two ways to get a fix for an alert: agentic autofix and {% data variab ## Agentic autofix -> [!NOTE] This feature is currently in public preview and is subject to change. +> [!NOTE] +> This feature is currently in public preview and is subject to change. {% data reusables.copilot.preview-features-policy %} Assign a {% data variables.product.prodname_code_scanning %} alert to {% data variables.product.prodname_copilot_short %} to have it resolve the alert for you. Assigning an alert starts an agent session: {% data variables.copilot.copilot_cloud_agent %} calls tools to explore your codebase beyond the affected file, generates a fix, validates it (for example, by re-running {% data variables.product.prodname_codeql %}), and iterates until it opens a pull request with the changes. See [AUTOTITLE](/code-security/how-tos/manage-security-alerts/manage-code-scanning-alerts/resolve-alerts#fixing-alerts-with-copilot). diff --git a/content/code-security/how-tos/manage-security-alerts/manage-code-scanning-alerts/resolve-alerts.md b/content/code-security/how-tos/manage-security-alerts/manage-code-scanning-alerts/resolve-alerts.md index 091dbc011a6c..ac25f0aa4495 100644 --- a/content/code-security/how-tos/manage-security-alerts/manage-code-scanning-alerts/resolve-alerts.md +++ b/content/code-security/how-tos/manage-security-alerts/manage-code-scanning-alerts/resolve-alerts.md @@ -36,7 +36,7 @@ With a {% data variables.copilot.copilot_enterprise %} license, you can ask {% d ## Fixing alerts with {% data variables.product.prodname_copilot_short %} > [!NOTE] -> This feature is in {% data variables.release-phases.public_preview %} and subject to change. {% data variables.copilot.copilot_cloud_agent %} and {% data variables.copilot.copilot_autofix_short %} must be available in the repository. +> This feature is in {% data variables.release-phases.public_preview %} and subject to change. {% data variables.copilot.copilot_cloud_agent %} and {% data variables.copilot.copilot_autofix_short %} must be available in the repository. {% data reusables.copilot.preview-features-policy %} You can assign a {% data variables.product.prodname_code_scanning %} alert to {% data variables.product.prodname_copilot_short %} to have it fix the alert for you. Assigning the alert starts an agent session: {% data variables.copilot.copilot_cloud_agent %} explores your codebase, generates a fix, validates it, and opens a pull request. diff --git a/content/code-security/reference/security-at-scale/overview-dashboard-filters.md b/content/code-security/reference/security-at-scale/overview-dashboard-filters.md index bafa8853a5a3..90953d7631fb 100644 --- a/content/code-security/reference/security-at-scale/overview-dashboard-filters.md +++ b/content/code-security/reference/security-at-scale/overview-dashboard-filters.md @@ -192,7 +192,7 @@ For more information about production context, see [AUTOTITLE](/code-security/tu |{% endif %}| |`ecosystem`|Display {% data variables.product.prodname_dependabot_alerts %} detected in a specified ecosystem, for example: `ecosystem:Maven`.| |`epss-percentage`|Display {% data variables.product.prodname_dependabot_alerts %} whose EPSS score meets the defined criteria, for example: `epss-percentage:>=0.01`| -|`has`|Display {% data variables.product.prodname_dependabot_alerts %} for vulnerabilities where either a secure version is already available (`patch`) or where at least one call from the repository to a vulnerable function is detected (`vulnerable-calls`). For more information, see [AUTOTITLE](/code-security/how-tos/manage-security-alerts/manage-dependabot-alerts/view-dependabot-alerts).| +|`has`|Display {% data variables.product.prodname_dependabot_alerts %} for vulnerabilities where a secure version is already available (`patch`).| |`is`|Display {% data variables.product.prodname_dependabot_alerts %} that are open (`open`) or closed (`closed`).| |`package`|Display {% data variables.product.prodname_dependabot_alerts %} detected in the specified package, for example: `package:semver`.| |`props`|Display {% data variables.product.prodname_dependabot_alerts %} for repositories with a specific custom property set. For example, `props.data_sensitivity:high` displays results for repositories with the `data_sensitivity` property set to the value `high`.| diff --git a/content/codespaces/the-githubdev-web-based-editor.md b/content/codespaces/the-githubdev-web-based-editor.md index faa8c6eaf151..56c08c65c4c6 100644 --- a/content/codespaces/the-githubdev-web-based-editor.md +++ b/content/codespaces/the-githubdev-web-based-editor.md @@ -1,7 +1,8 @@ --- -title: The github.dev web-based editor -shortTitle: github.dev editor -intro: You can use the {% data variables.codespaces.serverless %} web-based editor to edit files and commit your changes. +title: Using VS Code for the Web from GitHub +shortTitle: '{% data variables.product.prodname_vscode_web %}' +allowTitleToDifferFromFilename: true +intro: You can open a repository or pull request in {% data variables.product.prodname_vscode_web %} directly from {% data variables.product.github %} to browse code, edit files, and commit your changes. versions: feature: githubdev-editor redirect_from: @@ -11,23 +12,23 @@ category: - Get started --- ->[!NOTE] The {% data variables.codespaces.serverless %} editor is currently in {% data variables.release-phases.public_preview %}. You can provide feedback [in our Discussions](https://github.com/community/community/discussions/categories/codespaces).{% ifversion ghec %} Additionally, the {% data variables.codespaces.serverless %} editor is not available on subdomains of {% data variables.enterprise.data_residency_site %}, such as `octocorp.ghe.com`.{% endif %} +>[!NOTE] Opening a repository at `{% data variables.codespaces.serverless %}` opens it in {% data variables.product.prodname_vscode_web %}, the browser-based version of {% data variables.product.prodname_vscode_shortname %}. For more information, see [{% data variables.product.prodname_vscode_web %}](https://code.visualstudio.com/docs/remote/vscode-web) in the {% data variables.product.prodname_vscode_shortname %} documentation.{% ifversion ghec %} {% data variables.product.prodname_vscode_web %} is not available on subdomains of {% data variables.enterprise.data_residency_site %}, such as `octocorp.ghe.com`.{% endif %} -## About the {% data variables.codespaces.serverless %} editor +## About {% data variables.product.prodname_vscode_web %} -The {% data variables.codespaces.serverless %} editor introduces a lightweight editing experience that runs entirely in your browser. With the {% data variables.codespaces.serverless %} editor, you can navigate files and source code repositories from {% data variables.product.prodname_dotcom %}, and make and commit code changes. You can open any repository, fork, or pull request in the editor. +{% data variables.product.prodname_vscode_web %} is a lightweight editing experience that runs entirely in your browser. With {% data variables.product.prodname_vscode_web %}, you can navigate files and source code repositories from {% data variables.product.prodname_dotcom %}, and make and commit code changes. You can open any repository, fork, or pull request in the editor. -The {% data variables.codespaces.serverless %} editor is available to everyone for free on {% data variables.product.prodname_dotcom_the_website %}. +{% data variables.product.prodname_vscode_web %} is available to everyone for free on {% data variables.product.prodname_dotcom_the_website %}. -The {% data variables.codespaces.serverless %} editor provides many of the benefits of {% data variables.product.prodname_vscode %}, such as search, syntax highlighting, and a source control view. You can also use Settings Sync to share your own {% data variables.product.prodname_vscode_shortname %} settings with the editor. See [Settings Sync](https://code.visualstudio.com/docs/editor/settings-sync) in the {% data variables.product.prodname_vscode_shortname %} documentation. +{% data variables.product.prodname_vscode_web %} provides many of the benefits of {% data variables.product.prodname_vscode %}, such as search, syntax highlighting, and a source control view. You can also use Settings Sync to share your own {% data variables.product.prodname_vscode_shortname %} settings with the editor. See [Settings Sync](https://code.visualstudio.com/docs/editor/settings-sync) in the {% data variables.product.prodname_vscode_shortname %} documentation. -The {% data variables.codespaces.serverless %} editor runs entirely in your browser’s sandbox. The editor doesn’t clone the repository, but instead uses the [GitHub Repositories extension](https://code.visualstudio.com/docs/editor/github#_github-repositories-extension) to carry out most of the functionality that you will use. Your work is saved in the browser’s local storage until you commit it. You should commit your changes regularly to ensure that they're always accessible. +{% data variables.product.prodname_vscode_web %} runs entirely in your browser’s sandbox. The editor doesn’t clone the repository, but instead uses the [GitHub Repositories extension](https://code.visualstudio.com/docs/editor/github#_github-repositories-extension) to carry out most of the functionality that you will use. Your work is saved in the browser’s local storage until you commit it. You should commit your changes regularly to ensure that they're always accessible. -You must be signed in to {% data variables.product.github %} to use the {% data variables.codespaces.serverless %} editor. +You must be signed in to {% data variables.product.github %} to use {% data variables.product.prodname_vscode_web %}. -## Opening the {% data variables.codespaces.serverless %} editor +## Opening {% data variables.product.prodname_vscode_web %} from {% data variables.product.github %} -You can open any {% data variables.product.prodname_dotcom %} repository in {% data variables.codespaces.serverless %} in either of the following ways: +You can open any {% data variables.product.prodname_dotcom %} repository in {% data variables.product.prodname_vscode_web %} in any of the following ways: * To open the repository in the same browser tab, press . while browsing any repository or pull request on {% data variables.product.prodname_dotcom %}. @@ -38,36 +39,27 @@ You can open any {% data variables.product.prodname_dotcom %} repository in {% d ![Screenshot of the dropdown menu for the edit icon. The option "github.dev" is highlighted with a dark orange outline.](/assets/images/help/codespaces/github-dev-dropdown-option.png) -## {% data variables.product.prodname_codespaces %} and {% data variables.codespaces.serverless %} +## {% data variables.product.prodname_codespaces %} and {% data variables.product.prodname_vscode_web %} -Both {% data variables.codespaces.serverless %} and {% data variables.product.prodname_github_codespaces %} allow you to edit your code straight from your repository. However, both have slightly different benefits, depending on your use case. +Both {% data variables.product.prodname_vscode_web %} and {% data variables.product.prodname_github_codespaces %} allow you to edit your code straight from your repository. However, both have slightly different benefits, depending on your use case. {% rowheaders %} -|| {% data variables.codespaces.serverless %} | {% data variables.product.prodname_github_codespaces %}| +|| {% data variables.product.prodname_vscode_web %} | {% data variables.product.prodname_github_codespaces %}| |-|----------------|---------| | **Cost** | Free. | Free monthly quota of usage for personal accounts, see [AUTOTITLE](/billing/concepts/product-billing/github-codespaces#free-and-billed-use-by-personal-accounts).| -| **Availability** | Available to everyone on GitHub.com. | Available to everyone on GitHub.com. | -| **Start up** | {% data variables.codespaces.serverless %} opens instantly with a key-press and you can start using it right away, without having to wait for additional configuration or installation. | When you create or resume a codespace, the codespace is assigned a VM and the container is configured based on the contents of a `devcontainer.json` file. This set up may take a few minutes to create the environment. See [AUTOTITLE](/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository). | -| **Compute** | There is no associated compute, so you won’t be able to build and run your code or use the integrated terminal. | With {% data variables.product.prodname_github_codespaces %}, you get the power of a dedicated VM on which you can run and debug your application.| -| **Terminal access** | None. | {% data variables.product.prodname_github_codespaces %} provides a common set of tools by default, meaning that you can use the Terminal exactly as you would in your local environment.| -| **Extensions** | Only a subset of extensions that can run in the web will appear in the Extensions View and can be installed. See [Using extensions](#using-extensions).| With {% data variables.product.prodname_github_codespaces %}, you can use most extensions from the {% data variables.product.prodname_vscode_marketplace %}.| +| **Availability** | Available to everyone on {% data variables.product.prodname_dotcom_the_website %}. | Available to everyone on {% data variables.product.prodname_dotcom_the_website %}. | +| **Start up** | {% data variables.product.prodname_vscode_web %} opens instantly with a key press and you can start using it right away, without having to wait for additional configuration or installation. | When you create or resume a codespace, the codespace is assigned a VM and the container is configured based on the contents of a `devcontainer.json` file. This set up may take a few minutes to create the environment. See [AUTOTITLE](/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository). | +| **Compute** | There is no associated compute, so you won’t be able to build and run your code or use an integrated terminal. | With {% data variables.product.prodname_github_codespaces %}, you get the power of a dedicated VM on which you can run and debug your application, and you can use the terminal exactly as you would in your local environment.| +| **Extensions** | Only a subset of extensions that can run in the web will appear in the Extensions View and can be installed. See [Using extensions](#using-extensions).| With {% data variables.product.prodname_github_codespaces %}, you can use most extensions from the {% data variables.product.prodname_vscode_marketplace %}.| {% endrowheaders %} -### Continue working on {% data variables.product.prodname_codespaces %} - -You can start your workflow in {% data variables.codespaces.serverless %} and continue working on a codespace. If you try to access the Run and Debug View or the Terminal, you'll be notified that they are not available in {% data variables.codespaces.serverless %}. - -To continue your work in a codespace, click **Continue Working on…** and select **Create New Codespace** to create a codespace on your current branch. Before you choose this option, you must commit any changes. - -Screenshot of the "Run and Debug" side bar with a message saying that this feature is not available, and a "Continue Working On" button. - ## Using source control -When you use {% data variables.codespaces.serverless %}, all actions are managed through the "Source Control" view, which is located in the Activity Bar on the left hand side. For more information on the "Source Control" view, see [Version Control](https://code.visualstudio.com/docs/editor/versioncontrol) in the {% data variables.product.prodname_vscode_shortname %} documentation. +When you use {% data variables.product.prodname_vscode_web %}, all actions are managed through the "Source Control" view, which is located in the Activity Bar on the left hand side. For more information on the "Source Control" view, see [Version Control](https://code.visualstudio.com/docs/editor/versioncontrol) in the {% data variables.product.prodname_vscode_shortname %} documentation. -Because {% data variables.codespaces.serverless %} uses the GitHub Repositories extension to power its functionality, you can switch branches without needing to stash changes. See [GitHub Repositories](https://code.visualstudio.com/docs/editor/github#_github-repositories-extension) in the {% data variables.product.prodname_vscode_shortname %} documentation. +Because {% data variables.product.prodname_vscode_web %} uses the GitHub Repositories extension to power its functionality, you can switch branches without needing to stash changes. See [GitHub Repositories](https://code.visualstudio.com/docs/editor/github#_github-repositories-extension) in the {% data variables.product.prodname_vscode_shortname %} documentation. ### Create a new branch @@ -98,44 +90,14 @@ Because {% data variables.codespaces.serverless %} uses the GitHub Repositories ### Working with an existing pull request -You can use {% data variables.codespaces.serverless %} to work with an existing pull request. +You can use {% data variables.product.prodname_vscode_web %} to work with an existing pull request. -1. Browse to the pull request you'd like to open in {% data variables.codespaces.serverless %}. -1. Press `.` to open the pull request in {% data variables.codespaces.serverless %}. +1. Browse to the pull request you'd like to open in {% data variables.product.prodname_vscode_web %}. +1. Press `.` to open the pull request in {% data variables.product.prodname_vscode_web %}. 1. Once you have made any changes, commit them using the steps in [Commit your changes](#commit-your-changes). Your changes will be committed directly to the branch, it's not necessary to push the changes. ## Using extensions -The {% data variables.codespaces.serverless %} editor supports {% data variables.product.prodname_vscode_shortname %} extensions that have been specifically created or updated to run in the web. These extensions are known as "web extensions". To learn how you can create a web extension or update your existing extension to work for the web, see [Web extensions](https://code.visualstudio.com/api/extension-guides/web-extensions) in the {% data variables.product.prodname_vscode_shortname %} documentation. - -Extensions that can run in {% data variables.codespaces.serverless %} will appear in the Extensions View and can be installed. If you use Settings Sync, any compatible extensions are also installed automatically. For information, see [Settings Sync](https://code.visualstudio.com/docs/editor/settings-sync) in the {% data variables.product.prodname_vscode_shortname %} documentation. - -## Using {% data variables.codespaces.serverless %} behind a firewall - -If you are working behind a firewall you will need to add the following URLs to your firewall's allow list. - -| URL | Use | -| --- | --- | -| `https://*.vscode-cdn.net` | {% data variables.codespaces.serverless %} runs entirely in the browser. To do so it needs to download {% data variables.product.prodname_vscode_shortname %} assets from endpoints at this URL. | -| `https://update.code.visualstudio.com` | {% data variables.codespaces.serverless %} runs entirely in the browser. To do so it needs to download {% data variables.product.prodname_vscode_shortname %} assets from endpoints at this URL. | -| `https://api.github.com` | Used to retrieve source files from {% data variables.product.prodname_dotcom %} | -| `https://vscode-sync-insiders.trafficmanager.net` | _Optional._ To allow settings to be synchronized via Settings Sync. | - -Every extension installed in {% data variables.codespaces.serverless %} is run under an independent web worker. This adds a layer of security between multiple extensions running in the same browser. As a result, request URLs coming from extensions are similar to this: `https://v--151hfiju3s93ktt2rqh65902gukb27osot905m4g52k40kaea3h6.vscode-cdn.net`. - -Data is retrieved from the repository at runtime using the [GitHub Repositories](https://marketplace.visualstudio.com/items?itemName=GitHub.remotehub) extension. This data is not stored on the local computer between {% data variables.codespaces.serverless %} sessions, with the exception of the browser storage of unsaved files and currently displayed files (to allow for page reloads). The only non-repository data that's stored locally between sessions are some user settings and the credentials sent by {% data variables.product.prodname_dotcom %}'s authentication flow. - -## Troubleshooting - -If you have issues opening {% data variables.codespaces.serverless %}, try the following: - -* Make sure you are signed in to {% data variables.product.prodname_dotcom %}. -* Disable any ad blockers. -* Use a non-incognito window in your browser to open {% data variables.codespaces.serverless %}. - -### Known limitations +{% data variables.product.prodname_vscode_web %} supports {% data variables.product.prodname_vscode_shortname %} extensions that have been specifically created or updated to run in the web. These extensions are known as "web extensions". To learn how you can create a web extension or update your existing extension to work for the web, see [Web extensions](https://code.visualstudio.com/api/extension-guides/web-extensions) in the {% data variables.product.prodname_vscode_shortname %} documentation. -* The {% data variables.codespaces.serverless %} editor is currently supported in Chrome (and various other Chromium-based browsers), Edge, Firefox, and Safari. We recommend that you use the latest versions of these browsers. -* Some keybindings may not work, depending on the browser you are using. These keybinding limitations are documented in the [Known limitations and adaptations](https://code.visualstudio.com/docs/remote/codespaces#_known-limitations-and-adaptations) section of the {% data variables.product.prodname_vscode_shortname %} documentation. -* `.` may not work to open {% data variables.codespaces.serverless %} according to your local keyboard layout. In that case, you can open any {% data variables.product.prodname_dotcom %} repository in {% data variables.codespaces.serverless %} by changing the URL from `github.com` to `github.dev`. -* When intensively writing documentation or code in the web editor, you might encounter issues with pushing some commits. To resolve this, wait a few minutes for the API rate limit to reset. +Extensions that can run in {% data variables.product.prodname_vscode_web %} will appear in the Extensions View and can be installed. If you use Settings Sync, any compatible extensions are also installed automatically. For information, see [Settings Sync](https://code.visualstudio.com/docs/editor/settings-sync) in the {% data variables.product.prodname_vscode_shortname %} documentation. diff --git a/content/copilot/how-tos/copilot-cli/customize-copilot/create-custom-agents-for-cli.md b/content/copilot/how-tos/copilot-cli/customize-copilot/create-custom-agents-for-cli.md index dcbda3f2c8a9..8fc609a1fe45 100644 --- a/content/copilot/how-tos/copilot-cli/customize-copilot/create-custom-agents-for-cli.md +++ b/content/copilot/how-tos/copilot-cli/customize-copilot/create-custom-agents-for-cli.md @@ -134,6 +134,30 @@ Each {% data variables.copilot.copilot_custom_agent_short %} is defined by a Mar Where `security-auditor` is the file name of the {% data variables.copilot.copilot_custom_agent_short %} profile, without the `.agent.md` extension. Typically, but not necessarily, this is the same as the `name` value in the agent profile. +## Applying your repository's custom instructions to a {% data variables.copilot.copilot_custom_agent_short %} + +Custom instruction files—such as `.github/copilot-instructions.md`, `AGENTS.md`, and `CLAUDE.md`—tell {% data variables.product.prodname_copilot_short %} how to work in your repository. For more information, see [AUTOTITLE](/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-repository-instructions). + +When {% data variables.product.prodname_copilot_short %} runs your {% data variables.copilot.copilot_custom_agent_short %} as a subagent—to handle part of a larger task—the subagent does not follow your repository's custom instructions by default. This keeps the subagent focused on the specific task it was given. + +If you want a subagent to follow your repository's conventions—for example, an agent that reviews or edits code—add `include-custom-instructions: true` to the agent file's frontmatter: + +```text +--- +name: RepoAwareReviewer +description: Reviews a change against this repository's conventions +tools: ["*"] +include-custom-instructions: true +--- + +Review the change and flag anything that violates the repository's conventions. +``` + +> [!NOTE] +> This setting only affects the agent when it runs as a subagent. A {% data variables.copilot.copilot_custom_agent_short %} that you select yourself—with `--agent`, `/agent`, or by inference—already follows your repository's custom instructions, so the setting has no effect in that case. + +For more information, including how this setting interacts with the `--no-custom-instructions` option, see [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference#repository-custom-instructions-for-subagents). + ## Further reading * [AUTOTITLE](/copilot/concepts/agents/copilot-cli/comparing-cli-features) diff --git a/content/copilot/reference/ai-models/model-hosting.md b/content/copilot/reference/ai-models/model-hosting.md index 92d26fee3fc4..763da511cea6 100644 --- a/content/copilot/reference/ai-models/model-hosting.md +++ b/content/copilot/reference/ai-models/model-hosting.md @@ -95,6 +95,7 @@ Used for: * {% data variables.copilot.copilot_grok_45 %} * {% data variables.copilot.copilot_grok_46 %} +* {% data variables.copilot.copilot_grok_47 %} These models are hosted on xAI. xAI operates these models in {% data variables.product.prodname_copilot %} under a zero data retention API policy. This means xAI commits that user content (both inputs sent to the model and outputs generated by the model): diff --git a/content/copilot/reference/ai-models/supported-models.md b/content/copilot/reference/ai-models/supported-models.md index 8f789c6a0197..92aace8cb465 100644 --- a/content/copilot/reference/ai-models/supported-models.md +++ b/content/copilot/reference/ai-models/supported-models.md @@ -126,7 +126,6 @@ Some {% data variables.product.prodname_copilot_short %} models require minimum | {% data variables.copilot.copilot_gemini_36_flash %} | `v1.128.0` | `17.14.22` or `18.1.0` | TBD | TBD | TBD | | {% data variables.copilot.copilot_gemini_37_flash %} | `v1.128.0` | `17.14.22` or `18.1.0` | TBD | TBD | TBD | | {% data variables.copilot.copilot_gemini_38_flash %} | TBD | `17.14.22` or `18.1.0` | TBD | TBD | TBD | -| {% data variables.copilot.copilot_gpt_52_codex %} | No minimum listed | `17.14.19` or `18.0.0` | `1.5.61` | `0.45.0` | `0.13.0` | | {% data variables.copilot.copilot_gpt_53_codex %} | `v1.104.1` | `17.14.19` | `1.5.61` | `0.45.0` | `0.13.0` | | {% data variables.copilot.copilot_gpt_54 %} | `v1.104.1` | `17.14.19` | `1.5.66` | `0.47.0` | `0.15.0` | | {% data variables.copilot.copilot_gpt_54_mini %} | `v1.104.1` | `17.14.19` | `1.5.66` | `0.47.0` | `0.15.0` | @@ -145,6 +144,7 @@ Some {% data variables.product.prodname_copilot_short %} models require minimum | {% data variables.copilot.copilot_mai_code_1_1_flash %} | `v1.121` | TBD | TBD | TBD | TBD | | {% data variables.copilot.copilot_grok_45 %} | TBD | `17.14.19` | TBD | TBD | TBD | | {% data variables.copilot.copilot_grok_46 %} | TBD | TBD | TBD | TBD | TBD | +| {% data variables.copilot.copilot_grok_47 %} | TBD | `17.14.19` | TBD | TBD | TBD | {% endrowheaders %} diff --git a/content/copilot/reference/copilot-cli-reference/cli-command-reference.md b/content/copilot/reference/copilot-cli-reference/cli-command-reference.md index 03de6fda9605..3667be6847dd 100644 --- a/content/copilot/reference/copilot-cli-reference/cli-command-reference.md +++ b/content/copilot/reference/copilot-cli-reference/cli-command-reference.md @@ -275,6 +275,8 @@ For more information about the sessions sidebar, see [AUTOTITLE](/copilot/how-to In local sessions, you can queue prompts, shell commands, and supported slash commands to run in order after the current task finishes. Press Ctrl+Q to queue the current input while the agent is running. Queued entries display a "pending" label and can be canceled individually before they run. +With an empty prompt box, press to recall the most recently queued or steering prompt back into the prompt box for editing before it's resubmitted. A "recall" hint appears next to the queue when this is available. Use Ctrl+P instead for nondestructive navigation through submitted command history. + ## Timeline shortcuts in the interactive interface | Shortcut | Purpose | @@ -301,7 +303,7 @@ When the tasks dialog is open (opened via `/tasks`): | B | Promote the selected sync task to background. | | Esc | Close the dialog (or go back to the list). | -Subagents that spawn their own nested subagents appear as an indented tree; the row you're teleported into is highlighted as "current." While drilled into a subagent's view, you can send it a steering message from the composer the same way you would the main session. +Subagents that spawn their own nested subagents appear as an indented tree; the row you're teleported into is highlighted as "current." While drilled into a subagent's view, you can send it a steering message from the prompt box the same way you would the main session. ## Restoring an interrupted session @@ -335,7 +337,7 @@ Sessions already open in another window float to the top in all non-relevance so ## Sidebar and sessions tab shortcuts -The current-session sidebar lets you browse and switch between sessions without leaving the one you're in. On an empty composer, / walk a three-state focus cycle: closed, timeline-focused, and sidebar-focused. Disable the sidebar entirely with the `sidebar` setting—see [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#configuration-file-settings). +The current-session sidebar lets you browse and switch between sessions without leaving the one you're in. With an empty prompt box, / walk a three-state focus cycle: closed, timeline-focused, and sidebar-focused. Disable the sidebar entirely with the `sidebar` setting—see [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#configuration-file-settings). | Shortcut | Purpose | |----------|---------| @@ -412,7 +414,8 @@ When diff mode is open (entered via `/diff`): | Ctrl+Home | Move to the start of the text. | | Ctrl+End | Move to the end of the text. | | Alt+/ (Windows/Linux)
Option+/ (Mac) | Move the cursor by a word. | -| / | Navigate the command history. | +| / | Navigate the command history. With an empty prompt box, recalls the most recently queued or steering prompt instead, if one is available. | +| Ctrl+P | Navigate submitted command history nondestructively, without triggering the queued-prompt recall behavior. | | Tab / Ctrl+Y | Accept the current inline completion suggestion. | ## Slash commands in the interactive interface @@ -427,7 +430,7 @@ These are the slash commands you can use from within an interactive CLI session. | `/app` | Open the current session in the {% data variables.copilot.github_copilot_app %} (requires version 1.1.3 or later), or show the download URL if the app is not installed. | | `/ask QUESTION`, `/btw QUESTION` | Ask a quick side question without adding to the conversation history. See [AUTOTITLE](/copilot/how-tos/copilot-cli/use-copilot-cli/ask-a-side-question). | | `/allow-all [off\|auto\|show]`, `/yolo [off\|auto\|show]` | Enable all permissions (tools, paths, and URLs). This is an alias for `/permissions allow-all`; see the `/permissions` row for the canonical command and its subcommands. | -| `/autopilot [OBJECTIVE]`, `/goal [OBJECTIVE]` | Start or refocus autopilot mode, optionally with an explicit objective (for example, `/goal Refactor the auth module`). Without an objective, autopilot infers intent from context, and the status panel shows your last prompt as the inferred objective. You can cap AI-credit spend for the objective by using `--max-ai-credits N` (for example, `/goal Refactor the auth module --max-ai-credits 5`). When the cap is reached, autopilot pauses and opens a panel reporting credits used against the cap. Enter a new amount to resume with a fresh credit window, or dismiss the panel to stay paused. You can also resume a paused objective yourself, without the panel, by running the option on its own with no objective text—for example, `/goal --max-ai-credits 5`. This is the same action the panel performs: it opens a fresh window of the credits you specify (the full new cap, not an increment) and continues the objective. `/goal on` and `/goal off` toggle autopilot mode without setting an objective and don't accept `--max-ai-credits`. An active goal renders as a pinned panel above the composer, showing the objective, credits used, and todo progress. The panel auto-collapses to a single identity row on short terminals (below 30 rows) and expands above that threshold; press Ctrl+X then `g` to override the automatic sizing by hand. | +| `/autopilot [OBJECTIVE]`, `/goal [OBJECTIVE]` | Start or refocus autopilot mode, optionally with an explicit objective (for example, `/goal Refactor the auth module`). Without an objective, autopilot infers intent from context, and the status panel shows your last prompt as the inferred objective. You can cap AI-credit spend for the objective by using `--max-ai-credits N` (for example, `/goal Refactor the auth module --max-ai-credits 5`). When the cap is reached, autopilot pauses and opens a panel reporting credits used against the cap. Enter a new amount to resume with a fresh credit window, or dismiss the panel to stay paused. You can also resume a paused objective yourself, without the panel, by running the option on its own with no objective text—for example, `/goal --max-ai-credits 5`. This is the same action the panel performs: it opens a fresh window of the credits you specify (the full new cap, not an increment) and continues the objective. `/goal on` and `/goal off` toggle autopilot mode without setting an objective and don't accept `--max-ai-credits`. An active goal renders as a pinned panel above the prompt box, showing the objective, credits used, and todo progress. The panel auto-collapses to a single identity row on short terminals (below 30 rows) and expands above that threshold; press Ctrl+X then `g` to override the automatic sizing by hand. | | `/changelog [summarize] [VERSION\|last N\|since VERSION]`, `/release-notes [summarize] [VERSION\|last N\|since VERSION]` | Display the CLI changelog. Optionally specify a version, a count of recent releases, or a starting version. Add the keyword `summarize` for an AI-generated summary. | | `/chronicle ` | Session history tools and insights. The `skills` subcommands draft, review, and track the status of repository skill proposals generated from observed usage. See [AUTOTITLE](/copilot/concepts/agents/copilot-cli/chronicle). | | `/clear [PROMPT]`, `/new [PROMPT]`, `/reset [PROMPT]` | Start a new conversation. | @@ -459,7 +462,7 @@ These are the slash commands you can use from within an interactive CLI session. | `/login` | Log in to {% data variables.product.prodname_copilot_short %}. | | `/logout` | Log out of {% data variables.product.prodname_copilot_short %}. | | `/lsp [show\|test\|reload\|logs\|help] [SERVER-NAME]` | Manage the language server configuration. The `logs` subcommand opens the live LSP services log panel. | -| `/mcp [config\|list\|show\|add\|edit\|delete\|disable\|enable\|auth\|reload\|search] [SERVER-NAME]` | Manage the MCP server configuration. With no subcommand, or with `config`, the plugins dashboard opens pinned to the MCP server list; the add, edit, and authenticate forms open inside that dashboard too, so closing a form returns you to the server list. Use `show` or `show SERVER-NAME` to display all configured servers or open one server's details directly, including its available tools, and to enable or disable it. `list` (alias `ls`) prints a plain-text list of configured servers with connection status and live state. Bare `/mcp`, `config`, `show`, and `list` (alias `ls`) are read-only or open the dashboard, so they can run while the agent is busy processing a turn. The mutating subcommands (`add`, `edit`, `delete`, `disable`, `enable`, `auth`, `reload`, and `search`) are blocked until the turn finishes. `edit ` rejects a workspace-sourced server (one defined in a repository's `.mcp.json`) instead of opening the user-tier wizard, since saving would silently create a same-name user entry that the workspace one still shadows. The error names the file to edit directly. `delete ` reports the same file when asked to remove a workspace-sourced server. Sandboxed local servers show a `connected (sandboxed)` status. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/add-mcp-servers#managing-mcp-servers). | +| `/mcp [config\|list\|show\|add\|edit\|delete\|disable\|enable\|auth\|reload\|search] [SERVER-NAME]` | Manage the MCP server configuration. With no subcommand, or with `config`, the plugins dashboard opens pinned to the MCP server list; the add, edit, and authenticate forms open inside that dashboard too, so closing a form returns you to the server list. Use `show` or `show SERVER-NAME` to display all configured servers or open one server's details directly, including its available tools, and to enable or disable it. For a plugin-provided server, `show SERVER-NAME` also displays the source attribution (for example, `Source: Plugin my-plugin (1.2.0)`). `list` (alias `ls`) prints a plain-text list of configured servers with connection status and live state. Bare `/mcp`, `config`, `show`, and `list` (alias `ls`) are read-only or open the dashboard, so they can run while the agent is busy processing a turn. The mutating subcommands (`add`, `edit`, `delete`, `disable`, `enable`, `auth`, `reload`, and `search`) are blocked until the turn finishes. `edit ` rejects a workspace-sourced server (one defined in a repository's `.mcp.json`) instead of opening the user-tier wizard, since saving would silently create a same-name user entry that the workspace one still shadows. The error names the file to edit directly. `delete ` reports the same file when asked to remove a workspace-sourced server. Sandboxed local servers show a `connected (sandboxed)` status. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/add-mcp-servers#managing-mcp-servers). | | `/model [--session\|--global\|--repo\|--local] [MODEL]`, `/models` | Select the AI model you want to use, or choose **Auto**. By default (or with `--session`, alias `-s`), changes the model, reasoning effort, or context window for the current session only, without touching saved settings. `--repo`/`--local` pins the default model in repository settings instead; `--global` (or `/config model`) sets the default for future sessions. Press Tab on a model with a long-context variant to toggle its Context column between the default and long-context window. The picker groups models into sections—press Shift+Tab to cycle grouping between recommended (Recent, Recommended, New, and other models), vendor, and category. A model with vendor-specific data retention terms shows a data retention warning banner with a link to the vendor's policy. Usable mid-turn: a change requested while the agent is running is queued as a cancellable (Ctrl+C) command and applied once the current turn finishes, instead of switching the live model mid-request. See [AUTOTITLE](/copilot/concepts/models/auto-model-selection). | | `/permissions [default\|assisted\|allow-all\|show]` | Switch between permission modes (`default`, `assisted`, `allow-all`), or show the current mode (`show`). This is the canonical command for permission mode changes; `/allow-all` and `/yolo` remain supported as aliases. | | `/permissions reset` | Reset all in-memory tool and path approvals for the current session (re-prompt on next use). | @@ -488,7 +491,7 @@ These are the slash commands you can use from within an interactive CLI session. | `/search [QUERY]`, `/find [QUERY]` | Search the conversation timeline. | | `/security-review [PROMPT]` | Run a focused security review of active local code changes and return prioritized vulnerability findings with remediation suggestions. This command is not a full repository security audit. | | `/session [info\|checkpoints [n]\|files\|plan\|rename [NAME]\|cleanup\|prune\|delete [ID]\|delete-all]`, `/sessions [info\|checkpoints [n]\|files\|plan\|rename [NAME]\|cleanup\|prune\|delete [ID]\|delete-all]` | Show session information and manage sessions. The `info` subcommand shows session details including the session link (when available). Subcommands: `info`, `checkpoints`, `files`, `plan`, `rename`, `cleanup`, `prune`, `delete`, `delete-all`. | -| `/settings [--repo\|--local] [show KEY\|KEY\|KEY VALUE]`,
`/config [--repo\|--local] [show KEY\|KEY\|KEY VALUE]` | Open the settings dialog, open it focused on a specific setting (`KEY`), set a setting inline (`KEY VALUE`), or display a setting's current value (`show KEY`). `show` masks secret-named values (for example, tokens or API keys nested under a setting) instead of printing them in clear text. The dialog shows **User**, **Repo**, **Repo (local)**, and **Problems** tabs—switch with Tab/Shift+Tab; a setting overridden in another scope shows a badge naming which scope wins. The **Problems** tab is a cross-scope view of settings that need attention (for example, unknown or invalid keys); its label shows a count, such as `Problems (2)`, when any scope has an issue, and otherwise just reads `Problems`. Add `--repo` or `--local` to target `.github/copilot/settings.json` or `.github/copilot/settings.local.json` instead of the user settings file—for example, `/settings --repo model gpt-5.2`. Only [repo-overridable keys](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#repository-settings-githubcopilotsettingsjson) can be set this way. Rows governed by an active organization or MDM managed policy render read-only with a `(managed)` tag. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/change-settings). | +| `/settings [--repo\|--local] [show KEY\|KEY\|KEY VALUE]`,
`/config [--repo\|--local] [show KEY\|KEY\|KEY VALUE]` | Open the settings dialog, open it focused on a specific setting (`KEY`), set a setting inline (`KEY VALUE`), or display a setting's current value (`show KEY`). `show` masks secret-named values (for example, tokens or API keys nested under a setting) instead of printing them in clear text. The dialog shows **User**, **Repo**, **Repo (local)**, and **Problems** tabs—switch with Tab/Shift+Tab; a setting overridden in another scope shows a badge naming which scope wins. The **Problems** tab is a cross-scope view of settings that need attention (for example, unknown or invalid keys); its label shows a count, such as `Problems (2)`, when any scope has an issue, and otherwise just reads `Problems`. Add `--repo` or `--local` to target `.github/copilot/settings.json` or `.github/copilot/settings.local.json` instead of the user settings file—for example, `/settings --repo model gpt-6-astra`. Only [repo-overridable keys](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#repository-settings-githubcopilotsettingsjson) can be set this way. Rows governed by an active organization or MDM managed policy render read-only with a `(managed)` tag. See [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/change-settings). | | `/share [link\|off\|file\|html\|gist\|research] [...]`, `/export [...]` | Share the current session. With no subcommand, generates a shareable {% data variables.product.github %} link when you're logged in and synced (falls back to Markdown file export otherwise). `off` stops sharing. `link` is an explicit alias for the default link flow; `link off` stops link sharing. `file [session\|research] [PATH]` exports to a Markdown file. `html [session\|research] [PATH]` exports to an HTML file. `gist [session\|research]` creates a {% data variables.product.github %} gist. `research [PATH]` exports the research report. | | `/skills` | Open the plugins dashboard on the Skills tab. | | `/skills list` | List all available skills. | @@ -507,7 +510,7 @@ These are the slash commands you can use from within an interactive CLI session. | `/usage` | Display session usage metrics and statistics, including per-model token totals. For token-based-billing accounts, each model's row also shows its own {% data variables.product.prodname_ai_credit_singular %} consumption (for example, `1 AIC`). Billed models with no token counts show credits only. | | `/user [show\|list\|switch]` | Manage the current {% data variables.product.github %} user. | | `/version` | Display version information and check for updates. | -| `/vim` | Toggle Vim mode for the input composer, enabling Vim-style modal editing: motions (for example, `hjkl`, `w`, `b`, `e`, `0`, `$`, `gg`, `G`), character search (`f`/`F`/`t`/`T`/`;`/`,`), insert commands (`i`/`a`/`o`), edit commands (`r`/`~`/`J`/`x`/`D`/`C`), operators (`d`/`c`/`y`), yank and put (`y`/`p`/`P`), repeat (`.`), undo and redo (`u`/Ctrl+R), counts, and Esc to return to normal mode. Also configurable with the `editorMode` setting. See [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#user-settings-copilotsettingsjson). | +| `/vim` | Toggle Vim mode for the prompt box, enabling Vim-style modal editing: motions (for example, `hjkl`, `w`, `b`, `e`, `0`, `$`, `gg`, `G`), character search (`f`/`F`/`t`/`T`/`;`/`,`), insert commands (`i`/`a`/`o`), edit commands (`r`/`~`/`J`/`x`/`D`/`C`), operators (`d`/`c`/`y`), yank and put (`y`/`p`/`P`), repeat (`.`), undo and redo (`u`/Ctrl+R), counts, and Esc to return to normal mode. Also configurable with the `editorMode` setting. See [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#user-settings-copilotsettingsjson). | | `/voice [on\|off\|models\|devices]` | Toggle voice mode, browse available voice models, or choose the input device (microphone). | | `/fork [NAME]`, `/branch [NAME]` | Fork the current session into a new session, optionally with a name. | | `/worktree [branch\|task]` | Create a new Git worktree and switch to it, leaving uncommitted changes behind in the current worktree. Pass a branch name, a task description (multiline supported, used as the opening prompt in the new worktree), or omit the argument to auto-generate a branch name from the conversation. By default, branches off the current checkout (`HEAD`); set the `worktreeBaseRef` setting to `"defaultBranch"` to branch off the remote default branch instead. See [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-config-dir-reference#user-settings-copilotsettingsjson). Requires a Git repository. | @@ -664,7 +667,6 @@ Use `--model=MODEL` or the `COPILOT_MODEL` environment variable to select the AI | `gpt-6-astra` | New model, opt-in (not the automatic default) | | `claude-haiku-4.5` | Fast, lightweight operations | | `gpt-5.3-codex` | Code-focused tasks | -| `gemini-3.1-pro-preview` | Google Gemini reasoning | | `gemini-3.5-flash` | Fast Google Gemini responses | | `gemini-3.6-flash` | Fast Google Gemini responses | | `gemini-3.7-flash` | Fast Google Gemini responses | @@ -914,6 +916,9 @@ In the `/mcp add`/`/mcp edit` interactive form, enter the `env` field as comma-s | `type` | No | `"local"` or `"stdio"`. Default: `"local"`. | | `deferTools` | No | `"auto"` (default) or `"never"`. Set to `"never"` to keep this server's tools always visible even when tool search is active. | | `disableToolCache` | No | Set to `true` to skip loading and persisting the tool snapshot for this server. | +| `slowConnectionThresholdMs` | No | Milliseconds before {% data variables.copilot.copilot_cli_short %} warns that this server is taking longer than expected to connect. Default: `10000`. This setting only affects when the warning is shown—it doesn't change the connection timeout. Must be a positive integer no greater than `2147483647`. | + +`slowConnectionThresholdMs` and `timeout` are independent: `timeout` sets the actual connection budget (floored at `60000` ms), while `slowConnectionThresholdMs` only controls when {% data variables.copilot.copilot_cli_short %} prints a warning for a connection that's still in progress. Raise `slowConnectionThresholdMs` to quiet expected-slow handshakes, for example for servers behind an authentication flow, without extending how long tool calls are allowed to take. ### Tool snapshot caching @@ -956,6 +961,7 @@ The `--registry` option and other npm configuration options (`--userconfig`, `-- | `oidc` | No | Enable OIDC token injection. When `true`, the CLI injects OIDC tokens for any `GITHUB_COPILOT_OIDC_MCP_TOKEN` or `GITHUB_COPILOT_OIDC_MCP_TOKEN_` variable referenced in the server's `env` block (local servers), or sends the token as a `Bearer` `Authorization` header (remote servers). For local servers, prefer suffixed variants (for example, `${GITHUB_COPILOT_OIDC_MCP_TOKEN_MY_SVC}`) to assign a unique variable name per server. | | `timeout` | No | Timeout in milliseconds for tool discovery and tool calls. Default: `30000`. | | `deferTools` | No | `"auto"` (default) or `"never"`. Set to `"never"` to keep this server's tools always visible even when tool search is active. | +| `slowConnectionThresholdMs` | No | Milliseconds before {% data variables.copilot.copilot_cli_short %} warns that this server is taking longer than expected to connect. Default: `10000`. This setting only affects when the warning is shown—it doesn't change the connection timeout. Must be a positive integer no greater than `2147483647`. | ### OAuth re-authentication @@ -1011,6 +1017,8 @@ The CLI includes built-in MCP servers that are available without additional setu Use `--disable-builtin-mcps` to disable all built-in servers, or `--disable-mcp-server SERVER-NAME` to disable a specific one. +Built-in servers appear in `copilot mcp list`, `copilot mcp get`, and the interactive `/mcp` view alongside user, workspace, and plugin servers. + #### {% data variables.product.github %} MCP server tools The `github-mcp-server` provides the following tools. @@ -1196,7 +1204,7 @@ Custom agents are specialized AI agents defined in Markdown files. The filename | `research` | claude-haiku-4.5 | Executes thorough searches based on instructions. Searches {% data variables.product.github %} repositories, fetches files, verifies claims, and reports detailed findings with citations. | | `rubber-duck` | complementary model | Use a complementary model to provide a constructive critique of proposals, designs, implementations, or tests. Identifies weak points and suggests improvements. See [AUTOTITLE](/copilot/concepts/agents/copilot-cli/rubber-duck). | | `security-review` | claude-sonnet-4.6 | Security-focused code review. Analyzes changes for high-confidence vulnerabilities across 11 categories. Only flags issues with >80% confidence of exploitability. Reports severity and confidence scores. Will not modify code. | -| `task` | claude-haiku-4.5 | Command execution (tests, builds, lints). Returns brief summary on success, full output on failure. | +| `task` | gpt-5.6-luna (falls back to gpt-5.4-mini, then claude-haiku-4.5) | Command execution (tests, builds, lints). Returns brief summary on success, full output on failure. | `code-review` and `security-review` never forward a full review to another review agent: launching one already fulfills a request to "use" or "call" a reviewer, so it performs the review itself instead of delegating the whole task to a nested `code-review` or `security-review` subagent, recursively, across the entire delegation chain. `code-review` still hands off to the dedicated `security-review` specialist for security-focused portions of a request, and both agents may delegate narrow, independently scoped fact-finding work to non-review agents such as `explore`. @@ -1207,6 +1215,7 @@ Only the root agent can call `store_memory` or `vote_memory` to save or vote on | Field | Type | Required | Description | |-------|------|----------|-------------| | `description` | string | Yes | Description shown in the agent list and `task` tool. | +| `include-custom-instructions` | boolean | No | Include repository instruction files (`copilot-instructions.md`, `AGENTS.md`, `CLAUDE.md`) when this agent runs as a subagent. Default: `false`. See [Repository custom instructions for subagents](#repository-custom-instructions-for-subagents). | | `infer` | boolean | No | Allow auto-delegation by the main agent. Default: `true`. | | `mcp-servers` | object | No | MCP servers to connect. Uses the same schema as `~/.copilot/mcp-config.json`. | | `model` | string | No | AI model for this agent. When unset, inherits the outer agent's model. When the session model is set to `Auto` (server-selected), subagents always inherit the resolved session model regardless of this field. | @@ -1229,6 +1238,32 @@ Only the root agent can call `store_memory` or `vote_memory` to save or vote on For project-scoped agents, the CLI walks upward from your current working directory to the Git root, loading `.github/agents/` and `.claude/agents/` directories at each ancestor level. This means each package or subdirectory in a monorepo can contribute its own agents. When multiple `.github/agents/` directories exist in the path, all are loaded, with the deepest directory taking highest priority. The `.github/agents/` convention takes precedence over `.claude/agents/` at the same level. User-level agents have lower priority than project-level agents. Plugin agents have the lowest priority. +### Repository custom instructions for subagents + +A custom agent spawned as a subagent—through the `task` tool or the SDK's `session.startSubagent`—doesn't receive repository instruction files (`copilot-instructions.md`, `AGENTS.md`, `CLAUDE.md`) by default. Set `include-custom-instructions: true` in its frontmatter to opt in: + +```markdown +--- +name: RepoAwareReviewer +description: Reviews a change against this repository's conventions +tools: ["*"] +include-custom-instructions: true +--- + +Review the change and flag anything that violates the repository's conventions. +``` + +| Agent | Receives repository instructions | +|-------|-----------------------------------| +| Session agent (the default agent, or a custom agent selected with `--agent`) | Yes | +| `general-purpose` subagent | Yes | +| Built-in `explore`, `task`, and `code-review` subagents | No | +| Custom agent spawned as a subagent | Only with `include-custom-instructions: true` | + +When a subagent has `include-custom-instructions: true`, it reads your repository's own instruction files (`copilot-instructions.md`, `AGENTS.md`, `CLAUDE.md`). It does not inherit any extra instruction directories you loaded only for the main session—for example, a personal directory you pointed the session at with `COPILOT_CUSTOM_INSTRUCTIONS_DIRS`. Starting a session with `--no-custom-instructions` always takes priority: when you use that option, no agent receives repository instructions, even one that sets `include-custom-instructions: true`. Only turn the setting on for agents that need to follow your repository's conventions, such as an agent that reviews or edits code. Repository instructions add to what an agent processes each time it runs, so leaving the setting off for agents that don't need them—for example, an agent that only searches for files or summarizes text—keeps those agents faster and cheaper to run. + +For more information, see [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/create-custom-agents-for-cli). + ### Agent communication Use `list_agents` and `write_agent` inside custom agents to inspect nearby agents and coordinate work in a multi-agent session. diff --git a/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md b/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md index c1d36c44bd23..6ea1a3d26a4d 100644 --- a/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md +++ b/content/copilot/reference/copilot-cli-reference/cli-config-dir-reference.md @@ -576,8 +576,8 @@ Each line is a glob pattern matched against model IDs, or a `fallback:` directiv ```text # .github/allowed_models.txt -fallback: gpt-5.2 -gpt-5.2 +fallback: gpt-6-astra +gpt-6-astra gpt-5.4 claude-sonnet-* ``` diff --git a/content/get-started/accessibility/github-command-palette.md b/content/get-started/accessibility/github-command-palette.md index 58f01716cf55..441a3f94d996 100644 --- a/content/get-started/accessibility/github-command-palette.md +++ b/content/get-started/accessibility/github-command-palette.md @@ -163,7 +163,7 @@ Most of these commands are available only on the home page of the repository. If |`New discussion`|Create a new discussion in the repository. For more information, see [AUTOTITLE](/discussions/quickstart#creating-a-new-discussion).| |`New file`|Create a new file from any page in the repository. For more information, see [AUTOTITLE](/repositories/working-with-files/managing-files/adding-a-file-to-a-repository). |`New issue`|Open a new issue from any page in the repository. For more information, see [AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/creating-an-issue).| -|`Open in {% data variables.codespaces.serverless %} editor`|Open the current repository in the {% data variables.codespaces.serverless %} editor. For more information, see [AUTOTITLE](/codespaces/the-githubdev-web-based-editor#opening-the-githubdev-editor).| +|`Open in {% data variables.codespaces.serverless %} editor`|Open the current repository in {% data variables.product.prodname_vscode_web %}. For more information, see [AUTOTITLE](/codespaces/the-githubdev-web-based-editor#opening-vs-code-for-the-web-from-github).| ### File commands @@ -172,7 +172,7 @@ These commands are available only when you open the command palette from a file | Command | Behavior| | :- | :- | |`Copy permalink`|Create a link to the file that includes the current commit SHA and copy the link to the clipboard. For more information, see [AUTOTITLE](/repositories/working-with-files/using-files/getting-permanent-links-to-files#press-y-to-permalink-to-a-file-in-a-specific-commit). -|`Open in {% data variables.codespaces.serverless %} editor`|Open the currently displayed file in {% data variables.codespaces.serverless %} editor. For more information, see [AUTOTITLE](/codespaces/the-githubdev-web-based-editor#opening-the-githubdev-editor).| +|`Open in {% data variables.codespaces.serverless %} editor`|Open the currently displayed file in {% data variables.product.prodname_vscode_web %}. For more information, see [AUTOTITLE](/codespaces/the-githubdev-web-based-editor#opening-vs-code-for-the-web-from-github).| ### Discussion commands diff --git a/content/get-started/using-github/connecting-to-github.md b/content/get-started/using-github/connecting-to-github.md index 53d4f8da8fb6..d3c30488d834 100644 --- a/content/get-started/using-github/connecting-to-github.md +++ b/content/get-started/using-github/connecting-to-github.md @@ -35,7 +35,7 @@ For a tutorial to help you get started with making changes in the browser, see [ Working directly on {% data variables.location.product_location %} is best for small, simple changes, often targeting a single file in a repository. If you want to work in the browser but need to make more complex changes, such as moving content between files, you can choose from the following tools to open a repository in a dedicated editor. -* If you want an editor where you can quickly open or create files, you can press the `.` key in any repository to open the github.dev editor. This is a lightweight web-based editor that includes many of the features of {% data variables.product.prodname_vscode %}, such as a search bar and buttons for Git commands. For more information, see [AUTOTITLE](/codespaces/the-githubdev-web-based-editor). +* If you want an editor where you can quickly open or create files, you can press the `.` key in any repository to open {% data variables.product.prodname_vscode_web %}. This is a lightweight web-based editor that includes many of the features of {% data variables.product.prodname_vscode %}, such as a search bar and buttons for Git commands. For more information, see [AUTOTITLE](/codespaces/the-githubdev-web-based-editor). * If you want to stay in the browser but need to do things like run commands, create a test build of your project, or install dependencies, you can open a repository in a codespace. A codespace is a remote development environment with storage and compute power. It includes an editor and integrated terminal, and comes preinstalled with common tools you may need to work with a project, including Git. For more information, see [AUTOTITLE](/codespaces/quickstart). Alternatively, you can connect to {% data variables.product.github %} from your desktop, and work with a local copy of the repository.{% else %}Working directly in the browser is best for small, simple changes, often targeting a single file in a repository. If you want to make more complex changes, you may need to connect to {% data variables.product.github %} from the desktop, and work with a local copy of the repository.{% endif %} @@ -68,7 +68,7 @@ For more information about how to authenticate to {% data variables.product.gith | ---- | -------- | ------------------ | | **On {% data variables.location.product_location %}** | You want a visual interface and need to make quick, simple changes, typically involving a single commit. For an introduction, see [AUTOTITLE](/get-started/using-github/hello-world). | Browser | | {% ifversion fpt or ghec %} | -| **github.dev** | You want to make more complex changes to a repository than is possible on {% data variables.product.prodname_dotcom_the_website %}, but don't need to work with a terminal or tools you have installed on your computer. For more information, see [AUTOTITLE](/codespaces/the-githubdev-web-based-editor#opening-the-githubdev-editor). | Browser | +| **{% data variables.product.prodname_vscode_web %}** | You want to make more complex changes to a repository than is possible on {% data variables.product.prodname_dotcom_the_website %}, but don't need to work with a terminal or tools you have installed on your computer. For more information, see [AUTOTITLE](/codespaces/the-githubdev-web-based-editor#opening-vs-code-for-the-web-from-github). | Browser | | **{% data variables.product.prodname_github_codespaces %}** | You need the resources of a computer to do things like run scripts, create a test build of your project, or install dependencies, and you want to get started quickly by working in a cloud-based environment. For more information, see [AUTOTITLE](/codespaces/quickstart). | Browser or desktop | | {% endif %} | | **{% data variables.product.prodname_desktop %}** | You want to work with files locally, and would prefer a visual interface to use Git, visualize changes, and interact with {% data variables.product.github %}. For more information, see [AUTOTITLE](/desktop/overview/about-github-desktop). | Desktop | diff --git a/data/release-notes/enterprise-server/3-21/0-rc1.yml b/data/release-notes/enterprise-server/3-21/0-rc1.yml index 636721840706..05219e26633a 100644 --- a/data/release-notes/enterprise-server/3-21/0-rc1.yml +++ b/data/release-notes/enterprise-server/3-21/0-rc1.yml @@ -218,12 +218,6 @@ sections: # https://github.com/github/releases/issues/7252 - | Test merge commits for open pull requests are now generated less frequently, improving performance and reducing repository bloat from loose Git objects. The test merge commit associated with a pull request is updated when the pull request itself changes, when the merge base between the two branches changes, or when the current test merge is older than 12 hours. All mergeability checks and rules continue to be honored. - # https://github.com/github/releases/issues/6670 - - | - Pull request reviewers can comment on any line of a changed file, not just lines within the diff. Previously, comments could only be placed on the three lines before or after a changed line. This allows reviewers to leave feedback on unchanged lines that need attention and to place comments directly on the relevant line, making review feedback clearer and easier for authors to act on. This feature is in public preview and subject to change. - # https://github.com/github/releases/issues/7688 - - | - Users can view PR-level discussion comments in the side panel of the new Files Changed tab, allowing them to follow conversations while reviewing code without switching between the Files Changed and Conversation tabs. The side panel also supports filtering review and discussion comments. This feature is in public preview and subject to change. - heading: Integrations and extensions notes: @@ -297,3 +291,9 @@ sections: # https://github.com/github/releases/issues/6651 - | Closing down: Networking-related syscalls will be disabled by default in the pre-receive hook environment starting in {% data variables.product.prodname_ghe_server %} version 3.22. For enhanced security, hook environments will be placed in dedicated network namespaces. You will be able to override the default setting by setting `pre-receive-hook-networking` to `enabled`. In many cases, [push rulesets](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets#push-rulesets) are an alternative for many pre-receive hooks. + + errata: + - | + These release notes previously included a note about viewing pull request-level discussion comments in the side panel of the new Files Changed tab. The note was added prematurely and has been removed. We will republish it when the feature is ready. [Updated: 2026-09-18] + - | + These release notes previously included a note about commenting on any line of a changed file in a pull request. The note was added prematurely and has been removed. We will republish it when the feature is ready. [Updated: 2026-09-18] diff --git a/data/release-notes/enterprise-server/3-21/0.yml b/data/release-notes/enterprise-server/3-21/0.yml index d628237f11a2..cf1b416f5614 100644 --- a/data/release-notes/enterprise-server/3-21/0.yml +++ b/data/release-notes/enterprise-server/3-21/0.yml @@ -217,9 +217,6 @@ sections: # https://github.com/github/releases/issues/7252 - | Test merge commits for open pull requests are now generated less frequently, improving performance and reducing repository bloat from loose Git objects. The test merge commit associated with a pull request is updated when the pull request itself changes, when the merge base between the two branches changes, or when the current test merge is older than 12 hours. All mergeability checks and rules continue to be honored. - # https://github.com/github/releases/issues/7688 - - | - Users can view PR-level discussion comments in the side panel of the new Files Changed tab, allowing them to follow conversations while reviewing code without switching between the Files Changed and Conversation tabs. The side panel also supports filtering review and discussion comments. This feature is in public preview and subject to change. - heading: Integrations and extensions notes: @@ -300,4 +297,6 @@ sections: - | These release notes previously included a note about pull request reviewers being able to comment on any line of a changed file, not just lines within the diff. The note was added prematurely and has been removed. We will republish it when the feature is ready. [Updated: 2026-06-23] - | - These release notes incorrecly indicated that the `case` function is supported in {% data variables.product.prodname_actions %} expressions. [Updated: 2026-07-30] + These release notes previously included a note about viewing pull request-level discussion comments in the side panel of the new Files Changed tab. The note was added prematurely and has been removed. We will republish it when the feature is ready.  [Updated: 2026-09-18] + - | + These release notes incorrectly indicated that the `case` function is supported in {% data variables.product.prodname_actions %} expressions. [Updated: 2026-07-30] diff --git a/data/reusables/copilot/copilot-cloud-agent-non-auto-models.md b/data/reusables/copilot/copilot-cloud-agent-non-auto-models.md index be60376f1472..4bfb531c1f27 100644 --- a/data/reusables/copilot/copilot-cloud-agent-non-auto-models.md +++ b/data/reusables/copilot/copilot-cloud-agent-non-auto-models.md @@ -12,4 +12,5 @@ * {% data variables.copilot.copilot_gpt_6_astra %} * {% data variables.copilot.copilot_grok_45 %} * {% data variables.copilot.copilot_grok_46 %} +* {% data variables.copilot.copilot_grok_47 %} * {% data variables.copilot.copilot_mai_code_1_1_flash %} diff --git a/data/reusables/copilot/model-compliance/us-models.md b/data/reusables/copilot/model-compliance/us-models.md index 2e77f292e2b0..d0fa75bac1b8 100644 --- a/data/reusables/copilot/model-compliance/us-models.md +++ b/data/reusables/copilot/model-compliance/us-models.md @@ -3,7 +3,6 @@ * GPT-4o * GPT-4.1 * GPT-5.2 -* GPT-5.2-Codex * GPT-5.3-Codex * Claude Haiku 4.5 * Claude Sonnet 5 diff --git a/data/reusables/copilot/preview-features-policy.md b/data/reusables/copilot/preview-features-policy.md new file mode 100644 index 000000000000..16acd5a2016e --- /dev/null +++ b/data/reusables/copilot/preview-features-policy.md @@ -0,0 +1 @@ +Access to preview features is controlled by policy settings at the organization and enterprise level. See [AUTOTITLE](/enterprise-cloud@latest/copilot/how-tos/administer-copilot/manage-for-organization/manage-policies#opting-in-to-previews-or-feedback) and [AUTOTITLE](/enterprise-cloud@latest/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-enterprise-policies#defining-policies-for-your-enterprise). diff --git a/data/tables/copilot/model-comparison.yml b/data/tables/copilot/model-comparison.yml index 7f4b338d44cd..68941899fcbc 100644 --- a/data/tables/copilot/model-comparison.yml +++ b/data/tables/copilot/model-comparison.yml @@ -137,6 +137,11 @@ excels_at: Complex problem-solving challenges, sophisticated reasoning further_reading: '[Grok 4.6 model card](https://media.x.ai/v1/website/card-4p6-4cd2dc57.pdf)' +- name: Grok 4.7 + task_area: Agentic coding and complex, multistep workflows + excels_at: Complex problem-solving challenges, sophisticated reasoning + further_reading: 'Coming soon' + # Other providers (alphabetized by model name) - name: Qwen2.5 task_area: General-purpose coding and writing diff --git a/data/tables/copilot/model-deprecation-history.yml b/data/tables/copilot/model-deprecation-history.yml index ef92c3e3b435..8a6ec17cbad2 100644 --- a/data/tables/copilot/model-deprecation-history.yml +++ b/data/tables/copilot/model-deprecation-history.yml @@ -57,7 +57,7 @@ - name: 'Gemini 2.5 Pro' retirement_date: '2026-07-31' - suggested_alternative: 'Gemini 3.1 Pro' + suggested_alternative: 'Gemini 3.8 Flash' - name: 'Gemini 3 Flash' retirement_date: '2026-07-31' @@ -67,17 +67,18 @@ retirement_date: '2026-06-29' suggested_alternative: 'Claude Opus 4.8 (fast mode) (preview)' -- name: 'GPT-4.1' - retirement_date: '2026-06-01' - suggested_alternative: 'GPT-5.5' - - name: 'GPT-5.2' - retirement_date: '2026-06-01' + retirement_date: '2026-06-05' suggested_alternative: 'GPT-5.5' - name: 'GPT-5.2-Codex' - retirement_date: '2026-06-01' + retirement_date: '2026-06-05' suggested_alternative: 'GPT-5.3-Codex' + +- name: 'GPT-4.1' + retirement_date: '2026-06-01' + suggested_alternative: 'GPT-5.5' + - name: 'Grok Code Fast 1' retirement_date: '2026-05-15' suggested_alternative: 'GPT-5 mini' @@ -104,11 +105,11 @@ - name: 'Gemini 3 Pro' retirement_date: '2026-03-26' - suggested_alternative: 'Gemini 3.1 Pro' + suggested_alternative: 'Gemini 3.8 Flash' - name: 'Claude Opus 4.1' retirement_date: '2026-02-17' - suggested_alternative: 'Claude Opus 4.6' + suggested_alternative: 'Claude Opus 5' - name: 'GPT-5' retirement_date: '2026-02-17' @@ -124,7 +125,7 @@ - name: 'Claude Opus 4' retirement_date: '2025-10-23' - suggested_alternative: 'Claude Opus 4.6' + suggested_alternative: 'Claude Opus 5' - name: 'Claude Sonnet 3.7' retirement_date: '2025-10-23' @@ -136,7 +137,7 @@ - name: 'Gemini 2.0 Flash' retirement_date: '2025-10-23' - suggested_alternative: 'Gemini 2.5 Pro' + suggested_alternative: 'Gemini 3.8 Flash' - name: 'o1-mini' retirement_date: '2025-10-23' diff --git a/data/tables/copilot/model-release-status.yml b/data/tables/copilot/model-release-status.yml index 30ef6d240cea..59ff828adc18 100644 --- a/data/tables/copilot/model-release-status.yml +++ b/data/tables/copilot/model-release-status.yml @@ -133,3 +133,7 @@ - name: 'Grok 4.6' provider: 'xAI' release_status: 'GA' + +- name: 'Grok 4.7' + provider: 'xAI' + release_status: 'GA' diff --git a/data/tables/copilot/model-supported-clients.yml b/data/tables/copilot/model-supported-clients.yml index 555c83005dd3..4080c6fb272e 100644 --- a/data/tables/copilot/model-supported-clients.yml +++ b/data/tables/copilot/model-supported-clients.yml @@ -248,6 +248,15 @@ xcode: true jetbrains: true +- name: Grok 4.7 + dotcom: false + cli: true + vscode: true + vs: true + eclipse: true + xcode: true + jetbrains: true + - name: Kimi K2.7 Code dotcom: true cli: true diff --git a/data/tables/copilot/model-supported-plans.yml b/data/tables/copilot/model-supported-plans.yml index 663b9264fb24..a5438a3d20c6 100644 --- a/data/tables/copilot/model-supported-plans.yml +++ b/data/tables/copilot/model-supported-plans.yml @@ -187,6 +187,13 @@ business: true enterprise: true +- name: Grok 4.7 + pro: true + pro_plus: true + max: true + business: true + enterprise: true + - name: Kimi K2.7 Code pro: true pro_plus: true diff --git a/data/tables/copilot/models-and-pricing.yml b/data/tables/copilot/models-and-pricing.yml index b5c04e7085e5..37ec3e1c233c 100644 --- a/data/tables/copilot/models-and-pricing.yml +++ b/data/tables/copilot/models-and-pricing.yml @@ -369,6 +369,26 @@ cached_input: $1.00 output: $12.00 +- model: 'Grok 4.7' + provider: xai + release_status: GA + category: Versatile + threshold: '≤ 200K' + tier: 'Default' + input: $2.00 + cached_input: $0.50 + output: $6.00 + +- model: 'Grok 4.7' + provider: xai + release_status: GA + category: Versatile + threshold: '> 200K' + tier: 'Long context' + input: $4.00 + cached_input: $1.00 + output: $12.00 + # Microsoft - model: 'MAI-Code-1.1-Flash' provider: microsoft diff --git a/data/variables/copilot.yml b/data/variables/copilot.yml index 680885a1ca79..14c251abee68 100644 --- a/data/variables/copilot.yml +++ b/data/variables/copilot.yml @@ -240,6 +240,7 @@ copilot_o4_mini: 'o4-mini' copilot_grok_code: 'Grok Code Fast 1' copilot_grok_45: 'Grok 4.5' copilot_grok_46: 'Grok 4.6' +copilot_grok_47: 'Grok 4.7' # Qwen: copilot_qwen_25: 'Qwen2.5' # Microsoft: @@ -250,9 +251,6 @@ copilot_raptor_mini: 'Raptor mini' copilot_kimi_k27_code: 'Kimi K2.7 Code' copilot_kimi_k3: 'Kimi K3' -## Current model used by Copilot cloud agent and Copilot CLI -cca_current_model: '{% data variables.copilot.copilot_claude_opus_46 %}' - ## Next edit suggestions next_edit_suggestions: 'next edit suggestions' next_edit_suggestions_caps: 'Next edit suggestions' diff --git a/data/variables/product.yml b/data/variables/product.yml index f10fb985f9ed..4ee4e6ca6316 100644 --- a/data/variables/product.yml +++ b/data/variables/product.yml @@ -303,6 +303,7 @@ prodname_vs: 'Visual Studio' # Visual Studio Code prodname_vscode_shortname: 'VS Code' prodname_vscode: 'Visual Studio Code' +prodname_vscode_web: 'VS Code for the Web' prodname_vscode_command_palette_shortname: 'VS Code Command Palette' prodname_vscode_command_palette: 'Visual Studio Code Command Palette' prodname_vscode_marketplace: 'Visual Studio Code Marketplace' diff --git a/package-lock.json b/package-lock.json index f75d2b373230..00a884910dd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "license": "(MIT AND CC-BY-4.0)", "dependencies": { "@elastic/elasticsearch": "8.19.1", - "@github/failbot": "0.8.3", + "@github/failbot": "1.1.1", "@github/hydro-analytics-client": "^2.4.1", "@gr2m/gray-matter": "4.0.3-with-pr-137", "@horizon-rs/language-guesser": "0.1.1", @@ -1332,11 +1332,16 @@ "license": "MIT" }, "node_modules/@github/failbot": { - "version": "0.8.3", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@github/failbot/-/failbot-1.1.1.tgz", + "integrity": "sha512-6nAlnfKVNJRHY1qQYmqzS9gJlv76N5FzZX+Sp3pP6b0MLF/IuCEU72yF8aVdlAULXJkVaOfzC+rBs6ASinEthg==", "license": "MIT", + "dependencies": { + "stacktrace-parser": "^0.1.11" + }, "engines": { - "node": ">= 14.x", - "npm": ">= 7.x" + "node": ">= 22.x", + "npm": ">= 10.x" } }, "node_modules/@github/hydro-analytics-client": { @@ -14605,6 +14610,27 @@ "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true }, + "node_modules/stacktrace-parser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", + "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, "node_modules/start-server-and-test": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-3.0.0.tgz", diff --git a/package.json b/package.json index cc4b3b15e0a8..5baa4f7ab728 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,7 @@ "warmup-remotejson": "tsx src/archives/scripts/warmup-remotejson.ts", "what-docs-early-access-branch": "tsx src/early-access/scripts/what-docs-early-access-branch.ts", "writers": "tsx src/workflows/writers-help-metadata.ts", - "postinstall": "npx --no-install patch-package" + "postinstall": "npx --no-install patch-package --error-on-fail" }, "lint-staged": { "*.{ts,tsx}": "eslint --cache --fix", @@ -171,7 +171,7 @@ }, "dependencies": { "@elastic/elasticsearch": "8.19.1", - "@github/failbot": "0.8.3", + "@github/failbot": "1.1.1", "@github/hydro-analytics-client": "^2.4.1", "@gr2m/gray-matter": "4.0.3-with-pr-137", "@horizon-rs/language-guesser": "0.1.1", diff --git a/src/content-pipelines/state/copilot-cli.sha b/src/content-pipelines/state/copilot-cli.sha index 872d30f84453..649c47c84294 100644 --- a/src/content-pipelines/state/copilot-cli.sha +++ b/src/content-pipelines/state/copilot-cli.sha @@ -1 +1 @@ -9f0895c41d269a48bde50fcd5634e72ff4815ce1 +c619492f08c4ca46107b70a0633a3e9f8b3adbf9 diff --git a/src/github-apps/lib/config.json b/src/github-apps/lib/config.json index 19e352b8d5ce..15106af54316 100644 --- a/src/github-apps/lib/config.json +++ b/src/github-apps/lib/config.json @@ -60,5 +60,5 @@ "2022-11-28" ] }, - "sha": "2c0db91ff57dc7d0670be941320e5f7d8daa17fd" + "sha": "d4278c869e367f5d6d4e0f46878119128abba77b" } \ No newline at end of file diff --git a/src/rest/data/fpt-2022-11-28/collaborators.json b/src/rest/data/fpt-2022-11-28/collaborators.json index 61552800219b..09f78ceaa27c 100644 --- a/src/rest/data/fpt-2022-11-28/collaborators.json +++ b/src/rest/data/fpt-2022-11-28/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -404,7 +405,7 @@ { "type": "string", "name": "permission", - "description": "

The permission to grant the collaborator. Only valid on organization-owned repositories. We accept the following permissions to be set: pull, triage, push, maintain, admin and you can also specify a custom repository role name, if the owning organization has defined any.

", + "description": "

The permission to grant the collaborator. Only valid on organization-owned repositories. We accept the following permissions to be set: pull, triage, triage_plus, push, maintain, admin and you can also specify a custom repository role name, if the owning organization has defined any.

", "default": "push" } ], @@ -1508,6 +1509,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -3067,6 +3069,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4277,6 +4280,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -5528,6 +5532,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/fpt-2022-11-28/commits.json b/src/rest/data/fpt-2022-11-28/commits.json index 06273107d74a..3b2dd5202fba 100644 --- a/src/rest/data/fpt-2022-11-28/commits.json +++ b/src/rest/data/fpt-2022-11-28/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5425,6 +5433,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7519,6 +7531,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/fpt-2022-11-28/pulls.json b/src/rest/data/fpt-2022-11-28/pulls.json index cbdf113807fc..4c4c5bd92c0c 100644 --- a/src/rest/data/fpt-2022-11-28/pulls.json +++ b/src/rest/data/fpt-2022-11-28/pulls.json @@ -11481,6 +11481,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/fpt-2026-03-10/collaborators.json b/src/rest/data/fpt-2026-03-10/collaborators.json index dceebc59e75a..a2e5bd405b9f 100644 --- a/src/rest/data/fpt-2026-03-10/collaborators.json +++ b/src/rest/data/fpt-2026-03-10/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -404,7 +405,7 @@ { "type": "string", "name": "permission", - "description": "

The permission to grant the collaborator. Only valid on organization-owned repositories. We accept the following permissions to be set: pull, triage, push, maintain, admin and you can also specify a custom repository role name, if the owning organization has defined any.

", + "description": "

The permission to grant the collaborator. Only valid on organization-owned repositories. We accept the following permissions to be set: pull, triage, triage_plus, push, maintain, admin and you can also specify a custom repository role name, if the owning organization has defined any.

", "default": "push" } ], @@ -1505,6 +1506,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -3061,6 +3063,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4268,6 +4271,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -5516,6 +5520,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/fpt-2026-03-10/commits.json b/src/rest/data/fpt-2026-03-10/commits.json index 5d6d8c519b06..b705958a4656 100644 --- a/src/rest/data/fpt-2026-03-10/commits.json +++ b/src/rest/data/fpt-2026-03-10/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5267,6 +5275,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7361,6 +7373,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/fpt-2026-03-10/pulls.json b/src/rest/data/fpt-2026-03-10/pulls.json index 60cb2a4380ec..f5d18950d17c 100644 --- a/src/rest/data/fpt-2026-03-10/pulls.json +++ b/src/rest/data/fpt-2026-03-10/pulls.json @@ -10965,6 +10965,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghec-2022-11-28/collaborators.json b/src/rest/data/ghec-2022-11-28/collaborators.json index d5e7273db9c4..8a84b0bed7e4 100644 --- a/src/rest/data/ghec-2022-11-28/collaborators.json +++ b/src/rest/data/ghec-2022-11-28/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -404,7 +405,7 @@ { "type": "string", "name": "permission", - "description": "

The permission to grant the collaborator. Only valid on organization-owned repositories. We accept the following permissions to be set: pull, triage, push, maintain, admin and you can also specify a custom repository role name, if the owning organization has defined any.

", + "description": "

The permission to grant the collaborator. Only valid on organization-owned repositories. We accept the following permissions to be set: pull, triage, triage_plus, push, maintain, admin and you can also specify a custom repository role name, if the owning organization has defined any.

", "default": "push" } ], @@ -1520,6 +1521,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -3091,6 +3093,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4313,6 +4316,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -5576,6 +5580,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/ghec-2022-11-28/commits.json b/src/rest/data/ghec-2022-11-28/commits.json index 414a5b39a37d..26b5bc005f3a 100644 --- a/src/rest/data/ghec-2022-11-28/commits.json +++ b/src/rest/data/ghec-2022-11-28/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5425,6 +5433,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7519,6 +7531,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghec-2022-11-28/pulls.json b/src/rest/data/ghec-2022-11-28/pulls.json index 46cabc008840..ee927e379b76 100644 --- a/src/rest/data/ghec-2022-11-28/pulls.json +++ b/src/rest/data/ghec-2022-11-28/pulls.json @@ -11481,6 +11481,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghec-2026-03-10/collaborators.json b/src/rest/data/ghec-2026-03-10/collaborators.json index f72ae13affae..2c469b07e714 100644 --- a/src/rest/data/ghec-2026-03-10/collaborators.json +++ b/src/rest/data/ghec-2026-03-10/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -404,7 +405,7 @@ { "type": "string", "name": "permission", - "description": "

The permission to grant the collaborator. Only valid on organization-owned repositories. We accept the following permissions to be set: pull, triage, push, maintain, admin and you can also specify a custom repository role name, if the owning organization has defined any.

", + "description": "

The permission to grant the collaborator. Only valid on organization-owned repositories. We accept the following permissions to be set: pull, triage, triage_plus, push, maintain, admin and you can also specify a custom repository role name, if the owning organization has defined any.

", "default": "push" } ], @@ -1517,6 +1518,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -3085,6 +3087,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4304,6 +4307,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -5564,6 +5568,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/ghec-2026-03-10/commits.json b/src/rest/data/ghec-2026-03-10/commits.json index e6500c317d84..cd80361ee6a4 100644 --- a/src/rest/data/ghec-2026-03-10/commits.json +++ b/src/rest/data/ghec-2026-03-10/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5267,6 +5275,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7361,6 +7373,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghec-2026-03-10/pulls.json b/src/rest/data/ghec-2026-03-10/pulls.json index 42ffe61e99d4..0d7c61afb666 100644 --- a/src/rest/data/ghec-2026-03-10/pulls.json +++ b/src/rest/data/ghec-2026-03-10/pulls.json @@ -10965,6 +10965,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.17-2022-11-28/collaborators.json b/src/rest/data/ghes-3.17-2022-11-28/collaborators.json index e7591005ba2e..010c30612234 100644 --- a/src/rest/data/ghes-3.17-2022-11-28/collaborators.json +++ b/src/rest/data/ghes-3.17-2022-11-28/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -1866,6 +1867,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -2996,6 +2998,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4167,6 +4170,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/ghes-3.17-2022-11-28/commits.json b/src/rest/data/ghes-3.17-2022-11-28/commits.json index e657c4fef0d8..6831a2fd5f8f 100644 --- a/src/rest/data/ghes-3.17-2022-11-28/commits.json +++ b/src/rest/data/ghes-3.17-2022-11-28/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5416,6 +5424,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7510,6 +7522,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.17-2022-11-28/pulls.json b/src/rest/data/ghes-3.17-2022-11-28/pulls.json index 389e41e39634..001af850ac5d 100644 --- a/src/rest/data/ghes-3.17-2022-11-28/pulls.json +++ b/src/rest/data/ghes-3.17-2022-11-28/pulls.json @@ -11472,6 +11472,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.18-2022-11-28/collaborators.json b/src/rest/data/ghes-3.18-2022-11-28/collaborators.json index 72e812bf6ce9..21dbf9802130 100644 --- a/src/rest/data/ghes-3.18-2022-11-28/collaborators.json +++ b/src/rest/data/ghes-3.18-2022-11-28/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -1871,6 +1872,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -3006,6 +3008,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4182,6 +4185,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/ghes-3.18-2022-11-28/commits.json b/src/rest/data/ghes-3.18-2022-11-28/commits.json index e59479fac808..4af37dfd9bd7 100644 --- a/src/rest/data/ghes-3.18-2022-11-28/commits.json +++ b/src/rest/data/ghes-3.18-2022-11-28/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5416,6 +5424,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7510,6 +7522,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.18-2022-11-28/pulls.json b/src/rest/data/ghes-3.18-2022-11-28/pulls.json index 29b575760e26..357a099b2978 100644 --- a/src/rest/data/ghes-3.18-2022-11-28/pulls.json +++ b/src/rest/data/ghes-3.18-2022-11-28/pulls.json @@ -11472,6 +11472,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.19-2022-11-28/collaborators.json b/src/rest/data/ghes-3.19-2022-11-28/collaborators.json index 3a7236229ab8..1292dd8d11e1 100644 --- a/src/rest/data/ghes-3.19-2022-11-28/collaborators.json +++ b/src/rest/data/ghes-3.19-2022-11-28/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -1871,6 +1872,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -3006,6 +3008,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4182,6 +4185,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/ghes-3.19-2022-11-28/commits.json b/src/rest/data/ghes-3.19-2022-11-28/commits.json index 01a35bdac26e..bf3578478cca 100644 --- a/src/rest/data/ghes-3.19-2022-11-28/commits.json +++ b/src/rest/data/ghes-3.19-2022-11-28/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5416,6 +5424,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7510,6 +7522,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.19-2022-11-28/pulls.json b/src/rest/data/ghes-3.19-2022-11-28/pulls.json index e1d680160749..a0dc5d96b201 100644 --- a/src/rest/data/ghes-3.19-2022-11-28/pulls.json +++ b/src/rest/data/ghes-3.19-2022-11-28/pulls.json @@ -11472,6 +11472,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.20-2022-11-28/collaborators.json b/src/rest/data/ghes-3.20-2022-11-28/collaborators.json index 5b24afd7c6b9..59be44f262e2 100644 --- a/src/rest/data/ghes-3.20-2022-11-28/collaborators.json +++ b/src/rest/data/ghes-3.20-2022-11-28/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -1871,6 +1872,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -3006,6 +3008,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4182,6 +4185,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/ghes-3.20-2022-11-28/commits.json b/src/rest/data/ghes-3.20-2022-11-28/commits.json index 3d1568167eef..8a0d95e4ca9c 100644 --- a/src/rest/data/ghes-3.20-2022-11-28/commits.json +++ b/src/rest/data/ghes-3.20-2022-11-28/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5416,6 +5424,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7510,6 +7522,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.20-2022-11-28/pulls.json b/src/rest/data/ghes-3.20-2022-11-28/pulls.json index 00424eb27b06..353ed580c1e7 100644 --- a/src/rest/data/ghes-3.20-2022-11-28/pulls.json +++ b/src/rest/data/ghes-3.20-2022-11-28/pulls.json @@ -11472,6 +11472,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.21-2022-11-28/collaborators.json b/src/rest/data/ghes-3.21-2022-11-28/collaborators.json index 2ae047ac41db..b2d2c9e20450 100644 --- a/src/rest/data/ghes-3.21-2022-11-28/collaborators.json +++ b/src/rest/data/ghes-3.21-2022-11-28/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -1925,6 +1926,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -3114,6 +3116,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4344,6 +4347,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/ghes-3.21-2022-11-28/commits.json b/src/rest/data/ghes-3.21-2022-11-28/commits.json index 04b70a82a55c..09f3d18e9d2e 100644 --- a/src/rest/data/ghes-3.21-2022-11-28/commits.json +++ b/src/rest/data/ghes-3.21-2022-11-28/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5416,6 +5424,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7510,6 +7522,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.21-2022-11-28/pulls.json b/src/rest/data/ghes-3.21-2022-11-28/pulls.json index 0b97cae409bb..b8677b0e2fed 100644 --- a/src/rest/data/ghes-3.21-2022-11-28/pulls.json +++ b/src/rest/data/ghes-3.21-2022-11-28/pulls.json @@ -11472,6 +11472,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.21-2026-03-10/collaborators.json b/src/rest/data/ghes-3.21-2026-03-10/collaborators.json index d28bbd59f469..593840f1fd77 100644 --- a/src/rest/data/ghes-3.21-2026-03-10/collaborators.json +++ b/src/rest/data/ghes-3.21-2026-03-10/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -1922,6 +1923,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -3108,6 +3110,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4335,6 +4338,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/ghes-3.21-2026-03-10/commits.json b/src/rest/data/ghes-3.21-2026-03-10/commits.json index 2468ba21c3a9..50926d8ec2a0 100644 --- a/src/rest/data/ghes-3.21-2026-03-10/commits.json +++ b/src/rest/data/ghes-3.21-2026-03-10/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5258,6 +5266,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7352,6 +7364,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.21-2026-03-10/pulls.json b/src/rest/data/ghes-3.21-2026-03-10/pulls.json index 09ab9b948d04..63134f22732a 100644 --- a/src/rest/data/ghes-3.21-2026-03-10/pulls.json +++ b/src/rest/data/ghes-3.21-2026-03-10/pulls.json @@ -10956,6 +10956,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.22-2022-11-28/collaborators.json b/src/rest/data/ghes-3.22-2022-11-28/collaborators.json index b0a4077af4d2..fac29ad4a700 100644 --- a/src/rest/data/ghes-3.22-2022-11-28/collaborators.json +++ b/src/rest/data/ghes-3.22-2022-11-28/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -1934,6 +1935,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -3132,6 +3134,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4371,6 +4374,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/ghes-3.22-2022-11-28/commits.json b/src/rest/data/ghes-3.22-2022-11-28/commits.json index 2b966b604c9c..285d0bb441a5 100644 --- a/src/rest/data/ghes-3.22-2022-11-28/commits.json +++ b/src/rest/data/ghes-3.22-2022-11-28/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5425,6 +5433,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7519,6 +7531,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.22-2022-11-28/pulls.json b/src/rest/data/ghes-3.22-2022-11-28/pulls.json index 538d8ee04c4e..3ae284dbfabe 100644 --- a/src/rest/data/ghes-3.22-2022-11-28/pulls.json +++ b/src/rest/data/ghes-3.22-2022-11-28/pulls.json @@ -11481,6 +11481,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.22-2026-03-10/collaborators.json b/src/rest/data/ghes-3.22-2026-03-10/collaborators.json index 04d38872cb68..4bb37884a4e7 100644 --- a/src/rest/data/ghes-3.22-2026-03-10/collaborators.json +++ b/src/rest/data/ghes-3.22-2026-03-10/collaborators.json @@ -51,6 +51,7 @@ "enum": [ "pull", "triage", + "triage_plus", "push", "maintain", "admin" @@ -1931,6 +1932,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -3126,6 +3128,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, @@ -4362,6 +4365,7 @@ "write", "admin", "triage", + "triage_plus", "maintain" ] }, diff --git a/src/rest/data/ghes-3.22-2026-03-10/commits.json b/src/rest/data/ghes-3.22-2026-03-10/commits.json index 787ef4b101d8..ce62d5aad21f 100644 --- a/src/rest/data/ghes-3.22-2026-03-10/commits.json +++ b/src/rest/data/ghes-3.22-2026-03-10/commits.json @@ -737,6 +737,14 @@ "httpStatusCode": "409", "description": "

Conflict

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -5267,6 +5275,10 @@ "httpStatusCode": "422", "description": "

Validation failed, or the endpoint has been spammed.

" }, + { + "httpStatusCode": "429", + "description": "

The request could not be processed due to heavy server load. Please try again.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" @@ -7361,6 +7373,10 @@ "httpStatusCode": "404", "description": "

Resource not found

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/data/ghes-3.22-2026-03-10/pulls.json b/src/rest/data/ghes-3.22-2026-03-10/pulls.json index 2258ba4f6756..0fc88e94497b 100644 --- a/src/rest/data/ghes-3.22-2026-03-10/pulls.json +++ b/src/rest/data/ghes-3.22-2026-03-10/pulls.json @@ -10965,6 +10965,10 @@ "httpStatusCode": "406", "description": "

Unacceptable

" }, + { + "httpStatusCode": "422", + "description": "

Validation failed, or the endpoint has been spammed.

" + }, { "httpStatusCode": "500", "description": "

Internal Error

" diff --git a/src/rest/lib/config.json b/src/rest/lib/config.json index 9f98a8194ef1..c5102325a074 100644 --- a/src/rest/lib/config.json +++ b/src/rest/lib/config.json @@ -51,5 +51,5 @@ ] } }, - "sha": "2c0db91ff57dc7d0670be941320e5f7d8daa17fd" + "sha": "d4278c869e367f5d6d4e0f46878119128abba77b" } \ No newline at end of file diff --git a/src/webhooks/lib/config.json b/src/webhooks/lib/config.json index 5881eb8b6c96..3bbbdffbfe24 100644 --- a/src/webhooks/lib/config.json +++ b/src/webhooks/lib/config.json @@ -1,3 +1,3 @@ { - "sha": "2c0db91ff57dc7d0670be941320e5f7d8daa17fd" + "sha": "d4278c869e367f5d6d4e0f46878119128abba77b" } \ No newline at end of file