diff --git a/frontend/src/metabase/query_builder/components/QueryHeader.jsx b/frontend/src/metabase/query_builder/components/QueryHeader.jsx
index f394ebd5cac657b8ac892ff5de98034f211ff78b..58d6bd6c0404f4952cf964bfc76fd3697e36a1c3 100644
--- a/frontend/src/metabase/query_builder/components/QueryHeader.jsx
+++ b/frontend/src/metabase/query_builder/components/QueryHeader.jsx
@@ -207,7 +207,7 @@ export default class QueryHeader extends Component {
         }
 
         // persistence buttons on saved cards
-        if (!isNew) {
+        if (!isNew && card.can_write) {
             if (!isEditing) {
                 if (this.state.recentlySaved) {
                     // existing card + not editing + recently saved = save confirmation
@@ -219,7 +219,6 @@ export default class QueryHeader extends Component {
                             </span>
                         </button>
                     ]);
-
                 } else {
                     // edit button
                     buttonSections.push([
diff --git a/src/metabase/api/card.clj b/src/metabase/api/card.clj
index cf7bc5524ed37e44a139e7bd5f26b397842d2bda..d205feba259d27fe23b66617360b47a355886154 100644
--- a/src/metabase/api/card.clj
+++ b/src/metabase/api/card.clj
@@ -203,7 +203,7 @@
   "Get `Card` with ID."
   [id]
   (-> (read-check Card id)
-      (hydrate :creator :dashboard_count :labels :collection)
+      (hydrate :creator :dashboard_count :labels :can_write :collection)
       (assoc :actor_id *current-user-id*)
       (->> (events/publish-event! :card-read))
       (dissoc :actor_id)))
diff --git a/test/metabase/api/card_test.clj b/test/metabase/api/card_test.clj
index e04997b6cf727db171b0e7d3ac8f6aafeba2277e..f01ade9cc49b5fc134ddaf04138dc23182b8bc6a 100644
--- a/test/metabase/api/card_test.clj
+++ b/test/metabase/api/card_test.clj
@@ -186,6 +186,7 @@
      :id                     $
      :display                "table"
      :visualization_settings {}
+     :can_write              true
      :created_at             $
      :database_id            database-id ; these should be inferred from the dataset_query
      :table_id               table-id