diff --git a/frontend/src/views/SecretOverviewPage/components/SecretOverviewTableRow/SecretRenameRow.tsx b/frontend/src/views/SecretOverviewPage/components/SecretOverviewTableRow/SecretRenameRow.tsx
new file mode 100644
index 000000000..57c71527c
--- /dev/null
+++ b/frontend/src/views/SecretOverviewPage/components/SecretOverviewTableRow/SecretRenameRow.tsx
@@ -0,0 +1,178 @@
+import { Controller, useForm } from "react-hook-form";
+import { subject } from "@casl/ability";
+import { faCheck, faClose } from "@fortawesome/free-solid-svg-icons";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { AnimatePresence, motion } from "framer-motion";
+import { twMerge } from "tailwind-merge";
+
+import { IconButton, Input, Spinner, Tooltip } from "@app/components/v2";
+import {
+ ProjectPermissionActions,
+ ProjectPermissionSub,
+ useProjectPermission,
+ useWorkspace
+} from "@app/context";
+import { useGetUserWsKey, useUpdateSecretV3 } from "@app/hooks/api";
+import { DecryptedSecret } from "@app/hooks/api/types";
+import { SecretActionType } from "@app/views/SecretMainPage/components/SecretListView/SecretListView.utils";
+
+type Props = {
+ secretKey: string;
+ secretPath: string;
+ environments: { name: string; slug: string }[];
+ getSecretByKey: (slug: string, key: string) => DecryptedSecret | undefined;
+};
+
+type Form = { key: string };
+
+function SecretRenameRow({ environments, getSecretByKey, secretKey, secretPath }: Props) {
+ const { currentWorkspace } = useWorkspace();
+ const { permission } = useProjectPermission();
+
+ const secrets = environments.map((env) => getSecretByKey(env.slug, secretKey));
+
+ const isReadOnly = environments.some((env) => {
+ const environment = env.slug;
+ const isSecretInEnvReadOnly =
+ permission.can(
+ ProjectPermissionActions.Read,
+ subject(ProjectPermissionSub.Secrets, { environment, secretPath })
+ ) &&
+ permission.cannot(
+ ProjectPermissionActions.Edit,
+ subject(ProjectPermissionSub.Secrets, { environment, secretPath })
+ );
+ if (isSecretInEnvReadOnly) {
+ return true;
+ }
+ return false;
+ });
+
+ const isOverriden = secrets.some(
+ (secret) =>
+ secret?.overrideAction === SecretActionType.Created ||
+ secret?.overrideAction === SecretActionType.Modified
+ );
+ const workspaceId = currentWorkspace?.id || "";
+
+ const { data: decryptFileKey } = useGetUserWsKey(workspaceId);
+
+ const { mutateAsync: updateSecretV3 } = useUpdateSecretV3();
+
+ const {
+ handleSubmit,
+ control,
+ reset,
+ formState: { isDirty, isSubmitting }
+ } = useForm
+ );
+}
+
+export default SecretRenameRow;