diff --git a/briar-desktop/src/main/kotlin/androidx/compose/material/OutlinedTextFieldExt.kt b/briar-desktop/src/main/kotlin/androidx/compose/material/OutlinedTextFieldExt.kt
index bdcf40982561e41f354744b73443bb4ed069292e..663c02737f1d1deaa09691b6334ad5d6ea2e35c2 100644
--- a/briar-desktop/src/main/kotlin/androidx/compose/material/OutlinedTextFieldExt.kt
+++ b/briar-desktop/src/main/kotlin/androidx/compose/material/OutlinedTextFieldExt.kt
@@ -31,6 +31,7 @@ import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Visibility
 import androidx.compose.material.icons.filled.VisibilityOff
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
@@ -45,6 +46,9 @@ import androidx.compose.ui.input.key.KeyEventType
 import androidx.compose.ui.input.key.key
 import androidx.compose.ui.input.key.onPreviewKeyEvent
 import androidx.compose.ui.input.key.type
+import androidx.compose.ui.platform.ClipboardManager
+import androidx.compose.ui.platform.LocalClipboardManager
+import androidx.compose.ui.text.AnnotatedString
 import androidx.compose.ui.text.TextStyle
 import androidx.compose.ui.text.input.PasswordVisualTransformation
 import androidx.compose.ui.text.input.VisualTransformation
@@ -183,45 +187,53 @@ fun OutlinedPasswordTextField(
 ) {
     var isPasswordVisible by remember { mutableStateOf(false) }
 
-    OutlinedTextField(
-        value = value,
-        onValueChange = onValueChange,
-        modifier = modifier,
-        onEnter = onEnter,
-        enabled = enabled,
-        readOnly = readOnly,
-        textStyle = textStyle,
-        label = label,
-        placeholder = placeholder,
-        leadingIcon = leadingIcon,
-        trailingIcon = {
-            ShowHidePasswordIcon(
-                isVisible = isPasswordVisible,
-                toggleIsVisible = {
-                    isPasswordVisible = !isPasswordVisible
-                },
-            )
-        },
-        errorIcon = {
-            ShowHidePasswordIcon(
-                isVisible = isPasswordVisible,
-                toggleIsVisible = {
-                    isPasswordVisible = !isPasswordVisible
-                },
-            )
-        },
-        helperMessage = helperMessage,
-        errorMessage = errorMessage,
-        isError = isError,
-        showErrorWhen = showErrorWhen,
-        visualTransformation = if (!isPasswordVisible) visualTransformation else VisualTransformation.None,
-        keyboardOptions = keyboardOptions,
-        singleLine = singleLine,
-        maxLines = maxLines,
-        interactionSource = interactionSource,
-        shape = shape,
-        colors = colors,
-    )
+    val clipboardManager: ClipboardManager = LocalClipboardManager.current
+    CompositionLocalProvider(
+        LocalClipboardManager provides object : ClipboardManager {
+            override fun getText() = clipboardManager.getText() // allow copying text from clipboard
+            override fun setText(annotatedString: AnnotatedString) = Unit // don't allow copying text into clipboard
+        }
+    ) {
+        OutlinedTextField(
+            value = value,
+            onValueChange = onValueChange,
+            modifier = modifier,
+            onEnter = onEnter,
+            enabled = enabled,
+            readOnly = readOnly,
+            textStyle = textStyle,
+            label = label,
+            placeholder = placeholder,
+            leadingIcon = leadingIcon,
+            trailingIcon = {
+                ShowHidePasswordIcon(
+                    isVisible = isPasswordVisible,
+                    toggleIsVisible = {
+                        isPasswordVisible = !isPasswordVisible
+                    },
+                )
+            },
+            errorIcon = {
+                ShowHidePasswordIcon(
+                    isVisible = isPasswordVisible,
+                    toggleIsVisible = {
+                        isPasswordVisible = !isPasswordVisible
+                    },
+                )
+            },
+            helperMessage = helperMessage,
+            errorMessage = errorMessage,
+            isError = isError,
+            showErrorWhen = showErrorWhen,
+            visualTransformation = if (!isPasswordVisible) visualTransformation else VisualTransformation.None,
+            keyboardOptions = keyboardOptions,
+            singleLine = singleLine,
+            maxLines = maxLines,
+            interactionSource = interactionSource,
+            shape = shape,
+            colors = colors,
+        )
+    }
 }
 
 @Composable