{
  "name": {
    "finding": "Gemini CLI",
    "source": "https://geminicli.com/docs/",
    "quote": "Gemini CLI documentation"
  },
  "repo": {
    "finding": "https://github.com/google-gemini/gemini-cli",
    "source": "https://github.com/google-gemini/gemini-cli",
    "quote": "An open-source AI agent that brings the power of Gemini directly into your terminal."
  },
  "headless": [
    {
      "finding": "Yes. Pass the prompt with gemini -p \"PROMPT\" (or --prompt); headless mode also triggers in a non-TTY environment. No TTY is required.",
      "source": "https://geminicli.com/docs/cli/headless/",
      "quote": "run in a non-TTY environment"
    },
    {
      "finding": "Runs once, writes its response to stdout, and exits when finished. Input can also be piped through stdin as context alongside -p.",
      "source": "https://geminicli.com/docs/cli/tutorials/automation/",
      "quote": "Headless mode runs Gemini CLI once and exits."
    },
    {
      "finding": "Set the child process working directory to the target project (shell equivalent: cd /path/to/project before invoking gemini). The filesystem workspace root is the current working directory or workspace root; no separate --cwd flag was established.",
      "source": "https://geminicli.com/docs/tools/file-system/",
      "quote": "the current working directory or workspace root"
    },
    {
      "finding": "For unattended editing use --approval-mode auto_edit to auto-approve replace/write_file; for unrestricted tool approval use --approval-mode yolo (or --yolo). Default approval mode prompts; auto_edit still prompts for other tools.",
      "source": "https://geminicli.com/docs/reference/configuration/",
      "quote": "Automatically approve all tool calls"
    },
    {
      "finding": "For selective unattended execution use policy allow decisions; ask_user is denied in headless mode, so a prompt does not obtain human approval. Write tools default to ask_user unless an approval mode or policy allows them.",
      "source": "https://geminicli.com/docs/reference/policy-engine/",
      "quote": "In non-interactive mode, this is treated as `deny`."
    },
    {
      "finding": "Machine output: --output-format json returns one response/stats/error object; --output-format stream-json emits JSONL init/message/tool_use/tool_result/error/result events. Exit codes: 0 success, 1 general/API failure, 42 input error, 53 turn limit exceeded.",
      "source": "https://geminicli.com/docs/cli/headless/",
      "quote": "response and usage statistics"
    },
    {
      "finding": "File creation and edits persist through write_file and replace; this is an agent capable of leaving project changes, not only printing a response.",
      "source": "https://geminicli.com/docs/cli/tutorials/file-management/",
      "quote": "generate the new file from scratch."
    }
  ],
  "confinement": [
    {
      "finding": "Shell/tool policy: TOML rules match toolName, commandPrefix or argsPattern and choose allow/deny/ask_user; higher priority wins. Use User/Admin policies: workspace policies are documented as non-functional. A tool-wide deny removes that tool from model visibility.",
      "source": "https://geminicli.com/docs/reference/policy-engine/",
      "quote": "`allow`, `deny`, or `ask_user`"
    },
    {
      "finding": "Tool switches: --allowed-tools bypasses confirmation for specified tools, rather than being a tool-exclusion boundary. --allowed-mcp-server-names limits session MCP servers; gemini -e none disables extensions. Sandbox is disabled by default, but the configuration reference says YOLO enables it by default.",
      "source": "https://geminicli.com/docs/reference/configuration/",
      "quote": "A comma-separated list of MCP server names to allow"
    },
    {
      "finding": "Filesystem tools operate within rootDirectory; write_file creates or overwrites files. This documents a boundary for filesystem tools, not an OS-level boundary for arbitrary shell code.",
      "source": "https://geminicli.com/docs/tools/file-system/",
      "quote": "All file system tools operate within a `rootDirectory`"
    },
    {
      "finding": "Plan mode: gemini --approval-mode=plan restricts project modifications; write_file/replace may still write Markdown plans in the managed plans directory or configured plans location. Thus documented read-only mode has an intentional planning-write exception.",
      "source": "https://geminicli.com/docs/cli/plan-mode/",
      "quote": "only allowed for `.md` files"
    },
    {
      "finding": "Enable isolation with -s/--sandbox or GEMINI_SANDBOX. Backends documented: macOS Seatbelt, Docker/Podman, Windows native sandbox, Linux gVisor/runsc, experimental LXC/LXD. Docker mounts the project at its host absolute path, so edits reach host project files.",
      "source": "https://geminicli.com/docs/cli/sandbox/",
      "quote": "complete process isolation"
    },
    {
      "finding": "Seatbelt default permissive-open confines project writes but allows broad reads and network. SEATBELT_PROFILE also offers restrictive/strict and proxied variants. SANDBOX_MOUNTS can expand workspace access; sandbox expansion can request additional path/network permissions.",
      "source": "https://geminicli.com/docs/cli/sandbox/",
      "quote": "network via proxy"
    },
    {
      "finding": "Network is not blocked merely by sandboxing: default Seatbelt permits it; proxied profiles constrain its route. A universal built-in domain allowlist or deny-all network setting across every backend: none documented in the sandbox guide.",
      "source": "https://geminicli.com/docs/cli/sandbox/",
      "quote": "network allowed"
    },
    {
      "finding": "Protected-path inventory beyond the workspace-root boundary: not found in the filesystem reference. Tool policy may deny write tools globally or match their arguments. Ignore files are visibility/filtering features, not established here as shell confinement.",
      "source": "https://geminicli.com/docs/tools/file-system/",
      "quote": "for security."
    }
  ],
  "usage": [
    {
      "finding": "Yes: headless --output-format json includes stats with token usage and API latency; stream-json final result has aggregated statistics and per-model token usage breakdowns. Capture stdout as the run record.",
      "source": "https://geminicli.com/docs/cli/headless/",
      "quote": "per-model token usage breakdowns"
    },
    {
      "finding": "Interactive /stats model shows model token counts/quota; /stats session shows duration, tool calls and performance metrics.",
      "source": "https://geminicli.com/docs/reference/commands/",
      "quote": "including token counts and quota information."
    },
    {
      "finding": "OpenTelemetry provides machine-readable gemini_cli.token.usage, counting input/output/thought/cache/tool tokens, with model and type attributes; gen_ai.client.token.usage counts tokens per operation.",
      "source": "https://geminicli.com/docs/cli/telemetry/",
      "quote": "Counts input, output, thought, cache, and tool tokens."
    },
    {
      "finding": "Per-run monetary cost reporting: not found. Headless schema documents usage statistics but no money/currency field; telemetry reference search for cost found no match. Do not equate token counts or quota with a billed amount.",
      "source": "https://geminicli.com/docs/cli/headless/",
      "quote": "Token usage and API latency metrics."
    }
  ],
  "parallel": [
    {
      "finding": "Subagents supported and enabled by default; automatic delegation or @agent-name at the start of the prompt nudges delegation. Each has a separate context loop, can restrict tools, and returns results to the main agent. Custom definitions: .gemini/agents/*.md or ~/.gemini/agents/*.md with YAML frontmatter.",
      "source": "https://geminicli.com/docs/core/subagents/",
      "quote": "Subagents are enabled by default."
    },
    {
      "finding": "Custom subagents support model/tools/max_turns/timeout_mins settings; agents cannot invoke other subagents. Remote delegation uses A2A. Explicit simultaneous execution of multiple subagents within one session: not found on this page.",
      "source": "https://geminicli.com/docs/core/subagents/",
      "quote": "subagents cannot call other subagents."
    },
    {
      "finding": "Several independent sessions can work on tasks at once using separate Git worktrees to avoid collisions. Experimental integrated support: experimental.worktrees=true, then gemini --worktree NAME (-w); each session gets its own files/branch. Worktrees remain on exit.",
      "source": "https://geminicli.com/docs/cli/git-worktrees/",
      "quote": "give each Gemini session its own copy of the codebase."
    }
  ],
  "providers": [
    {
      "finding": "Documented provider/backend list: Google via Sign in with Google (Gemini Code Assist/account access), Gemini API through Google AI Studio API key, and Google Cloud Vertex AI. These are Google Gemini access paths, not evidence of additional model vendors.",
      "source": "https://geminicli.com/docs/get-started/authentication/",
      "quote": "Use Gemini API key"
    },
    {
      "finding": "Native local model or OpenAI-compatible endpoint support (Ollama, LM Studio, vLLM): not found in authentication, configuration, or advanced model configuration docs. No affirmative support claim for OpenAI, Anthropic, GitHub Copilot, or other native model backends is established.",
      "source": "https://geminicli.com/docs/cli/generation-settings/",
      "quote": "Advanced Model Configuration"
    }
  ],
  "subscriptionLogin": [
    {
      "finding": "Yes for Google: Sign in with Google supports free personal accounts and Google AI Pro/Ultra subscriptions. Browser sign-in is an initial setup step; use the Google account associated with the subscription. Headless mode reuses cached credentials. Without cached sign-in, configure Gemini API key or Vertex AI using environment variables.",
      "source": "https://geminicli.com/docs/get-started/authentication/",
      "quote": "use the Google account associated with your subscription."
    },
    {
      "finding": "Google Cloud environments may use Cloud Shell credentials or Compute Engine Application Default Credentials. Subscription logins for ChatGPT, Claude Pro/Max or GitHub Copilot: not found in the official authentication page.",
      "source": "https://geminicli.com/docs/get-started/authentication/",
      "quote": "Application Default Credentials (ADC)"
    }
  ],
  "license": {
    "finding": "Apache License 2.0, from repository LICENSE.",
    "source": "https://github.com/google-gemini/gemini-cli/blob/main/LICENSE",
    "quote": "Apache License\nVersion 2.0, January 2004"
  },
  "latestRelease": [
    {
      "finding": "Newest published release including prereleases: v0.67.0-nightly.20261027.g363a13119, released 2026-10-27 at 01:15 (page display); explicitly marked Pre-release.",
      "source": "https://github.com/google-gemini/gemini-cli/releases/tag/v0.67.0-nightly.20261027.g363a13119",
      "quote": "released this 27 Oct 01:15"
    },
    {
      "finding": "Latest stable release: v0.65.0, published 2026-10-20; page marks it Latest and shows 21:17.",
      "source": "https://github.com/google-gemini/gemini-cli/releases/tag/v0.65.0",
      "quote": "released this 20 Oct 21:17"
    }
  ],
  "maintenance": [
    {
      "finding": "Looks actively maintained as checked 2026-10-27: default main branch head 363a13119a57354f469732577518b9d6b319d1d6 has committer timestamp 2026-10-26T20:12:43Z (GitHub commits/main API). This is the newest default-branch commit observed, not the generated nightly release commit.",
      "source": "https://api.github.com/repos/google-gemini/gemini-cli/commits/main",
      "quote": "2026-10-26T20:12:43Z"
    },
    {
      "finding": "Main-head change is a CLI bug fix, consistent with recent maintenance.",
      "source": "https://github.com/google-gemini/gemini-cli/commit/363a13119a57354f469732577518b9d6b319d1d6",
      "quote": "fix(cli): validate finite numbers in numeric settings editor (#29968)"
    }
  ],
  "language": {
    "finding": "Primarily TypeScript (22,098,506 bytes in GitHub language API); repository also contains JavaScript, Python, Shell, C#, Dockerfile, HTML and Makefile.",
    "source": "https://api.github.com/repos/google-gemini/gemini-cli/languages",
    "quote": "\"TypeScript\": 22098506"
  },
  "install": {
    "finding": "Documented npm install: npm install -g @google/gemini-cli. Tool was not installed or run for this profile.",
    "source": "https://geminicli.com/docs/",
    "quote": "npm install -g @google/gemini-cli"
  },
  "checkedOn": {
    "finding": "2026-10-27 (UTC); research date, not documentation publication date. Official sources only; documentation describes current features and is not asserted to be a version-pinned v0.65.0 manual.",
    "source": "https://geminicli.com/docs/",
    "quote": "Gemini CLI documentation"
  },
  "gaps": [
    {
      "finding": "not found: explicit guarantee or invocation for concurrent subagents in a single session. Looked at official Subagents page; independent multi-session worktrees are documented separately.",
      "source": "https://geminicli.com/docs/core/subagents/",
      "quote": "Independent context window"
    },
    {
      "finding": "not found: local/OpenAI-compatible provider configuration or non-Google subscription login. Looked at authentication, https://geminicli.com/docs/reference/configuration/ and https://geminicli.com/docs/cli/generation-settings/. This is a documentation gap, not proof an adapter cannot be written.",
      "source": "https://geminicli.com/docs/get-started/authentication/",
      "quote": "Use Vertex AI"
    },
    {
      "finding": "not found: per-run monetary cost/currency output. Looked at headless schema, https://geminicli.com/docs/reference/commands/ (/stats), and telemetry reference; telemetry search for cost found no match.",
      "source": "https://geminicli.com/docs/cli/telemetry/",
      "quote": "Token usage"
    },
    {
      "finding": "not found: universal network deny-all/domain policy across backends or exhaustive protected-path list. Looked at sandbox guide, https://geminicli.com/docs/tools/file-system/ and https://geminicli.com/docs/reference/policy-engine/.",
      "source": "https://geminicli.com/docs/cli/sandbox/",
      "quote": "Sandboxing methods"
    },
    {
      "finding": "Documentation caveat: configuration reference still warns plan approval mode is under development, while dedicated Plan Mode page describes enabled-by-default functionality. No execution test was performed to resolve this version/documentation discrepancy.",
      "source": "https://geminicli.com/docs/reference/configuration/",
      "quote": "not yet fully functional."
    }
  ]
}
