diff --git a/src/plugins/imapsieve/imap-sieve-plugin.c b/src/plugins/imapsieve/imap-sieve-plugin.c
index c81de23266be01e1886836e29508e69519e28fc3..e3d6687c0ae3cb9640b20f37144fb6a3d7f67a41 100644
--- a/src/plugins/imapsieve/imap-sieve-plugin.c
+++ b/src/plugins/imapsieve/imap-sieve-plugin.c
@@ -25,8 +25,8 @@ static void imap_sieve_client_created(struct client **clientp)
 		url = mail_user_plugin_getenv(user, "imapsieve_url");
 		// FIXME: parse the URL and report error if it is bad
 		if (url != NULL && strncasecmp(url, "sieve:", 6) == 0) {
-			str_append(client->capability_string, " IMAPSIEVE=");
-			str_append(client->capability_string, url);
+			client_add_capability(client, t_strconcat(
+				"IMAPSIEVE=", url, NULL));
 		} else {
 			url = NULL;
 		}