diff --git a/tests/test_role.py b/tests/test_role.py
index 7186f790969eee4cacdd097fc5c1d7590de62bca..6fe4125a63253c42195e8d41edebbde8305e29ba 100644
--- a/tests/test_role.py
+++ b/tests/test_role.py
@@ -398,6 +398,18 @@ class TestRoleCLI(UffdTestCase):
 			self.assertEqual(role.is_default, True)
 			self.assertEqual(set(self.get_user().groups), {self.get_access_group()})
 
+	# Regression test for https://git.cccv.de/uffd/uffd/-/issues/156
+	def test_update_without_description(self):
+		with self.app.test_request_context():
+			role = Role.query.filter_by(name='test').first()
+			role.description = 'Test description'
+			db.session.commit()
+		result = self.app.test_cli_runner().invoke(args=['role', 'update', 'test', '--clear-groups'])
+		self.assertEqual(result.exit_code, 0)
+		with self.app.test_request_context():
+			role = Role.query.filter_by(name='test').first()
+			self.assertEqual(role.description, 'Test description')
+
 	def test_delete(self):
 		with self.app.test_request_context():
 			self.assertIsNotNone(Role.query.filter_by(name='test').first())
diff --git a/tests/test_user.py b/tests/test_user.py
index d641eb2200328770130c775975717880c0eb1ebd..6a92ab6b72c99fb92f9b64cb75a31dc2534237ad 100644
--- a/tests/test_user.py
+++ b/tests/test_user.py
@@ -715,6 +715,13 @@ class TestGroupCLI(UffdTestCase):
 			group = Group.query.filter_by(name='users').first()
 			self.assertEqual(group.description, 'New description')
 
+	def test_update_without_description(self):
+		result = self.app.test_cli_runner().invoke(args=['group', 'update', 'users']) # Should not change anything
+		self.assertEqual(result.exit_code, 0)
+		with self.app.test_request_context():
+			group = Group.query.filter_by(name='users').first()
+			self.assertEqual(group.description, 'Base group for all users')
+
 	def test_delete(self):
 		with self.app.test_request_context():
 			self.assertIsNotNone(Group.query.filter_by(name='users').first())
diff --git a/uffd/role/cli.py b/uffd/role/cli.py
index 54d69c350f8d32bfe9f6a1e768e0bf9f92b0ed88..6e94f5f1a78c3a1ada626d503c844746e12c56cb 100644
--- a/uffd/role/cli.py
+++ b/uffd/role/cli.py
@@ -101,7 +101,7 @@ def create(name, description, default, moderator_group, add_group, add_role):
 
 @role_cli.command(help='Update role attributes')
 @click.argument('name')
-@click.option('--description', default='', help='Set description text.')
+@click.option('--description', help='Set description text.')
 @click.option('--default/--no-default', default=None, help='Mark role as default or not. Non-service users are auto-added to default roles.')
 @click.option('--moderator-group', metavar='GROUP_NAME', help='Set moderator group.')
 @click.option('--no-moderator-group', is_flag=True, flag_value=True, default=False, help='Clear moderator group setting.')
diff --git a/uffd/user/cli_group.py b/uffd/user/cli_group.py
index 3627f0a0686d49c6393444eb0fe35637caec42b8..0dd80e539290132d93a7c400c67bd9e8564fe4a8 100644
--- a/uffd/user/cli_group.py
+++ b/uffd/user/cli_group.py
@@ -48,7 +48,7 @@ def create(name, description):
 
 @group_cli.command(help='Update group attributes')
 @click.argument('name')
-@click.option('--description', default='', help='Set description text.')
+@click.option('--description', help='Set description text.')
 def update(name, description):
 	with current_app.test_request_context():
 		group = Group.query.filter_by(name=name).one_or_none()