diff --git a/src/boot/after_store.js b/src/boot/after_store.js
index 862a534d..f2c1aa0f 100644
--- a/src/boot/after_store.js
+++ b/src/boot/after_store.js
@@ -9,12 +9,13 @@ const getStatusnetConfig = async ({ store }) => {
     const res = await window.fetch('/api/statusnet/config.json')
     if (res.ok) {
       const data = await res.json()
-      const { name, closed: registrationClosed, textlimit, uploadlimit, server, vapidPublicKey } = data.site
+      const { name, closed: registrationClosed, textlimit, uploadlimit, server, vapidPublicKey, safeDMMentionsEnabled } = data.site
 
       store.dispatch('setInstanceOption', { name: 'name', value: name })
       store.dispatch('setInstanceOption', { name: 'registrationOpen', value: (registrationClosed === '0') })
       store.dispatch('setInstanceOption', { name: 'textlimit', value: parseInt(textlimit) })
       store.dispatch('setInstanceOption', { name: 'server', value: server })
+      store.dispatch('setInstanceOption', { name: 'safeDM', value: safeDMMentionsEnabled !== '0' })
 
       // TODO: default values for this stuff, added if to not make it break on
       // my dev config out of the box.
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 40e2610e..c65c27e2 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -179,6 +179,9 @@ const PostStatusForm = {
     },
     postFormats () {
       return this.$store.state.instance.postFormats || []
+    },
+    safeDMEnabled () {
+      return this.$store.state.instance.safeDM
     }
   },
   methods: {
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 3d3a1082..1ce2b647 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -3,13 +3,16 @@
   <form @submit.prevent="postStatus(newStatus)">
     <div class="form-group" >
       <i18n
-        v-if="!this.$store.state.users.currentUser.locked && this.newStatus.visibility == 'private'"
+        v-if="!$store.state.users.currentUser.locked && newStatus.visibility == 'private'"
         path="post_status.account_not_locked_warning"
         tag="p"
         class="visibility-notice">
         <router-link :to="{ name: 'user-settings' }">{{ $t('post_status.account_not_locked_warning_link') }}</router-link>
       </i18n>
-      <p v-if="this.newStatus.visibility == 'direct'" class="visibility-notice">{{ $t('post_status.direct_warning') }}</p>
+      <p v-if="newStatus.visibility === 'direct'" class="visibility-notice">
+        <span v-if="safeDMEnabled">{{ $t('post_status.direct_warning_to_first_only') }}</span>
+        <span v-else>{{ $t('post_status.direct_warning_to_all') }}</span>
+      </p>
       <EmojiInput
         v-if="newStatus.spoilerText || alwaysShowSubject"
         type="text"
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 026546cc..1e82cd0a 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -80,7 +80,8 @@
     },
     "content_warning": "Subject (optional)",
     "default": "Just landed in L.A.",
-    "direct_warning": "This post will only be visible to all the mentioned users.",
+    "direct_warning_to_all": "This post will be visible to all the mentioned users.",
+    "direct_warning_to_first_only": "This post will only be visible to the mentioned users at the beginning of the message.",
     "posting": "Posting",
     "scope": {
       "direct": "Direct - Post to mentioned users only",
diff --git a/src/modules/instance.js b/src/modules/instance.js
index 3a559ba0..d4185f6a 100644
--- a/src/modules/instance.js
+++ b/src/modules/instance.js
@@ -5,6 +5,7 @@ const defaultState = {
   // Stuff from static/config.json and apiConfig
   name: 'Pleroma FE',
   registrationOpen: true,
+  safeDM: true,
   textlimit: 5000,
   server: 'http://localhost:4040/',
   theme: 'pleroma-dark',