diff --git a/modules/cli/src/main/java/org/apache/ignite/cli/call/cluster/status/ClusterStatusCall.java b/modules/cli/src/main/java/org/apache/ignite/cli/call/cluster/status/ClusterStatusCall.java
index 6d216b8..c5f258d 100644
--- a/modules/cli/src/main/java/org/apache/ignite/cli/call/cluster/status/ClusterStatusCall.java
+++ b/modules/cli/src/main/java/org/apache/ignite/cli/call/cluster/status/ClusterStatusCall.java
@@ -60,6 +60,8 @@
             } else {
                 return DefaultCallOutput.failure(new IgniteCliApiException(e, input.getClusterUrl()));
             }
+        } catch (IllegalArgumentException e) {
+            return DefaultCallOutput.failure(new IgniteCliApiException(e, input.getClusterUrl()));
         }
 
         return DefaultCallOutput.success(clusterStatusBuilder.build());
diff --git a/modules/cli/src/main/java/org/apache/ignite/cli/call/node/status/NodeStatusCall.java b/modules/cli/src/main/java/org/apache/ignite/cli/call/node/status/NodeStatusCall.java
index 97b8e57..aadf34f 100644
--- a/modules/cli/src/main/java/org/apache/ignite/cli/call/node/status/NodeStatusCall.java
+++ b/modules/cli/src/main/java/org/apache/ignite/cli/call/node/status/NodeStatusCall.java
@@ -44,7 +44,7 @@
                             .state(nodeState.getState().getValue())
                             .build()
             );
-        } catch (ApiException e) {
+        } catch (ApiException | IllegalArgumentException e) {
             return DefaultCallOutput.failure(new IgniteCliApiException(e, input.getClusterUrl()));
         }
     }
diff --git a/modules/cli/src/test/java/org/apache/ignite/cli/commands/UrlOptionsNegativeTest.java b/modules/cli/src/test/java/org/apache/ignite/cli/commands/UrlOptionsNegativeTest.java
index 9b164c3..a6307d4 100644
--- a/modules/cli/src/test/java/org/apache/ignite/cli/commands/UrlOptionsNegativeTest.java
+++ b/modules/cli/src/test/java/org/apache/ignite/cli/commands/UrlOptionsNegativeTest.java
@@ -34,11 +34,16 @@
 import org.apache.ignite.cli.commands.cluster.config.ClusterConfigShowSubCommand;
 import org.apache.ignite.cli.commands.cluster.config.ClusterConfigUpdateReplSubCommand;
 import org.apache.ignite.cli.commands.cluster.config.ClusterConfigUpdateSubCommand;
+import org.apache.ignite.cli.commands.cluster.status.ClusterStatusReplSubCommand;
+import org.apache.ignite.cli.commands.cluster.status.ClusterStatusSubCommand;
 import org.apache.ignite.cli.commands.connect.ConnectCommand;
 import org.apache.ignite.cli.commands.node.config.NodeConfigShowReplSubCommand;
 import org.apache.ignite.cli.commands.node.config.NodeConfigShowSubCommand;
 import org.apache.ignite.cli.commands.node.config.NodeConfigUpdateReplSubCommand;
 import org.apache.ignite.cli.commands.node.config.NodeConfigUpdateSubCommand;
+import org.apache.ignite.cli.commands.node.status.NodeStatusReplSubCommand;
+import org.apache.ignite.cli.commands.topology.LogicalTopologyReplSubCommand;
+import org.apache.ignite.cli.commands.topology.PhysicalTopologyReplSubCommand;
 import org.apache.ignite.cli.config.ini.IniConfigManager;
 import org.apache.ignite.cli.core.repl.context.CommandLineContextProvider;
 import org.junit.jupiter.api.DisplayName;
@@ -92,13 +97,12 @@
                 Arguments.arguments(NodeConfigShowSubCommand.class, "--node-url=", List.of()),
                 Arguments.arguments(NodeConfigUpdateSubCommand.class, "--node-url=", List.of("{key: value}")),
                 Arguments.arguments(ClusterConfigShowSubCommand.class, "--cluster-endpoint-url=", List.of()),
-                Arguments.arguments(ClusterConfigUpdateSubCommand.class, "--cluster-endpoint-url=", List.of("{key: value}"))
-        // TODO https://issues.apache.org/jira/browse/IGNITE-17091
-        //                Arguments.arguments(StatusCommand.class, "--cluster-endpoint-url=", List.of()),
+                Arguments.arguments(ClusterConfigUpdateSubCommand.class, "--cluster-endpoint-url=", List.of("{key: value}")),
+                Arguments.arguments(ClusterStatusSubCommand.class, "--cluster-endpoint-url=", List.of()),
+                Arguments.arguments(LogicalTopologyReplSubCommand.class, "--cluster-endpoint-url=", List.of()),
+                Arguments.arguments(PhysicalTopologyReplSubCommand.class, "--cluster-endpoint-url=", List.of())
         // TODO https://issues.apache.org/jira/browse/IGNITE-17102
         //                Arguments.arguments(ClusterShowCommand.class, "--cluster-endpoint-url=", List.of()),
-        // TODO https://issues.apache.org/jira/browse/IGNITE-17092
-        //                Arguments.arguments(TopologyCommand.class, "--cluster-endpoint-url", List.of()),
         // TODO https://issues.apache.org/jira/browse/IGNITE-17162
         //                Arguments.arguments(ClusterCommandSpec.InitClusterCommandSpec.class, "---cluster-endpoint-url=",
         //                        List.of("--cluster-name=cluster", "--meta-storage-node=test"))
@@ -109,15 +113,15 @@
         return List.of(
                 Arguments.arguments(NodeConfigShowReplSubCommand.class, "--node-url=", List.of()),
                 Arguments.arguments(NodeConfigUpdateReplSubCommand.class, "--node-url=", List.of("{key: value}")),
+                Arguments.arguments(NodeStatusReplSubCommand.class, "--node-url=", List.of()),
                 Arguments.arguments(ClusterConfigShowReplSubCommand.class, "--cluster-endpoint-url=", List.of()),
                 Arguments.arguments(ClusterConfigUpdateReplSubCommand.class, "--cluster-endpoint-url=", List.of("{key: value}")),
-                Arguments.arguments(ConnectCommand.class, "", List.of())
-        // TODO https://issues.apache.org/jira/browse/IGNITE-17091
-        //                Arguments.arguments(StatusReplCommand.class, "--cluster-endpoint-url=", List.of()),
+                Arguments.arguments(ConnectCommand.class, "", List.of()),
+                Arguments.arguments(ClusterStatusReplSubCommand.class, "--cluster-endpoint-url=", List.of()),
+                Arguments.arguments(LogicalTopologyReplSubCommand.class, "--cluster-endpoint-url=", List.of()),
+                Arguments.arguments(PhysicalTopologyReplSubCommand.class, "--cluster-endpoint-url=", List.of())
         // TODO https://issues.apache.org/jira/browse/IGNITE-17102
         //                Arguments.arguments(ClusterShowReplCommand.class, "--cluster-endpoint-url=", List.of()),
-        // TODO https://issues.apache.org/jira/browse/IGNITE-17092
-        //                Arguments.arguments(TopologyReplCommand.class, "--cluster-endpoint-url", List.of()),
         // TODO https://issues.apache.org/jira/browse/IGNITE-17162
         //                Arguments.arguments(ClusterReplCommandSpec.InitClusterCommandSpec.class, "---cluster-endpoint-url=",
         //                        List.of("--cluster-name=cluster", "--meta-storage-node=test"))
