diff --git a/locales/index.d.ts b/locales/index.d.ts
index 9ab72b3a5a..8e87487cca 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -5472,6 +5472,10 @@ export interface Locale extends ILocale {
          * ルームを削除
          */
         "deleteRoom": string;
+        /**
+         * このサーバー、またはこのアカウントでチャットは有効化されていません。
+         */
+        "chatNotAvailableForThisAccountOrServer": string;
         /**
          * このユーザーとのチャットを開始できません
          */
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 7a2beb7a87..9198f04c05 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -1365,6 +1365,7 @@ _chat:
   newline: "改行"
   muteThisRoom: "このルームをミュート"
   deleteRoom: "ルームを削除"
+  chatNotAvailableForThisAccountOrServer: "このサーバー、またはこのアカウントでチャットは有効化されていません。"
   cannotChatWithTheUser: "このユーザーとのチャットを開始できません"
   cannotChatWithTheUser_description: "チャットが使えない状態になっているか、相手がチャットを開放していません。"
   chatWithThisUser: "チャットする"
diff --git a/packages/frontend/src/pages/chat/home.home.vue b/packages/frontend/src/pages/chat/home.home.vue
index 0affef6333..007e9fc1f4 100644
--- a/packages/frontend/src/pages/chat/home.home.vue
+++ b/packages/frontend/src/pages/chat/home.home.vue
@@ -5,7 +5,9 @@ SPDX-License-Identifier: AGPL-3.0-only
 
 <template>
 <div class="_gaps">
-	<MkButton primary gradate rounded :class="$style.start" @click="start"><i class="ti ti-plus"></i> {{ i18n.ts.startChat }}</MkButton>
+	<MkButton v-if="$i.policies.canChat" primary gradate rounded :class="$style.start" @click="start"><i class="ti ti-plus"></i> {{ i18n.ts.startChat }}</MkButton>
+
+	<MkInfo v-else>{{ i18n.ts._chat.chatNotAvailableForThisAccountOrServer }}</MkInfo>
 
 	<MkAd :prefer="['horizontal', 'horizontal-big']"/>
 
@@ -78,6 +80,7 @@ import * as os from '@/os.js';
 import { updateCurrentAccountPartial } from '@/accounts.js';
 import MkInput from '@/components/MkInput.vue';
 import MkFoldableSection from '@/components/MkFoldableSection.vue';
+import MkInfo from '@/components/MkInfo.vue';
 
 const $i = ensureSignin();
 
diff --git a/packages/frontend/src/utility/get-user-menu.ts b/packages/frontend/src/utility/get-user-menu.ts
index 37c88c9665..105e15a20f 100644
--- a/packages/frontend/src/utility/get-user-menu.ts
+++ b/packages/frontend/src/utility/get-user-menu.ts
@@ -362,12 +362,18 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
 				const canonical = user.host === null ? `@${user.username}` : `@${user.username}@${user.host}`;
 				os.post({ specified: user, initialText: `${canonical} ` });
 			},
-		}, {
-			type: 'link',
-			icon: 'ti ti-messages',
-			text: i18n.ts._chat.chatWithThisUser,
-			to: `/chat/user/${user.id}`,
-		}, { type: 'divider' }, {
+		});
+
+		if ($i.policies.canChat) {
+			menuItems.push({
+				type: 'link',
+				icon: 'ti ti-messages',
+				text: i18n.ts._chat.chatWithThisUser,
+				to: `/chat/user/${user.id}`,
+			});
+		}
+
+		menuItems.push({ type: 'divider' }, {
 			icon: user.isMuted ? 'ti ti-eye' : 'ti ti-eye-off',
 			text: user.isMuted ? i18n.ts.unmute : i18n.ts.mute,
 			action: toggleMute,