feat: Maintain the original exceptions of OpenAI and HTTPX during exception handling.
diff --git a/metagpt/utils/common.py b/metagpt/utils/common.py
index c7751c2af..3102158c2 100644
--- a/metagpt/utils/common.py
+++ b/metagpt/utils/common.py
@@ -28,7 +28,7 @@
 import aiofiles
 import loguru
 from pydantic_core import to_jsonable_python
-from tenacity import RetryCallState, _utils
+from tenacity import RetryCallState, RetryError, _utils
 
 from metagpt.const import MESSAGE_ROUTE_TO_ALL
 from metagpt.logs import logger
@@ -501,7 +501,7 @@ async def wrapper(self, *args, **kwargs):
                 self.rc.memory.delete(self.latest_observed_msg)
             # raise again to make it captured outside
             raise Exception(format_trackback_info(limit=None))
-        except Exception:
+        except Exception as e:
             if self.latest_observed_msg:
                 logger.warning(
                     "There is a exception in role's execution, in order to resume, "
@@ -510,6 +510,12 @@ async def wrapper(self, *args, **kwargs):
                 # remove role newest observed msg to make it observed again
                 self.rc.memory.delete(self.latest_observed_msg)
             # raise again to make it captured outside
+            if isinstance(e, RetryError):
+                last_error = e.last_attempt._exception
+                name = any_to_str(last_error)
+                if re.match(r"^openai\.", name) or re.match(r"^httpx\.", name):
+                    raise last_error
+
             raise Exception(format_trackback_info(limit=None))
 
     return wrapper
diff --git a/setup.py b/setup.py
index ca8bb3980..cc8112ba9 100644
--- a/setup.py
+++ b/setup.py
@@ -57,7 +57,7 @@ def run(self):
 
 setup(
     name="metagpt",
-    version="0.6.5",
+    version="0.6.6",
     description="The Multi-Agent Framework",
     long_description=long_description,
     long_description_content_type="text/markdown",

**Features**
- feat: Maintain the original exceptions of OpenAI and HTTPX during exception handling.