Claude Code in the analyser¶
If you have Claude Code installed and logged in, the Analyser assistant tab can host one long-running Claude Code session instead of the in-app assistant: you type into it here, and it drives the analyser through the same verbs an external client uses. It is off by default.
Turn it on¶
Choose Safe analysis in Set up AI… or the quick switch (the mode chip in the assistant's header), or Settings ▸ Assistant ▸ Safe analysis ▸ Allow the analyser to start Claude Code. One assistant drives the tab at a time; switching back stops an idle Claude Code, and is refused while Claude is answering ("Claude is still answering — Stop or wait, then change how the assistant works."). These settings — both switches, Full Claude Code's mode, the model, the spend limit and the folders you have confirmed — are this machine's and this user's only: never in a project profile, a shared settings file or an evidence bundle, so a cloned repository or a received bundle cannot turn any of them on. There is no central administrator lock yet (Managed policy).
Start¶
Press Send with a question in the composer, or ⋯ ▸ Start Claude Code (Resume Claude Code when there is a conversation to resume). What happens:
- The analyser runs your own installed
claude, logged in as you. It never reads, stores or passes on your Claude Code credentials; if Claude Code is not logged in, Start says "Claude Code is not logged in — runclaudeonce in a terminal to log in." Ifclaudecannot be found — common when the analyser was started from the Finder or the Dock — the tab lists every place it looked. - The first time in a folder, it asks: "Claude Code will read this folder's CLAUDE.md as instructions. Trust
for Claude Code in the analyser?" — Trust this folder or Don't trust (the default, at the right, as in every consent dialog here). Your answer is remembered on this machine. With your own project open, Claude Code works in that project's own folder — once you trust it, it reads that folder'sCLAUDE.md(and, in Full Claude Code, its.claude/skills, hooks and.mcp.json) the same way your own terminal's Claude Code would. Only with no project open — or with the sample project or a bundle open — does Claude Code work in a private, empty scratch folder instead, and the question says so in words before its path. Claude Code is never started inside a bundle's working copy: with a bundle open it works in an empty scratch folder, and the working copy'sCLAUDE.mdis never loaded. - Claude Code does not need External MCP/REST access turned on. With it off, the analyser opens a private listener that serves only this Claude Code session — it refuses every external client, even one holding the REST token, and publishes no endpoint file for other tools to find — and closes it when the session stops. With it on, the session shares that listener, and external clients are served as before — unless you choose Close external access while this session runs (Connect your client ▸ While Claude Code runs in the analyser).
- Start contacts Anthropic (the sign-in check and connecting the analyser's bridge) before your first Send. No record content is sent until you press Send.
- The analyser checks that the session it started is the one it asked for: the bridge proves it belongs to this analyser window, and Claude Code's tools, permission mode and servers must be exactly what Safe analysis (or Full Claude Code) sets up, or the session is stopped and the tab names what differed. An older installed analyser bridge is refused by name.
What it can do in Safe analysis¶
Claude Code here has:
- the folder's
CLAUDE.md, and Read, Grep and Glob confined to the folder (a symbolic link pointing outside it is refused too); - the analyser's verbs that only read or change the view —
read,aggregate,series,context,coverage,source,filter,goto,flag,topology,spotlight— approved without asking (to show you code,source {…, text}returns the lines from your source roots as data, at most 200 lines a call, so Claude does not need to read the files itself);graph, judged call by call: creating a chart or showing one is approved without asking, while deleting, renaming or restoring a chart, or replacing an existing chart's definition (re-sent notes, series, guides or bands;clearNotes) is asked of you — the dialog says "Claude Code asks to delete the chart “x” (it can be restored)" or "…to replace the chart “x” (its old definition can be restored)"; andpropose, which only Claude Code in the tab is offered: it records a set-up offer and changes nothing (Set up a project with Claude); - the verbs that change what is open or write files —
open,source_root,screenshot,report,walk,import— each call asked of you first (Approvals), except the few sub-actions of them that change nothing stored (playing or ending a walk, listing the deleted reports or walks); - nothing else. Not loaded: your own skills, commands, hooks and settings, your MCP servers and connectors, and the
folder's
.claude/settings.jsonhooks and.mcp.json. No Bash, no file edits, no web, no subagents. Anything else is denied at once, without asking you. The mode chip reads Safe ▾, and ⋯ ▸ About this session… says "Safe analysis — your own skills, hooks and MCP servers are not loaded". Your full Claude Code is a separate opt-in, below.
Full Claude Code: your own Claude Code, by a second opt-in¶
◆ Full Claude Code (in Set up AI or the quick switch), or Settings ▸
Assistant ▸ Full Claude Code ▸ …with my full Claude Code permissions (off, and only available while Claude Code is
allowed), runs your own Claude Code in the tab as it runs in a terminal. Set up AI shows the warning's first three sentences;
choosing it there, in the quick switch, or with the Settings switch shows the same warning as a confirmation first, with
Cancel as its default — Enter and Escape cancel, and nothing changes until you press Turn on full Claude Code in it. It loads your settings and permission rules, skills, commands, plugins,
subagents, hooks and MCP servers (claude.ai connectors included), and the folder's own hooks and .mcp.json, and
Claude Code can use your own tools — Bash, file edits, web access — as far as your permission rules and the mode you
choose allow. The analyser does not confine it to the folder; your rules and the mode do.
- The mode (shown under the switch when it is on):
defaultasks before anything your rules don't allow — the analyser shows each request in its approval dialog (Approvals);acceptEditscan accept file edits and some filesystem commands without asking. Commands already allowed by your rules also need no dialog.autolets Claude Code's own safety classifier approve or block each action without asking you — it needs a model that supports it (sonnet or opus): with another, Claude Code starts indefaultinstead, and the analyser stops it and says so;planreads and plans without editing, but permitted read-only commands may run.bypassPermissionsanddontAskare never offered; a hand-edited setting naming either reads asdefault, and Settings says so. - The folder is confirmed separately for full Claude Code, because Start itself runs the folder's hooks and
connects its MCP servers, before you send anything. The dialog names what it found — "Hooks in this folder:
SessionStart (1) — from .claude/settings.json", "MCP servers in this folder: db-tools — from .mcp.json", the
permissions the folder grants itself ("allow Bash", an additional directory, a default mode), or that a
file could not be read — and never shows the hook or server commands. What an MCP server's command runs (a
./server.js) is not checked, and the dialog says so. The confirmation is tied to the content of.claude/settings.json,.claude/settings.local.jsonand.mcp.json, and of the folder's instruction files (CLAUDE.md,CLAUDE.local.md,.claude/CLAUDE.md, and everything under.claude/commands,.claude/skills,.claude/agents,.claude/rules,.claude/output-stylesand.claude/hooks, read up to a bound and without following a link out of the folder): when any of them changes (agit pullthat adds a hook or rewritesCLAUDE.md), Start asks again, and the dialog says which changed; the check is made again when the process is started, so a change between the question and the start is refused too. A session already running when they change is stopped at once at your next Send or Settings change — mid-answer too — and Start asks again. Not re-checked: files aCLAUDE.mdimports with@path,CLAUDE.mdfiles in the folders above this one, and the contents of the scripts a hook runs from outside.claude/hooks— Claude Code reads or runs them, and a change to them does not ask again; the dialog says so. A folder confirmed for the analyser assistant is not thereby confirmed for full Claude Code. - What the tab shows. Each hook's event and outcome is a status line ("SessionStart: 1 ran", or that one
failed), never its output. The header says "Full Claude Code (
) — your settings, skills, hooks and n MCP servers are loaded" , and an environment line under Details, "PATH: inherited, plus ~/.local/bin, /opt/homebrew/bin": an analyser started from the Finder or the Dock has a minimalPATH, where your hooks andnpxservers would not start, so the standard install folders that exist and are not already on yourPATHare appended (your order wins). The analyser never runs a login shell to find aPATH; set anything else (annvmnode, a project's virtual environment) in Claude Code's own settingsenv. - Still the analyser's. Its verbs that change what is open or write files are asked of you in the modes that ask
(
default,acceptEdits) and hidden underautoandplan; the tools of your ownfluxtion-analyserregistration, which is not bound to this analyser window, are hidden. Only the Start button starts it. Changing the switch or the mode means a New chat.
Turn it on only for folders and logs you trust: in Full Claude Code, text in a record that is written to steer an AI reaches an agent that may have your shell, and the analyser cannot limit what your own tools do.
What the analyser tells Claude Code¶
Every session starts with the analyser's own note, fixed text with nothing of yours in it: Claude Code is the
assistant inside this app; project, starter (or template), log, graph and report mean the analyser's; and
it calls analyser_context first, which says what is open and lists the starters. Full Claude Code adds: begin a
new application by offering one of the analyser's starters (never a web search or a hand-made scaffold), create
nothing in the scratch folder a session starts in, and use no gh, curl or other network command to look for
examples. Full may read fluxtion-playground.dev documentation without asking: one WebFetch rule for exactly that
site, over https; any other web fetch is asked, and Safe analysis has no web tool at all. ⋯ ▸ About this session…
says the same. The note is part of what a session is created with, so a conversation from before this note is not
resumed: it begins a new chat.
When Claude Code proposes a starter, the review and what follows are in Create from a starter with the assistant.
Using it¶
While a turn runs, the composer shows the step Claude Code started — reading, searching, running a command,
checking the log or answering — with elapsed time after three seconds. Names are shortened and paths redacted.
After a minute without a stream event, Keep waiting dismisses the inactivity cue without stopping anything;
the clock keeps counting, and only a new event followed by another minute of silence can show the cue again.
Elapsed time is not proof that the process is alive. While an approval waits, the cue instead says Needs your
approval; answer the existing modal question. There is no Show control behind a dialog that blocks it.
⋯ ▸ About this session… lists tool-call and turn totals.
context {sections: ["project"]} exposes the same activity under project.assistant.
- Send (or Enter; Shift+Enter is a new line) sends one turn. While Claude is answering, Send is refused — "Claude is still answering — Stop or wait." — and your draft stays; nothing is queued.
- Stop interrupts the turn. If Claude Code does not acknowledge within 5 s, or the turn has not ended within 15 s, the analyser ends the process; your next Send resumes the same conversation in a new process.
- New chat starts a new conversation. Changing the folder (opening another project), the profile or Full Claude Code's mode means a New chat: a conversation is never resumed under different settings.
-
Changing a setting while Claude Code runs. Claude Code takes its settings when it starts, so a change made in Settings ▸ Assistant, Set up AI or the quick switch applies at the next start. What happens to the session running now depends on the change:
Change What happens Safe analysis → Full Claude Code; a full mode that asks less (for example default→acceptEdits); the model; the spend limit; the folderOffered. The panel asks "Settings changed — restart Claude Code now to apply them?" with Restart and Later. Nothing stops until you answer. Yes stops Claude Code and starts it again on the new settings — the conversation continues when only the model or the spend limit changed, and a new chat begins when the profile, the mode or the folder changed (the prompt says which); while Claude is answering, it restarts when that answer ends. Later keeps the session running on the settings it was started with and leaves a settings changed — restart to apply chip in the header — click it to be asked again. Putting the setting back withdraws the offer. Allow the analyser to start Claude Code off (or the In-app assistant or Off profile); Full Claude Code switched off; a full mode that asks more (for example auto→default, or any mode →plan); the folder no longer confirmed for the profile runningStopped at once, mid-answer too, and never offered: each takes away something the running session can still do. The transcript says why. External MCP/REST access, file exchange, creating projects, the in-app assistant's settings Nothing to restart: Claude Code keeps its own connection to the analyser.
After you choose Keep it running here when switching projects, the folder change is yours: it is not offered
again. Turning Allow the analyser to start Claude Code back on after it stopped a session clears the "switched off"
line — press Start.
- Slash commands you type are sent as in a terminal — /compact, /model, /context, /usage and the like —
except those that would change how Claude Code works here or the conversation's identity, or act outside this session: /config,
/mcp with an argument, /add-dir, /permissions and others are refused with "… is not available in the analyser —
use Claude Code in a terminal for that."; /clear offers New chat instead. A command the analyser has not
classified (from a newer Claude Code) is refused the same way. Lines starting with ! or # (the terminal's shell and
memory shortcuts) are refused. An @file mention works as in a terminal for a file inside the folder; a file
outside it is not read.
- The header shows the model, the profile (Safe analysis, Full Claude Code (PATH line, diagnostics and the last error line — sit behind
▸ Details, collapsed by default (Tab reaches it; Space or Enter opens it). It opens by itself, reading
"▾ Details — needs attention: …", only when something needs you: a session that did not match how Claude Code was
set up, a start that failed or was refused, or a warning (diagnostics, or an error line Claude Code left). Your own
choice to open or close it is kept until the analyser closes, never saved. It never
shows your e-mail address or organisation. When the environment the analyser passes to Claude Code sets
ANTHROPIC_BASE_URL, a line says "requests go to https://proxy.example:8443" — the scheme, host and port only,
never a path, query or credentials; with full Claude Code it adds that your own settings may set another endpoint,
which the analyser does not read. A diagnostics line appears only when something needs it — "Diagnostics: 3
unknown stream events · 1 command not classified for the analyser (/foo)". Each finished answer shows its time,
and with an API key its cost (the difference of the session's running totals); on a Claude plan no dollar figure
is shown. A long conversation keeps its last 500 entries, with one line saying how many earlier ones are not shown. Cost: on a Claude plan
it shows no dollar figure — "usage counts against your Claude plan", whose own usage limits apply. With an API key
it shows what the session has used, and, if you set one, the limit: Settings ▸ Assistant ▸ Limit spend per session
is off by default and is meant for API-key billing; when the limit is reached the analyser stops Claude Code and
says so. Changing the limit while a session runs offers a restart (Restart or Later); the restart resumes the
conversation under the new limit.
- Switching projects while Claude Code runs. Opening, creating or closing a project from the menus while a session
runs asks first: Stop, and get Start ready in the new project (the session ends; nothing starts until you press
Start a new session in this project, and the new folder is confirmed then), Keep it running here (the switch
happens; the session keeps working in its own folder, and its context describes the previous project), or
Cancel. The same question is asked when you say yes to "This log sits inside the project '\<name>' — load it?"
(the offer a log gets when you open it with no matching project active) — accepting that while a session is running
no longer applies the project at once; it asks first too, so a session that started before any project was open (and
so began in the scratch folder) is never left silently bound to it. An assistant's open {project} is never held
this way. (A handoff report from the old session to the new one is planned for later.)
- Don't resume this conversation in a terminal while it is open here — the history would fork. A second analyser
window cannot open it either: "This conversation is open in another analyser window."