Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for git-courer

Pod holds 20 of 34 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to git-courer.

Most discussed

installer: inject prompt rules into CLI agents to prefer MCP tools over bash

Problem

CLI agents (OpenCode, Claude Code, Codex, Gemini) have git-courer MCP tools available, but they often fall back to bash for git operations because no instruction tells them to prefer MCP tools. The result: structured output is lost, safety features (backups, conflict detection) are bypassed, and the user gets worse results.

What to do

  1. Create a GIT_COURER.md file (~8 lines) with golden rules for using git-courer tools
  2. On git-courer mcp setup, place this file in each CLI

Read the thread · 2026-06-18 · closed · 3 comments

feat(core): LLM Infrastructure Decoupling (Backend-Agnostic Layer)

Summary

Abstract LLM interactions into a provider-agnostic port, isolate Ollama-specific logic into a dedicated adapter, and implement a factory pattern for dynamic backend selection via configuration.

Problem

The current LLM implementation is tightly coupled with the Ollama API, with infrastructure-specific logic leaking into the core domain. To support multiple backends (e.g., llama.cpp, LM Studio, OpenAI), we must decouple the LLM port from any specific provider.

Current issues:

  • P

Read the thread · 2026-04-27 · closed · 1 comment

Model selection per operation - different models for different tasks

Problem

Currently git-courer uses a single model for all operations. This is inefficient because:

  • Simple operations (branch, merge, tag) only need to interpret what the user wants → small model (7b)
  • Complex operations (changelog, release) need better reasoning → large model

Proposed Solution

Allow configuring different models per operation in config.yaml:

ollama:
  default_model: gemma4:26b
  operations:
    commit: gemma4:26b
    release: gemma4:26b
    branch: qwen 7b
    

