Skip to content

Telltale

Inventory

Inventory asks what tooling appears installed, not what actions it completed. Telltale can record installed-agent metadata and configured local MCP servers. It does not inventory skills, plugins, or model routing.

What inventory should collect

Start with low-risk metadata. Installed-agent inventory should confirm tools without reading transcripts, session stores, API keys, settings values, or private logs.

  • CLI evidence: executable names on PATH and safe symlink/package-directory resolution.
  • Package evidence: known global package roots such as npm, pnpm, bun, Homebrew, WinGet, Scoop, Chocolatey, or native installers.
  • Editor evidence: VS Code-style extension IDs and extension directories for local, remote, Cursor, Windsurf, and compatible editors.
  • Secondary evidence: globalStorage/config directories, treated as partial because they can remain after uninstall.
  • Output evidence: presence, confidence, signal type, and path hashes rather than raw paths when telemetry is emitted.

Agent signals to check

Current agent inventory scope

Codex

Executable: codex. Package evidence: @openai/codex. Common installs include standalone installer, npm global, Homebrew cask, or release binary.

Claude Code

Executable: claude. Package evidence: @anthropic-ai/claude-code. Native installs commonly place versioned files under a per-user Claude directory; package managers may use Homebrew, WinGet, apt, dnf, apk, or npm.

OpenCode

Executable: opencode. Package evidence: opencode-ai. Common installs include the OpenCode installer, npm/pnpm/bun, Homebrew, Scoop, Chocolatey, Arch/AUR, mise, or nix.

Qwen CLI

Executable: qwen. Package evidence: @qwen-code/qwen-code. Common installs include standalone installer, npm, or Homebrew.

OpenClaw

Executable: openclaw. Package evidence: openclaw. Treat install evidence separately from the lower-confidence session-store path.

GitHub Copilot

Extension IDs: github.copilot and github.copilot-chat. Config-only traces, such as a Copilot config directory, are partial or stale evidence unless the extension is installed.

Quick local enumeration

These generic operator checks list command locations and common extension directories. They are not Telltale source-support tests. Roo Code and Kilo Code are legacy: support is no longer maintained. The commands do not read transcript, database, session, or credential contents.

Linux/macOS shell
SH
for c in codex claude openclaw qwen opencode kilo kilocode; do command -v "$c" >/dev/null && printf '%s	%s
' "$c" "$(command -v "$c")" || printf '%s	missing
' "$c"; done; for d in "$HOME/.vscode/extensions" "$HOME/.vscode-server/extensions" "$HOME/.cursor/extensions" "$HOME/.windsurf/extensions"; do [ -d "$d" ] && ls -1 "$d" | grep -Ei '^(github.copilot|github.copilot-chat|rooveterinaryinc.roo-cline|kilocode.kilo-code)-' | sed "s#^#$d/#"; done

Use this as a quick operator check. Telltale telemetry hashes paths before emitting inventory evidence.

Windows PowerShell
POWERSHELL
$cmds='codex','claude','openclaw','qwen','opencode','kilo','kilocode'; $cmds|%{ $p=(Get-Command $_ -ErrorAction SilentlyContinue).Source; if($p){"$_	$p"}else{"$_	missing"}}; $roots="$env:USERPROFILE.vscodeextensions","$env:USERPROFILE.vscode-serverextensions","$env:USERPROFILE.cursorextensions","$env:USERPROFILE.windsurfextensions"; $ids='github.copilot','github.copilot-chat','rooveterinaryinc.roo-cline','kilocode.kilo-code'; $roots|?{Test-Path $_}|%{$r=$_; Get-ChildItem $r -Directory|?{$n=$_.Name.ToLower(); $ids|?{$n.StartsWith("$($_)-")}}|%{"extension	$($_.FullName)"}}

PowerShell output is local metadata. Review before sharing because paths can reveal usernames or workstation layout.

How Telltale uses inventory

Telltale keeps inventory separate from session-source discovery. A session source says where activity can be parsed; installed-agent inventory says what tooling appears present. The current scanner emits an install_inventory activity at most once every 24 hours by default, with a configurable interval and an opt-out flag.

  • Default cadence: 24 hours.
  • Tune with --install-inventory-interval-seconds or TELLTALE_INSTALL_INVENTORY_INTERVAL_SECONDS.
  • Use 0 to collect every scan during testing.
  • Use --install-inventory-disabled to suppress inventory for a run.
  • Client-filtered scans stay scoped to session clients and do not emit the global install inventory event.

Inventory module boundary

Install definitions live in per-agent source modules collected by the static registry. Metadata-only install inventory remains separate from exact-identity session acquisition.

Future inventory surfaces

Static MCP inventory already reads known local configurations when --emit-activity is enabled; it does not connect to servers or enumerate runtime tools. Skills, plugins, model/provider routing, and broader workspace integration inventory are proposed extensions, not current coverage.