Files
Yash Pratap Solanky d5c12ba11e test: abort the create name prompt with Ctrl-D instead of SIGINT (#10541)
## Summary

Fixes the flaky `style-check-agnoctl` job on `main`:

```
FAILED tests/test_create_lifecycle.py::test_create_arrow_selector_transitions_to_name_prompt_in_narrow_pty - Failed: create did not exit after selecting a template and aborting the name prompt
```

Seen on main runs 35972742169, 35977886215, 35830028266 and 35590617928,
with passing runs on the same runner image, Python 3.10.21 and identical
package versions in between, so it is a race, not an environment change.

**Root cause.** The test sent `SIGINT` to the `agno create` child the
instant `Project name` appeared on the pty. CPython's `input()` writes
the prompt and then blocks in `read()` with no signal check in between.
A `SIGINT` that lands in that window only sets the pending flag; the
`read()` blocks anyway and the process never exits, so the test times
out. The child's prompt write wakes the test process, which can preempt
the child and send the signal before the read starts. This is common on
the two-vCPU CI runners and reproduces locally under CPU contention (1
hang in 300 runs of a minimal `input()` child).

**Fix.** Write Ctrl-D through the pty instead of sending a signal. The
tty queues it until the prompt actually reads, so there is no
lost-wakeup window, and click turns the resulting `EOFError` into the
same `Abort` exit (`Aborted`, exit code 1, no files created). Ctrl-D is
only treated as EOF in cooked mode, so the test now also fails if
prompt_toolkit does not restore the terminal after the selector, which
is the transition the test exists to cover. The raw-mode Ctrl-C path is
still covered by
`test_template_selector_converts_keyboard_interrupt_to_clean_abort`.

The timeout failure now includes the captured pty output so the next
flake is diagnosable from CI logs.

## Type of change

- [x] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Improvement
- [ ] Model update
- [ ] Other:

---

## Checklist

- [x] Code complies with style guidelines
- [x] Ran format/validation scripts (`./scripts/format.sh` and
`./scripts/validate.sh`)
- [x] Self-review completed
- [x] Documentation updated (comments, docstrings)
- [ ] Examples and guides: Relevant cookbook examples have been included
or updated (if applicable)
- [x] Tested in clean environment
- [x] Tests added/updated (if applicable)

### Duplicate and AI-Generated PR Check

- [x] I have searched existing [open pull
requests](https://github.com/agno-agi/agno/pulls) and confirmed that no
other PR already addresses this issue
- [ ] If a similar PR exists, I have explained below why this PR is a
better approach
- [x] Check if this PR was entirely AI-generated (by Copilot, Claude
Code, Cursor, etc.)

---

## Additional Notes

Verification: the fixed test passed 15/15 runs locally, 10/10 under 12
competing CPU hogs, and the full agnoctl suite passes (345 tests). Ruff
format and check pass on the file.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-09-24 16:16:12 +05:30
..
2026-09-16 23:10:30 +05:30
2026-08-24 18:19:42 +05:30

agnoctl

The CLI for AgentOS, built for humans and coding agents.

Create a new AgentOS interactively:

uvx agno create

Choose from nine maintained starters—Docker, AWS, Azure, Fly, GCP, Helm, Modal, Railway, and Render—using the arrow keys or 1–9, then name your project. Press Enter to use agentos-docker and agent-platform. The CLI clones the template and copies example.env to .env.

Then enter the project and choose a setup path:

cd agent-platform

Recommended: open the project in your coding agent and ask it to run the setup-platform skill in .agents/skills/. The skill configures the project, starts it, verifies it, connects the AgentOS UI, and helps build your first agent.

Or set it up manually: add your secrets to .env, then run:

uvx agno up

For automation, pass the project name and optional template explicitly:

uvx agno create my-agentos --template agentos-railway --json