v0.2.1
A patch release with one fix: npx keenetic-mcp init asked for the router password without showing a prompt, and echoed what you typed.
The fix
The reader wrote its prompt straight to stdout and then muted readline's private _writeToOutput. In terminal mode readline redraws the current line, which erased the prompt, and muting that internal does not suppress the echo on current Node. So nothing on screen asked for a password, and the password itself was in plain view.
It is now read in raw mode, where the terminal itself stops echoing, with backspace, Ctrl-C and Ctrl-D handled. The readline interface is opened per visible question and closed again, so it never competes with the raw reader for stdin.
If you ran keenetic-mcp init on any earlier release, your router password was displayed as you typed it and is likely still in your terminal scrollback. 0.1.0, 0.1.1 and 0.2.0 are all affected. Clear the scrollback, and change the router password if anyone else can reach that terminal or its logs.
The closing message now names Claude Code as well as Codex, and points at the plugin rather than the bare server, since the plugin brings the skills too.
How it is checked
Neither symptom was reachable from the unit tests: they inject the reader, and piped input takes a different code path in the wizard entirely. Piping into a pty does not help either, because the end of the pipe arrives as Ctrl-D and aborts the first question.
scripts/verify-wizard.exp drives a real terminal instead. It confirms the prompt reaches the screen and the password does not, and it fails on the previous code. A terminal is required, so CI cannot run it; the README says how to run it by hand.
Install
Claude Code
/plugin marketplace add salatmaster/keenetic-mcp
/plugin install keenetic@keenetic
npx -y keenetic-mcp init
Codex
codex plugin marketplace add salatmaster/keenetic-mcp
codex plugin add keenetic@keenetic
npx -y keenetic-mcp init
Anything else
{ "mcpServers": { "keenetic": { "command": "npx", "args": ["-y", "keenetic-mcp"] } } }Verified against
Keenetic Ultra (KN-1811) on KeeneticOS 5.1.3. 199 tests. Notes on the API itself are in docs/rci-api.md.