[Read the thread](https://github.com/blak0p/git-courer/issues/2) · 2026-04-19 · closed · 1 comment

### bug: release flow does not create GitHub release

## Description

The `RELEASE_START`/`RELEASE_APPLY` flow creates the local git tag but does NOT execute `gh release create` — the release never appears on GitHub.

## Steps to Reproduce

1. Run `RELEASE_START` with a version instruction
2. Run `RELEASE_APPLY`
3. Tag is created locally ✅
4. GitHub release is NOT created ❌

## Expected Behavior

After `RELEASE_APPLY`, a GitHub release should be created automatically with the generated changelog as the release notes.

## Actual Behavior

Only the l

[Read the thread](https://github.com/blak0p/git-courer/issues/1) · 2026-04-12 · closed · 1 comment

### feature: group commit metadata by workspace instead of branch for changelog

### Problem statement

The release changelog fragments commits from the same feature when using chained PRs. Each branch is grouped separately, so the LLM writing the changelog sees fragments instead of the full feature context. A feature spread across 3 chained PRs produces 3 separate changelog entries instead of one coherent group.

### Impact — why do you want this?

This happens every time a feature requires multiple PRs (chained/stacked). The changelog becomes harder to read and the LLM los

[Read the thread](https://github.com/blak0p/git-courer/issues/215) · 2026-07-02 · closed · 0 comments

### git-courer — graph-clustering

## Graph Clustering

### What you build here

Replace the BFS clustering algorithm in `UnifiedASTPass.createClusters()` with Louvain community detection, using the graph from `buildGraph()` to group files by semantic community instead of directory transitivity.

### Scope

- `createClusters()`: replace BFS with Louvain
- `bfsCluster()`: remove (replaced by Louvain)
- `calculateForce()`: unchanged, graph stays the same
- `buildGraph()`: unchanged
- `Process()`: unchanged, only clustering changes

[Read the thread](https://github.com/blak0p/git-courer/issues/208) · 2026-07-01 · closed · 0 comments

### git-courer — chunker-prompt-quality

## Chunker Prompt Quality

### What you build here

Change the input format the local LLM receives for commit message generation: from plain text to structured JSON, with enriched annotated_diff (before/after per symbol), call_graph, and CFG (control flow graph). No emojis.

### Scope

- `MessageParams` struct: add `CallGraph`, `CFGSummary` fields, change `AnnotatedDiff` from string to `[]AnnotatedEntry`
- New `AnnotatedEntry` struct: `{file, symbol, type, breaking, line, calls, before, after}`

[Read the thread](https://github.com/blak0p/git-courer/issues/206) · 2026-07-01 · closed · 0 comments

### git-courer — hooks-multi-agente v2: deny granular + backup selectivo

## Problem

Currently git-courer blocks ALL raw git commands in every agent. This is too aggressive — some git commands aren't covered by the 13 MCP tools but are still legitimate (e.g., `git init`, `git config`, `git tag`). Users should be able to run those, with safety where it matters.

## Scope

1. **23 covered subcommands** → **deny** in all 5 clients, with message pointing to the equivalent MCP tool
2. **OpenCode**: `opencode.json` with deny for covered + ask for uncovered + allow for non-

[Read the thread](https://github.com/blak0p/git-courer/issues/205) · 2026-07-01 · closed · 0 comments

## Most recent

### git-courer — unborn-first-commit: fix first commit in new repo

## Problem

git-courer fails on the first commit in a freshly initialized Git repo (unborn branch). The plumbing pipeline (`applyPlumbing`) calls `git.Head()` which fails because `HEAD` doesn't resolve to any commit yet, and `CommitTree` always passes `-p <parent>` even when there is no parent commit.

## Scope

1. **Status**: detect unborn branch (HEAD without commits), add `is_unborn: true` to JSON, make ahead/behind null
2. **CommitTree adapter**: omit `-p` when parentHash is empty (root comm

[Read the thread](https://github.com/blak0p/git-courer/issues/204) · 2026-07-01 · closed · 0 comments

### bug: DiffResultJSON emits redundant raw diff when annotated diff is present

## Summary

`DiffResultJSON` always emits the raw `diff` field even when the annotated diff (`annotated`) is present. Since the annotated diff already contains the full diff content plus AST labels (`[NEW_FUNC]`, `[MOD_SIG ⚠BREAKING]`, `[DEPS]`, `[DEL]`), the raw `diff` field is pure duplication. In cloud/agent mode this wastes tokens and adds noise to every diff response.

## Steps to reproduce

1. Call `git-courer_diff` on any file with changes.
2. The response includes both `diff` (raw text) 

[Read the thread](https://github.com/blak0p/git-courer/issues/200) · 2026-06-30 · closed · 0 comments

### bug: hooks only enforce on Codex — Claude Code and Antigravity silently pass through raw git

## Summary

`internal/delivery/cli/hook_check.go::runStdinMode` only parses the Codex stdin JSON shape. For Claude Code and Antigravity the parser silently fails and the hook exits 0 with no output, so `git *` commands are never blocked or even suggested-redirected to the MCP tools on those agents. The brief's intended behavior (`deny` + per-agent JSON shape) is not implemented.

## Steps to reproduce

1. Configure the hook for **Claude Code** to call `git-courer hook-check` on `PreToolUse:Bash`

[Read the thread](https://github.com/blak0p/git-courer/issues/199) · 2026-06-30 · closed · 0 comments

### docs: recover/restore lost SDD Brief for git-courer Global Agent Policy (hooks multi-agente)

## Summary

The SDD Brief for the **Global Agent Policy** change (`git-courer-v2.6.0`, including the `hooks-multi-agente` work) was lost between sessions. The vault note path is unknown, and the only recoverable artifact is a partial reconstruction in Engram memory (#1895) that summarizes the *confusion* the brief was meant to prevent, not the brief itself.

## What was in the brief

The original brief covered three distinct configuration paths in `git-courer` and the rules for each:

1. **TUI w

[Read the thread](https://github.com/blak0p/git-courer/issues/198) · 2026-06-30 · closed · 0 comments

### bug: session discard leaves MCP server in unusable state (chdir to non-existent worktree)

## Summary

`git-courer_session discard` removes the worktree from disk but does **not** reset the MCP server's internal "current worktree" pointer. Every subsequent MCP tool call (`status`, `diff`, `session start`, etc.) fails with `chdir ../git-courer-worktrees/<id>: no such file or directory` until the MCP server process is restarted.

This makes `session discard` a destructive, unrecoverable action in any orchestrator workflow.

## Steps to reproduce

1. Create a worktree:

git-cour

Read the thread · 2026-06-30 · closed · 0 comments

docs: update and align documentation with the codebase

Align documentation files (README, architecture, commands, config, clients, models, security, testing, troubleshooting, and contributing guides) with the Go codebase to resolve codebase discrepancies.

Read the thread · 2026-06-28 · closed · 0 comments

git-courer — Backup Auto-Prune

What

Automatic pruning of git-courer backup refs: when more than 20 refs/git-courer/backup/* accumulate, prune them before creating a new one. Pruning deletes only backups whose commit is already reachable from HEAD, preserving the valuable ones (pre-AMEND, pre-HARD, etc.).

Scope

  • Change PruneBackups from time-based to reachability-based (git merge-base --is-ancestor)
  • Add auto-prune in CreateBackup: if >= 20 backups, run PruneBackups before creating the new one
  • Hardcoded:

Read the thread · 2026-06-27 · closed · 0 comments

git-courer — session-identity

Summary

Improve git-courer session system so session IDs are human-readable (user-chosen), branches have meaningful names, and session status can list and resume active sessions.

Scope

  • Explicit Session ID: session start <id> where <id> is chosen by the user (e.g. fix-auth, dark-mode). No courer/ prefix, no hash.
  • Optional branch parameter: if provided, the branch is named exactly that value. If omitted, it defaults to the id.
  • Improved session status: lis

Read the thread · 2026-06-27 · closed · 0 comments

fix: release wizard regenerate (r) and edit (e) actions lose state

Problem

The interactive release wizard's r (regenerate) and e (edit) actions have two bugs:

  1. r (regenerate): Calls SetCustomMessage(feedback) then continue, which re-asks for tag and message and regenerates the changelog from scratch — losing the previous changelog context entirely.

  2. e (edit): Opens the editor on release_changelog.md (relative path, no metadata dir), then reads back via svc.LoadChangelog() which may not return the same file that was just edited.

Read the thread · 2026-06-25 · closed · 0 comments

fix: Codex config.toml written as JSON instead of TOML

Problem

ConfigureMCP writes JSON for all clients, but Codex expects TOML (config.toml). Running codex after git-courer mcp setup fails with:

Error loading config.toml:
.../config.toml:1:1: invalid key-value pair, expected key

Fix

  • Added ConfigFormat field to MCPClient struct ("json" default, "toml" for Codex)
  • New configureTomlFormat() function that writes valid TOML with [mcpServers.git-courer] section
  • Codex client now uses ConfigFormat: "toml"
  • Exis

Read the thread · 2026-06-24 · closed · 0 comments

feat: SDD 2 PR 2 — Uninstall cleanup + restore CLI + TUI restore screen

Problem

PR 2 of SDD 2 (Codex CLI PreToolUse Hook + Permissions) completes the remaining 3 phases: uninstall cleanup, restore CLI subcommand, and TUI restore screen.

What

Phase 5: Uninstall cleanup

  • RunUninstall now calls removeHook(client) for clients with HooksConfig
  • RunUninstall removes GIT_COURER.md from each client's config directory
  • Then restores .bak backups (existing behavior preserved)

Phase 6: Restore CLI (git-courer restore)

  • New RunRestore() funct

Read the thread · 2026-06-24 · closed · 0 comments

feat: SDD 2 PR 1 — Codex CLI PreToolUse hook infra + stdin mode + Doctor real status

Problem

SDD 2 of the Global Agent Policy (v2.6.0) requires Codex CLI PreToolUse hooks that intercept Bash commands and redirect git to git-courer MCP tools. This PR implements the first 4 phases of SDD 2.

What

Phase 1: Hooks infra (hooks.go)

  • installHook — creates/merges hooks.json with PreToolUse entry, idempotent
  • removeHook — strips git-courer entry, deletes file if empty
  • hooksStatus — reports "installed" or "not_installed"

Phase 2: hook-check stdin mode

  • `HookChe

Read the thread · 2026-06-24 · closed · 0 comments

The remaining reports are on the project's issue tracker.