diff --git a/src-tauri/src/cmds.rs b/src-tauri/src/cmds.rs
index 8cf1b54e3ac0cfe59441ceb9cac3bc0401f8edca..617ac42fadb2c84fa369b58cba857a9536576537 100644
--- a/src-tauri/src/cmds.rs
+++ b/src-tauri/src/cmds.rs
@@ -281,10 +281,14 @@ pub fn get_cur_proxy(verge_state: State<'_, VergeState>) -> Result<Option<SysPro
 /// get the verge config
 #[tauri::command]
 pub fn get_verge_config(verge_state: State<'_, VergeState>) -> Result<VergeConfig, String> {
-  match verge_state.0.lock() {
-    Ok(arc) => Ok(arc.config.clone()),
-    Err(_) => Err("failed to get verge lock".into()),
+  let verge = verge_state.0.lock().unwrap();
+  let mut config = verge.config.clone();
+
+  if config.system_proxy_bypass.is_none() && verge.cur_sysproxy.is_some() {
+    config.system_proxy_bypass = Some(verge.cur_sysproxy.clone().unwrap().bypass)
   }
+
+  Ok(config)
 }
 
 /// patch the verge config
diff --git a/src/components/setting/setting-system.tsx b/src/components/setting/setting-system.tsx
index 5ccad990f3874014c419e1be4087039d0baf0c7e..b19e9869187a679ac4abab94725585ab01ef122e 100644
--- a/src/components/setting/setting-system.tsx
+++ b/src/components/setting/setting-system.tsx
@@ -1,5 +1,5 @@
 import useSWR, { useSWRConfig } from "swr";
-import { Box, ListItemText, Switch } from "@mui/material";
+import { Box, ListItemText, Switch, TextField } from "@mui/material";
 import { getVergeConfig, patchVergeConfig } from "../../services/cmds";
 import { SettingList, SettingItem } from "./setting";
 import { CmdType } from "../../services/types";
@@ -17,6 +17,7 @@ const SettingSystem = ({ onError }: Props) => {
   const {
     enable_auto_launch: startup = false,
     enable_system_proxy: proxy = false,
+    system_proxy_bypass: bypass = "",
   } = vergeConfig ?? {};
 
   const onSwitchFormat = (_e: any, value: boolean) => value;
@@ -55,11 +56,29 @@ const SettingSystem = ({ onError }: Props) => {
           onCatch={onError}
           onFormat={onSwitchFormat}
           onChange={(e) => onChangeData({ enable_system_proxy: e })}
-          onGuard={(e) => patchVergeConfig({ enable_system_proxy: e })}
+          onGuard={async (e) => {
+            await patchVergeConfig({ enable_system_proxy: e });
+            mutate("getVergeConfig"); // update bypass value
+          }}
         >
           <Switch edge="end" />
         </GuardState>
       </SettingItem>
+
+      {proxy && (
+        <SettingItem>
+          <ListItemText primary="Proxy Bypass" />
+          <GuardState
+            value={bypass ?? ""}
+            onCatch={onError}
+            onFormat={(e: any) => e.target.value}
+            onChange={(e) => onChangeData({ system_proxy_bypass: e })}
+            onGuard={(e) => patchVergeConfig({ system_proxy_bypass: e })}
+          >
+            <TextField autoComplete="off" size="small" sx={{ width: 120 }} />
+          </GuardState>
+        </SettingItem>
+      )}
     </SettingList>
   );
 };
diff --git a/src/services/types.ts b/src/services/types.ts
index 1f42c8224152b54da7c55b405e30dccb5dc11685..2216cd7eaab70483d7b10818c3efaea92d4c0b77 100644
--- a/src/services/types.ts
+++ b/src/services/types.ts
@@ -114,5 +114,6 @@ export namespace CmdType {
     theme_blur?: boolean;
     enable_auto_launch?: boolean;
     enable_system_proxy?: boolean;
+    system_proxy_bypass?: string;
   }
 }