> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modelcode.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# When a Run Needs Your Help

> What happens when a milestone run hits a blocker it cannot solve, and how to unblock it in the help chat

Some problems a milestone run can't solve on its own: a private registry it can't reach, a service behind your VPN, an expired sign-in, a secret nobody provided. Instead of failing, or skipping the work and reporting it as done, the run **pauses and asks you for help**. You fix the problem with a **help chat** that works in the run's own workspace, and the run continues from where it stopped.

***

## What Happens When a Run Is Blocked

1. The agent files a **blocker issue** on the milestone. It says what is blocked, the evidence, and the fixes it suggests.
2. The run **pauses**. Its workspace is kept as it is, with all the work done so far.
3. The milestone shows **Needs help**, and its card shows the **Morph needs help** banner with **Open help chat**.
4. The project owner gets an email and an in-app notification: **Your milestone needs help**.

![Morph needs help banner with an Open help chat button and a Start from scratch link](https://mintcdn.com/modelcodeai/MHauo0-Ch8pqbv97/migration/images/morph-needs-help-banner.png?fit=max\&auto=format\&n=MHauo0-Ch8pqbv97\&q=85\&s=446e19cdddb857cb297356ff84898364)

Typical blockers:

| Blocker | Example |
| - | - |
| **Network or registry** | A package registry or mirror the build machine can't reach |
| **External service** | A database, queue, or API the tests need that isn't running or reachable |
| **Sign-in** | A token or login that expired or was never set up |
| **VPN** | A service that only answers inside your corporate network |
| **Missing secret** | A credential the lifecycle needs that has no value |
| **Hosting limitation** | Something the Modelcode Hosted sandbox can't provide, such as access to your private network |
| **Validation not feasible** | A test the [validation level](https://docs.modelcode.ai/setup/validation-level.md) asks for that can't run in this environment |

***

## The Help Chat

Click **Open help chat** on the banner, or **Help chat** on the milestone card. The help chat opens in the [Code Review](https://docs.modelcode.ai/migration/code-review-chat.md) drawer:

* **On the left**, the run's blocker issues.
* **On the right**, the chat, with a short intro and suggestions that match the blocker, such as **I have the secret**, **I'm on the VPN now, try again**, or **What exactly is blocked?**
* **At the top**, when the run paused and the date it stops if the blocker isn't resolved, plus the **Lower validation level** and **Move to self-hosted** buttons when they apply.

The help chat runs in the same workspace as the paused run, so it can see the run's code and history, run commands, install dependencies, start the app, and update the lifecycle scripts. When it needs a credential, it asks with a **Provide Secret** card; never paste a secret into the chat box. It can't commit, push, or change branches: the run does that when it continues.

The chat writes what was done into the issue, because that is what the run reads when it continues. It never marks an issue resolved without asking you first.

> [!NOTE]
>
> The help chat is free: it doesn't use credits. The run costs the price you approved when you started the milestone.

***

## Ways to Unblock the Run

| Option | What to do |
| - | - |
| **Fix it with the chat** | Work through the problem with the help chat. When it's fixed, the chat asks to mark the issue resolved. |
| **Fix it outside the Morph Platform** | Connect the VPN, start the service, or fix the account yourself. Then click **Mark as resolved** on the issue. |
| **Proceed without it** | Tell the chat to proceed without it (the **Proceed without it** suggestion). The run skips only the blocked part and reports it as blocked in its results. It never reports a blocked check as passed. |
| **Lower the validation level** | Click **Lower validation level**. See [Lowering the validation level](#lowering-the-validation-level). |
| **Move to self hosted** | On a Modelcode Hosted project, click **Move to self-hosted** to run on a machine inside your own network. See [Moving to self hosted](#moving-to-self-hosted). |
| **Start from scratch** | Drop this run. See [Starting from scratch](#starting-from-scratch). |

### Marking an issue resolved

Click **Mark as resolved** on the blocker's card, in the help chat, or ask the chat to do it. Before you confirm, make sure the problem is fixed, or that the issue says how the run should go on without it.

The run continues once **every** blocker it is waiting on is resolved. The help chat then shows **Blockers are resolved! The run is about to continue…** and returns you to the milestone. The help chat ends, and the run picks up in the same workspace with the issues' final text.

### Lowering the validation level

**Lower validation level** opens the Validation Level drawer. While a run waits for help you can only **lower** the level. This changes the **project's** level, so later milestones run at the lower level too. See [Validation Level](https://docs.modelcode.ai/setup/validation-level.md).

After you save, mark the blocker resolved. The run continues at the lower level and runs only the checks that level asks for.

### Moving to self hosted

Some blockers only go away on a machine inside your own network, such as a private registry, a VPN-only service, or a license file. On a Modelcode Hosted project, **Move to self-hosted** opens the **Build Environment** drawer:

* **Push the work so far** (checked by default) commits the waiting run's work, uncommitted changes included, and pushes it to the milestone's branch. Uncheck it to discard that work.
* Other running milestones are cancelled too, and their work since their last push is lost. The drawer names them.
* The drawer lists the open chats that will close.

When you confirm, the waiting run stops, its blocker issues are closed, and the milestone shows **Stopped**. You don't need to mark the blockers resolved. Connect a daemon, and the setup chat fixes your lifecycle scripts against the milestone's branch. Once setup finishes, click **Continue** on the milestone to pick up from its branch.

The move is one-way. See [Moving while a milestone needs help](https://docs.modelcode.ai/setup/build-environment/switching-environment.md#moving-while-a-milestone-needs-help) for what happens if the push fails, and [Extra Paths](https://docs.modelcode.ai/setup/build-environment/self-hosted-daemon.md#extra-paths) for blockers on files outside the agent's workspace.

### Starting from scratch

If you would rather drop the run, use **Start from scratch** on the **Morph needs help** banner. Commits the run already made stay on the milestone's branch. Changes it hadn't committed are lost, its blocker issues are closed, and the milestone starts over from the beginning.

For a paused review or rebase, **Start from scratch** is refused while another run is working on the milestone's branch. The message says why, and the paused run stays paused. Try again once the other run finishes.

***

## While a Run Waits

* **No other milestone can start in the project.** Start buttons show *"Milestone N is waiting for your help. Resolve it before starting another milestone."* Code review and chats on other milestones still work.
* **The run waits up to 7 days.** If its blockers aren't resolved by then, the run stops, its open blocker issues are closed, the milestone fails, and the project owner is notified. Use **Retry** on the milestone to start it again.
* **On Modelcode Hosted, an idle sandbox sleeps.** After 6 hours with no activity in the help chat, the sandbox is stopped. Its files are kept. Opening the help chat wakes it (*"Waking the sandbox…"*), which takes a moment. Apps and services the run started must start again; the run does this when it continues.
* **On a self-hosted daemon, the workspace stays on the machine.** If the daemon is offline when the blockers are resolved, the run waits for it to reconnect and then continues.

***

## When the Help Chat Isn't Available

The help chat page can show the blocker issues without a chat:

| Message | Meaning |
| - | - |
| **This run started before help chat was available** | The run started on an older version. Fix the blocker outside the Morph Platform, then mark its issue resolved. |
| **Morph can't reach this run's sandbox, so the help chat is unavailable** | The sandbox or daemon machine can't be reached right now. Fix the blocker outside the Morph Platform, then mark its issue resolved. |
| **This run isn't waiting for help** | The run already continued or ended. There is nothing to unblock. |

***

## After the Run

The milestone's [Code Review](https://docs.modelcode.ai/migration/code-review-chat.md) lists the blocker issues in their own **Execution Blockers** group, with what was done for each. Blockers still open when a run ends or is cancelled are closed as ignored, with a note saying why.

***

## Related Docs

> [card] [Milestones](https://docs.modelcode.ai/migration/milestones.md)
>
> Statuses, including Needs help and Stopped

> [card] [Switching Environments](https://docs.modelcode.ai/setup/build-environment/switching-environment.md)
>
> Move a hosted project to self hosted

> [card] [Validation Level](https://docs.modelcode.ai/setup/validation-level.md)
>
> What each level checks

> [card] [Extra Paths](https://docs.modelcode.ai/setup/build-environment/self-hosted-daemon.md#extra-paths)
>
> Let the agent use folders outside its workspace


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.