    [:compiler-options :fn-invoke-direct]
    [:compiler-options :elide-asserts]
    [:compiler-options :reader-features]
+   ;; some community macros seem to use this
+   ;; hard to track side-effecting macros but even more annoying to run into caching bugs
+   ;; so just let any change invalidate everything for safety reasons
+   [:compiler-options :tooling-config]
+   [:compiler-options :external-config]
    ;; doesn't affect output but affects compiler env
    [:compiler-options :infer-externs]
    ;; these should basically never be changed


                              reader/*alias-map*
                              (merge reader/*alias-map*
                                     (:requires ns-info)
                                     (:require-macros ns-info))]
                      (reader/read opts in))]

                (if (identical? form eof-sentinel)

          (when (and (= cache-key-map (:cache-keys cache-data))
                     (every?
                       #(= (get-in state %)
                          (get-in cache-data [:compiler-options %]))
                       cache-affecting-options))

            (util/log state {:type :cache-read :resource-id resource-id :resource-name resource-name})
