Do pass default values of ktlint options.
diff --git a/src/main/starlark/core/options/BUILD.bazel b/src/main/starlark/core/options/BUILD.bazel
index af63625..cfc1e24 100644
--- a/src/main/starlark/core/options/BUILD.bazel
+++ b/src/main/starlark/core/options/BUILD.bazel
@@ -1,10 +1,13 @@
 load("//src/main/starlark/release:packager.bzl", "release_archive")
 load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
+load(":opts.kotlinc.test.bzl", "kt_kotlinc_options_test")
+load(":opts.kotlinc.bzl", "kt_kotlinc_options")
 
 release_archive(
     name = "pkg",
     srcs = glob(
         ["*.bzl"],
+        exclude = ["*.test.bzl"],
     ),
     src_map = {
         "BUILD.release.bazel": "BUILD.bazel",
@@ -19,3 +22,13 @@
         "@com_github_jetbrains_kotlin//:capabilities",
     ],
 )
+
+kt_kotlinc_options(
+    name = "defaults",
+)
+
+kt_kotlinc_options_test(
+    name = "do_not_set_defaults",
+    target_under_test = ":defaults",
+    want_flags = [],
+)
diff --git a/src/main/starlark/core/options/convert.bzl b/src/main/starlark/core/options/convert.bzl
index b111ab6..10b74d1 100644
--- a/src/main/starlark/core/options/convert.bzl
+++ b/src/main/starlark/core/options/convert.bzl
@@ -10,11 +10,13 @@
         list of flags to add to the command line.
     """
     if not attr_provider:
-        return ""
+        return []
 
     flags = []
     for n, o in opts.items():
         value = getattr(attr_provider, n, None)
+        if value == o.args["default"]:
+            continue
         if o.value_to_flag and o.value_to_flag.get(derive.info, None):
             info = o.value_to_flag[derive.info]
             flag = info.derive(info.ctx, value)
diff --git a/src/main/starlark/core/options/opts.kotlinc.bzl b/src/main/starlark/core/options/opts.kotlinc.bzl
index 6002d37..7a944f1 100644
--- a/src/main/starlark/core/options/opts.kotlinc.bzl
+++ b/src/main/starlark/core/options/opts.kotlinc.bzl
@@ -331,4 +331,4 @@
     Returns:
         list of flags to add to the command line.
     """
-    return convert.javac_options_to_flags(_KOPTS, kotlinc_options)
+    return convert.kotlinc_options_to_flags(_KOPTS, kotlinc_options)
diff --git a/src/main/starlark/core/options/opts.kotlinc.test.bzl b/src/main/starlark/core/options/opts.kotlinc.test.bzl
new file mode 100644
index 0000000..5da3a6c
--- /dev/null
+++ b/src/main/starlark/core/options/opts.kotlinc.test.bzl
@@ -0,0 +1,34 @@
+load("@bazel_skylib//lib:unittest.bzl", "analysistest", "unittest")
+load(":opts.kotlinc.bzl", "KotlincOptions", "kotlinc_options_to_flags")
+
+def _kt_kotlinc_options_test_impl(ctx):
+    env = analysistest.begin(ctx)
+
+    target_under_test = analysistest.target_under_test(env)
+
+    want = ctx.attr.want_flags
+
+    got = kotlinc_options_to_flags(target_under_test[KotlincOptions])
+
+    extra = [f for f in got if f not in want]
+    missing = [f for f in want if f not in got]
+
+    fails = []
+    if extra:
+        fails.append("not want %s" % extra)
+    if missing:
+        fails.append("want %s" % missing)
+
+    if fails:
+        unittest.fail(env, "\n".join(fails + ["Wanted %s" % want, "Got %s" % got]))
+
+    return analysistest.end(env)
+
+kt_kotlinc_options_test = analysistest.make(
+    _kt_kotlinc_options_test_impl,
+    attrs = {
+        "want_flags": attr.string_list(
+            mandatory = True,
+        ),
+    },
+)