diff --git a/charmcraft/commands/store/__init__.py b/charmcraft/commands/store/__init__.py
index 010e273..eeec82b 100644
--- a/charmcraft/commands/store/__init__.py
+++ b/charmcraft/commands/store/__init__.py
@@ -507,7 +507,7 @@ class ReleaseCommand(BaseCommand):
             charmcraft release mycharm --revision=14 \\
                 --channel=beta --resource=thedb:4
 
-        Listing revisions will take you through login if needed.
+        Releasing a revision will take you through login if needed.
     """
     )
     common = True
@@ -560,6 +560,43 @@ class ReleaseCommand(BaseCommand):
         logger.info(msg, *args)
 
 
+class CloseCommand(BaseCommand):
+    """Close a channel for a charm or bundle."""
+
+    name = "close"
+    help_msg = "Close a channel for a charm or bundle"
+    overview = textwrap.dedent(
+        """
+        Close the specified channel for a charm or bundle.
+
+        The channel is made up of `track/risk/branch` with both the track and
+        the branch as optional items, so formally:
+
+          [track/]risk[/branch]
+
+        Channel risk must be one of stable, candidate, beta or edge. The
+        track defaults to `latest` and branch has no default.
+
+        Closing a channel will take you through login if needed.
+    """
+    )
+    common = True
+
+    def fill_parser(self, parser):
+        """Add own parameters to the general parser."""
+        parser.add_argument("name", help="The name of charm or bundle")
+        parser.add_argument("channel", help="The channel to close")
+
+    def run(self, parsed_args):
+        """Run the command."""
+        store = Store(self.config.charmhub)
+        revision = None  # revision None will actually close the channel
+        channels = [parsed_args.channel]  # the API accepts multiple channels, we have only one
+        resources = []  # not really used when closing channels
+        store.release(parsed_args.name, revision, channels, resources)
+        logger.info("Closed %r channel for %r.", parsed_args.channel, parsed_args.name)
+
+
 class StatusCommand(BaseCommand):
     """Show channel status for a charm or bundle."""
 
diff --git a/charmcraft/main.py b/charmcraft/main.py
index 3fba456..ccdfffe 100644
--- a/charmcraft/main.py
+++ b/charmcraft/main.py
@@ -122,6 +122,7 @@ COMMAND_GROUPS = [
             # release process, and show status
             store.ReleaseCommand,
             store.StatusCommand,
+            store.CloseCommand,
             # libraries support
             store.CreateLibCommand,
             store.PublishLibCommand,
diff --git a/completion.bash b/completion.bash
index 1c1aa31..e524618 100644
--- a/completion.bash
+++ b/completion.bash
@@ -23,6 +23,7 @@ _charmcraft()
         analyze
         build
         clean
+        close
         create-lib 
         fetch-lib 
         help init 

diff --git a/tests/commands/test_store_commands.py b/tests/commands/test_store_commands.py
index ee9c0b8..4d83108 100644
--- a/tests/commands/test_store_commands.py
+++ b/tests/commands/test_store_commands.py
@@ -32,6 +32,7 @@ import yaml
 from charmcraft.config import CharmhubConfig
 from charmcraft.cmdbase import CommandError
 from charmcraft.commands.store import (
+    CloseCommand,
     CreateLibCommand,
     EntityType,
     FetchLibCommand,
@@ -919,6 +920,24 @@ def test_release_parameters_bad(config, sysargs):
         parser.parse_args(sysargs)
 
 
+# -- tests for the close command
+
+
+def test_close_simple_ok(caplog, store_mock, config):
+    """Simple case of closing a channel."""
+    caplog.set_level(logging.INFO, logger="charmcraft.commands")
+
+    args = Namespace(name="testcharm", channel="somechannel")
+    CloseCommand("group", config).run(args)
+
+    assert store_mock.mock_calls == [
+        call.release("testcharm", None, ["somechannel"], []),
+    ]
+
+    expected = "Closed 'somechannel' channel for 'testcharm'."
+    assert [expected] == [rec.message for rec in caplog.records]
+
+
 # -- tests for the status command
 
 

Implement `charmcraft close`
There needs to be a way to close channels, bringing over syntax from snapcraft, the following syntax should be possible:

    charmcraft close <name> <channel>...

tests/commands/test_store_commands.py::test_get_name_from_metadata_ok tests/commands/test_store_commands.py::test_get_name_from_metadata_no_file tests/commands/test_store_commands.py::test_get_name_from_metadata_bad_content_garbage tests/commands/test_store_commands.py::test_get_name_from_metadata_bad_content_no_name tests/commands/test_store_commands.py::test_login tests/commands/test_store_commands.py::test_logout tests/commands/test_store_commands.py::test_whoami tests/commands/test_store_commands.py::test_register_charm_name tests/commands/test_store_commands.py::test_register_bundle_name tests/commands/test_store_commands.py::test_list_registered_empty tests/commands/test_store_commands.py::test_list_registered_one_private tests/commands/test_store_commands.py::test_list_registered_one_public tests/commands/test_store_commands.py::test_list_registered_several tests/commands/test_store_commands.py::test_get_name_bad_zip tests/commands/test_store_commands.py::test_get_name_charm_ok tests/commands/test_store_commands.py::test_get_name_charm_bad_metadata[=] tests/commands/test_store_commands.py::test_get_name_charm_bad_metadata[foo: tests/commands/test_store_commands.py::test_get_name_bundle_ok tests/commands/test_store_commands.py::test_get_name_bundle_bad_data[=] tests/commands/test_store_commands.py::test_get_name_bundle_bad_data[foo: tests/commands/test_store_commands.py::test_get_name_nor_charm_nor_bundle tests/commands/test_store_commands.py::test_upload_parameters_filepath_type tests/commands/test_store_commands.py::test_upload_call_ok tests/commands/test_store_commands.py::test_upload_call_error tests/commands/test_store_commands.py::test_upload_call_ok_including_release tests/commands/test_store_commands.py::test_upload_call_ok_including_release_multiple tests/commands/test_store_commands.py::test_upload_including_release_with_resources tests/commands/test_store_commands.py::test_upload_options_resource tests/commands/test_store_commands.py::test_upload_call_error_including_release tests/commands/test_store_commands.py::test_upload_charm_with_init_template_todo_token tests/commands/test_store_commands.py::test_revisions_simple tests/commands/test_store_commands.py::test_revisions_empty tests/commands/test_store_commands.py::test_revisions_ordered_by_revision tests/commands/test_store_commands.py::test_revisions_version_null tests/commands/test_store_commands.py::test_revisions_errors_simple tests/commands/test_store_commands.py::test_revisions_errors_multiple tests/commands/test_store_commands.py::test_release_simple_ok tests/commands/test_store_commands.py::test_release_simple_multiple_channels tests/commands/test_store_commands.py::test_release_including_resources tests/commands/test_store_commands.py::test_release_options_resource tests/commands/test_store_commands.py::test_release_parameters_ok[sysargs0-expected_parsed0] tests/commands/test_store_commands.py::test_release_parameters_ok[sysargs1-expected_parsed1] tests/commands/test_store_commands.py::test_release_parameters_ok[sysargs2-expected_parsed2] tests/commands/test_store_commands.py::test_release_parameters_ok[sysargs3-expected_parsed3] tests/commands/test_store_commands.py::test_release_parameters_ok[sysargs4-expected_parsed4] tests/commands/test_store_commands.py::test_release_parameters_ok[sysargs5-expected_parsed5] tests/commands/test_store_commands.py::test_release_parameters_ok[sysargs6-expected_parsed6] tests/commands/test_store_commands.py::test_release_parameters_bad[sysargs0] tests/commands/test_store_commands.py::test_release_parameters_bad[sysargs1] tests/commands/test_store_commands.py::test_release_parameters_bad[sysargs2] tests/commands/test_store_commands.py::test_release_parameters_bad[sysargs3] tests/commands/test_store_commands.py::test_release_parameters_bad[sysargs4] tests/commands/test_store_commands.py::test_release_parameters_bad[sysargs5] tests/commands/test_store_commands.py::test_close_simple_ok tests/commands/test_store_commands.py::test_status_simple_ok tests/commands/test_store_commands.py::test_status_empty tests/commands/test_store_commands.py::test_status_channels_not_released_with_fallback tests/commands/test_store_commands.py::test_status_channels_not_released_without_fallback tests/commands/test_store_commands.py::test_status_multiple_tracks tests/commands/test_store_commands.py::test_status_tracks_order tests/commands/test_store_commands.py::test_status_with_one_branch tests/commands/test_store_commands.py::test_status_with_multiple_branches tests/commands/test_store_commands.py::test_status_with_resources tests/commands/test_store_commands.py::test_status_with_resources_missing_after_closed_channel tests/commands/test_store_commands.py::test_status_with_resources_and_branches tests/commands/test_store_commands.py::test_status_multiplebases_single_track tests/commands/test_store_commands.py::test_status_multiplebases_multiple_tracks tests/commands/test_store_commands.py::test_status_multiplebases_everything_combined tests/commands/test_store_commands.py::test_status_with_base_in_none tests/commands/test_store_commands.py::test_status_ureleased_track tests/commands/test_store_commands.py::test_createlib_simple tests/commands/test_store_commands.py::test_createlib_name_from_metadata_problem tests/commands/test_store_commands.py::test_createlib_name_contains_dash tests/commands/test_store_commands.py::test_createlib_invalid_name[foo.bar] tests/commands/test_store_commands.py::test_createlib_invalid_name[foo/bar] tests/commands/test_store_commands.py::test_createlib_invalid_name[Foo] tests/commands/test_store_commands.py::test_createlib_invalid_name[123foo] tests/commands/test_store_commands.py::test_createlib_invalid_name[_foo] tests/commands/test_store_commands.py::test_createlib_invalid_name[] tests/commands/test_store_commands.py::test_createlib_path_already_there tests/commands/test_store_commands.py::test_createlib_library_template_is_python tests/commands/test_store_commands.py::test_publishlib_simple tests/commands/test_store_commands.py::test_publishlib_contains_dash tests/commands/test_store_commands.py::test_publishlib_all tests/commands/test_store_commands.py::test_publishlib_not_found tests/commands/test_store_commands.py::test_publishlib_not_from_current_charm tests/commands/test_store_commands.py::test_publishlib_name_from_metadata_problem tests/commands/test_store_commands.py::test_publishlib_store_is_advanced tests/commands/test_store_commands.py::test_publishlib_store_is_exactly_behind_ok tests/commands/test_store_commands.py::test_publishlib_store_is_exactly_behind_same_hash tests/commands/test_store_commands.py::test_publishlib_store_is_too_behind tests/commands/test_store_commands.py::test_publishlib_store_has_same_revision_same_hash tests/commands/test_store_commands.py::test_publishlib_store_has_same_revision_other_hash tests/commands/test_store_commands.py::test_getlibinfo_success_simple tests/commands/test_store_commands.py::test_getlibinfo_success_content tests/commands/test_store_commands.py::test_getlibinfo_bad_name[charms.testcharm.v3.testlib.py] tests/commands/test_store_commands.py::test_getlibinfo_bad_name[charms.testcharm.testlib] tests/commands/test_store_commands.py::test_getlibinfo_bad_name[testcharm.v2.testlib] tests/commands/test_store_commands.py::test_getlibinfo_bad_name[mycharms.testcharm.v2.testlib] tests/commands/test_store_commands.py::test_getlibinfo_bad_path[charms/testcharm/v3/testlib] tests/commands/test_store_commands.py::test_getlibinfo_bad_path[charms/testcharm/v3/testlib.html] tests/commands/test_store_commands.py::test_getlibinfo_bad_path[charms/testcharm/v3/testlib.] tests/commands/test_store_commands.py::test_getlibinfo_bad_path[charms/testcharm/testlib.py] tests/commands/test_store_commands.py::test_getlibinfo_bad_path[testcharm/v2/testlib.py] tests/commands/test_store_commands.py::test_getlibinfo_bad_path[mycharms/testcharm/v2/testlib.py] tests/commands/test_store_commands.py::test_getlibinfo_bad_api[charms.testcharm.v-three.testlib] tests/commands/test_store_commands.py::test_getlibinfo_bad_api[charms.testcharm.v-3.testlib] tests/commands/test_store_commands.py::test_getlibinfo_bad_api[charms.testcharm.3.testlib] tests/commands/test_store_commands.py::test_getlibinfo_bad_api[charms.testcharm.vX.testlib] tests/commands/test_store_commands.py::test_getlibinfo_missing_library_from_name tests/commands/test_store_commands.py::test_getlibinfo_missing_library_from_path tests/commands/test_store_commands.py::test_getlibinfo_malformed_metadata_field tests/commands/test_store_commands.py::test_getlibinfo_missing_metadata_field tests/commands/test_store_commands.py::test_getlibinfo_api_not_int tests/commands/test_store_commands.py::test_getlibinfo_api_negative tests/commands/test_store_commands.py::test_getlibinfo_patch_not_int tests/commands/test_store_commands.py::test_getlibinfo_patch_negative tests/commands/test_store_commands.py::test_getlibinfo_api_patch_both_zero tests/commands/test_store_commands.py::test_getlibinfo_metadata_api_different_path_api tests/commands/test_store_commands.py::test_getlibinfo_libid_non_string tests/commands/test_store_commands.py::test_getlibinfo_libid_non_ascii tests/commands/test_store_commands.py::test_getlibinfo_libid_empty tests/commands/test_store_commands.py::test_fetchlib_simple_downloaded tests/commands/test_store_commands.py::test_fetchlib_simple_dash_in_name tests/commands/test_store_commands.py::test_fetchlib_simple_dash_in_name_on_disk tests/commands/test_store_commands.py::test_fetchlib_simple_updated tests/commands/test_store_commands.py::test_fetchlib_all tests/commands/test_store_commands.py::test_fetchlib_store_not_found tests/commands/test_store_commands.py::test_fetchlib_store_is_old tests/commands/test_store_commands.py::test_fetchlib_store_same_versions_same_hash tests/commands/test_store_commands.py::test_fetchlib_store_same_versions_different_hash tests/commands/test_store_commands.py::test_listlib_simple tests/commands/test_store_commands.py::test_listlib_charm_from_metadata tests/commands/test_store_commands.py::test_listlib_name_from_metadata_problem tests/commands/test_store_commands.py::test_listlib_empty tests/commands/test_store_commands.py::test_listlib_properly_sorted tests/commands/test_store_commands.py::test_resources_simple tests/commands/test_store_commands.py::test_resources_empty tests/commands/test_store_commands.py::test_resources_ordered_and_grouped tests/commands/test_store_commands.py::test_uploadresource_options_filepath_type tests/commands/test_store_commands.py::test_uploadresource_options_image_type tests/commands/test_store_commands.py::test_uploadresource_options_good_combinations[sysargs0] tests/commands/test_store_commands.py::test_uploadresource_options_good_combinations[sysargs1] tests/commands/test_store_commands.py::test_uploadresource_options_bad_combinations[sysargs0] tests/commands/test_store_commands.py::test_uploadresource_options_bad_combinations[sysargs1] tests/commands/test_store_commands.py::test_uploadresource_filepath_call_ok tests/commands/test_store_commands.py::test_uploadresource_image_call_already_uploaded tests/commands/test_store_commands.py::test_uploadresource_image_call_upload_from_local tests/commands/test_store_commands.py::test_uploadresource_image_call_missing_everywhere tests/commands/test_store_commands.py::test_uploadresource_call_error tests/commands/test_store_commands.py::test_resourcerevisions_simple tests/commands/test_store_commands.py::test_resourcerevisions_empty tests/commands/test_store_commands.py::test_resourcerevisions_ordered_by_revision