Add chapter 7.9 on harness limits, team/CI error tables, Solo/Team framing in Anhang A, author handoff, and a narrow 7.9 comparison policy.
39 KiB
Kapitel 7
Best Practices und Troubleshooting
Kern in einem Satz: Die meisten „Copilot spinnt“-Tickets sind Kontext-, Permission-, Trust- oder Erwartungsprobleme – und die löst man mit Systematik, nicht mit lauteren Prompts.
Du brauchst dieses Kapitel, wenn Sessions teuer und unscharf werden, /compact „irgendwas“ löscht, Freigaben nicht greifen oder das Ticket wörtlich „Copilot macht Unsinn“ heißt. Lautere Prompts helfen selten – oft ist das Fenster voll, die falsche Schicht geladen oder Wissen nur im Chat.
Schnell: 7.7 Symptom → Fix · Kontext: 7.2–7.3 · Sessions & Remote: 7.3–7.3b · Persistenz: 7.4 · Sandbox/YOLO: 7.5 · Multi-Repo & Modelle: 7.6 · Drift: 7.8
Lesevertrag: Kapitel 00 – Produkt driftet; Konzept behalten, Syntax mit /help und docs.github.com verifizieren.
7.1 Best Practices – kompakt
Kurz genug zum Abhaken; die Mechanik steckt in den folgenden Abschnitten.
Prompts
- Ziel + Nicht-Ziel + Verify – sonst steuerst du nur Hoffnung
- Dateipfade nennen (
@datei), wenn bekannt - „Ändere nichts“ bei Explore – Default ist Handeln, nicht nur Lesen
- Bei Fehlern: komplette Fehlermeldung, nicht „geht nicht“
Repo
- Instructions kurz und konkret (Build/Test, 5–15 Zeilen Layout, 2–3 Immer/Nie)
- Deny / enge Allowlist von Tag 1 – Incident teurer als ein Flag-Snippet
- Skills für Prozeduren, Instructions für Normen, Hooks für Zwang
- Kleine PRs – auch wenn der Agent 30 Dateien anbietet
Sessions
- Ein Thema pro Session
/contextlesen, bevor du „lauter“ promptest/planvor multi-file/compactmit Fokus-Hinweis, nicht blind am Limit- Entscheidungen in Dateien persistieren (
PLAN.md, Instructions) - Vor Merge: Diff lesen; frische Review-Session oder menschlicher Reviewer
Sicherheit
- Kein
--allow-all//yoloauf Alltagsrechnern mit Prod-Zugang - MCP wie Dependencies reviewen – Code + Credentials
- Force-push und destruktive Shell standardmäßig deny
- CI least privilege – Runner-Tokens sind attraktive Ziele
Die vier Hebel aus dem Buch (Kapitel 00): Scope eng · Diff lesen · Deny vor YOLO · weich vs. hart.
7.2 Kontext-Management als Kernkompetenz
Kern: Das Kontextfenster ist die Primärressource der Session – was im Fenster liegt, steuert Qualität und Kosten, nicht die Eloquenz im Prompt.
Donnerstag, 16:40. Dieselbe Session seit dem Morgen: Auth-Fix, dann „kurz CSS“, dann CI. Copilot erfindet einen Plan, den du um 11 verworfen hast, fragt nach dem Test-Command aus den Instructions und schlägt denselben kaputten Fix zum dritten Mal vor. Du tippst lauter. Das Fenster ist voll – nicht das Modell dumm. Ein /context, ein Compact mit Fokus oder /clear hätte früher geholfen als der vierte Korrektur-Prompt.
Warum Kontext alles dominiert
Jede Session speichert u. a.: System-/Harness-Kontext, Custom Instructions, Skill-Katalog, MCP-Tool-Namen, deine Nachrichten, gelesene Dateien, Tool-Outputs, Agent-Antworten. Das Fenster ist endlich. Wenn es voll und verrauscht wird, steigt die Fehlerquote: frühere Anweisungen verblassen, alte Fehlversuche werden wiederverwendet, Instruction-Zeilen gehen im Rauschen unter.
Wie du das spürst: Antworten werden unscharf, der Agent „erinnert“ verworfene Pläne, oder fragt Dinge, die in .github/copilot-instructions.md stehen. Mehr Text im vollen Fenster verdrängt oft genau die Regel, die du durchsetzen wolltest.
Diagnose: /context
/context
Zeigt eine Visualisierung der Token-Nutzung (System/Tools, History, freier Raum – Labels je Version).
Wann schauen:
- vor einem großen Feature (Baseline)
- wenn Antworten driftieren oder Instructions „ignoriert“ wirken
- wenn Kosten/Latenz überraschen
- nach dem Laden neuer MCP-Server oder langer Explore-Phasen
Jetzt selbst machen (todo-cli):
cd beispiele/todo-cli
copilot
/context
Notiere den groben Füllstand. Dann: „Erkläre nur todo/store.py, keine anderen Dateien“ – und erneut /context. Du siehst, wie ein Read den Balken bewegt.
/compact und Auto-Compact
/compact
/compact Fokus Auth-Flow und freigegebener Plan; verwirf CSS-Experimente und gescheiterte Fixes
| Mechanik | Was du wissen musst |
|---|---|
Manuelles /compact [FOKUS] |
Zusammenfassung steuern – Hint/Fokus ist der Hebel |
| Auto-Compact | laut Docs bei ca. 95 % des Token-Limits im Hintergrund, ohne Workflow zu unterbrechen |
| Verlustbehaftet | Nuancen und verworfene Alternativen können verschwinden |
Achtung: Compact fasst zusammen und vergisst Nuancen. Was überleben muss, gehört in Dateien (
PLAN.md, Instructions) – nicht nur in den Chat.
Fokussierte Sessions: /clear, /new, /reset
/clear
/new
/reset
Zwischen unverwandten Tasks Kontext zurücksetzen. „Infinite sessions“ heißen nicht „eine Session für die ganze Woche Kitchen-Sink“. Fokussierte Sessions liefern bessere Ergebnisse – wie ein frisches Gespräch mit einer Kollegin.
Degradationssignale
| Signal | Wahrscheinliche Ursache | Erste Reaktion |
|---|---|---|
| Widersprüchliche Annahmen im selben Turn | alter Plan + neuer Scope | /clear oder Compact mit Fokus |
| „Erfindet“ verworfene Alternativen | Compact ohne Fokus / Kitchen-Sink | Datei-Persistenz, dann Compact-Hint |
| Fragt Dinge aus den Instructions | nicht geladen, zu lang/vage, oder ertrunken | /context, /instructions, kürzen |
| Loop: gleicher Fix, gleiches Fail | vergifteter Kontext | Stop; nach 2 Korrekturen /clear + besserer Prompt |
| Teuer und langsam ohne Nutzen | zu viele Reads/MCP | Scope enger, Subagent/Explore, MCP reduzieren |
Hebel-Matrix
| Hebel | Wann | Effekt |
|---|---|---|
Enger Prompt, @datei, Pfade |
immer | gezieltere Reads |
| „Ändere nichts“ / Plan Mode | Explore | kein Edit-Ballast |
| Built-in Explore / Research-Agent | breite Codebase-Suche | Roh-Leseberg außerhalb der Main-Session |
/compact mit Fokus |
gleiches Thema, Fenster voll | gesteuert verlustbehaftet |
/clear / /new |
Themenwechsel | frischer Faden |
| Neue / Review-Session | Bias, großer Scope-Schnitt | Isolation von Annahmen |
| Entscheidungen in Dateien | alles, was überleben muss | Compact- und Session-fest |
7.3 Session-Hygiene: Resume, Continue, Chronicle
Kern: Sessions sind wiederaufnehmbar und auswertbar – aber nur, wenn du weißt, was lokal liegt, was zu GitHub synct und was du bewusst neu startest.
Weiterarbeiten
| Befehl / Flag | Zweck |
|---|---|
copilot --continue |
schnellste letzte lokale Session fortsetzen |
copilot --resume / /resume |
Session-Picker (lokal/synced, Sortierung) |
/resume SESSION-ID |
direkt in eine bekannte Session |
/rename NEUER_NAME |
Session im Picker benennen (ohne Anführungszeichen nötig) |
/session |
Infos zur laufenden Session (ID, Log-Pfad, …) |
/session checkpoints |
Compaction-Checkpoints ansehen |
/session plan |
aktueller Plan der Session |
/session files |
temporäre Session-Artefakte |
Session teilen: /share (Alias /export)
| Befehl | Ergebnis |
|---|---|
/share |
sharebarer Link auf GitHub.com (Session sichtbar machen) |
/share off |
Teilen beenden |
/share gist |
privates Gist (Enterprise Managed User / Data Residency: oft nicht verfügbar) |
/share file [PFAD] |
Markdown-Export der Conversation |
/share html [PFAD] |
interaktives HTML |
Programmatisch: Flags wie --share=PATH / --share-gist (Command Reference). Gists und Links können Prompts und Tool-Outputs enthalten – keine Secrets, keine Kunden-PII.
/chronicle – Einsichten aus der Session-Historie
Standardmäßig speichert die CLI Sessions lokal und synct sie mit deinem GitHub-Konto (Details und Opt-out: Chronicle-Konzeptdoku). Darüber hinaus:
| Subcommand | Nutzen |
|---|---|
/chronicle standup |
Standup-Report aus kürzlicher Arbeit (Default oft 24 h; Zeitraum im Prompt erweiterbar) |
/chronicle tips |
personalisierte Nutzungstipps aus deinen Mustern |
/chronicle cost tips |
wo Tokens/Credits hingehen |
/chronicle search … |
Volltextsuche in Session-Inhalten |
/chronicle improve |
Vorschläge für .github/copilot-instructions.md (Scope: aktuelles Repo) |
/chronicle reindex |
lokalen Session-Store neu aufbauen / Sync anstoßen |
/chronicle standup for the last 3 days
/chronicle improve
Freiform geht oft auch: „Wann war ich zuletzt an Auth?“ – die CLI nutzt den Session-Store, wenn die Frage nach CLI-Nutzung klingt. improve schreibt erst nach deiner Auswahl in die Instruction-Datei – Review wie bei copilot init.
Session-State (Orientierung)
Unter ~/.copilot/session-state/{session-id}/ (bzw. $COPILOT_HOME) liegen u. a.:
events.jsonl # History
workspace.yaml # Metadaten
plan.md # Plan, falls erzeugt
checkpoints/ # Compaction-Historie
files/ # persistente Artefakte
research/ # /research-Reports (falls genutzt)
Löschen von session-state/ entfernt lokale History – synced Daten auf GitHub können separat existieren. Nicht während laufender Session wild löschen.
Praxis:
- Sessions mit
/renamewiederfindbar machen - Nach Compaction: Checkpoints lesen, wenn der Agent „plötzlich anders“ denkt
- Wichtige Pläne zusätzlich ins Repo (
PLAN.md) – Session-State ist kein Team-Wiki - Sync/Chronicle: Compliance und „was landet auf github.com?“ im Team klären
Vorlage: vorlagen/PLAN.md.skeleton.md.
7.3a Rollback: /undo, /rewind, Esc×2
Kern: Rewind rettet schlechte Agent-Runden – ist aber final und kann mehr zurücksetzen als nur den letzten Diff.
Auslösen (Session idle, Eingabe leer):
/undooder/rewind- oder
Esczweimal kurz hintereinander
Picker: frühere Prompts der Session (neueste zuerst). Nach der Wahl landet der Prompt oft wieder im Input – editieren und erneut senden möglich.
| Variante | Erkennung | Wirkung |
|---|---|---|
| Git-based Rewind | Picker zeigt Snapshots; Auswahl rollt sofort zurück | Workspace auf Stand vor dem gewählten Prompt – inkl. manueller Edits und Shell-Effekte danach; neue Dateien nach dem Snapshot können weg sein |
| Tools-based Rewind | nach Prompt-Wahl Menü Conversation only vs. Conversation + files | History allein oder History + von Copilot geänderte Dateien; Dateien, die du danach manuell geändert hast, oft unangetastet |
Tools-based Rewind kann experimentell sein (/experimental / --experimental). Voraussetzung Git-based: Git-Repo mit mind. einem Commit. Kein Rewind vor dem ersten Prompt der Session.
Achtung: Rewind lässt sich nicht rückgängig machen. Spätere Session-History ist weg. Bei Git-based: gesamter Workspace, nicht nur Agent-Hände. Nach dem Rollback prüfen:
! git status
! git log --oneline -1
! git diff
Tag-1-Kurzfassung: Kapitel 1.
7.3b Remote Control vs. Session-Sync
Kern: Sync macht Sessions sichtbar; Remote Control macht laufende Sessions steuerbar von GitHub.com / Mobile.
| Session-Sync (Default oft an) | Remote Control | |
|---|---|---|
| Zweck | History speichern, Resume, Chronicle | live steuern: Output, Permissions, weiterarbeiten |
| Gerät | nur ansehen auf github.com/Mobile | Session von unterwegs steuern |
| Voraussetzung | Account-Sync-Policy | laufende Session, Maschine online, GitHub-Repo als CWD |
Remote einschalten:
/remote on
/remote # Status / Links erneut anzeigen
/remote off
copilot --remote
copilot --no-remote # diese Session nicht remote
Dauerhaft (User-Settings, Key laut Doku):
{
"remoteSessions": true
}
Zugriff: Link aus der CLI, oder GitHub.com → Copilot → Recent agent sessions (Filter CLI), oder Repo Agents-Tab; Mobile analog. QR-Code oft über Anzeige-Toggle (Doku: z. B. Ctrl+E bei leerem Input – driftfähig).
Maschine wach halten:
/keep-alive on
/keep-alive busy
/keep-alive 2h
/keep-alive off
Ohne wache Session bricht Remote ab – Cloud Agent (/delegate) ist die Alternative, wenn der Laptop zu darf.
Achtung: Remote Control = jemand mit deinem Account und dem Session-Link steuert denselben Agenten inkl. Permission-Prompts. Default oft aus; in geteilten Shell-Umgebungen und bei sensiblen CWDs bewusst aus lassen. Nur eigene Sessions sind steuerbar – nicht die der Kollegen.
7.4 Persistenz: was im Chat stirbt, was in Dateien lebt
| Inhalt | Wohin | Warum |
|---|---|---|
| Team-Normen, Build/Test | .github/copilot-instructions.md |
jede Session, reviewbar |
| Path-Regeln | .github/instructions/*.instructions.md |
Relevanz |
| Freigegebener Implementierungsplan | PLAN.md oder Session-plan.md + Repo-Kopie |
Compact-fest |
| Einmalige Explore-Erkenntnis | optional kurze Notiz | sonst weg nach /clear |
| Agent-abgeleitete Facts (Produkt) | Copilot Memory (Kap. 2) | kein Ersatz für reviewbare Instructions |
| Secrets | Secret Store / CI Secrets | nie Instructions, nie Chat-Logs, nie /share |
Ritual vor Compact oder Session-Ende:
- Entscheidungen in
PLAN.md/ Instructions schreiben - Offene TODOs als Checkliste
- Erst dann
/compactoder/clear
7.5 Sandbox und YOLO-Risiken
Sandbox
| Variante | Idee |
|---|---|
Lokal (/sandbox enable) |
Tools/Commands des Agenten eingeschränkt (FS/Netz/System) – die CLI selbst läuft lokal |
Cloud (copilot --cloud) |
gesamte Session in isolierter Remote-Umgebung |
Sandbox begrenzt wie weit ein Befehl greift; Deny begrenzt was überhaupt freigegeben wird. Eine Linie reicht selten. Details: copilot help sandbox und die Sandbox-Konzeptdoku.
YOLO / Allow-all
copilot --allow-all
copilot --yolo
/allow-all on
/yolo on
Gleiche Rechte wie du – ohne Einzel-Approval für Tools, oft inkl. Paths/URLs je Flag-Set.
Achtung:
--allow-all//yolosind breite Bypass-Modi für isolierte Umgebungen und bewusste Experimente – nicht der Alltag auf Laptops mit Prod-Credentials, und nicht der CI-Default. Enterprise kann Bypass perpermissions.disableBypassPermissionsMode: "disable"sperren (Kapitel 06).
Checkliste vor YOLO:
- CWD eng und trusted?
- Keine Prod-Secrets in der Umgebung?
- Sandbox an, wenn möglich?
- Team-Policy erlaubt es?
- Diff danach wirklich lesen?
7.6 Multi-Repo, Modelle und BYOK
Multi-Repo-Patterns
| Pattern | Wie | Wann |
|---|---|---|
| Parent-Directory | cd ~/projects && copilot |
mehrere Sibling-Repos/Repos sichtbar |
/add-dir /abs/pfad |
Zugriff erweitern | gezielte Extra-Repos |
/list-dirs |
erlaubte Dirs anzeigen | Transparenz |
/cwd / /cd |
Working Directory wechseln | Fokus ohne neue Session |
/add-dir /Users/YOU/src/backend-service
/add-dir /Users/YOU/src/shared-libs
/list-dirs
Warum: API-Contracts, Microservices, Docs+Code. Risiko: zu breiter Scope → mehr Reads, mehr Schaden bei YOLO. Trusted directories und Path-Gates bleiben aktiv – jedes neue Dir ist eine Trust-Entscheidung (Kapitel 01, 04).
Modellwahl
/model
| Orientierung | Typische Nutzung |
|---|---|
| Auto | weniger Rate-Limit-Friction, dynamische Wahl |
| Stärkeres Modell | Architektur, harte Bugs, nuancierte Refactors |
| Schnelleres/günstigeres Modell | Alltag, enge Edits |
| Review-taugliches Modell | zweite Meinung auf Diffs (/review, zweite Session) |
| Extended Context (wo angeboten) | sehr große Codebases / lange Docs – teurer |
| Höheres Reasoning (wo angeboten) | harte Analyse – teurer; nicht Alltags-Default |
Modelle und Default-Labels driften – /model und die aktuelle Doku sind Source of Truth. Mid-Session wechseln ist erlaubt und sinnvoll, wenn die Task-Klasse wechselt. Extended Context und Reasoning-Level nur bewusst (Kap. 3).
Session-Limit für AI Credits
/limits set max-ai-credits 50
/limits unset
copilot -p "…" --max-ai-credits 40
Soft-Cap pro Session (Preview): Agent stoppt am Limit; interaktiv Reset möglich, programmatisch endet der Lauf. Doku empfiehlt oft Werte > 30, weil einzelne Model-Calls teurer sein können. /usage zeigt den Verbrauch.
BYOK – eigener Provider
Env-Variablen (vor Start setzen; Details: copilot help providers und BYOK-How-to):
| Variable | Pflicht | Bedeutung |
|---|---|---|
COPILOT_PROVIDER_BASE_URL |
ja | API-Base-URL |
COPILOT_PROVIDER_TYPE |
nein | openai (Default), azure, anthropic |
COPILOT_PROVIDER_API_KEY |
nein* | API-Key (*lokal z. B. Ollama oft ohne) |
COPILOT_MODEL |
ja | Modell-ID (oder --model) |
export COPILOT_PROVIDER_BASE_URL=https://api.openai.com/v1
export COPILOT_PROVIDER_API_KEY=YOUR_KEY
export COPILOT_MODEL=YOUR-MODEL-NAME
copilot
Anforderungen an das Modell:
- Tool calling (Function Calling) – Pflicht
- Streaming – Pflicht
- Context Window mind. ~128k empfohlen
Fehlt Tool Calling oder Streaming, bricht die CLI mit Fehler ab.
Grenzen (laut Best-Practice-Doku):
- Built-in Subagents erben die Provider-Config
- Credit-Kostenschätzungen können ausgeblendet sein; Token-Zähler bleiben
/delegatebraucht zusätzlich GitHub-Login und läuft serverseitig bei GitHub – nicht über deinen BYOK-Endpoint- Offline-Modus (
COPILOT_OFFLINE=true): nur dann wirklich isoliert, wenn der Provider lokal/on-prem ist
7.7 Typische Symptome und Fixes
| Symptom | Erst prüfen | Fix |
|---|---|---|
| Instructions greifen nicht | /instructions, /context, Pfad .github/copilot-instructions.md |
Datei committen/korrekt benennen; Session neu oder --continue nach Edit; Konflikte entschärfen (Docs: Discovery kombiniert, keine generelle Precedence) |
| Path-Instructions wirken nicht | Frontmatter applyTo, Datei unter .github/instructions/ |
Glob prüfen; an betroffene Datei andocken |
| Hook feuert nicht | Datei unter .github/hooks/*.json, version, Event-Name |
Schema gegen Hook-Doku; disableAllHooks?; executable Scripts; Session neu |
| Fragt immer nach Permission | kein Session-Allow, keine Flags, leere Approvals | enge --allow-tool; oder interaktiv Session-Allow; permissions-config.json pro Location (kein Deny dort) |
| Deny greift nicht | Flag-Syntax, Precedence | --deny-tool schlägt allow/all; copilot help permissions |
| Context „voll“ / unscharf | /context |
Compact mit Fokus; oder /clear; Entscheidungen in Dateien |
| Auth schlägt fehl | Token-Typ, Env-Name, Org-Policy | fine-grained PAT + Copilot Requests; Env COPILOT_GITHUB_TOKEN > GH_TOKEN > GITHUB_TOKEN; kein classic ghp_; copilot login interaktiv |
YOLO / --allow-all blockiert |
Managed Policy | erwartet bei permissions.disableBypassPermissionsMode: "disable" – Admin, nicht Workaround |
| MCP-Tool fehlt / startet nicht | /mcp, mcp-config.json, disabledMcpServers |
Config, Auth, Name exakt; copilot plugins list --kind mcp |
| Skill wird nicht angeboten | Pfad SKILL.md, Name, disabledSkills |
Orte prüfen (.github/skills, ~/.copilot/skills, …); /skills |
| Custom Agent fehlt | Pfad User/Repo/Org | .github/agents/ vs. ~/.copilot/agents/ vs. Org .github-private/agents/; /agent |
| Trusted-directory-Ärger | CWD, Parent vs. Repo-Root | bewusst trusten; nicht Home als CWD; /add-dir nur gezielt |
| Programmatic hängt / fragt | interaktive Defaults | --no-ask-user, enge allows, -s |
| Modell-Fehler bei BYOK | Capabilities | Tool calling + streaming; URL/Key/Model; copilot help providers |
| Session nicht resumebar | gelöschter State, anderer COPILOT_HOME |
session-state/ und COPILOT_HOME prüfen |
| „Ignoriert“ Plan | Plan Mode verlassen / nicht freigegeben | Plan reviewen, freigeben, dann umsetzen; Plan in Datei |
| Rewind hat „zu viel“ gelöscht | Git-based Rewind | erwartet bei Workspace-Snapshot; git reflog/Backup; künftig tools-based oder engere Commits vor Agent-Lauf |
| Remote Control geht nicht | kein GitHub-Repo, Session tot, Sleep | CWD = GitHub-Repo; /keep-alive; /remote on; Maschine online |
/chronicle leer / veraltet |
Sync, Index | /chronicle reindex; Sync-Policy; genug Historie |
| Credits-Cap zu früh | Soft-Limit, teures Modell | /limits set erhöhen; Extended/Reasoning prüfen; /usage |
Debugging-Baum (kurz)
1. Reproduzieren mit kleinem Prompt
2. /context → Fenster-Problem?
3. /instructions → Custom Instructions geladen?
4. Permission-Prompt / Flags → Policy-Problem?
5. Logs: /session → Log-Pfad unter ~/.copilot/logs/
6. copilot --version / copilot help <topic>
7. Frische Session vs. Resume trennen
Qualitäts-Ritual vor dem Merge
/diff(odergit diff) lesen- Verify: Test/Lint aus den Instructions
- Optional
/review(Bugs/Security) - Secrets und Debug-Noise scannen
/pr createoder bewusster Push – PR-Body: Intent + Risiko- Merge bleibt menschlich; bei Schrott:
/undobevor gepusht wurde
7.8 Wenn Doku und Buch abweichen
Kern: Bei Drift Konzept behalten, Syntax verifizieren – nicht raten und nicht das Buch als Spezifikation missbrauchen.
Lesevertrag (Kapitel 00): Stand des Buchs ist Mitte/Ende 2026. UI-Labels, Default-Modelle und einzelne Flags können sich ändern.
| Schritt | Aktion |
|---|---|
| 1 | In der Session ? oder /help |
| 2 | Terminal: copilot help, copilot help config, copilot help permissions, copilot help environment, copilot help providers |
| 3 | Primär: docs.github.com/en/copilot (CLI-How-tos + Reference) |
| 4 | Konzept aus dem Buch anwenden (weich vs. hart, Scope, Diff, Deny vor YOLO) |
| 5 | Optional: Begleit-Service – Stand & Drift (dokumentierte Produkt-Abweichungen) und Errata (Buchfehler); Schnelle Hilfe bei typischen Symptomen |
| 6 | Offline-Kerne (Rituale, Minima): Anhang A; Aktualität der vollen Vorlagen: Begleit-Service → Material |
| 7 | Interne Notiz/PR: was sich geändert hat – Team informieren |
Was stabil bleiben soll (Konzept):
- Custom Instructions = weiches, reviewbares Memory (Dateien)
- Permissions/Hooks/Sandbox = harte Grenzen
- Plan vor großem Code
- Diff lesen; Mensch merged
- Copilot Memory (Produkt) ≠ Instruction-Dateien (Kap. 2)
Was driften darf (Syntax): exakte Flag-Namen, Slash-Command-Liste, Default-Modelle, JSON-Keys.
7.9 Grenzen, Trade-offs und kritische Einordnung
Kern in einem Satz: Ein guter Harness macht Copilot CLI steuerbar – er macht das Modell weder unfehlbar noch kostenlos noch anbieterunabhängig.
Bis hierher war das Buch konstruktiv: Scope, Diff, Deny vor YOLO, Instructions, Sessions, CI. Das bleibt gültig. Es ersetzt aber keine ehrliche Einordnung: Was systematisch schwer bleibt, welche Trade-offs du kaufst, wann der Agent nicht laufen sollte – und warum dieses Buch bei Copilot CLI bleibt, ohne die Landschaft zu leugnen.
Was trotz guter Steuerung schiefgehen kann
Konfiguration und Disziplin senken die Fehlerquote. Sie heben die harte Decke nicht auf.
Kontextfenster. Wie in 7.2: Das Modell sieht nur, was im Fenster liegt. Lange History, fette Tool-Outputs und zu viele Instructions verdrängen das Ticket. /compact schafft Platz und verliert Nuancen. Gute Instructions sind kein unendliches Arbeitsgedächtnis.
Halluzinationen trotz Verify. Ein grüner Test beweist die geprüften Pfade, nicht die ungeschriebenen. Falsche Stack-Befehle und „plausible“ APIs treten auch mit Verify-Command auf – seltener, nicht nie. Verify ist ein Filter, kein Freibrief.
Lange Tool-Ketten. Je mehr Schritte (suchen → editieren → testen → nachbessern), desto fester setzt sich ein früher Fehlschluss. Der Harness führt aus, was erlaubt ist; er korrigiert keine falsche Problemdeutung im dritten Turn.
Kosten und Multiplikation. Hoher Reasoning-Aufwand, breite Exploration, Fleet und /delegate multiplizieren Tokens, Credits und Wartezeit. Parallelität ersetzt weder Plan noch Diff – bei unklarem Scope macht sie beides teurer (Kap. 5 und 6.6).
Enge Permissions als Bremse. Deny-Listen und enge Allowlists sind der richtige Default in fremden oder sensiblen Trees. Im vertrauten Repo spürst du die Reibung: Shell wartet, Fetch fragt. Das ist der Preis von Kontrolle – kein Policy-Bug. Wer aus Frust auf YOLO / --allow-all wechselt, tauscht Reibung gegen Review-Last und Vorfallrisiko.
Vendor-Abhängigkeit und Produkt-Drift. Auth, Credits, Modellnamen, Labels und Managed Settings liegen beim Anbieter und deiner Org. Was lokal greift, greift in Cloud Agent oder CI nicht automatisch mit (Kap. 3 und 6). Lesevertrag (Einleitung, 7.8): Konzept behalten, Syntax der Doku. Du baust Rituale um ein Produkt, das sich bewegen darf.
Wann du Copilot CLI besser nicht oder nur eng einsetzt
- Produktionshotfix mit unklarem Blast Radius ohne reproduzierbare Verify-Schleife
- Security-/Compliance-kritische Änderungen, bei denen menschliche Review und Vier-Augen Pflicht sind – nicht „auch noch vom Agenten“
- Unbekannte Repos / Supply-Chain-Verdacht: erst lesen und eng freigeben – oder gar kein Agent
- Rein politische Architekturentscheidungen ohne messbares Done-Kriterium
- Wenn du Diffs nicht mehr liest, weil „der Agent das schon macht“ – Ownership ist dann abgegeben
Trade-offs, die du nicht wegrationalisieren kannst
Jeder Hebel kauft etwas und verkauft etwas anderes. Sicherheit und Geschwindigkeit sind oft Gegenpole derselben Entscheidung – unten als getrennte Zeilen, weil du sie im Alltag separat spürst.
| Achse | Mehr davon … | kostet typischerweise … |
|---|---|---|
| Sicherheit ↔ Geschwindigkeit | enge Deny/Allow oder YOLO in Isolation | Tempo und Klicks oder Review-Last, größere Diffs, teure Fehlversuche |
| Autonomie (Cloud Agent, Fleet, lange Sessions) | parallele/async Arbeit | Kontext- und Kostenrisiko, weniger Live-Steuerung |
| Kontrolle (Plan Mode, enger Scope, Diff vor Merge) | nachvollziehbare Schritte | mehr menschliche Minuten pro Ticket |
| Weiches Memory (Instructions) | bessere Defaults | kein Zwang – „Nie“ wird gebeten, nicht erzwungen |
| Harte Boundaries (Permissions, Hooks, Sandbox, Managed) | echte Verbote | Pflege, False Positives, Onboarding-Reibung |
Lokal CLI vs. Cloud Agent vs. IDE ist dieselbe Produktfamilie mit anderen Oberflächen und Isolationsgraden – kein Ranking „Cloud ist sicherer“. Lokal: Live-Steering und /diff. Cloud//delegate: async, environment-eigene Policy. IDE: niedrigere Einstiegshürde, dieselben Trust- und Ownership-Fragen. Surface-Wahl ist Workflow, nicht Moral.
Kern: Weich steuert Verhalten; hart begrenzt Schaden. Wer nur Instructions pflegt und Permissions aufweicht, hat Dokumentation – keine Boundary.
Orientierende Einordnung: Coding-Agents und übertragbare Prinzipien
Kern in einem Satz: Ein Vergleich kann Mehrwert liefern – aber nur als orientierende, prinzipienbasierte Einordnung, nicht als detaillierter Produktvergleich.
Feature-Listen und Punkt-für-Punkt-Produktvergleiche altern in Monaten. Labels, Preisstufen, Default-Policies und Integrationsflächen verschieben sich; was gestern „einzigartig“ wirkte, ist morgen Standard oder verschwunden. Eine prinzipienbasierte Einordnung hält länger: Sie fragt nach Einstieg, Steuerungsphilosophie und Workflow-Passung – nicht nach dem aktuellen Menüpunkt in der UI.
Dieses Buch bleibt bei GitHub Copilot CLI, weil Praxis Tiefe braucht: eine durchgängige Terminologie (Instructions, Permissions, Trusted Directory, Sessions, CI), nachbaubare Configs und einen Lernpfad von Trust bis Merge. Andere Ansätze abzuwerten wäre unsachlich; drei Produkte halb zu erklären erzeugt nur Schein-Übersicht. Die Landschaft unten dient der Orientierung – nicht der Kaufberatung und nicht dem Ranking.
Landschaftsskizze (Stand Mitte/Ende 2026)
Coding-Agents teilen oft dieselbe Grundschleife (planen, editieren, Shell, iterieren), unterscheiden sich aber im Schwerpunkt des Einstiegs:
| Kategorie | Schwerpunkt / typischer Einstieg | Beispiele (nicht abschließend) |
|---|---|---|
| Terminal-zentriert | Repo und Shell als Arbeitsfläche; Steuerung über CLI, Instructions und Permission-Grenzen | Copilot CLI; vergleichbare Terminal-Agenten |
| IDE-zentriert | Editor, Diff-Ansicht und Projektsicht eng verwoben; niedrige Hürde im Alltagscode | IDE-Agenten und vergleichbare Editor-Integrationen |
| Diff-/Git-zentriert, leichtgewichtig | Kleine, nachvollziehbare Änderungen; Git-Disziplin und geringer Overhead | Leichte terminalnahe Tools mit starkem Diff-Fokus |
| Cloud-/asynchron | Auftrag wegschicken, später Diff/Ergebnis prüfen; Isolation und Environment-Policy statt Live-Steering | Cloud Agent / /delegate und vergleichbare async/remote Agenten |
Die Zeilen beschreiben Einstiege, keine Feature-Vollständigkeit. Ein Produkt kann mehrere Kategorien berühren (Copilot etwa lokal und in der Cloud) – die Frage bleibt: Wo steuerst du primär, und welche Boundary spürst du zuerst?
Wann eignet sich welcher Ansatz eher?
Die Matrix bezieht sich auf Workflow und Steuerungsphilosophie, nicht auf Modellqualität oder Feature-Score:
| Dein Schwerpunkt … | Passt eher zu … | Typische Passung |
|---|---|---|
| Starke Terminal-Kontrolle und harte Boundaries (Deny, Allowlist, Policy vor Tempo) | Terminal-zentrierte Agenten | Du willst Shell, Repo und Grenzen explizit steuern; Reibung ist akzeptierter Preis |
| Tiefer Editor-Bezug und visuelle Integration (Inline, UI-Diff, Projektsicht) | IDE-zentrierte Agenten | Der Alltag lebt im Editor; der Agent soll dort „mitlaufen“, nicht erst im Terminal starten |
| Maximale Diff- und Git-Disziplin bei geringem Overhead | Diff-/Git-zentrierte, leichte Tools | Kleine, reviewbare Schritte; wenig Setup, viel Commit-Hygiene |
| Asynchrone oder isolierte Cloud-Arbeit (Auftrag, warten, Diff prüfen) | Cloud-/async Agenten | Parallelität und Isolation; weniger Live-Steering, mehr Environment- und Apply-Disziplin |
Keine Zeile bedeutet „Produkt A schlägt B“. Sie bedeutet: passender Einstieg und ehrlicher Scope. Wer fast nur Inline-Chat im Editor braucht, lernt CLI-Harness-Tiefe nicht als Erstes. Wer Permissions und Instructions systematisch trainieren will, findet im Kernpfad dieses Buchs den roten Faden – unabhängig davon, welche Tools du zusätzlich im Stack hast.
Übertragbare Prinzipien
Produktfeatures kommen und gehen. Die folgenden Regeln gelten in jedem seriösen Coding-Agent-Setup – unter anderen Dateinamen und UI-Labels, aber mit derselben Logik:
- Scope eng halten. Dateien, Done-Kriterium, Nicht-Ziele, Stop-Regel. Breite Aufträge multiplizieren Diff, Kosten und Fehldeutungen.
- Diff lesen vor Merge und vor „fertig“. Tests und grüne Häkchen ersetzen keine menschliche Sicht auf was sich geändert hat – lokal, in der Cloud und vor dem Apply.
- Weich vs. hart trennen. Bitten (Instructions, Conventions, „bitte nie …“) steuern Verhalten. Erzwingen (Permissions, Hooks, Sandbox, Managed Policy) begrenzt Schaden. Wer nur bittet und Boundaries aufweicht, hat Dokumentation, keine Grenze.
- Menschliche Ownership an Merge, Secrets und Produktion. Der Agent schlägt vor und ändert im erlaubten Rahmen. Freigabe in den Mainline-Branch, Umgang mit Geheimnissen und produktive Eingriffe bleiben beim Menschen bzw. bei klaren Team-Prozessen.
- Verify und Phasen vor blinder Autonomie. Explore → Plan → Code → Verify → Commit (oder das Äquivalent deines Tools) ist billiger als eine ungebremste Tool-Kette. Autonomie ohne Checkpoints spart Klicks und kauft Review-Last.
Kern: Diese Prinzipien sind langlebiger als jedes Feature-Release. Wer sie beherrscht, wechselt den Harness mit Lernkurve – wer nur Hotkeys und Default-Prompts kennt, startet bei jedem Produkt bei null und ohne Bremse.
Warum das wichtiger ist als einzelne Produktfeatures: Features erklären wie ein Tool etwas anbietet. Prinzipien erklären welche Fehlerklasse du vermeidest – Scope-Creep, ungeprüfte Diffs, weiche „Verbote“, abgegebene Ownership, blinde Autonomie. Genau diese Klassen bleiben, wenn die UI morgen anders heißt.
Trade-off – jeder Ansatz kauft etwas
Jeder Einstieg kauft etwas und verkauft etwas anderes. Terminal-Kontrolle und harte Boundaries kosten oft Klicks und Geduld. IDE-Nähe senkt die Einstiegshürde und kann Live-Review erleichtern – die Boundary-Frage verschwindet dadurch nicht. Diff- und Git-Disziplin mit wenig Overhead belohnt kleine Schritte, skaliert aber anders bei großen, multi-repo Refactors. Cloud und Asynchronität kaufen Parallelität und Isolation und verkaufen Live-Steering: Du steuerst über Auftrag, Policy und späteren Diff, nicht über jeden Zwischenschritt am Prompt. Wer beides maximal will – maximale Autonomie und maximale Kontrolle ohne Review – will zwei gegenläufige Achsen gleichzeitig. Das löst kein Produkt; das löst nur ehrliche Priorisierung.
Was du mitnehmen kannst
- Feature-Listen und Tiefenvergleiche veralten schnell; Einstieg + Steuerungsphilosophie halten länger.
- Vier grobe Kategorien reichen zur Orientierung: Terminal, IDE, Diff/Git-leicht, Cloud/async.
- Die Entscheidungsfrage lautet „welcher Workflow?“, nicht „welches Produkt gewinnt?“.
- Fünf Prinzipien (Scope, Diff, weich/hart, Ownership, Verify/Phasen) sind harness-übergreifend mitnehmbar.
- Dieses Buch vertieft GitHub Copilot CLI – nicht, weil die Landschaft leer wäre, sondern weil Tiefe einen Fokus braucht.
Typische Fehlerbilder – auch bei korrekter Config
Diese Fehlerbilder treten auf, obwohl Trust sitzt, Instructions sinnvoll sind und YOLO nicht der Default ist.
-
Grüne Tests, falsche Semantik. Die Suite ist grün, die Produktabsicht verfehlt (Edge Case, UX, stille Invariante).
Tun: Akzeptanzkriterien und Nicht-Ziele inPLAN.md; kritischen Pfad manuell prüfen; Diff auf „was fehlt?“ lesen. -
Approval-Müdigkeit. Nach dem zwanzigsten Dialog wird „Session-Allow“ aus Gewohnheit geklickt.
Tun: Scope/Allowlist enger, nicht die Policy weiter; Session neu mit enger Baseline; destruktive Muster nie session-weit. -
Tool-Schleife. Flaky Test oder unklare Meldung → Edit-Test-Schleife, Kontext voll Noise.
Tun: stoppen; Fehler selbst reproduzieren; neuer Scope mit Stop-Regel; ggf. neue Session. -
Fleet-/Reasoning-Spirale. Parallele Agents und hohe Reasoning-Stufen multiplizieren Kosten, ohne schärferes Ticket.
Tun: Credits/Limits im Blick; ein Explore-Pass mit klarer Frage; Plan in Datei; Code-Phase ohne parallele Explore-Sessions. -
Kontext-Matsch nach Themenwechsel. Dieselbe Session, drittes Ticket – Antworten vermischen Repos.
Tun: neue Session; CWD/Trust prüfen; Compact nur mit Datei-Anker (7.2–7.3). -
Lokal eng, remote weit. Lokal eng (Deny), Cloud/CI mit anderen Rechten – der Diff fühlt sich fertig an.
Tun: Environment- und Job-Policy lesen; Merge nie blind; least privilege pro Surface (Kap. 6).
Wann das Harness-Modell besonders stark ist – und wo es aneckt
Stark, wenn:
- das Problem abgrenzbar ist (Dateien, Done, Verify)
- du Diff und Tests als Eigentümer behandelst
- weiche Guidance und harte Boundaries zusammen sitzen
- Surfaces bewusst gewählt sind (lokal iterieren, remote nur mit Policy)
An Grenzen, wenn:
- das Ziel vage ist („mach es besser“) und niemand Ownership übernimmt
- Sicherheit und Tempo gleichzeitig maximal sein sollen
- niemand Version/
/helppflegt - Kosten steigen, ohne dass Scope und Verify mitwachsen
Der Harness ist ein Steuerungssystem, kein Ersatz für Urteilsvermögen. Wer das akzeptiert, holt aus Copilot CLI mehr heraus – und schaltet ihn ab, wenn die Situation es verlangt.
Checkliste – Troubleshooting-Session
- Symptom in einem Satz
/contextund grober Füllstand- Instructions geladen? (
/instructions) - Permission: Flag, Session-Allow oder Managed?
- Auth: welcher Token/Env?
- Repro in frischer Session?
- Fix dokumentiert (Team-Instructions oder Runbook)?
Häufige Fehler beim Debuggen selbst
- Sofort YOLO statt engem Repro
- Drei Themen in einer Debug-Session mischen
- Compact ohne Fokus und dann wundern
permissions-config.jsonwährend laufender Session editieren- Classic PAT erwarten, obwohl die Doku fine-grained verlangt
So baust du ein internes Runbook nach
- Die Tabelle aus 7.7 ins Team-Wiki kopieren
- Eure Stack-Commands (pytest/npm/…) eintragen
- Kontakte: wer managed Settings / Tokens rotiert
- Link zur aktuellen Copilot-CLI-Doku
- Vierteljährlich gegen
/helpund Release Notes prüfen
Was du jetzt kannst
- Kontext mit
/context,/compactund fokussierten Sessions steuern - Resume/Continue,
/rename,/shareund/chroniclenutzen - Remote Control von Session-Sync trennen und bewusst schalten
- Schlechte Agent-Runden mit
/undo/ Esc×2 einordnen und absichern - Sandbox und YOLO als Risiko-Entscheidung behandeln
- Multi-Repo, Modelle (inkl. Extended/Reasoning), Session-Limits und BYOK einsetzen
- Symptom→Fix systematisch abarbeiten
- Doku-Drift über den Lesevertrag (Kap. 00) handhaben
- Grenzen, Trade-offs und typische Fehlerbilder des Harness-Ansatzes benennen
- entscheiden, wann Copilot CLI eng bleibt, pausiert oder ein anderer Einstieg näherliegt
Nächste Schritte
- Kapitel 08: Slash-Commands, Flags, Pfade, Glossar · Anhang A: stabile Kernvorlagen
- Team-Runbook aus 7.7 ableiten
- Offene Config-Lücken aus Kapitel 02–06 schließen
Primärquellen (Auswahl): Session data / Chronicle, Roll back changes, Remote control, Session credit limit.

