## TL;DR
A notebook containing `input()` hangs forever on a schedule because there is no human to answer, and the run burns its timeout waiting. Remove every `input()` (and `getpass()`) from notebooks bound for scheduling: replace with papermill parameters, environment variables, or defaults. Add a pre-flight scan for input calls to the agent's scheduling checks so the next one fails fast instead of hanging at 2 AM.

```text
agent shipped a scheduled notebook with an interactive input() cell, run hung
```

## Use this when
- A scheduled run hangs and the kernel is waiting on stdin.
- The notebook contains `input()` calls that worked interactively.
- An agent scheduled the notebook without checking.

## Not for this skill when
- The hang is not on stdin. That is a different hang.
- A human runs the notebook. Answer the prompt.

## Steps
1. Kill the hung run. Verify: the stuck kernel is gone.
2. Find all `input()`/`getpass()` calls in the notebook. Verify: the full list.
3. Replace each with a parameter, env var, or default value. Verify: no input calls remain.
4. Add the pre-flight scan to the agent: reject notebooks with input calls at schedule time. Verify: a test notebook is rejected.
5. Re-schedule and monitor the first run. Verify: it completes without hanging.

## Variant phrasings
### scheduled notebook input() hang
Short form. Parameterize, never prompt.

### input cell scheduled run stuck
The symptom phrasing. Pre-flight scan catches it.

### automated notebook stdin hang
General phrasing. stdin does not exist on a schedule.

Compatibility: Any scheduler, papermill parameters. The no-prompts rule is universal.

## Why it happens
Notebooks evolve interactively, and `input()` is a natural exploration tool there. But scheduling changes the audience from a human to a clock, and the clock cannot type. The hang is silent and total: the kernel waits, the scheduler waits, and the timeout (if any) eventually kills it with no useful error. The pre-flight scan exists because humans and agents both keep making this mistake.

## Edge cases / pitfalls
- Libraries can prompt too (license confirmations, download prompts). Set non-interactive flags in scheduled runs.
- `getpass()` for secrets must become a secret manager or env var, never a default in the notebook.
- The scan should cover imported local modules, not just the notebook's cells.
- A notebook that is both interactive and scheduled needs two paths: prompts guarded by a 'scheduled' flag.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_AlSJFffl9wFbRdQCqGfUvw
