Help us shape the future of Go! Take the 2026 Go Developer Survey

entire-investigate

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 17, 2026 License: MIT

README ¶

entire-investigate

🔎 Multi-agent investigation plugin for the Entire CLI.

Agents take turns appending findings, evidence, and analysis to a shared findings document until they reach quorum. When they're done, fix hands the accepted findings to a coding agent as grounded context.

This ships as an Entire external command: install the binary and entire investigate dispatches to it. It was previously built into the CLI.

Install

Build it and install the binary into Entire's managed plugin directory:

mise run install

That runs go build and entire plugin install ./entire-investigate --force. After it, entire investigate dispatches here.

Not yet installable by name. entire plugin install investigate does not work today, and neither does the repository-URL form. The bare name resolves through the plugin index, which does not list investigate yet; the URL form resolves a version with git ls-remote --tags, and this repository has no release tags. Both start working once a v* tag is pushed — the release workflow publishes the archives and checksums.txt that entire plugin install verifies — and, for the bare name, once an index entry is added.

Use

entire investigate                       # investigate the current branch
entire investigate notes.md              # seed from a findings doc
entire investigate --issue-link <url>    # seed from a GitHub issue or PR
entire investigate --continue <run-id>   # resume an interrupted run
entire investigate --findings            # browse saved investigations
entire investigate show <run-id>         # print a saved investigation
entire investigate fix <run-id>          # launch a coding agent with the findings
entire investigate clean <run-id>|--all  # delete saved artifacts
entire investigate --edit                # re-open the config picker

Run entire investigate --help for the full flag list.

Configuration

First run offers a picker and writes .entire/investigate.local.json:

{
  "agents": ["claude-code", "codex"],
  "max_turns": 2,
  "quorum": 0,
  "always_prompt": ""
}
Field Meaning
agents Ordered list of agents to round-robin during the loop
max_turns Per-agent turn budget (default 2)
quorum Approvals needed to terminate; 0 means all agents must approve
always_prompt Text appended to every turn's composed prompt
The config file is deliberately per-clone

There is no committed counterpart, and that is a security property rather than an oversight.

always_prompt is free text that lands verbatim in the prompt of an agent this plugin spawns with approval checks disabled (bypassPermissions for claude-code, --dangerously-bypass-approvals-and-sandbox for codex). If it could be read from a version-controlled file, an ordinary pull request would steer a permission-bypassed agent on every developer who pulled it. With no committed file in the lookup order there is nothing to gate.

Two things back that up rather than leaving it to convention:

  • The file is ignored on first write. Save adds investigate.local.json to .entire/.gitignore, appending so the CLI's own entries survive. A stray git add -A would otherwise track it and silently downgrade the config.
  • A tracked file loses the prompt. If it is committed anyway, the plugin's index check drops always_prompt and reports why; agents, max_turns and quorum still apply.

.entire itself is opened as a name inside a root anchored on the worktree root, never by resolving the joined path, so a repository-controlled .entire symlink is refused instead of followed. Without that, a committed symlink would put the real config somewhere the index records under a different name — the untracked check would pass and version-controlled text would reach an approvals-disabled agent.

This mirrors the CLI's own treatment of .entire/settings.local.json; see internal/config for the reasoning in full.

Migrating from the built-in

entire investigate previously read an investigate block inside .entire/settings.json / .entire/settings.local.json. That block is no longer read — copy the inner object into .entire/investigate.local.json, or just run entire investigate --edit and pick again. The field names are unchanged.

The Entire CLI still accepts a leftover investigate key in its settings files so nothing breaks if you leave it there, but it ignores it.

Artifacts

Runs are stored outside .entire/, in the git common directory, so they never show up as working-tree changes:

<git-common-dir>/entire-investigations/
  manifests/            # run manifests, for --findings
  <run-id>/
    findings.md
    state.json

entire investigate clean removes them.

Development

mise run build      # build the binary
mise run test       # unit tests
mise run lint       # vet, golangci-lint, gofmt, go mod tidy, shellcheck
mise run check      # everything, plus cross-builds
mise run install    # build and install into the managed plugin dir

The plugin depends on github.com/entireio/cli for shared infrastructure — agent registry and spawners, session and checkpoint state, settings, git and filesystem helpers — rather than vendoring copies of it. It needs CLI v0.10.7 or newer.

Licence

MIT. See LICENSE.

Directories ¶

Path Synopsis
cmd
entire-investigate command
entire-investigate is an Entire CLI external command.
entire-investigate is an Entire CLI external command.
internal
agentlaunch
Package agentlaunch is the shared "launch a normal coding agent session with a composed prompt" helper, used by `entire investigate fix`.
Package agentlaunch is the shared "launch a normal coding agent session with a composed prompt" helper, used by `entire investigate fix`.
bridge
Package bridge supplies the investigate command with the handful of behaviours that lived in the Entire CLI's own cli package before the command moved out.
Package bridge supplies the investigate command with the handful of behaviours that lived in the Entire CLI's own cli package before the command moved out.
cli
config
Package config owns `entire investigate`'s configuration.
Package config owns `entire investigate`'s configuration.
investigate
Package investigate contains the env-var contract between `entire investigate` (which spawns the agent process) and the lifecycle hook (which adopts the session), plus the persisted run state for resuming an investigation.
Package investigate contains the env-var contract between `entire investigate` (which spawns the agent process) and the lifecycle hook (which adopts the session), plus the persisted run state for resuming an investigation.
investigate/flowchart
Package flowchart renders Mermaid flowcharts as top-down Unicode box diagrams for terminal display.
Package flowchart renders Mermaid flowcharts as top-down Unicode box diagrams for terminal display.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL