agent shipped a scheduled notebook with an interactive input() cell, run hung
Fixes an agent shipping a scheduled notebook with an interactive `input()` cell: remove the prompt and parameterize. A scheduled notebook must never wait on stdin. For agent builders.
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.
agent shipped a scheduled notebook with an interactive input() cell, run hungUse 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
- Kill the hung run. Verify: the stuck kernel is gone.
- Find all
input()/getpass()calls in the notebook. Verify: the full list. - Replace each with a parameter, env var, or default value. Verify: no input calls remain.
- Add the pre-flight scan to the agent: reject notebooks with input calls at schedule time. Verify: a test notebook is rejected.
- 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