diff --git a/app/src/main/java/com/x8bit/bitwarden/data/vault/repository/VaultRepository.kt b/app/src/main/java/com/x8bit/bitwarden/data/vault/repository/VaultRepository.kt
index f17273725..6b088f080 100644
--- a/app/src/main/java/com/x8bit/bitwarden/data/vault/repository/VaultRepository.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/data/vault/repository/VaultRepository.kt
@@ -53,6 +53,11 @@ interface VaultRepository {
      */
     fun getVaultFolderStateFlow(folderId: String): StateFlow<DataState<FolderView?>>
 
+    /**
+     * Locks the vault for the current user if currently unlocked.
+     */
+    fun lockVaultForCurrentUser()
+
     /**
      * Locks the vault for the user with the given [userId] if necessary.
      */
diff --git a/app/src/main/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryImpl.kt b/app/src/main/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryImpl.kt
index 8b6b6af25..e559a546e 100644
--- a/app/src/main/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryImpl.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryImpl.kt
@@ -159,6 +159,12 @@ class VaultRepositoryImpl constructor(
                 initialValue = DataState.Loading,
             )
 
+    override fun lockVaultForCurrentUser() {
+        authDiskSource.userState?.activeUserId?.let {
+            lockVaultIfNecessary(it)
+        }
+    }
+
     override fun lockVaultIfNecessary(userId: String) {
         setVaultToLocked(userId = userId)
     }
diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityViewModel.kt
index aed448a1f..b300f597a 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityViewModel.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityViewModel.kt
@@ -5,6 +5,7 @@ import androidx.lifecycle.SavedStateHandle
 import androidx.lifecycle.viewModelScope
 import com.x8bit.bitwarden.R
 import com.x8bit.bitwarden.data.auth.repository.AuthRepository
+import com.x8bit.bitwarden.data.vault.repository.VaultRepository
 import com.x8bit.bitwarden.ui.platform.base.BaseViewModel
 import com.x8bit.bitwarden.ui.platform.base.util.Text
 import com.x8bit.bitwarden.ui.platform.base.util.asText
@@ -24,6 +25,7 @@ private const val KEY_STATE = "state"
 @HiltViewModel
 class AccountSecurityViewModel @Inject constructor(
     private val authRepository: AuthRepository,
+    private val vaultRepository: VaultRepository,
     savedStateHandle: SavedStateHandle,
 ) : BaseViewModel<AccountSecurityState, AccountSecurityEvent, AccountSecurityAction>(
     initialState = savedStateHandle[KEY_STATE]
@@ -99,8 +101,7 @@ class AccountSecurityViewModel @Inject constructor(
     }
 
     private fun handleLockNowClick() {
-        // TODO BIT-467: Lock the app
-        sendEvent(AccountSecurityEvent.ShowToast("Lock the app.".asText()))
+        vaultRepository.lockVaultForCurrentUser()
     }
 
     private fun handleLoginRequestToggle(action: AccountSecurityAction.LoginRequestToggle) {
diff --git a/app/src/test/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryTest.kt b/app/src/test/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryTest.kt
index 7f082a987..4a037a6af 100644
--- a/app/src/test/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryTest.kt
+++ b/app/src/test/java/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryTest.kt
@@ -469,6 +469,31 @@ class VaultRepositoryTest {
             }
         }
 
+    @Suppress("MaxLineLength")
+    @Test
+    fun `lockVaultForCurrentUser should lock the vault for the current user if it is currently unlocked`() =
+        runTest {
+            fakeAuthDiskSource.userState = MOCK_USER_STATE
+            val userId = "mockId-1"
+            verifyUnlockedVault(userId = userId)
+
+            assertEquals(
+                VaultState(
+                    unlockedVaultUserIds = setOf(userId),
+                ),
+                vaultRepository.vaultStateFlow.value,
+            )
+
+            vaultRepository.lockVaultForCurrentUser()
+
+            assertEquals(
+                VaultState(
+                    unlockedVaultUserIds = emptySet(),
+                ),
+                vaultRepository.vaultStateFlow.value,
+            )
+        }
+
     @Test
     fun `lockVaultIfNecessary should lock the given account if it is currently unlocked`() =
         runTest {
diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityViewModelTest.kt
index 48fd4f2e6..9e6c4336f 100644
--- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityViewModelTest.kt
+++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/feature/settings/accountsecurity/AccountSecurityViewModelTest.kt
@@ -3,10 +3,13 @@ package com.x8bit.bitwarden.ui.platform.feature.settings.accountsecurity
 import androidx.lifecycle.SavedStateHandle
 import app.cash.turbine.test
 import com.x8bit.bitwarden.data.auth.repository.AuthRepository
+import com.x8bit.bitwarden.data.vault.repository.VaultRepository
 import com.x8bit.bitwarden.ui.platform.base.BaseViewModelTest
 import com.x8bit.bitwarden.ui.platform.base.util.asText
 import io.mockk.every
+import io.mockk.just
 import io.mockk.mockk
+import io.mockk.runs
 import io.mockk.verify
 import kotlinx.coroutines.test.runTest
 import org.junit.jupiter.api.Assertions.assertEquals
@@ -80,12 +83,13 @@ class AccountSecurityViewModelTest : BaseViewModelTest() {
         }
 
     @Test
-    fun `on LockNowClick should emit ShowToast`() = runTest {
-        val viewModel = createViewModel()
-        viewModel.eventFlow.test {
-            viewModel.trySendAction(AccountSecurityAction.LockNowClick)
-            assertEquals(AccountSecurityEvent.ShowToast("Lock the app.".asText()), awaitItem())
+    fun `on LockNowClick should call lockVaultForCurrentUser`() {
+        val vaultRepository = mockk<VaultRepository>(relaxed = true) {
+            every { lockVaultForCurrentUser() } just runs
         }
+        val viewModel = createViewModel(vaultRepository = vaultRepository)
+        viewModel.trySendAction(AccountSecurityAction.LockNowClick)
+        verify { vaultRepository.lockVaultForCurrentUser() }
     }
 
     @Test
@@ -230,11 +234,13 @@ class AccountSecurityViewModelTest : BaseViewModelTest() {
 
     private fun createViewModel(
         authRepository: AuthRepository = mockk(relaxed = true),
+        vaultRepository: VaultRepository = mockk(relaxed = true),
         savedStateHandle: SavedStateHandle = SavedStateHandle().apply {
             set("state", DEFAULT_STATE)
         },
     ): AccountSecurityViewModel = AccountSecurityViewModel(
         authRepository = authRepository,
+        vaultRepository = vaultRepository,
         savedStateHandle = savedStateHandle,
     )