Update Learning Hub for Copilot CLI v1.0.69-1.0.70 features

New features documented:
- .github/copilot/settings.json for repository-pinned model/effort/context settings (v1.0.70)
- /refine command to rewrite rough prompts into clear ones (v1.0.70)
- Forge auto-creating draft skills from workflow patterns (v1.0.70)
- preToolUse exit code 2 for explicit tool call denial (v1.0.70)
- /plugins dashboard for managing plugins mid-session (v1.0.69)
- Plugin SHA pinning for reproducible installations (v1.0.70)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
github-actions[bot]
2026-07-11 21:02:58 +00:00
committed by GitHub
parent 30472ecf0f
commit 13f4a53644
4 changed files with 58 additions and 4 deletions
@@ -3,7 +3,7 @@ title: 'Automating with Hooks'
description: 'Learn how to use hooks to automate lifecycle events like formatting, linting, and governance checks during Copilot agent sessions.'
authors:
- GitHub Copilot Learning Hub Team
lastUpdated: 2026-06-25
lastUpdated: 2026-07-11
estimatedReadingTime: '8 minutes'
tags:
- hooks
@@ -392,6 +392,8 @@ Block dangerous commands before they execute. Use the `matcher` field to target
The `preToolUse` hook receives JSON input with details about the tool being called. Your script can inspect this input and exit with a non-zero code to **deny** the tool execution, or exit with zero to **approve** it.
> **Exit code 2 for explicit denial** *(v1.0.70+)*: `preToolUse` hooks that exit with code `2` explicitly deny the tool call. Using exit code `2` is the recommended way to signal a deliberate policy block (as opposed to exit code `1`, which signals an unexpected script error). Both non-zero exit codes block the tool, but exit code `2` produces a cleaner, more informative denial message in the timeline.
### Modifying Tool Arguments with preToolUse
Beyond approve/deny, `preToolUse` hooks can also **modify tool arguments** before they are passed to the tool, and inject **additional context** into the agent's reasoning. To do this, write JSON to stdout from your hook script:
@@ -3,7 +3,7 @@ title: 'Copilot Configuration Basics'
description: 'Learn how to configure GitHub Copilot at user, workspace, and repository levels to optimize your AI-assisted development experience.'
authors:
- GitHub Copilot Learning Hub Team
lastUpdated: 2026-07-07
lastUpdated: 2026-07-11
estimatedReadingTime: '10 minutes'
tags:
- configuration
@@ -413,6 +413,23 @@ In addition to the main config file, GitHub Copilot CLI reads two optional per-p
These files follow the same format as `config.json` and are loaded after the global config, so they can tailor CLI behaviour—including hook definitions—per repository without touching `.github/`.
**Repository-pinned settings via `.github/copilot/settings.json`** *(v1.0.70+)*: A trusted repository can pin the model, reasoning effort level, and context tier for all sessions in that repository, and extend the URL, MCP server, and skill deny lists, by committing a `.github/copilot/settings.json` file:
```json
{
"model": "claude-sonnet-4.6",
"effortLevel": "high",
"contextTier": "long",
"denyList": {
"urls": ["*.internal.example.com"],
"mcpServers": ["untrusted-server"],
"skills": []
}
}
```
When this file is present, the CLI applies these settings for any session rooted in the repository. This is useful for enforcing consistent AI settings across a team — for example, requiring a specific model for compliance workflows or capping effort level to control costs. The deny lists extend (not replace) your personal deny list configuration.
> **Important (v1.0.36+)**: Custom agents, skills, and commands placed in `~/.claude/` (the Claude Code user directory) are **no longer loaded** by GitHub Copilot CLI. Only `~/.claude/settings.json` is read for configuration. If you previously stored personal agents or skills in `~/.claude/`, move them to the supported locations: `~/.copilot/agents/` for user-level agents, `~/.copilot/skills/` or `~/.agents/skills/` for personal skills, or `.github/agents/` and `.github/skills/` in your repositories for project-level customizations.
### Model Picker
@@ -592,6 +609,14 @@ The `/ask` command lets you ask a quick question without affecting your conversa
/ask What does the `retry` utility in src/utils do?
```
The `/refine` command *(v1.0.70+)* rewrites a rough, stream-of-consciousness prompt into a clearer, more structured one before sending it. Use it when you have a complex idea but want to improve how you express it to the model:
```
/refine
```
After typing your draft prompt and running `/refine`, the CLI returns a refined version you can edit further or send as-is. This is useful for complex feature requests or architectural discussions where precision matters.
The `/env` command shows all loaded environment details — instructions, MCP servers, skills, agents, and plugins — in a single view. Use it to verify that the right resources are active for the current session:
```
@@ -3,7 +3,7 @@ title: 'Creating Effective Skills'
description: 'Master the art of writing reusable, shareable skill folders that deliver consistent results across your team.'
authors:
- GitHub Copilot Learning Hub Team
lastUpdated: 2026-06-30
lastUpdated: 2026-07-11
estimatedReadingTime: '9 minutes'
tags:
- skills
@@ -413,6 +413,10 @@ A: In v1.0.66+, the agent can propose draft skill additions or improvements as i
This opens a review flow where you can accept, reject, or defer each proposed change — giving you full control over how your skill library evolves. No changes are applied until you approve them.
**Q: What is Forge and how does it create skills automatically?**
A: In v1.0.70+, Forge is the CLI's workflow pattern detector. When the CLI observes that you or an agent are repeatedly following a clear workflow pattern — a sequence of steps that keeps recurring across prompts — it automatically creates a **draft skill** capturing that pattern. You then review and approve it with `/chronicle skills review` before it is saved. This makes growing your skill library feel organic: instead of manually authoring skills from scratch, Forge surfaces them from work you are already doing.
## Common Pitfalls to Avoid
- ❌ **Vague description**: "Code helper" doesn't help agents discover the skill
@@ -3,7 +3,7 @@ title: 'Installing and Using Plugins'
description: 'Learn how to find, install, and manage plugins that extend GitHub Copilot CLI with reusable agents, skills, hooks, and integrations.'
authors:
- GitHub Copilot Learning Hub Team
lastUpdated: 2026-06-24
lastUpdated: 2026-07-11
estimatedReadingTime: '8 minutes'
tags:
- plugins
@@ -200,6 +200,29 @@ copilot plugin marketplace update
copilot plugin uninstall my-plugin
```
**`/plugins` dashboard** *(v1.0.69+)*: Inside a Copilot CLI session, run `/plugins` to open an interactive dashboard that shows all installed plugins, their status, and quick actions to enable, disable, or manage them — without leaving your current conversation:
```
/plugins
```
The dashboard is also accessible while the agent is working, so you can inspect or toggle plugins mid-turn. You can also reload installed plugin extensions without restarting the session *(v1.0.69+)*.
**Pinning a plugin to a specific commit SHA** *(v1.0.70+)*: Marketplace plugins can be pinned to an exact commit SHA for reproducible, auditable installations. Add a `sha` field to the plugin source configuration in your plugin settings to lock the plugin to that exact revision:
```json
{
"plugins": {
"my-plugin": {
"source": "awesome-copilot",
"sha": "abc1234def5678..."
}
}
}
```
Pinning to a SHA prevents automatic updates from changing plugin behavior unexpectedly — useful in compliance-sensitive or production environments where you want explicit control over plugin versions.
### Loading Plugins from a Local Directory
You can load plugins directly from a local directory without installing them from a marketplace, using the `--plugin-dir` flag when starting Copilot: