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

  1. Append exactly one Conduit method name after 'conduit', e.g. ssh -p 2222 vcs@host conduit user.whoami.
  2. 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

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


AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21). Data as JSON: /api/errors/b43a59fb4ccc06f0. Report an issue: GitHub.