start_research_run
[SUPPORT] a5343387 — start a bounded, ephemeral research/scratch run: an ADJACENT primitive for disposable subagent probes that should not need a formal sprint item, a formal claim_file, or a durable handoff entry unless explicitly promoted (see promote_research_run). mode='read_only' needs no cl...
This record as markdown: /tools/io-github-ajc3xc-meridian/start-research-run.md
What start_research_run does on Meridian
AI agents invoke start_research_run to trigger actions in Meridian. What it does depends on the arguments the agent supplies, and its effects often reach beyond the immediate call: builds kicked off, notifications sent, workflows started.
| Parameter | Type | Required | Description |
|---|---|---|---|
mode | string | Yes | read_only needs no claim_file; isolated_write requires is_isolated_worktree=true and a non-empty allowed_paths. |
project_id | string | — | |
session_id | string | Yes | |
ttl_seconds | integer | — | Wall-clock time-to-live in seconds (default 3600). |
turn_budget | integer | Yes | Max turns/steps this run may take. |
project_name | string | — | Project name — an alternative to project_id; resolved to the id internally. project_id wins if both are given. |
allowed_paths | array | — | Project-RELATIVE paths bounding what an isolated_write run may write. Required (non-empty) for mode='isolated_write'. |
repository_id | string | Yes | Stable STRING identity for the repository/worktree — never a machine-local absolute path. |
is_isolated_worktree | boolean | — | Explicit caller attestation that this session is operating in an isolated git worktree — required (true) for mode='isolated_write', never inferred. |
Parameters from the server's own tool schema.
Why start_research_run is rated High
start_research_run triggers real processes with real consequences. An agent gone sideways doesn't fire it once. It starts dozens of builds, sends mass notifications, or burns through compute before anyone looks up.
Attacks that exploit this kind of access
The rule that runs start_research_run safely
PolicyLayer is an MCP gateway: it sits between your AI agents and Meridian, and checks every tool call against a rule you set before the call runs. Nothing changes on the server itself. For start_research_run, this is the rule to start with:
start_research_run stays usable, but rate-capped: a runaway agent can't fire it dozens of times a minute. Everything else on the server is denied unless you say otherwise.
The button opens the PolicyLayer dashboard: create your workspace, connect Meridian, apply this rule, and every start_research_run call is checked against it from then on.
Questions about start_research_run
[SUPPORT] a5343387 — start a bounded, ephemeral research/scratch run: an ADJACENT primitive for disposable subagent probes that should not need a formal sprint item, a formal claim_file, or a durable handoff entry unless explicitly promoted (see promote_research_run). mode='read_only' needs no claim_file at all. mode='isolated_write' requires is_isolated_worktree=true (never inferred — confirm the session is actually in an isolated git worktree, not the shared working tree) plus a non-empty allowed_paths list of project-RELATIVE paths bounding what may be written; any write outside that list is out of scope for the run. repository_id is a stable STRING identity for the repo/worktree (e.g. 'meridian-repo@worktree:wf_...'), never a machine-local absolute path. turn_budget bounds max turns/steps; ttl_seconds bounds wall-clock life (default 3600, 60-86400) — an expired active run is reaped by expire_stale_runs into status='expired'. Persistent-state disclosure: on hosted Meridian, supplied text and project/session metadata -- including task log entries, pinned decisions, sprint items, notes, handoff/goal state, and HITL queue items -- are sent to and stored in Meridian's service, in an isolated per-tenant Postgres database (Neon); self-hosted deployments keep the same categories in the configured local SQLite/Postgres database. This data is visible in the dashboard and API, and may resurface in later project context or handoffs. Notes and pinned decisions can be deleted individually; task log entries and sprint items can be deleted via the dashboard/API (not exposed as an agent-facing tool); HITL queue items and handoff state have no per-record delete. Full removal of any of this data is available via project or account deletion, using the documented controls. Do not include secrets. It is categorised as a Execute tool in the Meridian MCP Server, which means it can trigger actions or run processes. Use rate limits and argument validation.
start_research_run accepts 9 parameters: mode, project_id, session_id, ttl_seconds, turn_budget, project_name, allowed_paths, repository_id, is_isolated_worktree. Required: mode, session_id, turn_budget, repository_id. The full parameter table on this page comes from the server's own tool schema.
Register the Meridian MCP server in PolicyLayer and add a rule for start_research_run: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches Meridian. Nothing to install.
start_research_run is a Execute tool with high risk. Execute tools should be rate-limited and have argument validation enabled.
Yes. Add a rate_limit block to the start_research_run rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for start_research_run. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
start_research_run is provided by the Meridian MCP server (@meridianmcp/mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
More on Meridian, and thousands of servers like it.
Across the catalogue