You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Contributing to multiple accounts using SSH and multiple keys
105
+
106
+
If you are a member of an {% data variables.enterprise.prodname_emu_enterprise %}, but also want to collaborate outside your enterprise using a personal account, you can use different SSH keys for each account. For more information about using SSH, see [AUTOTITLE](/authentication/connecting-to-github-with-ssh).
107
+
> [!WARNING]
108
+
> You cannot use the same SSH key to contribute to both repositories inside your {% data variables.enterprise.prodname_emu_org %} and outside the enterprise.
109
+
110
+
1. Generate a different SSH key forthe repositoriesin your {% data variables.enterprise.prodname_emu_org %}. See [AUTOTITLE](/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#generating-a-new-ssh-key). When you save the key, give it a different filename from your existing key (for instance, add -emu to the suggested name of the file).
111
+
112
+
1. Add the new ssh key to your {% data variables.enterprise.prodname_managed_user %}. See [AUTOTITLE](/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account#adding-a-new-ssh-key-to-your-account)
113
+
114
+
1. Configure your SSH Config File `~/.ssh/config` to use the different keys. For example, if your personal SSH key is `~/.ssh/id_ed25519` and your {% data variables.enterprise.prodname_emu_enterprise %} SSH key is `~/.ssh/id_ed25519-emu`
115
+
116
+
```text copy
117
+
Host github.com
118
+
IdentityFile ~/.ssh/id_ed25519
119
+
IdentitiesOnly yes
120
+
121
+
Host github-emu.com
122
+
Hostname github.com
123
+
IdentityFile ~/.ssh/id_ed25519-emu
124
+
IdentitiesOnly yes
125
+
```
126
+
127
+
> [!NOTE]
128
+
> The `IdentitiesOnly` line ensures that if the ssh-agent has loaded multiple keys, ssh uses the correct key when connecting.
129
+
130
+
1. Test your SSH configuration by running the following command to connect using the SSH key associated with your personal account - see [AUTOTITLE](/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection) for further details
131
+
132
+
```shell copy
133
+
ssh -T git@github.com
134
+
```
135
+
136
+
Test to see if you can connect to ({% data variables.product.github %}) using your {% data variables.enterprise.prodname_emu_enterprise %} SSH key
137
+
138
+
```shell copy
139
+
ssh -T git@github-emu.com
140
+
```
141
+
142
+
1. Tell `git` to use the correct key when downloading or uploading a repository in an {% data variables.enterprise.prodname_emu_org %}.
143
+
To list the organizations in your {% data variables.enterprise.prodname_emu_enterprise %},
144
+
{% data reusables.profile.access_org %}
145
+
1. For each organization listed tell `git` to use the `github-emu.com` host.
146
+
147
+
For example, if one of your organizations is called `octocat-emu`then to tell `git` to use the host `github-emu.com`forrepositoriesin the `octocat-emu` organization, run the following command
Now, when you clone a repository using SSH, in the `octocat-emu` organization, `git` will use the SSH key associated with your {% data variables.enterprise.prodname_emu_enterprise %} instead of your personal key.
154
+
104
155
## Next steps
105
156
106
157
For reference information, see [AUTOTITLE](/account-and-profile/reference/personal-account-reference).
Copy file name to clipboardExpand all lines: content/copilot/reference/copilot-usage-metrics/copilot-usage-metrics.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,10 +38,10 @@ These metrics appear directly in the {% data variables.product.prodname_copilot_
38
38
| Language usage per day | Daily breakdown of languages used. |
39
39
| Model usage | Distribution of AI models used for chat. |
40
40
| Model usage per day | Daily breakdown of chat model usage. |
41
-
| Model usage per chat mode | Model usage by {% data variables.product.prodname_copilot_short %} feature (ask, edit, agent). |
41
+
| Model usage per chat mode | Model usage by {% data variables.product.prodname_copilot_short %} feature (ask, edit, plan, agent). |
42
42
| Model usage per language | Distribution of languages broken down by model. |
43
43
| Most used chat model | The most frequently used chat model in the last 28 days. |
44
-
| Requests per chat mode | Number of chat requests by mode (ask, edit, agent). |
44
+
| Requests per chat mode | Number of chat requests by mode (ask, edit, plan, agent). |
45
45
46
46
## Code generation dashboard metrics
47
47
@@ -72,7 +72,7 @@ These fields appear in the exported NDJSON reports and in the {% data variables.
72
72
|`enterprise_id`| Unique ID of the enterprise. |
73
73
|`organization_id` (API only) | Unique ID of the organization. |
74
74
|`user_id` / `user_login`| Unique identifier and {% data variables.product.github %} username for the user. |
75
-
|`user_initiated_interaction_count`| Number of explicit prompts sent to {% data variables.product.prodname_copilot_short %}.<br><br> Only counts messages or prompts actively sent to the model. Does **not** include opening the chat panel, switching modes (for example, ask, edit, or agent), using keyboard shortcuts to open the inline UI, or making configuration changes. |
75
+
|`user_initiated_interaction_count`| Number of explicit prompts sent to {% data variables.product.prodname_copilot_short %}.<br><br> Only counts messages or prompts actively sent to the model. Does **not** include opening the chat panel, switching modes (for example, ask, edit, plan, or agent), using keyboard shortcuts to open the inline UI, or making configuration changes. |
76
76
|`chat_panel_agent_mode`| Captures user-initiated interactions in the chat panel with agent mode selected. |
77
77
|`chat_panel_ask_mode`| Captures user-initiated interactions in the chat panel with ask mode selected. |
78
78
|`chat_panel_custom_mode`| Captures user-initiated interactions in the chat panel with a custom agent selected. |
Copy file name to clipboardExpand all lines: content/copilot/reference/copilot-usage-metrics/interpret-copilot-metrics.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,7 +34,7 @@ The "Requests per chat mode" and "Agent adoption" charts show how developers are
34
34
35
35
| Signal | What it tells you | What to look for |
36
36
|:--|:--|:--|
37
-
| Requests per chat mode | Breakdown of chat interactions by mode—Ask, Edit, or Agent. | A balanced distribution suggests users are exploring multiple capabilities. Heavy use of one mode can highlight where enablement should focus. |
37
+
| Requests per chat mode | Breakdown of chat interactions by mode—Ask, Edit, Plan, or Agent. | A balanced distribution suggests users are exploring multiple capabilities. Heavy use of one mode can highlight where enablement should focus. |
38
38
| Agent adoption | Percentage of active users who used {% data variables.copilot.copilot_agent_short %}. | Growth over time shows that developers are progressing from basic completions to more advanced {% data variables.product.prodname_copilot_short %} features. |
39
39
40
40
## Reviewing model adoption
@@ -44,7 +44,7 @@ The "Model usage per day" and "Model usage per chat mode" charts help you unders
44
44
| Chart | Description | Insights to derive |
45
45
|:--|:--|:--|
46
46
| Model usage per day | Shows which AI models power {% data variables.copilot.copilot_chat_short %} activity. | Identify whether users are primarily engaging with default models or experimenting with newer ones. |
47
-
| Model usage per chat mode | Breaks down model usage by chat mode (Ask, Edit, Agent). | Monitor how model adoption evolves as new models are released. |
47
+
| Model usage per chat mode | Breaks down model usage by chat mode (Ask, Edit, Plan, Agent). | Monitor how model adoption evolves as new models are released. |
48
48
49
49
> [!NOTE]
50
50
> Model usage charts currently represent chat activity only. Completions data is not included in model breakdowns.
Copy file name to clipboardExpand all lines: content/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry.md
+55Lines changed: 55 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -296,6 +296,61 @@ If you're using a nuspec file, ensure that it has a `repository` element with th
296
296
297
297
If you're using a `GITHUB_TOKEN` to authenticate to a {% data variables.product.prodname_registry %} registry within a {% data variables.product.prodname_actions %} workflow, the token cannot access private repository-based packages in a different repository other than where the workflow is running in. To access packages associated with other repositories, instead generate a {% data variables.product.pat_v1 %} with the `read:packages` scope and pass this token in as a secret.
298
298
299
+
### Intermittent 403 errors when restoring public packages
300
+
301
+
If you're using {% data variables.product.prodname_registry %} alongside _nuget.org_ and experiencing intermittent 403 Forbidden errors when restoring standard public packages (like `Microsoft.Extensions.*`), this may occur because NuGet queries all configured package sources for every package. If {% data variables.product.prodname_registry %} authentication fails temporarily, it can block the entire restore—even for packages that don't exist on {% data variables.product.prodname_registry %}.
302
+
303
+
To avoid this, use [NuGet Package Source Mapping](https://learn.microsoft.com/nuget/consume-packages/package-source-mapping) to route packages to specific sources.
304
+
305
+
Replace:
306
+
*`NAMESPACE` with the name of the personal account or organization that owns your {% data variables.product.prodname_registry %} NuGet feed.
307
+
*`PACKAGE-ID-PREFIX` with the NuGet package ID prefix that you use for packages hosted on {% data variables.product.prodname_registry %}. If you use multiple prefixes, add additional `<package>` entries for each prefix.{% ifversion ghes %}
308
+
*`HOSTNAME` with the host name for {% data variables.location.product_location %}.{% endif %}
309
+
310
+
{% ifversion ghes %}If your instance has subdomain isolation enabled:
NuGet uses the [most specific matching pattern](https://learn.microsoft.com/nuget/consume-packages/package-source-mapping#package-pattern-precedence), so packages matching `PACKAGE-ID-PREFIX.*` are fetched only from {% data variables.product.prodname_registry %}, while all other packages are fetched from _nuget.org_. This also helps prevent dependency confusion attacks by ensuring your private packages can only come from your {% data variables.product.prodname_registry %} feed.
Copy file name to clipboardExpand all lines: data/release-notes/enterprise-server/3-14/20.yml
-2Lines changed: 0 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -5,8 +5,6 @@ sections:
5
5
**HIGH:** An attacker could execute code within a victim's browser, potentially accessing sensitive information, by causing malicious HTML to be injected into the DOM when content is rendered by the Filter component found across GitHub. GitHub has requested CVE ID [CVE-2025-13744](https://www.cve.org/cverecord?id=CVE-2025-13744) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). [Updated: 2026-01-06]
6
6
- |
7
7
**HIGH:** A privilege escalation vulnerability was identified in GitHub Enterprise Server that allowed an authenticated Enterprise admin to gain root SSH access to the appliance by exploiting a symlink escape in pre-receive hook environments. By crafting a malicious repository and environment, an attacker could replace system binaries during hook cleanup and execute a payload that adds their own SSH key to the root user’s authorized keys—thereby granting themselves root SSH access to the server. To exploit this vulnerability, the attacker needed to have enterprise admin privileges. This vulnerability has been assigned [CVE-2025-11578](https://nvd.nist.gov/vuln/detail/CVE-2025-11578) and was reported through the GitHub Bug Bounty program.
8
-
- |
9
-
Authenticated users could target the internal aqueduct-lite endpoints by using a domain name to circumvent checks. To mitigate this issue, a Server-Side Request Forgery (SSRF) vulnerability has been fixed by blocking connections to loopback addresses after resolving the domain name for the webhook delivery address.
10
8
- |
11
9
Packages have been updated to the latest security versions.
Copy file name to clipboardExpand all lines: data/release-notes/enterprise-server/3-14/22.yml
+3Lines changed: 3 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,8 @@
1
1
date: '2026-01-06'
2
2
sections:
3
+
security_fixes:
4
+
- |
5
+
**HIGH:** An authenticated attacker with permission to configure webhooks could perform SSRF to access internal-only services on the instance, potentially disrupting background job processing. Exploitation required webhook configuration privileges and the ability to craft valid service requests. GitHub has requested CVE ID [CVE-2026-1999](https://www.cve.org/cverecord?id=CVE-2026-1999) for this vulnerability, which was reported via the [GitHub Bug Bounty](https://bounty.github.com/) program.
3
6
bugs:
4
7
- |
5
8
On instances with GitHub Actions enabled, when administrators deleted a self-hosted runner from the service, the runner process continued running on the host and did not exit automatically.
Copy file name to clipboardExpand all lines: data/release-notes/enterprise-server/3-15/15.yml
-2Lines changed: 0 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -5,8 +5,6 @@ sections:
5
5
**HIGH:** An attacker could execute code within a victim's browser, potentially accessing sensitive information, by causing malicious HTML to be injected into the DOM when content is rendered by the Filter component found across GitHub. GitHub has requested CVE ID [CVE-2025-13744](https://www.cve.org/cverecord?id=CVE-2025-13744) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). [Updated: 2026-01-06]
6
6
- |
7
7
**HIGH:** A privilege escalation vulnerability was identified in GitHub Enterprise Server that allowed an authenticated Enterprise admin to gain root SSH access to the appliance by exploiting a symlink escape in pre-receive hook environments. By crafting a malicious repository and environment, an attacker could replace system binaries during hook cleanup and execute a payload that adds their own SSH key to the root user’s authorized keys—thereby granting themselves root SSH access to the server. To exploit this vulnerability, the attacker needed to have enterprise admin privileges. This vulnerability has been assigned [CVE-2025-11578](https://nvd.nist.gov/vuln/detail/CVE-2025-11578) and was reported through the GitHub Bug Bounty program.
8
-
- |
9
-
Authenticated users could target the internal aqueduct-lite endpoints by using a domain name to circumvent checks. To mitigate this issue, this fixes a Server-Side Request Forgery (SSRF) vulnerability by blocking connections to loopback addresses after resolving the domain name for the webhook delivery address.
10
8
- |
11
9
Packages have been updated to the latest security versions.
Copy file name to clipboardExpand all lines: data/release-notes/enterprise-server/3-15/17.yml
+3Lines changed: 3 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,8 @@
1
1
date: '2026-01-06'
2
2
sections:
3
+
security_fixes:
4
+
- |
5
+
**HIGH:** An authenticated attacker with permission to configure webhooks could perform SSRF to access internal-only services on the instance, potentially disrupting background job processing. Exploitation required webhook configuration privileges and the ability to craft valid service requests. GitHub has requested CVE ID [CVE-2026-2304](https://www.cve.org/cverecord?id=CVE-2026-2304) for this vulnerability, which was reported via the [GitHub Bug Bounty](https://bounty.github.com/) program.
3
6
bugs:
4
7
- |
5
8
On instances with GitHub Actions enabled, when administrators deleted a self-hosted runner from the service, the runner process continued running on the host and did not exit automatically.
0 commit comments