phacility/phabricator · warning · Exception
No Conduit method provided.
Error message
No Conduit method provided.
What it means
The SSH conduit workflow (ssh ... conduit <method>) parses the method from a wildcard argument. If the argument list is empty, no method name was supplied on the SSH command line and the command aborts with this exception before reading stdin.
Source
Thrown at src/applications/conduit/ssh/ConduitSSHWorkflow.php:21
final class ConduitSSHWorkflow extends PhabricatorSSHWorkflow {
protected function didConstruct() {
$this->setName('conduit');
$this->setArguments(
array(
array(
'name' => 'method',
'wildcard' => true,
),
));
}
public function execute(PhutilArgumentParser $args) {
$time_start = microtime(true);
$methodv = $args->getArg('method');
if (!$methodv) {
throw new Exception(pht('No Conduit method provided.'));
} else if (count($methodv) > 1) {
throw new Exception(pht('Too many Conduit methods provided.'));
}
$method = head($methodv);
$json = $this->readAllInput();
$raw_params = null;
try {
$raw_params = phutil_json_decode($json);
} catch (PhutilJSONParserException $ex) {
throw new PhutilProxyException(
pht('Invalid JSON input.'),
$ex);
}
$params = idx($raw_params, 'params', '[]');
$params = phutil_json_decode($params);View on GitHub (pinned to 5720a38cfe)
Solutions
- Append exactly one Conduit method name after 'conduit', e.g. ssh -p 2222 vcs@host conduit user.whoami.
- Double-check shell quoting so the method is a separate argument, not swallowed into the JSON string.
Example fix
# before
$ echo '{"params":"{}"}' | ssh -p 2222 vcs@phab.example.com conduit
# after
$ echo '{"params":"{}"}' | ssh -p 2222 vcs@phab.example.com conduit user.whoami Defensive patterns
Strategy: validation
Validate before calling
# Compose the SSH command with an explicit method argument.
METHOD="${METHOD:?conduit method required}"
echo "$PAYLOAD" | ssh -p 2222 vcs@phab.example.com conduit "$METHOD" Prevention
- Build the ssh command in a wrapper that requires the method variable.
- Keep the payload generation and ssh invocation in one script so the method token is never forgotten.
When it happens
Trigger: Running `echo '{"params":"{}"}' | ssh -p 2222 vcs@host conduit` while forgetting to append the method name; quoting mistakes that swallow the trailing argument.
Common situations: First experiments with the SSH conduit interface; copy-pasting examples where the trailing method token was dropped in translation.
Related errors
- Too many Conduit methods provided.
- Specify a method to call with "--method".
- Specify a file to read parameters from with "--input".
- No such user "%s" exists.
- Invalid JSON input.
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/b43a59fb4ccc06f0.
Report an issue: GitHub.