Index: cmd-switch-client.c
===================================================================
--- cmd-switch-client.c	(revision 2664)
+++ cmd-switch-client.c	(working copy)
@@ -108,6 +108,7 @@
 	recalculate_sizes();
 	server_check_unattached();
 	server_redraw_client(c);
+	s->curw->flags &= ~WINLINK_ALERTFLAGS;
 
 	return (0);
 }
Index: server-window.c
===================================================================
--- server-window.c	(revision 2664)
+++ server-window.c	(working copy)
@@ -56,8 +56,10 @@
 				server_status_session(s);
 			TAILQ_FOREACH(wp, &w->panes, entry)
 				server_window_check_content(s, wl, wp);
+
+			if (!(s->flags & SESSION_UNATTACHED))
+				w->flags &= ~(WINDOW_BELL|WINDOW_ACTIVITY);
 		}
-		w->flags &= ~(WINDOW_BELL|WINDOW_ACTIVITY);
 	}
 }
 
@@ -72,7 +74,7 @@
 
 	if (!(w->flags & WINDOW_BELL) || wl->flags & WINLINK_BELL)
 		return (0);
-	if (s->curw != wl)
+	if (s->curw != wl || s->flags & SESSION_UNATTACHED)
 		wl->flags |= WINLINK_BELL;
 
 	action = options_get_number(&s->options, "bell-action");
@@ -129,7 +131,7 @@
 
 	if (!(w->flags & WINDOW_ACTIVITY) || wl->flags & WINLINK_ACTIVITY)
 		return (0);
-	if (s->curw == wl)
+	if (s->curw == wl && !(s->flags & SESSION_UNATTACHED))
 		return (0);
 
 	if (!options_get_number(&w->options, "monitor-activity"))
@@ -165,7 +167,7 @@
 	if (!(w->flags & WINDOW_SILENCE) || wl->flags & WINLINK_SILENCE)
 		return (0);
 
-	if (s->curw == wl) {
+	if (s->curw == wl && !(s->flags & SESSION_UNATTACHED)) {
 		/*
 		 * Reset the timer for this window if we've focused it.  We
 		 * don't want the timer tripping as soon as we've switched away
@@ -217,7 +219,7 @@
 	/* Activity flag must be set for new content. */
 	if (!(w->flags & WINDOW_ACTIVITY) || wl->flags & WINLINK_CONTENT)
 		return (0);
-	if (s->curw == wl)
+	if (s->curw == wl && !(s->flags & SESSION_UNATTACHED))
 		return (0);
 
 	ptr = options_get_string(&w->options, "monitor-content");
Index: cmd-attach-session.c
===================================================================
--- cmd-attach-session.c	(revision 2664)
+++ cmd-attach-session.c	(working copy)
@@ -76,6 +76,7 @@
 		ctx->curclient->session = s;
 		session_update_activity(s);
 		server_redraw_client(ctx->curclient);
+		s->curw->flags &= ~WINLINK_ALERTFLAGS;
 	} else {
 		if (!(ctx->cmdclient->flags & CLIENT_TERMINAL)) {
 			ctx->error(ctx, "not a terminal");
@@ -104,6 +105,7 @@
 		environ_update(update, &ctx->cmdclient->environ, &s->environ);
 
 		server_redraw_client(ctx->cmdclient);
+		s->curw->flags &= ~WINLINK_ALERTFLAGS;
 	}
 	recalculate_sizes();
 	server_update_socket();
