Week of September 2 – September 4
Releases 0.12.0 and 0.12.1 shipped this week. An experimentalgithits ask command answers grounded questions about a package or repository with cited sources, pkg deps gains opt-in dependency issue analysis, and pkg_info separates current vulnerability exposure from historical advisories.New
Experimental Agentic Ask:githits ask
0.12.0 adds an opt-in githits ask command and matching local MCP ask tool to the experimental suite. Ask one question about a canonical package or repository target (for example githits ask npm:express "Where is router dispatch implemented?") and get a grounded answer with cited sources, an Ask run ID, and a thread ID. Pass the thread ID to --thread (or thread_id in MCP) for follow-up questions without repeating the target; threads support up to ten turns. Source citations default to directly executable source-reading calls; use --source-format url for original upstream URLs instead. Enable the suite with [experimental] tools = true in your CLI configuration.Dependency issue analysis on pkg deps
pkg_deps now offers opt-in analysis of deprecated, outdated, duplicate, and conflicting dependencies. Pass --issues on the CLI or include_issues: true in MCP to get actionable conflict constraints and importer provenance in both text and JSON, with full or depth-limited traversal.Improved
Clearer package overview evidencepkg_info now separates vulnerabilities affecting the latest version from package-wide advisory history, so current exposure is no longer conflated with resolved past advisories. Verbose text and JSON also expose the published-version count and download freshness, and CLI help and the MCP descriptor keep routing full-history questions to the right tool.Explicit upgrade-review batch limit
pkg_upgrade_review CLI and MCP surfaces now advertise and enforce the deployed limit of 30 nonblank package upgrades per request, so oversized batches fail fast locally instead of at the backend.Fixed
- Go module versions work with or without the
vprefix. Package documentation, dependency, vulnerability, changelog, and upgrade-review inputs now accept exact Go versions in either form and send the backend the canonicalv-prefixed version. See package inspection. - Repository grep advertises only real symbol fields.
code_grepCLI and MCP validation now expose only the symbol metadata repository grep can actually return. - Windows token refresh handoff. File-backed auth locks are now released without racing successor agents against removal of the shared lock path, so concurrent CLI and MCP processes on Windows refresh tokens reliably. See authentication.
- GitHits skill discovery. The packaged MCP skill now describes the OSS and package tasks that should trigger it instead of assuming GitHits was already selected, so agents load it when those tasks come up.
GitHits 0.11.5
Releases githits 0.11.5 and @githits/mcp 0.11.5 makequick_start discoverable in deferred tool catalogs, clarify the security boundaries for retrieved public OSS content, and fix Agent Skill discovery and packaging.Improved
quick_start is discoverable in deferred tool catalogs
The quick_start catalog sentence now identifies it as the required first call for plain MCP sessions and names the untrusted-content safety rules it loads. Clients that defer or truncate tool catalogs (surfacing only short per-tool summaries until a tool is expanded) now route agents to quick_start before other GitHits evidence tools instead of burying it.Clarified untrusted remote-OSS content boundaries
Tool guidance and the packaged skills now consistently frame retrieved public OSS content — source, docs, package metadata, changelogs — as untrusted evidence. Instructions found inside retrieved content cannot override your authorization decisions or your coding tool’s safeguards, and the existing prompt-injection protections are preserved.Fixed
- Standards-compliant installers can parse the
githits-mcpskill again. The YAML frontmatter description in the packagedgithits-mcpskill is now quoted, so strict Agent Skill installers no longer fail to parseSKILL.md. - Internal skills stay out of public skill registries. Repository-internal maintainer skills are now marked internal, so public skill registries and installers only offer the supported end-user skills.
- Sampled changelog context is preserved in upgrade reviews. Compact
pkg_upgrade_reviewoutput now keeps identity-only sampled releases visible — version, publication date, URL, and headline — instead of dropping them, and no longer repeats the same release across keyword, sampled, and verbose entries.
GitHits 0.11.4
Releases githits 0.11.4 and @githits/mcp 0.11.4 add definition-aware search evidence and improve MCP session guidance and wrapped source readability.New
Definition-aware search evidence CLI and MCPsearch results now preserve focused, indexed, and symbol-definition ranges for each source hit. Output leads with the focused evidence and annotates the qualified enclosing symbol (for example the function or class the match sits in), so you can tell at a glance whether a hit is the definition you’re looking for or a use site. Follow-up code_read suggestions target the exact served revision and the enclosing-definition range, so reading the full definition takes one call with no ref or line-range guessing.Improved
Readable wrapped source comments Compact search output now repeats source comment markers on wrapped continuation lines, so long comments stay recognizable as comments instead of looking like executable code.Fixed
- Reliable MCP session guidance. MCP servers built from
githitsor@githits/mcpnow require onequick_startcall per plain session, while agents with the loadedgithits-mcpskill skip it for every tool. GitHits MCP and CLI skills use transport-specific triggers so agents load only the workflow that matches their transport.
GitHits 0.11.3
Releases githits 0.11.3 and @githits/mcp 0.11.3 improve search recovery, target resolution, upgrade-review output, authentication guidance, and keychain error reporting.Improved
Grouped project identities in target resolution The opt-inresolve command and resolve_target tool now keep related package, repository, and documentation-site identities together. Compact per-target rows preserve popularity, license, malicious-content, availability, and relation-truncation evidence. Pass --verbose or verbose: true to include coarse lexical name similarity; JSON includes available numeric similarity without changing backend ranking.Outcome-first upgrade evidence
pkg_upgrade_review now uses the same compact, grouped evidence hierarchy in CLI and MCP text. It preserves vulnerability changes, dependency examples, issue locators, and structured JSON while leaving the final risk assessment to the caller.Current-evidence routing for security questions
pkg_vulns now explicitly covers broad package-security questions so agents retrieve current advisory evidence instead of relying on potentially stale model knowledge.Fixed
- Search recovery and provenance.
searchandsearch_statuspreserve canonical package addressing, pinned repository identity, replayable source provenance, and terminal next actions across partial and terminal target states. - Backend authentication-required errors. Package and source tools now recognize the backend
AUTHENTICATION_REQUIREDcode and return the standard refresh or sign-in guidance. - Code diff version alternatives.
code_diffpreserves backend-ranked package-version alternatives and their proven source refs in structured error details and CLI guidance. - Keychain access failures. Inaccessible or unavailable credential stores now return an explicit error instead of appearing empty. See authentication troubleshooting.
Week of August 27 – August 28
Releases 0.11.1 and 0.11.2 shipped this week. Search output is now compact and consistent across CLI and MCP, the experimental resolver recognizes standalone documentation sites, agents can read larger source and docs slices in one call, andgithits init recovers cleanly when stale credentials fail to refresh.New
Standalone documentation site resolution The opt-inresolve command and resolve_target MCP tool now recognize standalone documentation sites as first-class candidates, labeled site instead of a generic fallback. You can request them explicitly with --prefer-kind site (or the matching MCP argument), and selected site targets route straight into documentation search. Stable MCP guidance now also distinguishes package-only docs_list from the standalone-site search and docs_read flow.Browser-callable get_example for WebMCP
@githits/mcp 0.11.1 adds a dedicated @githits/mcp/tools entry that exposes the validated get_example surface for frontend WebMCP integration. Only this selected entry is browser-safe; the installed package and other entries remain Node-oriented.Improved
Compact, unified search outputsearch and search-status responses now share one outcome-first formatter across the CLI and MCP: compact completed-result headlines, numbered locator-first hits that keep docs page IDs for docs_read follow-ups, source provenance, target-grouped readiness when it matters, and terminal-aware wrapping in the CLI. JSON output states partial-result truth exactly, and continuation guidance stays native to the surface you called from.Fewer context round trips on source and docs reads
code_read and docs_read now allow deliberate 300-line reads while keeping the 150-line default, and code_grep per-file limits align with the requested totals. Agents fetch what they need in fewer calls, and served indexing snapshots plus public-repository discovery guidance are clearer.Intent-first package tool descriptions
Package inspection MCP descriptions now lead with compact user-intent phrases, so truncated tool catalogs still make clear which tool answers health, vulnerability, dependency, changelog, and upgrade questions.Fixed
githits initrecovers sign-in after stale refresh failures. Interactivegithits initnow proceeds to browser OAuth when retained expired credentials cannot refresh, instead of stalling, and its runnable authentication guidance consistently usesnpx githits@latest. See authentication for the refresh model.- Uninstall respects your guidance selection. Interactive user-level
githits uninstallnow removes guidance only for selected tools whose MCP configuration is absent after cleanup, and preserves shared guidance still usable by detected tools you kept. - Self-contained MCP skill. The packaged
githits-mcpskill now includes the stable quick-start guidance directly, removing a redundant bootstrap call, while plain MCP clients keep thequick_startfallback.
Week of August 24 – August 27
Releases 0.10.2 and 0.11.0 shipped this week. The experimental resolver now fails closed on malicious package candidates, remote MCP clients get a one-callquick_start guide with benefit-first tool routing, and onboarding gains a predictable setup flow plus a canonical top-level githits uninstall command.New
One-callquick_start guidance for MCP clients
0.11.0 adds a read-only quick_start MCP tool that returns the full GitHits tool guide in a single call: public-OSS scope, target syntax, compact-output guidance, cross-tool workflows, and safety rules, without querying any GitHits evidence. Call it once per session before other GitHits tools unless the guide is already in your agent’s context. It replaces inconsistently surfaced server instructions, and the packaged Agent Skill now points at the guide instead of duplicating it. The hosted endpoint at https://mcp.githits.com must run @githits/mcp 0.11.0 before remote plugins and extensions can rely on quick_start.Top-level githits uninstall command
Removing GitHits setup now has a canonical command: githits uninstall removes GitHits MCP configuration from your coding tools, and unless you pass --keep-guidance it also cleans up the GitHits-owned skill files while preserving unrelated skills and directories. The previous githits init uninstall form remains a compatibility alias with identical flags and behavior.Improved
Benefit-first MCP tool routing Remote MCP tool catalogs are now written benefit-first with explicit workflow handoffs between tools, so agents pick the right tool (search, code_*, pkg_*) from the description instead of trial and error.Predictable onboarding setup and removal
githits init now targets only the agents you select: an unselected configured agent is reported unchanged and never retargeted. Guidance-only and stale-skill cleanup selections repair packaged guidance without touching MCP configuration or requiring authentication, an empty selection exits with Nothing selected, no changes made, and a fully configured run becomes a verification-only review with no confirmation, authentication, or writes. Review and summary output is transport-aware, describing local stdio, Cursor’s hosted remote MCP, or both based on what you actually selected.Fixed
- Experimental resolver fails closed on malicious package candidates. The opt-in
resolve_targettool andgithits resolvecommand now preserve latest-version malicious-content decisions and bounded OSV evidence, link affected or uncertain advisories in warnings, and withhold the normal CLI/MCP continuation for affected, unknown, or unrecognized states instead of suggesting a next action on a suspect target. 0.10.2 also fine-tunes partial-readiness handling so incomplete resolver evidence is surfaced rather than treated as a clean result. - Canonical resolve inputs are rejected locally.
githits resolveand the localresolve_targettool now direct already-canonical targets likenpm:expressorgithub:owner/repostraight to the next GitHits tool without calling the resolver backend. - Reliable
initinstall and uninstall state.githits initnow uses structured inspection of Claude’s user-scoped MCP state and best-effort guidance cleanup, so absent state is skipped safely, failures stay visible, and guidance reporting is kept separate from agent counts. - Correct changelog range semantics.
pkg_changelognow documents and exposesfromas an exclusive lower bound, so exact-release and range requests follow the backend contract consistently. Returned entries preserve backend/source order; consumers must not assume newest-first ordering.
GitHits 0.10.1
Releases githits 0.10.1 and @githits/mcp 0.10.1 preserve usable search evidence while indexing and harden authentication across concurrent CLI and local MCP processes.Improved
Provisional search evidencesearch and search_status now render queryable PROVISIONAL repository and documentation freshness. Responses keep the exact served identity, indexing guidance, available hits, and a searchRef only while the session remains active.Fixed
- Reliable concurrent authentication. Live per-user auth locks survive temporary process-inspection failures, and stale-owner cleanup is serialized so parallel CLI and local MCP processes do not reuse rotating refresh tokens. Restart long-running local MCP processes after upgrading so they load the hardened lock protocol.
- Evolving search-session statuses. CLI and MCP search preserve evidence for terminal
DEFERREDand future status values. Only known active sessions direct callers to keep polling; stopped or unknown sessions return a new-search action.
Week of August 17 – August 21
Releases 0.9.3 and 0.10.0 shipped this week, introducing opt-in local experimental tools for target resolution and source diffs, adding documentation source evidence to search results, and improving CLI recovery, validation, and diagnostics.New
Opt-in local experimental tools:resolve and code diff
0.10.0 adds a hidden-by-default experimental suite to the githits CLI and its local stdio MCP server: githits resolve (with the matching resolve_target MCP tool) ranks canonical package and GitHub repository targets, and githits code diff (with code_diff) produces bounded, Git-like diffs across code navigation targets. Enable them by setting [experimental] tools = true in your CLI configuration. The hosted MCP at https://mcp.githits.com, plugins, extensions, and the public MCP API stay on the stable tool inventory.Documentation source evidence on search
Unified search and search-status responses now identify the repository and published-site documentation behind each result. Healthy sources render as compact references; stale, incomplete, pending, or unavailable sources explain what was searched and what the published evidence actually covers, so you can tell partial hits from full coverage at a glance.githits code diff (silent dogfood in 0.9.3)
0.9.3 introduced githits code diff as an unpromoted CLI surface: bounded Git-like views, repository-relative glob filtering, reversible path quoting, apply-safe patch handling, structured completeness diagnostics, and --json output. 0.10.0 promotes it to the experimental suite alongside the matching MCP tool.Improved
Authoritative documentation site identities Discoverysearch and search-status now carry canonical documentation site URLs and show the host and path even when no hits are returned, so you can see exactly which site was consulted.Repository-wide code diff scope, spelled out
CLI help, legacy-scope diagnostics, and public client docs for code diff / code_diff now explain that package targets resolve repository and commit identity while raw diffs remain repository-wide. Bounded results may contain only sibling paths, and the surface says so instead of implying a package-scoped diff.Confident target resolution guidance
resolve now emits direct canonical next actions only for non-ambiguous exact or high-confidence matches. Weaker and empty results require explicit correction or selection instead of an unsafe auto-pick.Diff terminal output
code diff aligns wide Unicode paths by terminal cell width and colors patches, stat bars, summary markers, and change statuses when the terminal supports it. Verbose code-file rows use the same alignment.Standalone-site search recovery
search now preserves ordered backend site suggestions, distinguishes truncated candidate lists, and directs active crawls through search-status without guessing or rewriting your target. Help text also separates atomic interim evidence from opted-in partial target/source subsets.Fixed
- Exact-path recovery names the right surface.
code_readandcode_grepnow returnFILE_PATH_EXCLUDEDfor excluded files andSOURCE_FILE_INVENTORY_UNKNOWNwhen the index cannot verify a path, with actionable path and resolution details, instead of a genericNOT_FOUND. See code navigation. - Waited searches no longer suggest an older ref. After a waited
searchor code navigation call reaches the requested commit, the response no longer recommends falling back to an earlier ref. - Code validation errors match the caller’s surface. Client-side
INVALID_ARGUMENTerrors from shared code-read and grep request builders name CLI commands, positionals, and flags for thegithitsCLI while MCP callers keep MCP-native tool and argument syntax.
Week of August 12 – August 14
Releases 0.9.1 and 0.9.2 shipped this week, tightening exact-path recovery on code navigation, makinggithits init checks for Claude Code and Codex CLI reliable, and sharpening client-side validation error messages so CLI and MCP callers see the right syntax for the surface they’re on.Improved
Surface-native validation guidance Client-sideINVALID_ARGUMENT errors from shared code read and grep request builders now name the right syntax for the caller. The githits CLI sees githits code read, githits code grep, positionals, and flags; MCP callers see code_read, code_grep, and MCP argument names. No more mismatched examples in errors.Fixed
- Exact-path recovery on missing files. Typed
FILE_NOT_FOUNDresponses fromcode_readandcode_grepnow namecode_files,code_grep, andcode_read(or theirgithits code …CLI equivalents) in path-discovery guidance. Extensionless exact files use their containing directory for the follow-up listing, and genericNOT_FOUNDerrors no longer receive misleading file-path hints. - Reliable Claude Code and Codex CLI setup in
githits init. User-scoped MCP checks now run outside project configuration, use targeted server probes with host-specific timeouts, and distinguish missing, non-canonical, disabled, and failed states. Enabled customized Codex entries are preserved, and a cleanup no-op is no longer reported as successful setup when a later command fails.
Week of August 10 – August 11
Release 0.9.0 adds a canonicalgithits settings surface with Terms of Service acceptance, tightens search and code_grep recovery so agents stop retrying futile calls, hardens the OAuth callback flow for remote and sandboxed logins, and picks up the latest undici security patches.New
Manage account settings and Terms of Service from the CLI The newgithits settings command group lets you view and update account settings (default language, license mode, blocked license IDs, marketing emails) without leaving the terminal. Use githits settings show to print the full canonical settings object, githits settings get <key> and githits settings set <key> <values...> for individual fields, and githits settings clear <key> to reset a clearable field. Every subcommand supports --json for scripting.Accept the Terms of Service without a browser round-trip
githits settings terms shows the current Terms of Service acceptance requirement, and githits settings terms accept records acceptance directly from the CLI. When the API returns a terms-remediation error on any authenticated call, the githits CLI and MCP tools now surface a structured error pointing at githits settings terms accept so agents know exactly which command to run.Improved
Bounded recovery guidance forsearch and code_grep
Empty and still-indexing results on search and code_grep now come with bounded, actionable follow-ups instead of open-ended retry prompts. Terminal search sessions no longer poll indefinitely, deferred searches return an explicit continuation, grep truncation messages use normalized producer values, and case-sensitivity and per-command pivots are accurate across MCP and CLI output. Identical retry loops are prevented while structured JSON diagnostics are preserved.Forward-compatible account settings
The account settings client now accepts unknown fields returned by newer account APIs, so older githits CLI versions keep working when the server adds new settings.Fixed
- OAuth login completes cleanly on interrupted callbacks. Valid sign-in callbacks now resolve even when the response closes before finish, timeout and callback-error reporting stay independent of listener teardown, and
githits loginno longer blocks waiting for the temporary callback server to shut down. See authentication for the full flow. githits initsandbox and--no-browserlogins are more resilient. Temporary callback connections are force-closed after the response finishes and token exchange continues without awaiting listener teardown, so proxied sandbox and SSH-tunneled logins finish reliably. See theinitcommand reference for--no-browserand--port.undicisecurity patches. The bundled HTTP client was upgraded toundici7.29.0 to resolve five published advisories while retaining Node 20 compatibility.
Week of August 3 – August 7
Releases 0.6.7, 0.7.0, and 0.8.0 shipped this week.githits init now discloses what it sends where before any changes land, cross-host plugin packaging consolidates into a single canonical source, and GitHits ships as a portable Agent Plugins 1.0.0 package that any compliant client can install directly.New
Portable Agent Plugins 1.0.0 support 0.8.0 publishes GitHits as a portable Agent Plugin alongside the existing native adapters. Any Agent Plugins 1.0.0 client can install GitHits from the repository root and connect to the hosted remote MCP athttps://mcp.githits.com over Streamable HTTP, no host-specific glue required. Existing installs for Claude Code, Cursor, Codex, Gemini CLI, Google Antigravity, and VS Code/GitHub Copilot OpenPlugin keep working unchanged. See Manual remote MCP setup for the hosted transport.githits init discloses outbound data flows and requires a review acknowledgment
Before configuring any coding tool, githits init now shows the outbound queries, targets, and feedback endpoints it will contact and asks you to acknowledge the install review, even when there is nothing to write. Guidance-only remediation stays actionable, MCP configuration targets are listed separately from supporting-guidance targets, and --no-guidance is preserved through the generated install and verification commands.Explicit documentation site targets on unified search
Unified search now accepts explicit indexed documentation site targets, so you can point a query at a specific site instead of relying on inferred routing. Responses continue to surface per-source coverage state — pages crawled, frontier remaining, and a human-readable note — for sites that are partially crawled or capped.Consolidated cross-host plugin packaging
0.7.0 collapses cross-host packaging around the githits-cli repository as the single source of truth. Claude Code, Cursor, Codex, Gemini CLI, Google Antigravity, and generic/OpenPlugin now expose the same four current skills (githits-onboarding, githits-mcp, githits-code, githits-package), and every plugin/extension install goes through the hosted remote MCP at https://mcp.githits.com with host-managed OAuth. See Manual remote MCP setup for the hosted transport, and Skills for the shared skill contract.Changed
- Direct
githits initinstalls continue to use local stdio MCP for supported tools, with one exception: Cursor is now remote-only. Automatic local MCP setup covers the local stdio flow; Cursor users should follow Manual remote MCP setup. - Legacy plugin surfaces removed. The legacy Cursor command payload and the duplicated standalone Claude and Gemini plugin repositories have been retired now that every host reads from the canonical repository.
Fixed
- Concurrent auth operations stay isolated across process restarts. The local auth storage lock now caches each process’s identity per storage instance and retries transient identity lookups, so PID-reuse protection can’t be weakened when multiple
githitsCLI or MCP processes touch credentials at the same time. See authentication for the full storage model.
Week of July 27 – July 31
Release 0.6.6 tightens keychain error handling, adds schema-level validation to thecode_grep tool, clarifies docs_read output limits, and surfaces documentation crawl coverage warnings on unified search.Improved
- Clearer
code_grepcontext limits. Thecontext_lines,context_lines_before, andcontext_lines_afterparameters oncode_grepare now validated at the MCP schema level (integer, 0–100), so agents catch out-of-range values before the call is made. Each field also documents that_before/_afteroverride the sharedcontext_linesfor their side. - Precise
docs_readtext output description. Thedocs_readtool description and parameter hints now spell out the text-mode behavior explicitly: text output is capped at 150 lines per call (including explicit larger ranges), the response reports the returned range plustotalLinesfor follow-up slices, and JSON output remains uncapped whenend_lineis omitted. - Partial documentation coverage is surfaced on
search. When a hosted documentation site is still being crawled or its crawl was capped, unifiedsearchresponses now include per-source coverage state (pages crawled, frontier remaining, and a human-readable note) so agents can decide whether to retry, widen the query, or proceed with the partial hits instead of assuming full coverage.
Fixed
- Keychain access failures no longer look like a missing login. The migrating auth storage layer now distinguishes a missing credential from an unreachable system keychain. In keychain mode, a locked or otherwise unavailable keychain surfaces a clear storage error (with guidance to unlock the keychain, set
GITHITS_API_TOKEN, or opt intoauth.storage = "file") instead of silently returning “unauthenticated” or falling back to plaintext files. See authentication for the full storage model.
Week of July 27 – July 28
Release 0.6.5 restores silent automatic refresh of expired local logins, so long-running CLI and MCP sessions no longer see strayAUTH_REQUIRED prompts when a valid refresh token is on disk.Fixed
- Expired access tokens refresh silently again. Once an access token expired, authenticated
githitsCLI and MCP calls could incorrectly raise anAUTH_REQUIREDprompt even with a valid refresh token stored. Normal expiry is noninteractive again — the token is refreshed in the background and the call proceeds. - Transient refresh failures preserve stored credentials. Transport, timeout, and 5xx failures during token refresh no longer surface as a missing-token error. The recoverable failure is reported to the caller, the refresh token stays on disk, and later calls retry the refresh automatically. See authentication for the full recovery model.
- Missing OAuth client registration is reported explicitly. If tokens exist but the companion dynamic OAuth client registration is missing or unreadable, authenticated calls return a clear re-login error instead of the generic missing-token message.
Week of July 20 – July 24
A small maintenance week:githits init picks up the same SSH-friendly callback options that githits login already exposes, so guided setup works cleanly on remote and headless machines. Runtime and workflow dependencies also got a routine refresh.Fixed
githits initsupports--no-browserand--port. You can now run guided setup on a remote host or SSH session and either print the sign-in URL as a fallback or forward the callback over an SSH tunnel — for examplessh -N -L 8765:127.0.0.1:8765 user@remote-hostalongsidenpx githits@latest init --port 8765. See theinitcommand reference for the full flag list.
Week of July 13 – July 17
Releases 0.6.3 and 0.6.4 shipped this week, bringing structured rate-limit and timeout errors across thegithits CLI and MCP tools, marketplace-ready MCP tool annotations with a compact-by-default output format, and tighter credential persistence when refreshes hit transient failures.New
Marketplace-ready MCP tool annotations Every public MCP tool now declares explicitreadOnlyHint, openWorldHint, and destructiveHint annotations, so MCP-aware clients and marketplaces (including the OpenAI marketplace) can classify what each tool does before calling it. Read-only tools like docs_read, pkg_info, pkg_vulns, pkg_deps, pkg_changelog, and pkg_upgrade_review are marked as such; tools that may enqueue private indexing or crawl work (like search, code_files, code_read, code_grep, and docs_list) are explicit about the bounded, non-destructive nature of those writes.Compact text-v1 is now the default MCP output format
Format-selectable MCP tools now default to text-v1 and advertise it as the first format option. Agents get concise, markdown-shaped responses out of the box instead of the full JSON envelope, cutting context usage on code_read, code_grep, docs_read, pkg_changelog, and pkg_deps. JSON stays available as an opt-in for scripting.Improved
Structured rate-limit and timeout errors across CLI and MCP API rate-limit (429) and request-timeout responses are now classified consistently across the githits example command, code navigation, documentation access, and package inspection. JSON output preserves standard retry metadata (details.retryAfterSeconds, details.timeoutMs) with retryable: true; terminal output surfaces the same information in plain language, for example Request limit reached. Try again in 17 seconds. The client returns the error immediately instead of silently retrying, and public messages stay provider-neutral.Longer client deadline for githits example
Example generation now uses a longer client-side deadline than shorter metadata operations, so complex example requests can complete without spurious timeouts. Explicit timeout overrides are honored for tests and embedding clients, and hosted transports can reserve time for their outer response boundaries. The CLI default stays at four minutes.Fixed
- Transient auth failures no longer clear your refresh credentials. Transport, timeout, and 5xx failures during token refresh now retain the stored refresh token and retry on the next call. Only classified terminal failures (revoked sessions, refresh-token reuse, invalid client) clear credentials — see authentication for details.
- Auth files preserve tightened permissions. On POSIX, new and rewritten
auth.json,client.json,metadata.json, anddiagnostics.jsonare capped at0600; existing more-restrictive modes (like0400) are preserved instead of being loosened. - Ambiguous legacy plaintext credentials are reconciled safely. File-mode auth loads now run under the auth lock when migration is needed: the newest valid timestamp wins, canonical copies are re-persisted, and legacy copies are cleared. Ambiguous ties between legacy stores are left intact with a warning instead of guessing.
Week of July 6 – July 10
A batch of network and reliability fixes landed onmain this week: githits now honors standard HTTP proxy environment variables across every CLI-originated call, local auth commands no longer trip over a malformed proxy setting, and missing GitHub repositories in code navigation get a clean “not found” instead of a generic error.New
HTTP proxy support across the CLI Thegithits CLI now honors HTTP_PROXY, HTTPS_PROXY, and NO_PROXY (and their lowercase aliases) for every CLI-originated request — OAuth discovery, sign-in, token refresh, REST API calls, code and package service calls, local MCP tool calls started through githits mcp start, and npm update checks. Lowercase values win when both cases are set, matching standard proxy precedence. NO_PROXY bypass and credential redaction in error messages both work out of the box, so you can now run GitHits from behind a corporate proxy without extra configuration. The Node.js floor moves to ^20.18.1 || >=22.13.0 as part of this change.Fixed
githits auth statusandgithits logoutno longer fail on malformed proxy env. Proxy validation is now deferred until the first network call, so local-only auth paths (checking status, logging out) run cleanly even whenHTTP_PROXYis set to an unparseable value.- Missing GitHub repositories now return
NOT_FOUNDfrom code navigation. A backendREPOSITORY_NOT_FOUNDused to surface as a generic error; it’s now classified as a clean, non-retryableNOT_FOUND, withrepoUrlandrequestedRefechoed in the error details so agents can give a specific “that repo doesn’t exist” message instead of guessing.
Week of July 6, 2026
Release 0.6.2 shipped this week, adding a scripting-friendlygithits auth token command, publishing GitHits to the official MCP registry as com.githits/githits, and polishing the githits login URL fallback plus the packaged GitHits MCP skill copy.New
githits auth token for scripting and CI
A new githits auth token command prints the current bearer token to stdout — no labels, prompts, or extra whitespace — so you can pipe it directly to other tools or use it in command substitution. Resolution matches the rest of the CLI: if GITHITS_API_TOKEN is set it wins, otherwise the stored OAuth access token is printed, refreshing it against the saved client first if it’s expired. When no credentials are available the command exits non-zero instead of triggering an interactive login, so CI runs fail fast with a clear signal.com.githits/githits, giving MCP-aware clients a canonical discovery and installation path in addition to the existing npx githits@latest init flow. The registry entry is published automatically from the release pipeline, so it stays in lockstep with each new CLI release.Improved
Visible sign-in URL fallback duringgithits login
githits login now always prints the browser sign-in URL as a visible fallback during normal runs, not just under --no-browser. If the browser launch is hidden (for example inside a wrapper terminal) or fails silently, you’ll still see the URL and can open it yourself without rerunning the command.Tightened GitHits MCP skill guidance
The packaged githits-mcp skill installed by guided githits init picks up small copy tweaks — clearer framing that GitHits covers public OSS and package evidence, and less prescriptive advice about unrelated local tools — so agents get a calmer, more accurate description of when to reach for GitHits.Week of June 29 – July 3
Release 0.6.0 shipped this week, making guided GitHits MCP setup the recommendedgithits init path, adding a packaged githits-mcp skill and short managed instruction block that agents pick up automatically, and expanding the set of supported MCP setup targets.New
Guided GitHits MCP init is the new recommended pathgithits init now leads with Install GitHits MCP + supporting instructions (Recommended) as the top choice, with plain MCP and standalone Agent Skills kept as explicit alternatives. Guided setup installs the MCP server plus a small githits-mcp skill and a managed instruction block, so agents reliably reach for GitHits as the default OSS context layer instead of falling back to model memory or generic web search.New flags let you pick a mode non-interactively:githits init --guidance— install MCP plus the supporting skill and instruction block.githits init --no-guidance— install plain MCP only.githits init uninstall --keep-guidance— remove the MCP config but keep the skill and instruction block in place.
--yes, and staged --install-agents all default to guided MCP unless --no-guidance is passed. Reruns are idempotent: if MCP is already installed but guidance is missing, guided init installs only the missing pieces, and vice versa. Uninstall cleans up GitHits MCP config, the managed instruction block (identified by <!-- githits --> markers), and the GitHits-owned githits-mcp/SKILL.md from every target path, deleting the skill directory only if it ends up empty.Guidance is installed at both user and project scope depending on the tool — for example a project-level .claude/skills/githits-mcp/SKILL.md alongside a user-level ~/.copilot/instructions/githits.instructions.md.Packaged githits-mcp skill and managed instruction block
GitHits now ships a dedicated githits-mcp Agent Skill and a short managed instruction paragraph that guided init drops into AGENTS.md, CLAUDE.md, GEMINI.md, and equivalent per-tool instruction files. The skill tells agents to prefer GitHits for open-source discovery, planning, research, implementation, debugging, and maintenance — package docs, indexed package and repository source, examples, dependency graphs, vulnerabilities, changelogs, and upgrade-review evidence — and to route to the right tool (search, docs_*, code_*, pkg_*, get_example) instead of relying on model memory. The instruction block stays intentionally one paragraph; the skill carries the detailed behavior, so agent context stays lean.Expanded MCP setup targets
Guided and plain githits init now configure MCP for a wider set of current, docs-backed clients:- Zed —
context_serversin~/.config/zed/settings.json(user) or.zed/settings.json(project). - Junie —
mcpServersin~/.junie/mcp/mcp.jsonor.junie/mcp/mcp.json. - Qwen Code —
mcpServersin~/.qwen/settings.jsonor.qwen/settings.json. - Kiro —
mcpServersin~/.kiro/settings/mcp.jsonor.kiro/settings/mcp.json. - Kilo Code —
mcpin~/.config/kilo/kilo.jsoncor.kilo/kilo.jsonc, using the local command shape. - Factory Droid —
mcpServersin~/.factory/mcp.jsonor.factory/mcp.json. - Amazon Q CLI — command-driven user install via detected
q mcp/qchat mcp; no direct file editing.
--install-agents --json flows as existing tools.Fixed
- Headless-friendly
githits initsign-in. Release 0.6.1 adds a--no-browserflag togithits initthat prints the sign-in URL instead of trying to open a browser, so SSH sessions, containers, and other display-less environments can complete guided setup without a remote browser popping up. Behaves the same asgithits login --no-browser.
Week of June 22 – June 26
Releases 0.5.1, 0.5.2, and 0.5.3 shipped this week, focused on a canonical syntax for GitHub repository targets, sharper “did you mean” guidance when a ref doesn’t exist, and a leaner aggregate path forpkg_upgrade_review.New
Canonicalgithub:owner/repo#ref target syntax
Code navigation, search, and documentation access now accept GitHub repository targets in a canonical github:owner/repo#ref form, plus full https://github.com/owner/repo URLs. The #ref form makes refs that contain @ (for example n8n@2.26.5) unambiguous, and CLI and MCP follow-ups now echo the same canonical label everywhere. Malformed GitHub URLs are rejected up front instead of being passed through.Aggregate pkg_upgrade_review with transitive truncation metadata
pkg_upgrade_review now uses a single aggregate backend query instead of fanning out per package, so reviews are faster and JSON/text output stays in lockstep. Public JSON also gains *TotalCount and *Truncated fields on transitive vulnerability detail pages, so agents can tell when a list was cut off and decide whether to ask for more.Improved
Cleanergithits init status rows
githits init now shows the read-only probe command (for example checked via claude plugin list) on rows that didn’t change, prints install or uninstall commands only when they actually ran, and aligns multi-command continuation rows to the detail column. Composite rows that pair a CLI check with a config-file write are preserved.Leaner package metadata payloads
Package summary, dependency, and changelog backend calls now request only the fields each output mode actually uses — compact text and --omit-bodies skip verbose fields, while JSON and verbose modes keep everything. You should see faster responses for the common pkg info, pkg deps, and pkg changelog paths with no change in what’s rendered.“Did you mean” suggestions for unknown repository refs
When code navigation hits a REF_NOT_FOUND for a GitHub target, the error now includes the backend’s suggestedRefs (a short “did you mean” list) separately from availableRefs (indexed refs you can retry against). CLI and MCP error details surface both, and the inline hint only appends a suggestion when the backend message doesn’t already include one — no more duplicated suggestions in the same error.Indexing wait estimates in error messages
Code navigation responses for repos that are still being indexed now include a compact estimate of how long indexing should take, alongside structured indexingEstimate fields in the error details. You’ll know whether to wait a few seconds or come back later.Week of June 15 – June 19
Releases 0.4.14 and 0.4.15 shipped this week, focused on a much clearerinit install/uninstall experience, stricter package target syntax, and a wave of auth hardening for users running multiple agents in parallel.New
Per-tool change rows ingithits init
githits init now reports exactly what changed for every detected tool — created, updated, unchanged, or ran — alongside the config path or command it touched, instead of a generic success line. Already-configured tools are included in the audit so you can see at a glance what your setup looks like, and --install-agents --json includes structured changes for scripting.Unified init uninstall UX
githits init uninstall now uses the same selection model as install: configured tools are pre-checked, deselecting one keeps it, and --yes removes from all configured tools. Per-tool result rows use the same aligned renderer as install, so install and uninstall finally read the same way.Auth-clear breadcrumb in githits doctor
githits doctor now surfaces the last auth-clear event (reason + timestamp) when your token went missing — for example after a refresh-token reuse, a rejected client registration, or an explicit logout. When the active token is missing, doctor also prints a cause-specific recommendation so you know what to do next. No secrets are stored.Improved
Explicit package registries in target specs Package targets acrosssearch, code navigation, documentation access, and package inspection now require an explicit registry prefix — for example npm:express instead of a bare express. GitHub repository shorthands github:owner/repo and github.com/owner/repo are normalized. Errors for mixed package/repo targets, CLI help, and MCP tool descriptions were rewritten to match.Cleaner login and logout output
githits login and githits logout output is now concise — no token-lifetime or environment details, no implementation-oriented progress lines. Just what happened.Dedicated message for missing git refs
Code navigation tools now classify backend REF_NOT_FOUND responses separately and show repo/ref-specific guidance instead of generic path-narrowing or “try code_files” hints. You’ll know immediately when a branch, tag, or commit doesn’t exist.Windows launcher detection in doctor
githits doctor’s PATH lookup now checks PATHEXT launchers like githits.cmd on Windows, so doctor correctly reports the CLI as installed instead of missing.Fixed
- Refresh-token reuse races between concurrent agents. The auth refresh lock is now keyed to the credential scope (per-user) instead of the active config directory, so two local agents sharing the same keychain credential no longer both submit the same single-use refresh token and trigger a server-side family revocation. Terminal
invalid_clientand refresh-reuse failures also clear stale state immediately so the next login starts clean. - Cross-class credential tug-of-war. Keychain and file-mode auth storage are now isolated for both reads and writes — agents running in different storage modes can no longer steal and delete each other’s tokens. Switching
auth.storagebetween modes now requires an explicitgithits login. - Automatic auth clears stay scoped to the active backend. A stale credential in an inactive backend (for example a leftover keychain token) can no longer wipe the good credential in the mode you actually run. Explicit
githits logoutstill clears every backend. - Auth lock acquisition retries on write races. Concurrent token refreshes no longer fail with
ENOENTwhen another contender removes the lock directory between create and owner-file write.
Week of June 8 – June 12
New
GitHits onboarding skill A newgithits-onboarding skill walks coding agents through a safe, staged GitHits setup — detecting supported tools, asking before writing any config, installing the ones you pick, guiding you through login, and verifying the result. It ships as a public skill and as part of the Claude Code plugin. Install GitHits Skills and your agent can run setup for you instead of you wiring init flags by hand.Improved
More resilientgithits init on slow machines
Agent detection and config probes in githits init now run with bounded timeouts (2–5s) so a stuck binary lookup or hung config check fails fast instead of stalling onboarding. Set GITHITS_INIT_TRACE=1 to print step-by-step diagnostics on stderr when you need to debug a detection issue — JSON output on stdout is unaffected and stays machine-parseable.Week of June 1 – June 5
New
OpenCode support ingithits init
githits init now detects and configures OpenCode alongside the other supported AI coding tools, with a higher generated MCP timeout tuned for OpenCode’s session flow.Safer MCP package tool inputs
Package inspection tools picked up cleaner, agent-safer schemas: pkg_deps now takes max_depth, pkg_changelog takes omit_bodies, and pkg_upgrade_review takes skip_transitive_security. Defaults are no longer silently coupled to other options, so agents get more predictable behavior on every call.Improved
Better language search resultsgithits languages and the search_language MCP tool now route queries through the backend’s ranked /languages endpoint instead of local filtering. Short aliases like ts, py, js, c++, and c# now surface the right language first.Clearer authentication errors
Auth failures now distinguish missing local credentials from backend-rejected tokens, both in CLI JSON output and MCP error envelopes. Remediation guidance points you to the right next step — OAuth login, GITHITS_API_TOKEN, or support — instead of a generic “not authenticated” message.Normalized empty MCP search filters
The search tool no longer fails with INVALID_ARGUMENT when an agent passes empty docs-only filter fields. Blank filters are treated as absent, matching how other MCP inputs behave.Fixed
- Concurrent agents no longer invalidate each other’s auth tokens. Token refresh is now serialized across CLI and MCP processes sharing the same credentials, so running multiple agents in parallel won’t spend a single-use refresh token twice and log you out.
Week of May 25 – May 29
New
Project-levelgithits init
githits init now supports installing GitHits MCP configuration at the project level, alongside the existing user-level setup. Project mode covers detect, install, and uninstall flows for supported agents — including a new VS Code stdio config — so you can scope GitHits to a single repo without touching your global agent setup.githits doctor diagnostics command
A new githits doctor command prints a redacted snapshot of your runtime, environment, config path, service override, and auth file state. Text and --json output are both supported, and probes are read-only so running it never triggers auth migration or token refreshes. Use it first when filing an issue.Swift package support
Swift is now a first-class registry across search, code navigation, documentation access, and package inspection. Vulnerability and dependency lookups, v-prefixed versions, and GitHub-shaped package coordinates all work for Swift packages out of the box.Improved
Simpler search source selection Thesearch tool and githits search --source now take a single source value instead of a list. Descriptions for target and source were also rewritten to be clearer for agents. Passing --source more than once is now rejected explicitly instead of silently picking one.Request timeouts everywhere
REST, OAuth, and package metadata GraphQL calls now share a fetch timeout wrapper with timeout-specific error classification, so stalled requests fail fast with a clear reason instead of hanging.Structured auth failures
Missing-auth failures from authenticated commands now return a consistent JSON envelope (AUTH_REQUIRED), while terminal sessions still see the friendly login guidance. Easier to handle from scripts and agents.Fixed
- Empty optional MCP fields no longer break tool calls.
pkg_upgrade_review,searchtargets,pkg_changelogaddressing, andcode_*targets now treat harness-filled empty arrays and blank strings as absent instead of failing validation. - Token refresh races hardened. Concurrent refresh attempts coalesce correctly across soft and forced refreshes, rotated refresh tokens are preserved on same-lineage conflicts, and newer external sessions/logouts still take precedence.
- Windows
initno longer triggers Node DEP0190. Subprocess probes now run throughcmd.exewith safe argument escaping so shim resolution works without deprecation warnings.
Week of May 18 – May 22
New
Hermes Agent support ingithits init
githits init now detects Hermes Agent alongside the other supported AI coding tools and writes its MCP server configuration to ~/.hermes/HERMES_HOME while preserving existing YAML comments. Run githits init to set it up.Agent-safe staged onboarding
The init command now supports a staged, non-interactive flow for agents and CI. New flags on githits init:--detect-agents— scan for supported AI tools and exit without making changes.--install-agents <ids>— install only the agents you explicitly name. Idempotent for already-configured agents.--json— emit detection and install results as structured JSON.
--yes is rejected in non-interactive runs to prevent surprise side effects. See the headless CI guide for usage patterns.Copy-paste agent snippet on the init ready screen
After setup completes, githits init now prints a snippet you can drop directly into your AGENTS.md or CLAUDE.md so your agent knows when to reach for GitHits tools.Improved
Redesignedinit onboarding flow
Rewritten copy across every init screen (intro, detect, choose, sign-in, install, ready, uninstall) in a clearer, agent-focused voice. The CLI also picks up a new brand color, a gradient ASCII logo, highlighted --help section titles, and an animated spinner with rotating labels on example, search, code, and docs while requests are in flight.Target resolution feedback for code navigation
Code navigation tools (search, code_files, code_read, code_grep) now surface compact, actionable warnings when a target needs freshness or indexing attention, and stay quiet on healthy default-branch requests. Follow-up targets and default-branch intent are preserved across calls.Severity-filtered transitive upgrade advisories
pkg_upgrade_review now applies your min_severity setting to transitive vulnerability counts, so the evidence you see matches the threshold you asked for. The previous “transitive counts are unfiltered” caveat has been removed.Fixed
--no-colornow actually disables color. The flag was previously registered but never wired up. Every styled output across the CLI now respects it.githits logoutno longer reads the keychain. Logout completes cleanly without unnecessary credential prompts.- Auth is refreshed before
initlogin to avoid stale-session failures during onboarding. - Init detection messaging is clearer when no compatible agents are found, and login guidance is suppressed when an install step fails.
- Node 20 compatibility restored after a regression in the previous release.
- Stale-search warnings suppressed when the follow-up target matches the original request.