diff --git a/locales/index.d.ts b/locales/index.d.ts
index 8e87487cca..d7b1c3b9b0 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -5476,6 +5476,10 @@ export interface Locale extends ILocale {
          * このサーバー、またはこのアカウントでチャットは有効化されていません。
          */
         "chatNotAvailableForThisAccountOrServer": string;
+        /**
+         * 相手のアカウントでチャット機能が使えない状態になっています。
+         */
+        "chatNotAvailableInOtherAccount": string;
         /**
          * このユーザーとのチャットを開始できません
          */
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 9198f04c05..7ab6c24d82 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -1366,6 +1366,7 @@ _chat:
   muteThisRoom: "このルームをミュート"
   deleteRoom: "ルームを削除"
   chatNotAvailableForThisAccountOrServer: "このサーバー、またはこのアカウントでチャットは有効化されていません。"
+  chatNotAvailableInOtherAccount: "相手のアカウントでチャット機能が使えない状態になっています。"
   cannotChatWithTheUser: "このユーザーとのチャットを開始できません"
   cannotChatWithTheUser_description: "チャットが使えない状態になっているか、相手がチャットを開放していません。"
   chatWithThisUser: "チャットする"
diff --git a/packages/frontend/src/pages/chat/room.vue b/packages/frontend/src/pages/chat/room.vue
index 5938fd2688..4cb5d0677a 100644
--- a/packages/frontend/src/pages/chat/room.vue
+++ b/packages/frontend/src/pages/chat/room.vue
@@ -41,6 +41,12 @@ SPDX-License-Identifier: AGPL-3.0-only
 				<XMessage v-for="message in messages.toReversed()" :key="message.id" :message="message"/>
 			</TransitionGroup>
 		</div>
+
+		<div v-if="user && !user.canChat">
+			<MkInfo warn>{{ i18n.ts._chat.chatNotAvailableInOtherAccount }}</MkInfo>
+		</div>
+
+		<MkInfo v-if="!$i.policies.canChat" warn>{{ i18n.ts._chat.chatNotAvailableForThisAccountOrServer }}</MkInfo>
 	</MkSpacer>
 
 	<MkSpacer v-else-if="tab === 'search'" :contentMax="700">
@@ -93,6 +99,7 @@ import { prefer } from '@/preferences.js';
 import MkButton from '@/components/MkButton.vue';
 import { useRouter } from '@/router.js';
 import { useMutationObserver } from '@/use/use-mutation-observer.js';
+import MkInfo from '@/components/MkInfo.vue';
 
 const $i = ensureSignin();
 const router = useRouter();
diff --git a/packages/frontend/src/utility/get-user-menu.ts b/packages/frontend/src/utility/get-user-menu.ts
index 105e15a20f..108b07cc17 100644
--- a/packages/frontend/src/utility/get-user-menu.ts
+++ b/packages/frontend/src/utility/get-user-menu.ts
@@ -364,7 +364,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
 			},
 		});
 
-		if ($i.policies.canChat) {
+		if ($i.policies.canChat && user.canChat) {
 			menuItems.push({
 				type: 'link',
 				icon: 'ti ti-messages',